DOCA AES-GCM
Where to start: This skill assumes DOCA is already installed and
the user is doing hands-on AES-GCM-acceleration work on a
BlueField / ConnectX / host with DOCA. Open TASKS.md if
the user wants to do something (configure / build / modify / run /
test / debug); open CAPABILITIES.md when the
question is what can DOCA AES-GCM express on this version. If the
user has not installed DOCA yet, route to
doca-setup first. If the user is
asking "should I even use the accelerator for this encryption?",
the path-selection rule in
CAPABILITIES.md ## Capabilities and modes
is the first stop. If the user is treating AES-GCM as a confidentiality-only
primitive (raw AES-CTR / AES-CBC style), stop and read the AEAD note
in CAPABILITIES.md ## Safety policy
first — AES-GCM is authenticated encryption, and confusing the two is
the most expensive failure mode this skill exists to prevent.
Example questions this skill answers well
The CLASSES of DOCA AES-GCM questions this skill is built to answer,
each with one worked example. The agent should treat the class as
the load-bearing piece — the worked example is a single instance.
- "Should I offload this AES-GCM encryption to DOCA AES-GCM, or
just do it on the CPU with OpenSSL?" — worked example: "I am
encrypting 4 KiB TLS records at line rate; is doca-aes-gcm worth
the setup vs OpenSSL
EVP_aes_256_gcm on the CPU?". Answered by
the path-selection table in
CAPABILITIES.md ## Capabilities and modes
- the "when NOT to use doca-aes-gcm" bullets in
CAPABILITIES.md ## Safety policy.
- "Does my device support the AES-GCM key size I want?" — worked
example: "is AES-256-GCM in the accelerator on this BlueField?
And while we're here, is AES-192-GCM available?" (Answer: the
library exposes only
DOCA_AES_GCM_KEY_128 / DOCA_AES_GCM_KEY_256;
AES-192 is not in the enum and is not supported. For the two
real key types, gate on
doca_aes_gcm_cap_task_encrypt_is_key_type_supported(devinfo, key_type)
and the matching _decrypt_is_key_type_supported. AES-192 is
not available — route to a CPU library.) Answered by the
per-key-type capability queries and the per-task
doca_aes_gcm_cap_task_*_is_supported queries in
CAPABILITIES.md ## Capabilities and modes
- the discovery step in
TASKS.md ## configure.
- "How do I correctly decrypt an AES-GCM message and verify the
auth tag?" — worked example: "my
doca_aes_gcm_task_decrypt
completion reports an error — is the plaintext output safe to
use?". Answered by the auth-tag verification rule in
CAPABILITIES.md ## Safety policy
(do not use the plaintext if the auth tag did not verify) +
the decrypt completion-handling workflow in
TASKS.md ## test and
TASKS.md ## debug.
- "What permissions does the source / destination mmap need?" —
worked example: "my
doca_aes_gcm_task_encrypt returns
DOCA_ERROR_NOT_PERMITTED". Answered by the permission matrix
in CAPABILITIES.md ## Safety policy
- the mmap-set-permissions checklist in
TASKS.md ## test.
- "Is this DOCA AES-GCM API available on my installed DOCA
version?" — worked example: "is AES-192-GCM in the DOCA I have
installed, on this device?". Answered by the version-compatibility
overlay in
CAPABILITIES.md ## Version compatibility,
which cross-links the canonical detection chain in
doca-version and adds the
AES-GCM-specific "discover key sizes via cap query" bullets.
- "What does this
DOCA_ERROR_* from an AES-GCM call mean and
which layer caused it?" — worked example: "DOCA_ERROR_IO_FAILED
on the decrypt completion — is this a hardware bug or a tag
mismatch?". Answered by the AES-GCM overlay on the cross-library
taxonomy in
CAPABILITIES.md ## Error taxonomy
- the layered ladder in
TASKS.md ## debug that escalates to
doca-debug.
Audience
This skill serves external developers building applications that
consume the DOCA AES-GCM library — i.e., users whose code calls
doca_aes_gcm_* (directly in C/C++, or through FFI/bindings from
another language) to offload AES-GCM authenticated encryption /
decryption onto a BlueField DPU or ConnectX accelerator. It is not
for NVIDIA developers contributing to DOCA AES-GCM itself.
Language scope. DOCA AES-GCM ships as a C library with
pkg-config module name doca-aes-gcm. The shipped samples are
written in C. C and C++ consumers are the canonical case and the
worked examples in TASKS.md assume that path. Other-language
consumers (Rust, Go, Python, …) consume the same *.so through FFI
or language-specific bindings; the skill's contribution in that case
is to keep the lifecycle, capability-discovery, permission,
error-taxonomy, AEAD-semantics, and encrypt-vs-decrypt guidance
language-neutral, and to route the agent to the public C ABI as the
authoritative surface that any wrapper will eventually call.
Key handling is out of scope. This skill teaches the agent how to
use the DOCA AES-GCM library; it does not teach the user how to
generate, store, rotate, or distribute AES-GCM keys. Key-management
is the user's responsibility (a KMS, an HSM, a sealed file, an env
var the user trusts). The skill's only key-handling rule is the
operational one in
CAPABILITIES.md ## Safety policy:
do not log keys, do not commit them to source, and treat any key
buffer the program holds as sensitive memory.
When to load this skill
Load this skill when the user is doing hands-on DOCA AES-GCM work,
in any language. Concretely:
- Initializing a
doca_aes_gcm context on a doca_dev and
configuring at least one task type (doca_aes_gcm_task_encrypt
and/or doca_aes_gcm_task_decrypt) before doca_ctx_start().
- Choosing between encrypt (
doca_aes_gcm_task_encrypt —
takes key + IV + AAD + plaintext, produces ciphertext + auth
tag) and decrypt (doca_aes_gcm_task_decrypt — takes key +
IV + AAD + ciphertext + expected auth tag, produces plaintext
and verifies the tag) for the user's data shape.
- Setting permissions on
doca_mmap correctly for the source buffer
(DOCA_ACCESS_FLAG_LOCAL_READ_ONLY at minimum — the plaintext on
encrypt or the ciphertext on decrypt) and the destination buffer
(DOCA_ACCESS_FLAG_LOCAL_READ_WRITE).
- Checking which AES-GCM key types (
DOCA_AES_GCM_KEY_128 /
DOCA_AES_GCM_KEY_256 — AES-192 is not in the library) the
active device's accelerator advertises via
doca_aes_gcm_cap_task_encrypt_is_key_type_supported /
doca_aes_gcm_cap_task_decrypt_is_key_type_supported, and which task types via
doca_aes_gcm_cap_task_encrypt_is_supported /
_task_decrypt_is_supported.
- Sizing the per-submission plaintext against
doca_aes_gcm_cap_task_encrypt_get_max_buf_size(devinfo).
- Validating an encrypt + decrypt round-trip against a published
AES-GCM test vector (NIST GCMVS, or RFC 5288 examples) before
pushing any user data through the accelerator.
- Handling the auth-tag verification result on decrypt completions
as a security-critical signal — a tag-mismatch completion means
the ciphertext was tampered with or corrupted, and the plaintext
output of that task is poisoned and must not be consumed.
- Debugging a
DOCA_ERROR_* returned from an AES-GCM call
(lifecycle vs. unsupported key size vs. permission vs. tag
verification failure on decrypt) and the task-completion event on
the progress engine.
- Designing or extending non-C bindings (Rust, Go, Python, …) that
wrap the AES-GCM C ABI — for the lifecycle, permission,
capability, AEAD-semantics, and encrypt-vs-decrypt rules the
wrapper must honor.
Do not load this skill for general DOCA orientation, install of
DOCA itself, AES modes that are not GCM (CBC / CTR / XTS — those are
not in this library and CPU + OpenSSL is the right answer), SHA
hashing on the same accelerator family (use
doca-sha), or other DOCA libraries. For
those, use
doca-public-knowledge-map.
What this skill provides
This is a thin loader. The body keeps only the orientation
needed to pick the right next file. The substantive AES-GCM-specific
material lives in two companion files:
CAPABILITIES.md — what DOCA AES-GCM can express on this version:
the two task types (encrypt and decrypt), the AEAD output shape
(ciphertext + auth tag on encrypt; verified plaintext on decrypt),
the AES-GCM key-type surface (only 128-bit and 256-bit — AES-192
is not in the enum, both cap-queried), the capability-query
surface (doca_aes_gcm_cap_* for task presence, key-type
support, and buffer sizing), the
AES-GCM error taxonomy (mapped onto the cross-library
DOCA_ERROR_* set, with explicit treatment of the
tag-verification-failure outcome as security-critical), the
observability surface (per-task completion events on the progress
engine), the safety policy that gates source / destination mmap
permission decisions and key-handling cautions, and the
path-selection rule (when to use doca-aes-gcm versus CPU OpenSSL
or a different DOCA crypto library).
TASKS.md — step-by-step workflows for the six in-scope AES-GCM
verbs: configure, build, modify, run, test, debug.
Plus a Deferred task verbs block that points out-of-scope
questions at the right next skill.
The skill assumes a host or BlueField where DOCA is already
installed at the standard location and the user has the privileges
their public install profile expects. It does not cover installing
DOCA — that path goes through
doca-setup.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or templates
bundle. To keep the boundary clean, it deliberately does not
contain — and pull requests should not add:
- Pre-written DOCA AES-GCM application source code, in any
language. The verified AES-GCM source code is the shipped C
samples at
/opt/mellanox/doca/samples/doca_aes_gcm/. The agent's
job is to route the user to those files and prescribe a
minimum-diff modification on them via the universal
modify-a-sample workflow in
doca-programming-guide,
layered with the AES-GCM-specific overrides in
TASKS.md ## modify.
- Pre-computed AES-GCM test vectors. The skill tells the agent
to use a published test vector (e.g. NIST GCMVS, RFC 5288
AES-GCM examples) as the known-vector smoke; it does not ship a
vector bank of its own. The agent must cite the vector source so
the user can audit it.
- Pre-baked AES-GCM keys, IVs, or AAD strings. A key in this
repo is a key in every customer's repo — by construction, it must
not be there. The skill teaches the shape of the inputs; the
user supplies the actual bytes from their own key-management
system.
- Standalone build manifests (
meson.build, CMakeLists.txt,
Cargo.toml, …) parked inside the skill. The agent constructs
the build manifest in the user's project directory against the
user's installed DOCA, where pkg-config --modversion doca-aes-gcm is the source of truth.
- A
samples/, bindings/, or reference/ subtree of any
kind. A mock or incomplete artifact in this skill's tree, even
one labeled "reference", is misleading: users will read it as
buildable.
Loading order
- Read this
SKILL.md first to confirm the user's question is in
scope.
- For the AES-GCM capability matrix, task types, key-size
surface, capability-query rules, permission matrix, AEAD
semantics, error taxonomy, observability, and safety /
path-selection policy, see CAPABILITIES.md.
- For step-by-step workflows — configure, build, modify, run,
test, debug — see TASKS.md.
Both companion files cross-link to each other,
doca-version for the canonical
version-handling rules, and
doca-public-knowledge-map
whenever the right answer is "look it up in the public docs or the
installed package layout" rather than "AES-GCM-specific guidance".
Related skills
doca-public-knowledge-map —
the routing table for every public DOCA documentation source and
the on-disk layout of an installed DOCA package. The DOCA AES-GCM
page lives at docs.nvidia.com/doca/sdk/DOCA-AES-GCM/; it is a
member of the DOCA Crypto Acceleration family alongside
doca-sha.
doca-setup — env preparation,
install verification, and the I have no install yet path with
the public NGC DOCA container. This skill assumes its
preconditions are satisfied.
doca-version — canonical DOCA
version-handling rules. This skill's
## Version compatibility
cross-links the four-way match rule and adds only the
AES-GCM-specific "discover key sizes + task presence via cap
query" overlay.
doca-structured-tools-contract —
the bundle's structured-tools precedence rule (detect / prefer /
fall back / report). The Command appendix in
TASKS.md honors this contract.
doca-programming-guide —
general DOCA programming patterns shared by every library: the
canonical pkg-config + meson build pattern, the universal
modify-a-shipped-sample first-app workflow, the universal
lifecycle, the cross-library DOCA_ERROR_* taxonomy, and the
program-side debug order. This skill layers AES-GCM specifics on
top.
doca-sha — the sibling library in the
DOCA Crypto Acceleration family for hardware-accelerated SHA
hashing. Load alongside this skill when the user's flow is
authenticated-encryption with a separate keyed hash (rare —
AES-GCM already provides authentication via its tag) or when the
user is comparing offload paths between the two.
doca-debug — the cross-cutting
debug ladder (install / version / build / link / runtime /
program / driver). AES-GCM-specific debug (key-size-not-supported,
oversized input, tag-verification failure on decrypt) overlays on
top of that ladder.
1---2name: doca-aes-gcm3description: Use this skill when the user is doing hands-on DOCA AES-GCM work on a BlueField DPU or ConnectX NIC — configuring `doca_aes_gcm_task_encrypt` / `_task_decrypt`, querying `doca_aes_gcm_cap_*` for per-key-type (only `DOCA_AES_GCM_KEY_128` / `_256` — AES-192 not supported) and per-task support, sizing plaintext against the max-buf cap, setting source / destination mmap permissions, validating with a NIST GCMVS or RFC 5288 vector, or debugging DOCA_ERROR_* including the security-critical tag-verification-failed outcome on decrypt. Trigger even when the user does not explicitly mention "DOCA AES-GCM" or "AEAD" — typical implicit phrasings: "decrypt completion IO_FAILED", "auth tag isn't verifying", "NOT_PERMITTED on my encrypt buffer", "is AES-192-GCM on this BlueField" (no), or "encrypted record came back tampered". Refuse and route elsewhere for non-GCM AES modes (CBC / CTR / XTS — CPU OpenSSL), key management (KMS / HSM / rotation), SHA (doca-sha), or general AEAD background.4license: Apache-2.05---67# DOCA AES-GCM89**Where to start:** This skill assumes DOCA is already installed and10the user is doing **hands-on AES-GCM-acceleration work** on a11BlueField / ConnectX / host with DOCA. Open [`TASKS.md`](TASKS.md) if12the user wants to *do* something (configure / build / modify / run /13test / debug); open [`CAPABILITIES.md`](CAPABILITIES.md) when the14question is *what can DOCA AES-GCM express* on this version. If the15user has not installed DOCA yet, route to16[`doca-setup`](../../doca-setup/SKILL.md) first. If the user is17asking *"should I even use the accelerator for this encryption?"*,18the path-selection rule in19[`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)20is the first stop. If the user is treating AES-GCM as a confidentiality-only21primitive (raw AES-CTR / AES-CBC style), stop and read the AEAD note22in [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)23first — AES-GCM is authenticated encryption, and confusing the two is24the most expensive failure mode this skill exists to prevent.2526## Example questions this skill answers well2728The CLASSES of DOCA AES-GCM questions this skill is built to answer,29each with one worked example. The agent should treat the *class* as30the load-bearing piece — the worked example is a single instance.3132- **"Should I offload this AES-GCM encryption to DOCA AES-GCM, or33 just do it on the CPU with OpenSSL?"** — worked example: *"I am34 encrypting 4 KiB TLS records at line rate; is doca-aes-gcm worth35 the setup vs OpenSSL `EVP_aes_256_gcm` on the CPU?"*. Answered by36 the path-selection table in37 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)38 + the *"when NOT to use doca-aes-gcm"* bullets in39 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy).40- **"Does my device support the AES-GCM key size I want?"** — worked41 example: *"is AES-256-GCM in the accelerator on this BlueField?42 And while we're here, is AES-192-GCM available?"* (Answer: the43 library exposes only `DOCA_AES_GCM_KEY_128` / `DOCA_AES_GCM_KEY_256`;44 AES-192 is not in the enum and is not supported. For the two45 real key types, gate on46 `doca_aes_gcm_cap_task_encrypt_is_key_type_supported(devinfo, key_type)`47 and the matching `_decrypt_is_key_type_supported`. AES-192 is48 not available — route to a CPU library.) Answered by the49 per-key-type capability queries and the per-task50 `doca_aes_gcm_cap_task_*_is_supported` queries in51 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)52 + the discovery step in53 [`TASKS.md ## configure`](TASKS.md#configure).54- **"How do I correctly decrypt an AES-GCM message and verify the55 auth tag?"** — worked example: *"my `doca_aes_gcm_task_decrypt`56 completion reports an error — is the plaintext output safe to57 use?"*. Answered by the auth-tag verification rule in58 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)59 (*do not use the plaintext if the auth tag did not verify*) +60 the decrypt completion-handling workflow in61 [`TASKS.md ## test`](TASKS.md#test) and62 [`TASKS.md ## debug`](TASKS.md#debug).63- **"What permissions does the source / destination mmap need?"** —64 worked example: *"my `doca_aes_gcm_task_encrypt` returns65 `DOCA_ERROR_NOT_PERMITTED`"*. Answered by the permission matrix66 in [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)67 + the mmap-set-permissions checklist in68 [`TASKS.md ## test`](TASKS.md#test).69- **"Is this DOCA AES-GCM API available on my installed DOCA70 version?"** — worked example: *"is AES-192-GCM in the DOCA I have71 installed, on this device?"*. Answered by the version-compatibility72 overlay in73 [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility),74 which cross-links the canonical detection chain in75 [`doca-version`](../../doca-version/SKILL.md) and adds the76 AES-GCM-specific *"discover key sizes via cap query"* bullets.77- **"What does this `DOCA_ERROR_*` from an AES-GCM call mean and78 which layer caused it?"** — worked example: *"`DOCA_ERROR_IO_FAILED`79 on the decrypt completion — is this a hardware bug or a tag80 mismatch?"*. Answered by the AES-GCM overlay on the cross-library81 taxonomy in82 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)83 + the layered ladder in84 [`TASKS.md ## debug`](TASKS.md#debug) that escalates to85 [`doca-debug`](../../doca-debug/SKILL.md).8687## Audience8889This skill serves **external developers building applications that90consume the DOCA AES-GCM library** — i.e., users whose code calls91`doca_aes_gcm_*` (directly in C/C++, or through FFI/bindings from92another language) to offload AES-GCM authenticated encryption /93decryption onto a BlueField DPU or ConnectX accelerator. It is *not*94for NVIDIA developers contributing to DOCA AES-GCM itself.9596**Language scope.** DOCA AES-GCM ships as a C library with97`pkg-config` module name `doca-aes-gcm`. The shipped samples are98written in C. C and C++ consumers are the canonical case and the99worked examples in `TASKS.md` assume that path. Other-language100consumers (Rust, Go, Python, …) consume the same `*.so` through FFI101or language-specific bindings; the skill's contribution in that case102is to keep the lifecycle, capability-discovery, permission,103error-taxonomy, AEAD-semantics, and encrypt-vs-decrypt guidance104language-neutral, and to route the agent to the public C ABI as the105authoritative surface that any wrapper will eventually call.106107**Key handling is out of scope.** This skill teaches the agent how to108*use* the DOCA AES-GCM library; it does not teach the user how to109generate, store, rotate, or distribute AES-GCM keys. Key-management110is the user's responsibility (a KMS, an HSM, a sealed file, an env111var the user trusts). The skill's only key-handling rule is the112operational one in113[`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy):114do not log keys, do not commit them to source, and treat any key115buffer the program holds as sensitive memory.116117## When to load this skill118119Load this skill when the user is doing hands-on DOCA AES-GCM work,120in any language. Concretely:121122- Initializing a `doca_aes_gcm` context on a `doca_dev` and123 configuring at least one task type (`doca_aes_gcm_task_encrypt`124 and/or `doca_aes_gcm_task_decrypt`) before `doca_ctx_start()`.125- Choosing between **encrypt** (`doca_aes_gcm_task_encrypt` —126 takes key + IV + AAD + plaintext, produces ciphertext + auth127 tag) and **decrypt** (`doca_aes_gcm_task_decrypt` — takes key +128 IV + AAD + ciphertext + expected auth tag, produces plaintext129 *and verifies the tag*) for the user's data shape.130- Setting permissions on `doca_mmap` correctly for the source buffer131 (`DOCA_ACCESS_FLAG_LOCAL_READ_ONLY` at minimum — the plaintext on132 encrypt or the ciphertext on decrypt) and the destination buffer133 (`DOCA_ACCESS_FLAG_LOCAL_READ_WRITE`).134- Checking which AES-GCM key types (`DOCA_AES_GCM_KEY_128` /135 `DOCA_AES_GCM_KEY_256` — AES-192 is not in the library) the136 active device's accelerator advertises via137 `doca_aes_gcm_cap_task_encrypt_is_key_type_supported` /138 `doca_aes_gcm_cap_task_decrypt_is_key_type_supported`, and which task types via139 `doca_aes_gcm_cap_task_encrypt_is_supported` /140 `_task_decrypt_is_supported`.141- Sizing the per-submission plaintext against142 `doca_aes_gcm_cap_task_encrypt_get_max_buf_size(devinfo)`.143- Validating an encrypt + decrypt round-trip against a published144 AES-GCM test vector (NIST GCMVS, or RFC 5288 examples) before145 pushing any user data through the accelerator.146- Handling the auth-tag verification result on decrypt completions147 *as a security-critical signal* — a tag-mismatch completion means148 the ciphertext was tampered with or corrupted, and the plaintext149 output of that task is poisoned and must not be consumed.150- Debugging a `DOCA_ERROR_*` returned from an AES-GCM call151 (lifecycle vs. unsupported key size vs. permission vs. tag152 verification failure on decrypt) and the task-completion event on153 the progress engine.154- Designing or extending non-C bindings (Rust, Go, Python, …) that155 wrap the AES-GCM C ABI — for the lifecycle, permission,156 capability, AEAD-semantics, and encrypt-vs-decrypt rules the157 wrapper must honor.158159Do **not** load this skill for general DOCA orientation, install of160DOCA itself, AES modes that are not GCM (CBC / CTR / XTS — those are161not in this library and CPU + OpenSSL is the right answer), SHA162hashing on the same accelerator family (use163[`doca-sha`](../doca-sha/SKILL.md)), or other DOCA libraries. For164those, use165[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md).166167## What this skill provides168169This is a **thin loader**. The body keeps only the orientation170needed to pick the right next file. The substantive AES-GCM-specific171material lives in two companion files:172173- `CAPABILITIES.md` — what DOCA AES-GCM can express on this version:174 the two task types (encrypt and decrypt), the AEAD output shape175 (ciphertext + auth tag on encrypt; verified plaintext on decrypt),176 the AES-GCM key-type surface (only 128-bit and 256-bit — AES-192177 is not in the enum, both cap-queried), the capability-query178 surface (`doca_aes_gcm_cap_*` for task presence, key-type179 support, and buffer sizing), the180 AES-GCM error taxonomy (mapped onto the cross-library181 `DOCA_ERROR_*` set, with explicit treatment of the182 tag-verification-failure outcome as security-critical), the183 observability surface (per-task completion events on the progress184 engine), the safety policy that gates source / destination mmap185 permission decisions and key-handling cautions, and the186 path-selection rule (when to use doca-aes-gcm versus CPU OpenSSL187 or a different DOCA crypto library).188- `TASKS.md` — step-by-step workflows for the six in-scope AES-GCM189 verbs: `configure`, `build`, `modify`, `run`, `test`, `debug`.190 Plus a `Deferred task verbs` block that points out-of-scope191 questions at the right next skill.192193The skill assumes a host or BlueField where DOCA is already194installed at the standard location and the user has the privileges195their public install profile expects. It does not cover installing196DOCA — that path goes through197[`doca-setup`](../../doca-setup/SKILL.md).198199## What this skill deliberately does not ship200201This skill is **agent guidance**, not a samples or templates202bundle. To keep the boundary clean, it deliberately does not203contain — and pull requests should not add:204205- **Pre-written DOCA AES-GCM application source code, in any206 language.** The verified AES-GCM source code is the shipped C207 samples at `/opt/mellanox/doca/samples/doca_aes_gcm/`. The agent's208 job is to route the user to those files and prescribe a209 minimum-diff modification on them via the universal210 modify-a-sample workflow in211 [`doca-programming-guide`](../../doca-programming-guide/SKILL.md),212 layered with the AES-GCM-specific overrides in213 [`TASKS.md ## modify`](TASKS.md#modify).214- **Pre-computed AES-GCM test vectors.** The skill tells the agent215 to use a *published* test vector (e.g. NIST GCMVS, RFC 5288216 AES-GCM examples) as the known-vector smoke; it does not ship a217 vector bank of its own. The agent must cite the vector source so218 the user can audit it.219- **Pre-baked AES-GCM keys, IVs, or AAD strings.** A key in this220 repo is a key in every customer's repo — by construction, it must221 not be there. The skill teaches the *shape* of the inputs; the222 user supplies the actual bytes from their own key-management223 system.224- **Standalone build manifests** (`meson.build`, `CMakeLists.txt`,225 `Cargo.toml`, …) parked inside the skill. The agent constructs226 the build manifest *in the user's project directory* against the227 user's installed DOCA, where `pkg-config --modversion228 doca-aes-gcm` is the source of truth.229- **A `samples/`, `bindings/`, or `reference/` subtree** of any230 kind. A mock or incomplete artifact in this skill's tree, even231 one labeled "reference", is misleading: users will read it as232 buildable.233234## Loading order2352361. Read this `SKILL.md` first to confirm the user's question is in237 scope.2382. **For the AES-GCM capability matrix, task types, key-size239 surface, capability-query rules, permission matrix, AEAD240 semantics, error taxonomy, observability, and safety /241 path-selection policy, see [CAPABILITIES.md](CAPABILITIES.md).**2423. **For step-by-step workflows — configure, build, modify, run,243 test, debug — see [TASKS.md](TASKS.md).**244245Both companion files cross-link to each other,246[`doca-version`](../../doca-version/SKILL.md) for the canonical247version-handling rules, and248[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)249whenever the right answer is "look it up in the public docs or the250installed package layout" rather than "AES-GCM-specific guidance".251252## Related skills253254- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md) —255 the routing table for every public DOCA documentation source and256 the on-disk layout of an installed DOCA package. The DOCA AES-GCM257 page lives at `docs.nvidia.com/doca/sdk/DOCA-AES-GCM/`; it is a258 member of the DOCA Crypto Acceleration family alongside259 [`doca-sha`](../doca-sha/SKILL.md).260- [`doca-setup`](../../doca-setup/SKILL.md) — env preparation,261 install verification, and the *I have no install yet* path with262 the public NGC DOCA container. This skill assumes its263 preconditions are satisfied.264- [`doca-version`](../../doca-version/SKILL.md) — canonical DOCA265 version-handling rules. This skill's266 [`## Version compatibility`](CAPABILITIES.md#version-compatibility)267 cross-links the four-way match rule and adds only the268 AES-GCM-specific *"discover key sizes + task presence via cap269 query"* overlay.270- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md) —271 the bundle's structured-tools precedence rule (detect / prefer /272 fall back / report). The Command appendix in273 [TASKS.md](TASKS.md) honors this contract.274- [`doca-programming-guide`](../../doca-programming-guide/SKILL.md) —275 general DOCA programming patterns shared by every library: the276 canonical `pkg-config` + meson build pattern, the universal277 modify-a-shipped-sample first-app workflow, the universal278 lifecycle, the cross-library `DOCA_ERROR_*` taxonomy, and the279 program-side debug order. This skill layers AES-GCM specifics on280 top.281- [`doca-sha`](../doca-sha/SKILL.md) — the sibling library in the282 DOCA Crypto Acceleration family for hardware-accelerated SHA283 hashing. Load alongside this skill when the user's flow is284 authenticated-encryption *with a separate keyed hash* (rare —285 AES-GCM already provides authentication via its tag) or when the286 user is comparing offload paths between the two.287- [`doca-debug`](../../doca-debug/SKILL.md) — the cross-cutting288 debug ladder (install / version / build / link / runtime /289 program / driver). AES-GCM-specific debug (key-size-not-supported,290 oversized input, tag-verification failure on decrypt) overlays on291 top of that ladder.