Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
bf3aba7
Restore legacy signing algorithms SHA256_WITH_RSA_ENCRYPTION, SHA384_…
Mar 2, 2026
c754b97
Use the document number actually returned by the demo service
Mar 2, 2026
8843412
Change SignatureResponseValidatorTest.validate_legacyRsaSignature_ok_…
Mar 2, 2026
3cd0838
Fix SmartIdRestIntegrationTest by using data that Smart-ID demo servi…
Mar 2, 2026
ba974c6
Fix ReadmeIntegrationTest.NotificationBasedExamples.signature_withDoc…
Mar 3, 2026
567b49a
Add into NotificationBasedExamples integration tests for signing with…
Mar 3, 2026
1c37f46
Add SignatureAlgorithm.hashAlgorithmForLegacy for convenient usage in…
Mar 3, 2026
4e26682
Split SignatureAlgorithm into AuthenticationSignatureAlgorithm and Si…
Mar 4, 2026
520516c
Try to make tests stable by using SessionStatusPoller.fetchFinalSessi…
Mar 4, 2026
9c60a84
Update version to 3.2-SNAPSHOT as next version should be 3.2
Mar 4, 2026
28da3fa
Run tests by GitHub Actions when PR target branch is legacy-signature…
Mar 4, 2026
4ddf917
Polish unit tests
Mar 5, 2026
ad6e07a
Remove redundant part from comment
Mar 6, 2026
fc62316
Add legacy algorithm tests into SmartIdRestIntegrationTest
Mar 6, 2026
3257b18
Add signature algorithm tests to signature session request builders
Mar 6, 2026
b277670
Update year in changed files license header
Mar 6, 2026
107c83a
Handle SignatureValueValidatorImplTest
Mar 6, 2026
bfe8e03
Add signature value validation into notification based signing flow t…
Mar 6, 2026
e0503e1
Add v3.2 changelog
Mar 6, 2026
7e28424
Small simplification
Mar 9, 2026
73b3755
Refactor SignatureValueValidator, instead of overloaded validate meth…
Mar 9, 2026
6ff80a0
Update year in license headers
Mar 9, 2026
cf52dfd
Migration guide from v3.1 to v3.2
Mar 9, 2026
193f8e8
Move signature related core classes into signature package
Mar 9, 2026
4e4ead0
In signature validation methods use strongly typed parameter SigningS…
Mar 9, 2026
6201f71
Simplify SignatureValueValidator by keeping 1 method instead of 3 and…
Mar 9, 2026
6db9650
Add DigiDoc4J sample code fragments with legacy RSA to migration guide
Mar 10, 2026
bfadc15
Add javadoc to SignatureFactory
Mar 10, 2026
6f621dc
Cover SignatureFactory implementations with success flow unit tests
Mar 10, 2026
9053b72
Improve RSASSA-PKCS#1 v1.5 Signature factory name
Mar 10, 2026
ad7ce16
Restore HashAlgorithm and DigestCalculator into main package
Mar 10, 2026
e57caf4
Move DigestCalculatorTest to correct package
Mar 10, 2026
d25a5a0
Restore previous year in license header for unchanged files
Mar 10, 2026
1d8b905
Update README.md and move DD4J code snippets from migration guide to …
Mar 11, 2026
d48b19e
Merge pull request #146 from kaidohallik/legacy-signature-algorithms
sk-natalja Mar 11, 2026
6fb11b2
Make some device-link tests working inside ReadmeIntegrationTest (#147)
kaidohallik Mar 16, 2026
36b2e90
Merge branch 'master' into legacy-signature-algorithms
kaidohallik Mar 17, 2026
5a8f496
Remove legacy-signature-algorithms from PR target branches where test…
Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,34 @@
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [3.1-?] - TBD
## [3.2] - TBD

### Changes

- Added legacy signing algorithms (`SHA256_WITH_RSA_ENCRYPTION`, `SHA384_WITH_RSA_ENCRYPTION`, `SHA512_WITH_RSA_ENCRYPTION`) for RSASSA-PKCS#1 v1.5.
- Compatible with DigiDoc4j library which does not support RSASSA-PSS.
- Use `SigningSignatureAlgorithm` enum and `withSignatureAlgorithm()` on signature session builders.
- Use `SigningSignatureAlgorithm.getHashAlgorithmForLegacy()` when creating `SignableData` for legacy algorithms.
- Legacy algorithms do not use `signatureAlgorithmParameters` in requests or responses.
- Split `SignatureAlgorithm` into `AuthenticationSignatureAlgorithm` (authentication) and `SigningSignatureAlgorithm` (signing).
- Only allowed `AuthenticationSignatureAlgorithm` is `RSASSA_PSS`; default `SigningSignatureAlgorithm` is `RSASSA_PSS`.
- Added `SignatureFactory` interface for creating `java.security.Signature` instance for verifying signature and added its implementations:
- `RsaSsaPssSignatureFactory`
- `RsaSsaPkcs1SignatureFactory`
- Changed `SignatureValueValidator.validate` last parameter from `RsaSsaPssParameters` to `SignatureFactory`:
- The following classes are moved from `ee.sk.smartid` to `ee.sk.smartid.signature`:
- `AuthenticationSignatureAlgorithm`
- `DigestInput`
- `MaskGenAlgorithm`
- `RsaSsaPssParameters`
- `SignableData`
- `SignableHash`
- `SignatureValueValidator`
- `SignatureValueValidatorImpl`
- `SigningSignatureAlgorithm`
- `TrailerField`

## [3.1] - 2025-10-15

### Structural changes

Expand Down
37 changes: 37 additions & 0 deletions MIGRATION_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,43 @@ Library v3.1 supports only Smart-ID v3 API.
All the previous v2 related code has been removed and all the code necessary for Smart-ID API v3 is under package smartid.
Some classes could also be used in v3 and for those classes the package did not change.

# Migrating from library v3.1 to v3.2

For signing flows are restored legacy RSASSA-PKCS#1 v1.5 algorithms (`SHA256_WITH_RSA_ENCRYPTION`, `SHA384_WITH_RSA_ENCRYPTION`, `SHA512_WITH_RSA_ENCRYPTION`) which are compatible with DigiDoc4j's signing support.
For that reason:
- `SignatureAlgorithm` class is split into `AuthenticationSignatureAlgorithm` and `SigningSignatureAlgorithm`.
- `SignatureValueValidator.validate` last parameter changed from `RsaSsaPssParameters` to `SignatureFactory`

Changes needed in authentication flows:
- change `SignatureAlgorithm` to `AuthenticationSignatureAlgorithm`
- change `SignatureValueValidator.validate` last parameter from `RsaSsaPssParameters` to `new RsaSsaPssSignatureFactory(RsaSsaPssParameters)`

Changes needed in signing flows:
- change `SignatureAlgorithm` to `SigningSignatureAlgorithm`
- suggestion for `SignatureValueValidator.validate` last parameter changes:
- when using only signature algorithm RSASSA_PSS then use `new RsaSsaPssSignatureFactory(RsaSsaPssParameters)`
- when using only legacy signature algorithms (`SHA256_WITH_RSA_ENCRYPTION`, `SHA384_WITH_RSA_ENCRYPTION`, `SHA512_WITH_RSA_ENCRYPTION`) then use `new RsaSsaPkcs1SignatureFactory(SigningSignatureAlgorithm)`
- when both RSASSA_PSS and legacy RSA algorithms are used then possible solution is:
```java
SignatureFactory signatureFactory = signatureResponse.getSignatureAlgorithm().isLegacyRsa()
? new RsaSsaPkcs1SignatureFactory(signatureResponse.getSignatureAlgorithm())
: new RsaSsaPssSignatureFactory(signatureResponse.getRsaSsaPssParameters());
```

The following classes are moved from `ee.sk.smartid` to `ee.sk.smartid.signature` so when used then imports need to be adjusted:
- `AuthenticationSignatureAlgorithm`
- `DigestInput`
- `MaskGenAlgorithm`
- `RsaSsaPssParameters`
- `SignableData`
- `SignableHash`
- `SignatureValueValidator`
- `SignatureValueValidatorImpl`
- `SigningSignatureAlgorithm`
- `TrailerField`

For legacy RSA with DigiDoc4j there is new chapter in README.md: [Legacy algorithms for signing with DigiDoc4j](./README.md#legacy-algorithms-for-signing-with-digidoc4j)

# Migrating from Smart-ID v2 to Smart-ID v3 API

## Migrating authentication
Expand Down
142 changes: 122 additions & 20 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>ee.sk.smartid</groupId>
<artifactId>smart-id-java-client</artifactId>
<packaging>jar</packaging>
<version>3.0-SNAPSHOT</version>
<version>3.2-SNAPSHOT</version>

<name>Smart-ID Java client</name>
<description>Smart-ID Java client is a Java library that can be used for easy integration of the Smart-ID solution to information systems or e-services</description>
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/ee/sk/smartid/AuthenticationResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2025 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand All @@ -31,6 +31,7 @@
import java.util.Base64;

import ee.sk.smartid.exception.UnprocessableSmartIdResponseException;
import ee.sk.smartid.signature.RsaSsaPssParameters;

/**
* The authentication response after a successful authentication session status response was received.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@
import ee.sk.smartid.rest.dao.SessionResult;
import ee.sk.smartid.rest.dao.SessionSignature;
import ee.sk.smartid.rest.dao.SessionStatus;
import ee.sk.smartid.signature.AuthenticationSignatureAlgorithm;
import ee.sk.smartid.signature.MaskGenAlgorithm;
import ee.sk.smartid.signature.RsaSsaPssParameters;
import ee.sk.smartid.signature.TrailerField;
import ee.sk.smartid.util.StringUtil;

/**
Expand Down Expand Up @@ -177,7 +181,7 @@ private static void validateSignature(SessionSignature sessionSignature) {
if (StringUtil.isEmpty(sessionSignature.getSignatureAlgorithm())) {
throw new UnprocessableSmartIdResponseException("Authentication session status field 'signature.signatureAlgorithm' is empty");
}
if (!SignatureAlgorithm.isSupported(sessionSignature.getSignatureAlgorithm())) {
if (!AuthenticationSignatureAlgorithm.isSupported(sessionSignature.getSignatureAlgorithm())) {
logger.error("Authentication session status field 'signature.signatureAlgorithm' has invalid value: {}", sessionSignature.getSignatureAlgorithm());
throw new UnprocessableSmartIdResponseException("Authentication session status field 'signature.signatureAlgorithm' has unsupported value");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2025 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -37,6 +37,9 @@
import ee.sk.smartid.exception.useraccount.CertificateLevelMismatchException;
import ee.sk.smartid.rest.dao.DeviceLinkAuthenticationSessionRequest;
import ee.sk.smartid.rest.dao.SessionStatus;
import ee.sk.smartid.signature.RsaSsaPssSignatureFactory;
import ee.sk.smartid.signature.SignatureValueValidator;
import ee.sk.smartid.signature.SignatureValueValidatorImpl;
import ee.sk.smartid.util.InteractionUtil;
import ee.sk.smartid.util.StringUtil;

Expand Down Expand Up @@ -159,7 +162,7 @@ private void validateSignature(AuthenticationResponse authenticationResponse,
signatureValueValidator.validate(authenticationResponse.getSignatureValue(),
payload,
authenticationResponse.getCertificate(),
authenticationResponse.getRsaSsaPssSignatureParameters());
new RsaSsaPssSignatureFactory(authenticationResponse.getRsaSsaPssSignatureParameters()));
}

private byte[] constructPayload(AuthenticationResponse authenticationResponse,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2025 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -42,6 +42,7 @@
import ee.sk.smartid.rest.dao.RequestProperties;
import ee.sk.smartid.rest.dao.SemanticsIdentifier;
import ee.sk.smartid.rest.dao.SignatureAlgorithmParameters;
import ee.sk.smartid.signature.AuthenticationSignatureAlgorithm;
import ee.sk.smartid.util.InteractionUtil;
import ee.sk.smartid.util.SetUtil;
import ee.sk.smartid.util.StringUtil;
Expand All @@ -59,7 +60,7 @@ public class DeviceLinkAuthenticationSessionRequestBuilder {
private String relyingPartyName;
private AuthenticationCertificateLevel certificateLevel = AuthenticationCertificateLevel.QUALIFIED;
private String rpChallenge;
private SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RSASSA_PSS;
private AuthenticationSignatureAlgorithm signatureAlgorithm = AuthenticationSignatureAlgorithm.RSASSA_PSS;
private HashAlgorithm hashAlgorithm = HashAlgorithm.SHA3_512;
private List<DeviceLinkInteraction> interactions;
private Boolean shareMdClientIpAddress;
Expand Down Expand Up @@ -136,7 +137,7 @@ public DeviceLinkAuthenticationSessionRequestBuilder withRpChallenge(String rpCh
* @param signatureAlgorithm the signature algorithm
* @return this builder
*/
public DeviceLinkAuthenticationSessionRequestBuilder withSignatureAlgorithm(SignatureAlgorithm signatureAlgorithm) {
public DeviceLinkAuthenticationSessionRequestBuilder withSignatureAlgorithm(AuthenticationSignatureAlgorithm signatureAlgorithm) {
this.signatureAlgorithm = signatureAlgorithm;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2025 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -41,6 +41,10 @@
import ee.sk.smartid.rest.dao.SemanticsIdentifier;
import ee.sk.smartid.rest.dao.SignatureAlgorithmParameters;
import ee.sk.smartid.rest.dao.DeviceLinkSignatureSessionRequest;
import ee.sk.smartid.signature.DigestInput;
import ee.sk.smartid.signature.SignableData;
import ee.sk.smartid.signature.SignableHash;
import ee.sk.smartid.signature.SigningSignatureAlgorithm;
import ee.sk.smartid.util.InteractionUtil;
import ee.sk.smartid.util.SetUtil;
import ee.sk.smartid.util.StringUtil;
Expand All @@ -63,7 +67,7 @@ public class DeviceLinkSignatureSessionRequestBuilder {
private Set<String> capabilities;
private List<DeviceLinkInteraction> interactions;
private Boolean shareMdClientIpAddress;
private SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RSASSA_PSS;
private SigningSignatureAlgorithm signatureAlgorithm = SigningSignatureAlgorithm.RSASSA_PSS;
private String initialCallbackUrl;
private DigestInput digestInput;

Expand Down Expand Up @@ -183,7 +187,7 @@ public DeviceLinkSignatureSessionRequestBuilder withShareMdClientIpAddress(boole
* @param signatureAlgorithm the signature algorithm
* @return this builder
*/
public DeviceLinkSignatureSessionRequestBuilder withSignatureAlgorithm(SignatureAlgorithm signatureAlgorithm) {
public DeviceLinkSignatureSessionRequestBuilder withSignatureAlgorithm(SigningSignatureAlgorithm signatureAlgorithm) {
this.signatureAlgorithm = signatureAlgorithm;
return this;
}
Expand Down Expand Up @@ -287,9 +291,12 @@ private DeviceLinkSessionResponse initSignatureSession(DeviceLinkSignatureSessio
}

private DeviceLinkSignatureSessionRequest createSignatureSessionRequest() {
SignatureAlgorithmParameters algorithmParams = signatureAlgorithm.isLegacyRsa()
? null
: new SignatureAlgorithmParameters(digestInput.hashAlgorithm().getAlgorithmName());
var signatureProtocolParameters = new RawDigestSignatureProtocolParameters(digestInput.getDigestInBase64(),
signatureAlgorithm.getAlgorithmName(),
new SignatureAlgorithmParameters(digestInput.hashAlgorithm().getAlgorithmName()));
algorithmParams);
return new DeviceLinkSignatureSessionRequest(relyingPartyUUID,
relyingPartyName,
certificateLevel != null ? certificateLevel.name() : null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2025 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -39,6 +39,10 @@
import ee.sk.smartid.rest.dao.RawDigestSignatureProtocolParameters;
import ee.sk.smartid.rest.dao.RequestProperties;
import ee.sk.smartid.rest.dao.SignatureAlgorithmParameters;
import ee.sk.smartid.signature.DigestInput;
import ee.sk.smartid.signature.SignableData;
import ee.sk.smartid.signature.SignableHash;
import ee.sk.smartid.signature.SigningSignatureAlgorithm;
import ee.sk.smartid.util.SetUtil;
import ee.sk.smartid.util.InteractionUtil;
import ee.sk.smartid.util.StringUtil;
Expand All @@ -54,7 +58,7 @@ public class LinkedNotificationSignatureSessionRequestBuilder {
private String relyingPartyName;
private String documentNumber;
private DigestInput digestInput;
private SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RSASSA_PSS;
private SigningSignatureAlgorithm signatureAlgorithm = SigningSignatureAlgorithm.RSASSA_PSS;
private String linkedSessionID;
private List<DeviceLinkInteraction> interactions;
private CertificateLevel certificateLevel;
Expand Down Expand Up @@ -151,7 +155,7 @@ public LinkedNotificationSignatureSessionRequestBuilder withSignableHash(Signabl
* @param signatureAlgorithm The signature algorithm
* @return this builder
*/
public LinkedNotificationSignatureSessionRequestBuilder withSignatureAlgorithm(SignatureAlgorithm signatureAlgorithm) {
public LinkedNotificationSignatureSessionRequestBuilder withSignatureAlgorithm(SigningSignatureAlgorithm signatureAlgorithm) {
this.signatureAlgorithm = signatureAlgorithm;
return this;
}
Expand Down Expand Up @@ -257,9 +261,12 @@ private void validateRequestParameters() {
}

private LinkedSignatureSessionRequest createSessionRequest() {
SignatureAlgorithmParameters algorithmParams = signatureAlgorithm.isLegacyRsa()
? null
: new SignatureAlgorithmParameters(digestInput.hashAlgorithm().getAlgorithmName());
var rawDigestParams = new RawDigestSignatureProtocolParameters(digestInput.getDigestInBase64(),
signatureAlgorithm.getAlgorithmName(),
new SignatureAlgorithmParameters(digestInput.hashAlgorithm().getAlgorithmName()));
algorithmParams);
return new LinkedSignatureSessionRequest(relyingPartyUUID,
relyingPartyName,
certificateLevel != null ? certificateLevel.name() : null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2025 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -36,6 +36,9 @@
import ee.sk.smartid.exception.useraccount.CertificateLevelMismatchException;
import ee.sk.smartid.rest.dao.NotificationAuthenticationSessionRequest;
import ee.sk.smartid.rest.dao.SessionStatus;
import ee.sk.smartid.signature.RsaSsaPssSignatureFactory;
import ee.sk.smartid.signature.SignatureValueValidator;
import ee.sk.smartid.signature.SignatureValueValidatorImpl;
import ee.sk.smartid.util.InteractionUtil;
import ee.sk.smartid.util.StringUtil;

Expand Down Expand Up @@ -152,7 +155,7 @@ private void validateSignature(AuthenticationResponse authenticationResponse,
signatureValueValidator.validate(authenticationResponse.getSignatureValue(),
payload,
authenticationResponse.getCertificate(),
authenticationResponse.getRsaSsaPssSignatureParameters());
new RsaSsaPssSignatureFactory(authenticationResponse.getRsaSsaPssSignatureParameters()));
}

private byte[] constructPayload(AuthenticationResponse authenticationResponse,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* #%L
* Smart ID sample Java client
* %%
* Copyright (C) 2018 - 2024 SK ID Solutions AS
* Copyright (C) 2018 - 2026 SK ID Solutions AS
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -42,6 +42,7 @@
import ee.sk.smartid.rest.dao.RequestProperties;
import ee.sk.smartid.rest.dao.SemanticsIdentifier;
import ee.sk.smartid.rest.dao.SignatureAlgorithmParameters;
import ee.sk.smartid.signature.AuthenticationSignatureAlgorithm;
import ee.sk.smartid.util.InteractionUtil;
import ee.sk.smartid.util.SetUtil;
import ee.sk.smartid.util.StringUtil;
Expand All @@ -57,7 +58,7 @@ public class NotificationAuthenticationSessionRequestBuilder {
private String relyingPartyName;
private AuthenticationCertificateLevel certificateLevel;
private String rpChallenge;
private SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RSASSA_PSS;
private AuthenticationSignatureAlgorithm signatureAlgorithm = AuthenticationSignatureAlgorithm.RSASSA_PSS;
private HashAlgorithm hashAlgorithm = HashAlgorithm.SHA3_512;
private List<NotificationInteraction> interactions;
private Boolean shareMdClientIpAddress;
Expand Down Expand Up @@ -130,7 +131,7 @@ public NotificationAuthenticationSessionRequestBuilder withRpChallenge(String rp
* @param signatureAlgorithm the signature algorithm
* @return this builder
*/
public NotificationAuthenticationSessionRequestBuilder withSignatureAlgorithm(SignatureAlgorithm signatureAlgorithm) {
public NotificationAuthenticationSessionRequestBuilder withSignatureAlgorithm(AuthenticationSignatureAlgorithm signatureAlgorithm) {
this.signatureAlgorithm = signatureAlgorithm;
return this;
}
Expand Down
Loading
Loading