Skip to content

Standards Compliance

TCS implements a complete stack of open standards for verifiable credential issuance, presentation, and trust establishment. OID4VCI profiles are conformance-passed, while OID4VP profiles are currently in conformance processing.


StandardSpecificationImplementationStatus
OID4VCIOpenID for Verifiable Credential Issuance — tracking the latest published Implementer’s DraftPre-authorized code flow (production), credential offer management, issuer metadata discovery. Authorization code flow on roadmap.Conformance passing
OID4VPOpenID for Verifiable Presentations — tracking the latest published Implementer’s DraftDCQL queries, JAR request objects, direct_post response mode, VP Token validationConformance processing
HAIP v1High Assurance Interoperability Profile 1.0ES256 signing, X.509 certificate binding, mandatory DPoP nonces, client attestation supportOID4VCI passing / OID4VP processing
SD-JWT VC draft-10IETF SD-JWT-based Verifiable Credentials — pinned to draft-ietf-oauth-sd-jwt-vc-10dc+sd-jwt credential format, selective disclosure, Type Metadata Documents (§6)Implemented
DPoPRFC 9449 — Demonstrating Proof-of-PossessionToken binding with JWK thumbprint, server-issued nonces, JTI replay protectionImplemented
PKCERFC 7636 — Proof Key for Code ExchangeS256 challenge method for authorization code flowImplemented
JARRFC 9101 — JWT-Secured Authorization RequestsSigned request objects for OID4VP verification flowsImplemented
PARRFC 9126 — Pushed Authorization RequestsServer-side session creation before authorization redirectImplemented
OAuth 2.0 AS MetadataRFC 8414 — OAuth 2.0 Authorization Server Metadata/.well-known/oauth-authorization-server discovery endpointImplemented
ISO 27001Information Security ManagementOperational security controls governing TCS infrastructure and processesOrganization-stated certification claim
ISO 27701Privacy Information ManagementPrivacy controls for credential data handling and storageOrganization-stated certification claim

TCS implements two issuance flows defined by OID4VCI:

  • Pre-Authorized Code Flow (production): The issuer creates a credential offer containing a pre-authorized code. The holder wallet exchanges this code for an access token, then uses the token to request the credential. No user interaction with the authorization server is required.
  • Authorization Code Flow (roadmap, not in production): The wallet would initiate issuance through PAR, authenticate at the authorization endpoint, receive an authorization code, exchange it for an access token, and request the credential. Underlying primitives (PAR, PKCE) are implemented and exercised by conformance tests; the issuer-side flow: "authorization-code" switch is not yet wired through. See the Roadmap.

DPoP-bound access tokens are supported on the production flow per HAIP requirements.

TCS implements OID4VP v1 with the following capabilities:

  • DCQL (Digital Credentials Query Language) queries for specifying required credentials
  • JAR (JWT-Secured Authorization Requests) for signing request objects with application/oauth-authz-req+jwt content type
  • direct_post response mode for VP Token submission
  • Cross-device and same-device flows with session status polling and optional redirect URIs

HAIP defines a constrained profile of OID4VCI and OID4VP for high-assurance use cases. TCS satisfies HAIP requirements including:

  • ES256 (P-256) as the required signing algorithm for X.509-bound credentials
  • Mandatory DPoP nonces on every token and credential request
  • Client attestation JWT support (OAuth-Client-Attestation and OAuth-Client-Attestation-PoP headers)
  • dc+sd-jwt as the credential format

TCS uses the IETF SD-JWT VC specification for its credential format, pinned to draft-ietf-oauth-sd-jwt-vc-10. This is distinct from W3C Verifiable Credentials Data Model 2.0 — the two specifications are mutually exclusive per IETF SD-JWT VC §1.2.

Key characteristics:

  • Format identifier: dc+sd-jwt
  • Flat claims structure with selective disclosure via the _sd mechanism
  • Type metadata discovery through VCT URIs served by the Schema Registry
  • Key binding JWTs for holder proof-of-possession during presentation

DPoP prevents token theft by binding access tokens to the client’s key pair. TCS enforces:

  • JWK thumbprint (jkt) binding stored with each access token
  • Server-issued DPoP nonces with 300-second expiry
  • JTI (JWT ID) replay protection backed by database tracking
  • IAT (issued-at) validation with 300-second maximum age and 60-second clock skew tolerance
  • Supported algorithms: EdDSA, ES256

All authorization code flows require PKCE with the S256 challenge method. The code verifier and challenge are validated during token exchange to prevent authorization code interception.

