Changes
RP API version 3 changes compared to version 2
This changelog outlines the key differences between Relying Party (RP) API version 3 and version 2.
New features
-
Added device link based interaction flows (QR code, Web2App, App2App) for authentication, signing, and certificate-choice.
-
Added distinct API endpoints for device link and notification based flows.
-
Example:
/v3/authentication/device-link/…
vs./v3/authentication/notification/…
-
-
App2App and Web2App device link flows include a mandatory
initialCallbackUrl
parameter. It is used to construct the final callback URL to which the end-user is redirected after a successful PIN entry. -
Added new signature protocols:
-
ACSP_V2
(Authentication Context Signing Protocol) -
RAW_DIGEST_SIGNATURE
(signing pre-computed digests)
-
-
Added capability to link a device link based
certificate-choice
request to a subsequent notification basedsignature
request via/v3/signature/notification/linked/{document-number}
. -
Added an endpoint
/v3/signature/certificate/{document-number}
to request signing certificates when document number is know. This means thatcertificate-choice
should only be used now before signature sessions in cases where document number is not know (e.g., no prior Smart-ID authentication).
Security enhancements
-
To prevent replay attacks, the mandatory
rpChallenge
parameter (an RP-generated random value) has been introduced for all initial v3 requests, effectively replacing thenonce
parameter used in v2. -
The
RSASSA-PKCS#1 v1.5
signature padding scheme has been removed and is replaced byRSASSA-PSS
, which is now the only supported option for RSA signatures.-
This change includes support for
SHA-3
hash algorithms (SHA3-256
,SHA3-384
,SHA3-512
) withRSASSA-PSS
.
-
-
Revised Verification Code (VC) generation for notification flows:
-
Authentication flows: VC is derived from
rpChallenge
. -
Signing flows: VC is randomly generated by the Smart-ID API server.
-
-
Introduced a possibility for new verification code formats in the future. For now, the existing format (four numbers) will still be the only option.
-
App2App and Web2App device link flows now require callback verification process as part of the response verification process.
API endpoint and parameter changes
-
The
certificatechoice
(v2) functionality is nowcertificate-choice
(v3).-
It has been moved to
/v3/signature/certificate-choice/…
. -
It now also supports device link based flows.
-
-
The
allowedInteractionsOrder
parameter has been renamed tointeractions
, and its value (a JSON array of objects) must now be Base64 encoded. -
The standalone interaction type
verificationCodeChoice
has been removed. UseconfirmationMessageAndVerificationCodeChoice
instead for flows that require a verification code choice. -
The RP API server now provides the device link base URL to RPs.
-
The session status response (
GET /session/{sessionID}
) now includesuserChallenge
andflowType
. -
Added
interactionTypeUsed
to v3 responses. -
Added new session status end result codes:
-
USER_REFUSED_INTERACTION
-
PROTOCOL_FAILURE
-
SERVER_ERROR
-
RP API version 2 changes compared to version 1
-
API path now uses
v2
instead ofv1
.-
Example:
{rp-api-baseurl}/v2/
instead of{rp-api-baseurl}/v1/
.
-
-
Introduced the concept of "allowed interactions order".
-
The
allowedInteractionsOrder
parameter was added to authentication and signing requests. -
It replaces the
displayText
andrequestProperties.vcChoice
parameters.
-
-
Added
interactionTypeUsed
parameter to the session status response message. -
Added new session status end result codes:
-
REQUIRED_INTERACTION_NOT_SUPPORTED_BY_APP
-
USER_REFUSED_DISPLAYTEXTANDPIN
-
USER_REFUSED_VC_CHOICE
-
USER_REFUSED_CONFIRMATIONMESSAGE
-
USER_REFUSED_CONFIRMATIONMESSAGE_WITH_VC_CHOICE
-
USER_REFUSED_CERT_CHOICE
-
-
Added
requestProperties
parameter for the/v2/certificatechoice
API.-
Includes the new option
shareMdClientIpAddress
.
-
-
Removed previously deprecated object reference
pno/:country/:national-identity-number
. Useetsi/:id-etsi-qcs-SemanticsId-Natural
instead. -
RPs must ignore any unknown names (fields) in a JSON response object.