02 Code MapEN
Go Struct ↔ ASN.1 Mapping & Code Location
Specification v1.7.1 (code aligned, closed out 2026-08-05).
2026-08-24 alignment notes
- Current module names:
types,gateway-core,core(old namespki-types/pki-gateway-lib/pki-coreare deprecated).- AIC-JWT: claims/JWS/capability matching/constraints/key binding/11-step verification are in
types/aicjwt/(github.com/varwof/types/aicjwt); the standalone reference repository aic-jwt is a wrapper layer + OAuth scenario tests.- SPIFFE:
types/aic.go(Build/Validate/AddSAN),gateway-core/spiffe.go(parsing/admission),core/internal/ca/sign.go(SAN dual-write),core/internal/serve/api_ops.go(is_spiffe parameter).- OAuth identity source:
bridge-oauth/(bridge service),core/internal/ca/identity.go(IdentitySourceOAuth, password grant + userinfo).- Constraint schemeId whitelist:
varwof/constraint-v1(recommended by specification),constraint,constraint-v1(backward compatibility); AIC/PA constraint count limit 32 entries.✅ v1.7.1 completed:
Reasonadded (DA first position, TBS after principalUid), TBS reconstruction includes reason- All structure OPTIONAL field tag renumbering (AIC constraints→[0], extensions→[1]; PA constraints→[0], delegationPolicy→[1], extensions→[2]; DelegationPolicy.maxSessionHours→[0])
DelegationMode/DelegationModeEnumchanged to INTEGER (0..1)PrincipalUid.hashAlgochanged toAlgorithmIdentifiervalue type ([0] EXPLICIT OPTIONAL, defaults to SHA-256 when omitted)AIC.delegationAuthorizationsemantically required (Go retains omitempty for marshalability,BuildAIC/ParseAIC/ValidateAICenforced)- keyHash = hashAlgo(SPKI):
ValidatePrincipalUidKeyHashdispatches by algorithm; constraint schemeId whitelist{constraint, constraint-v1, varwof/constraint-v1}; non-SHA-256 explicitly reports "unsupported"
Known limitation: CA issuance-phase parameter-level subset validation (
C_agent.parameters ⊆ P_grants.parameters) is not yet implemented. It applies at the capability layer and MUST NOT be applied to the constraint layer; it is planned for a future release.
gateway-core (Shared Library)
| File | Go Type | Corresponds to ASN.1 | Description |
|---|---|---|---|
aic.go |
AIC |
AIC SEQUENCE | Core structure, including authorizationConstraints (v1.7.1 constraints→[0], extensions→[1]) |
aic.go |
PrincipalUid |
PrincipalUid | String/ParsePrincipalUid/MakePrincipalUidFromCert + HashAlgoOID; hashAlgo is AlgorithmIdentifier value type |
aic.go |
DelegationAuthorization |
DelegationAuthorization | reason(first position) + requestedLifetime + timestamp + nonce + signatureAlgorithm + signatureValue (v1.7.1) |
aic.go |
Capability |
Capability | schemeId + capabilityId + parameters (reused as constraint container) |
aic.go |
ExtField |
ExtField | AIC extension slot entry |
aic.go |
AlgorithmIdentifier |
AlgorithmIdentifier | algorithm OID + parameters |
aic.go |
— | DelegationMode | Go const DelegationAuthorized(0) / DelegationRepresentative(1) |
types/user_permission.go |
PrincipalAuthorization |
PrincipalAuthorization | grants + authorizationConstraints([0]) + delegationPolicy([1]) + extensions([2]) (v1.7.1) |
types/user_permission.go |
DelegationPolicy |
DelegationPolicy | version + maxAgents + allowedMode + maxSessionHours([0] value int) |
types/aic.go |
DelegationAuthTBS |
DelegationAuthTBS | Signature-covered structure, reason after principalUid, authorizationConstraints→[0] |
types/aic.go |
ValidateAIC / ValidatePrincipalUidKeyHash |
— | v1.7.1 validation (R1–R5, V6, V8, V10/V15, V16, nonce 32B, constraint whitelist) |
decision.go |
VerifyDelegationAuth |
— | TBS reconstruction (including reason) + signature verification + SPKI hash cross-check (ECDSA/RSA-SHA256/PSS) |
decision.go |
CheckAuthorizationConstraints |
— | v1.6 offline verification of CIDR/concurrency/time window |
pipeline.go |
RunAccessPipeline |
— | 9-step unified admission pipeline (v1.6 includes constraint checks) |
plugin.go |
PluginRegistry |
— | Capability Scheme plugin engine |
core
| File | Go Type | Corresponding OID | Description |
|---|---|---|---|
internal/ca/oid.go |
OID constants | Full OID tree | Unified OID definitions |
internal/ca/aic.go |
AIC issuance structure | .1.1 |
BuildAIC (including V10/V15/V16/nonce validation) + ParseAIC (reports error on DA absence) + ValidatePrincipalUidKeyHash + SPKIHash |
internal/ca/principal_auth.go |
PrincipalAuthorization / DelegationPolicy | .1.2 |
v1.7.1 three tags ([0]/[1]/[2]) + maxSessionHours [0] value type |
internal/ca/sign.go |
ProfileAgentProxy | — | Issues AIC certificates |
internal/serve/api_ops.go |
API handlers | — | AIC issuance (DA required with authorization 400), revocation API |
internal/serve/rbac.go |
authenticate + authFromAIC | — | Role extraction |
gateway-{tcp,http,udp}
| File | Function | Description |
|---|---|---|
gateway.go |
NewGateway | Unified constructor, integrates all lib components |
mapping.go / proxy.go |
Data plane | Calls RunAccessPipeline for admission |
OID → Code Mapping
| OID | Name | Definition Location | Parsing Location |
|---|---|---|---|
.1.1 |
AIC | core/internal/ca/oid.go |
gateway-core/aic.go:ParseAIC |
.1.1.1 |
AgentIdentity | core/internal/ca/oid.go |
Embedded in AIC |
.1.1.2 |
DelegationAuthorization | core/internal/ca/oid.go |
gateway-core/decision.go:VerifyDelegationAuth |
.1.2 |
PrincipalAuthorization | core/internal/ca/oid.go |
gateway-core/decision.go |
.1.2.4 |
DelegationPolicy | core/internal/ca/oid.go |
gateway-core/decision.go |
.1.6 |
RenewalToken | core/internal/ca/oid.go |
Reserved |
.3.1 |
MarketAccessId | core/internal/ca/oid.go |
Reserved |
.5.1 |
SM2-Signature | core/internal/ca/oid.go |
core Chinese cryptography |
.6.1 |
SCT | core/internal/ca/oid.go |
CT logs |
ACL
The following features were removed from Core in v1.5; corresponding OIDs are retained but no longer parsed:
| OID | Removed Item | Replacement |
|---|---|---|
.1.1.4 |
MarketAccessLite | Merged into .3.1 |
.1.1.5 |
UserExtensions | AIC built-in extensions slot |
.1.1.9 |
VendorRegistry | Moved to .1.4 |
.1.1.11 |
SPIFFE-Compatibility | Optional Profile |
.1.3 |
OfflineRBAC | Capability Scheme |
.1.4 |
PrincipalProfile | Directory service |
1.2 → 1.5 |
PrincipalAuthorization OID migration | OID from .1.5 → .1.2 |