The Verifier Service signs OID4VP request objects as JWTs with content type application/oauth-authz-req+jwt. Wallets fetch the signed request object from the request URI and verify the signature before processing the authorization request.

The Authorization Server exposes a PAR endpoint that accepts authorization request parameters and returns a request_uri. This URI is then used at the authorization endpoint, keeping sensitive parameters server-side and reducing URL length.

The /.well-known/oauth-authorization-server endpoint publishes the Authorization Server’s capabilities, including supported grant types, endpoints, code challenge methods, and DPoP signing algorithms.


TCS runs the OpenID Foundation conformance suite against its endpoints. The status below reflects whether all required test plans for each profile pass; it does not imply OIDF certification (no certification has been granted as of this writing — conformance certification is a separate program).

ProfileSuiteResult
OID4VCI Credential IssuerOID4VCI Conformance SuitePassing
OID4VP VerifierOID4VP Conformance SuiteProcessing
HAIP + OID4VCI IssuerHAIP Conformance Suite + OID4VCIPassing
HAIP + OID4VP VerifierHAIP Conformance Suite + OID4VPProcessing

The conformance suite emulates a wallet client and validates that the TCS endpoints produce spec-compliant responses for all required protocol interactions, including error cases. To request a copy of the latest test plan output, contact the team.


TCS supports two signing paths, selected based on the issuer’s key material:

AlgorithmCurveKey TypeUse CaseCredential Header
EdDSAEd25519DID-basedIssuers using IOTA DID verification methodskid referencing the DID verification method
ES256P-256 (secp256r1)X.509-basedIssuers using X.509 certificates (required by HAIP)x5c containing the certificate chain

Note: did:key generation is available in Holder Service for wallet interoperability. This is a holder-side capability and does not constitute an additional issuer signing path — TCS issuer signing remains limited to the two paths above.


TCS supports two cryptographic binding methods for credential proof-of-possession:

MethodDescription
didThe holder proves possession of a DID verification method by signing a proof JWT with the corresponding private key
jwkThe holder proves possession of a standalone key pair by including the public key as a JWK in the proof JWT header

TCS uses a single credential format across all issuance flows:

PropertyValue
Format identifierdc+sd-jwt
Selective disclosure_sd claim mechanism (hash-based)
Key bindingKey Binding JWT appended to the SD-JWT string
Type metadataVCT URI resolving to a Type Metadata Document served by the Schema Registry
Claims structureFlat (no nested credentialSubject wrapper)

TCS issues dc+sd-jwt credentials and accepts presentations via OID4VP DCQL. Because both protocols are still pre-final, real-world interop depends on the wallet’s profile choices (proof type, binding method, request signing). The table below reflects what is currently substantiated by TCS internal test fixtures — it is not an OpenID Foundation interop certification, and it is intentionally conservative.

WalletIssuance (OID4VCI)Presentation (OID4VP)Notes
Turing Space Holder Service (custodial wallet)TestedTestedFirst-party reference path; exercised by TCS service tests

Third-party wallet results will be added to this table only once a dated test artefact exists — we deliberately do not list “untested” wallets, since that itself can read as an interop claim. If you need a specific wallet integration confirmed before engaging, contact the team — we can run a profile-matching session and share the resulting test output.


To make procurement decisions easier, we list what TCS does not currently implement, and the rationale or planned timing for each.

CapabilityStatusNotes
ISO/IEC 18013-5 mDoc / mDLNot implementedTCS issues only dc+sd-jwt. Deployments requiring EUDIW PID-mDoc parity must combine TCS with a separate mDoc stack.
W3C VC Data Model 1.1 / 2.0 (subject credentials)Out of scope by designThe IETF SD-JWT VC spec §1.2 treats W3C VCDM and SD-JWT VC as mutually exclusive. The only W3C-format artefact TCS produces is the DIF Well-Known DID Configuration credential for domain linkage.
IETF Token Status List (draft-ietf-oauth-status-list)RoadmapCurrent revocation lookups go through the Trust & Schema Registry; spec-aligned Status List support is a planned enhancement.
OpenID Federation / EBSI TIR / ETSI Trusted List integrationNot implementedTCS operates a scoped issuer allowlist within the TCS deployment. Cross-ecosystem trust currently bridges via the X.509 / x5c path with an externally-anchored CA — see Architecture & Security.
OID4VCI Authorization Code FlowRoadmapPre-Authorized Code Flow is the production path; the auth-code flow is in active development.
did:web / did:jwk issuer DIDsNot implementedIssuers currently use either did:iota or X.509 certificates. See DIDs for the rationale.