Skip to content

Commit 2cbf9fd

Browse files
committed
feat(token): remove site cert hash validation, rename fields according to final spec, rename exception base class to AuthTokenException
WE2-586 Signed-off-by: Mart Somermaa <[email protected]>
1 parent 3588452 commit 2cbf9fd

File tree

53 files changed

+196
-370
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+196
-370
lines changed

src/main/java/eu/webeid/security/authtoken/WebEidAuthToken.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,17 @@
2727
@JsonIgnoreProperties(ignoreUnknown = true)
2828
public class WebEidAuthToken {
2929

30-
private String certificate;
30+
private String unverifiedCertificate;
3131
private String signature;
3232
private String algorithm;
33-
private String version;
34-
private boolean useOriginCertHash;
33+
private String format;
3534

36-
public String getCertificate() {
37-
return certificate;
35+
public String getUnverifiedCertificate() {
36+
return unverifiedCertificate;
3837
}
3938

40-
public void setCertificate(String certificate) {
41-
this.certificate = certificate;
39+
public void setUnverifiedCertificate(String unverifiedCertificate) {
40+
this.unverifiedCertificate = unverifiedCertificate;
4241
}
4342

4443
public String getSignature() {
@@ -57,20 +56,12 @@ public void setAlgorithm(String algorithm) {
5756
this.algorithm = algorithm;
5857
}
5958

60-
public String getVersion() {
61-
return version;
59+
public String getFormat() {
60+
return format;
6261
}
6362

64-
public void setVersion(String version) {
65-
this.version = version;
66-
}
67-
68-
public boolean getUseOriginCertHash() {
69-
return useOriginCertHash;
70-
}
71-
72-
public void setUseOriginCertHash(boolean useOriginCertHash) {
73-
this.useOriginCertHash = useOriginCertHash;
63+
public void setFormat(String format) {
64+
this.format = format;
7465
}
7566

7667
}

src/main/java/eu/webeid/security/certificate/CertificateLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.security.cert.X509Certificate;
3333
import java.util.ArrayList;
3434
import java.util.List;
35+
import java.util.Objects;
3536

3637
import static eu.webeid.security.util.Base64Decoder.decodeBase64;
3738

@@ -52,6 +53,7 @@ public static X509Certificate[] loadCertificatesFromResources(String... resource
5253
}
5354

5455
public static X509Certificate decodeCertificateFromBase64(String certificateInBase64) throws CertificateDecodingException {
56+
Objects.requireNonNull(certificateInBase64, "certificateInBase64");
5557
try (final InputStream targetStream = new ByteArrayInputStream(decodeBase64(certificateInBase64))) {
5658
return (X509Certificate) CertificateFactory
5759
.getInstance("X509")

src/main/java/eu/webeid/security/challenge/ChallengeNonceGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public interface ChallengeNonceGenerator {
3333
* Generates a cryptographic nonce, a large random number that can be used only once,
3434
* and stores it in a {@link ChallengeNonceStore}.
3535
*
36-
* @return Base64-encoded nonce
36+
* @return a {@link ChallengeNonce} that contains the Base64-encoded nonce and its expiry time
3737
*/
38-
String generateAndStoreNonce();
38+
ChallengeNonce generateAndStoreNonce();
3939
}

src/main/java/eu/webeid/security/challenge/ChallengeNonceGeneratorBuilder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
package eu.webeid.security.challenge;
2424

2525
import eu.webeid.security.util.DateAndTime;
26-
import eu.webeid.security.validator.AuthTokenValidator;
2726

2827
import java.security.SecureRandom;
2928
import java.time.Duration;
@@ -56,7 +55,7 @@ public ChallengeNonceGeneratorBuilder withNonceTtl(Duration duration) {
5655
/**
5756
* Sets the challenge nonce store where the generated challenge nonces will be stored.
5857
*
59-
* @param challengeNonceStore nonce store
58+
* @param challengeNonceStore challenge nonce store
6059
* @return current builder instance
6160
*/
6261
public ChallengeNonceGeneratorBuilder withChallengeNonceStore(ChallengeNonceStore challengeNonceStore) {

src/main/java/eu/webeid/security/challenge/ChallengeNonceGeneratorImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ final class ChallengeNonceGeneratorImpl implements ChallengeNonceGenerator {
4242
}
4343

4444
@Override
45-
public String generateAndStoreNonce() {
45+
public ChallengeNonce generateAndStoreNonce() {
4646
final byte[] nonceBytes = new byte[NONCE_LENGTH];
4747
secureRandom.nextBytes(nonceBytes);
4848
final ZonedDateTime expirationTime = DateAndTime.utcNow().plus(ttl);
4949
final String base64Nonce = Base64.getEncoder().encodeToString(nonceBytes);
50-
challengeNonceStore.put(new ChallengeNonce(base64Nonce, expirationTime));
51-
return base64Nonce;
50+
final ChallengeNonce challengeNonce = new ChallengeNonce(base64Nonce, expirationTime);
51+
challengeNonceStore.put(challengeNonce);
52+
return challengeNonce;
5253
}
5354

5455
}

src/main/java/eu/webeid/security/challenge/ChallengeNonceStore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
package eu.webeid.security.challenge;
2424

2525
import eu.webeid.security.exceptions.ChallengeNonceExpiredException;
26-
import eu.webeid.security.exceptions.TokenValidationException;
26+
import eu.webeid.security.exceptions.AuthTokenException;
2727
import eu.webeid.security.exceptions.ChallengeNonceNotFoundException;
2828

2929
import static eu.webeid.security.util.DateAndTime.utcNow;
@@ -35,7 +35,7 @@ public abstract class ChallengeNonceStore {
3535

3636
public abstract void put(ChallengeNonce challengeNonce);
3737

38-
public final ChallengeNonce getAndRemove() throws TokenValidationException {
38+
public final ChallengeNonce getAndRemove() throws AuthTokenException {
3939
final ChallengeNonce challengeNonce = getAndRemoveImpl();
4040
if (challengeNonce == null) {
4141
throw new ChallengeNonceNotFoundException();

src/main/java/eu/webeid/security/exceptions/TokenValidationException.java renamed to src/main/java/eu/webeid/security/exceptions/AuthTokenException.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
/**
2626
* Base class for all authentication token validation exceptions.
2727
*/
28-
public abstract class TokenValidationException extends Exception {
29-
protected TokenValidationException(String msg) {
28+
public abstract class AuthTokenException extends Exception {
29+
30+
protected AuthTokenException(String msg) {
3031
super(msg);
3132
}
3233

33-
protected TokenValidationException(String msg, Throwable cause) {
34+
protected AuthTokenException(String msg, Throwable cause) {
3435
super(msg, cause);
3536
}
37+
3638
}

src/main/java/eu/webeid/security/exceptions/TokenParseException.java renamed to src/main/java/eu/webeid/security/exceptions/AuthTokenParseException.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
/**
2626
* Thrown when authentication token parsing fails.
2727
*/
28-
public class TokenParseException extends TokenValidationException {
28+
public class AuthTokenParseException extends AuthTokenException {
2929

30-
public TokenParseException(String message) {
30+
public AuthTokenParseException(String message) {
3131
super(message);
3232
}
3333

34-
public TokenParseException(String message, Throwable cause) {
34+
public AuthTokenParseException(String message, Throwable cause) {
3535
super(message, cause);
3636
}
3737
}

src/main/java/eu/webeid/security/exceptions/TokenSignatureValidationException.java renamed to src/main/java/eu/webeid/security/exceptions/AuthTokenSignatureValidationException.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,10 @@
2525
/**
2626
* Thrown when authentication token signature validation fails.
2727
*/
28-
public class TokenSignatureValidationException extends TokenValidationException {
28+
public class AuthTokenSignatureValidationException extends AuthTokenException {
2929

30-
public static final String MESSAGE = "Token signature validation has failed";
31-
32-
public TokenSignatureValidationException() {
33-
super(MESSAGE);
30+
public AuthTokenSignatureValidationException() {
31+
super("Token signature validation has failed");
3432
}
3533

3634
}

src/main/java/eu/webeid/security/exceptions/CertificateDecodingException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
package eu.webeid.security.exceptions;
2424

25-
public class CertificateDecodingException extends TokenValidationException {
25+
public class CertificateDecodingException extends AuthTokenException {
2626
public CertificateDecodingException(Throwable cause) {
2727
super("Certificate decoding from Base64 or parsing failed", cause);
2828
}

src/main/java/eu/webeid/security/exceptions/CertificateExpiredException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the certificate's valid until date is in the past.
2727
*/
28-
public class CertificateExpiredException extends TokenValidationException {
28+
public class CertificateExpiredException extends AuthTokenException {
2929
public CertificateExpiredException(String subject, Throwable cause) {
3030
super(subject + " certificate has expired", cause);
3131
}

src/main/java/eu/webeid/security/exceptions/CertificateNotTrustedException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
/**
2828
* Thrown when the given certificate is not signed by a trusted CA.
2929
*/
30-
public class CertificateNotTrustedException extends TokenValidationException {
30+
public class CertificateNotTrustedException extends AuthTokenException {
3131

3232
public CertificateNotTrustedException(X509Certificate certificate, Throwable e) {
3333
super("Certificate " + certificate.getSubjectDN() + " is not trusted", e);

src/main/java/eu/webeid/security/exceptions/CertificateNotYetValidException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the certificate's valid from date is in the future.
2727
*/
28-
public class CertificateNotYetValidException extends TokenValidationException {
28+
public class CertificateNotYetValidException extends AuthTokenException {
2929
public CertificateNotYetValidException(String subject, Throwable cause) {
3030
super(subject + " certificate is not yet valid", cause);
3131
}

src/main/java/eu/webeid/security/exceptions/ChallengeNonceExpiredException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the challenge nonce has expired.
2727
*/
28-
public class ChallengeNonceExpiredException extends TokenValidationException {
28+
public class ChallengeNonceExpiredException extends AuthTokenException {
2929

3030
public ChallengeNonceExpiredException() {
3131
super("Challenge nonce has expired");

src/main/java/eu/webeid/security/exceptions/ChallengeNonceNotFoundException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the challenge nonce was not found in the nonce store.
2727
*/
28-
public class ChallengeNonceNotFoundException extends TokenValidationException {
28+
public class ChallengeNonceNotFoundException extends AuthTokenException {
2929

3030
public ChallengeNonceNotFoundException() {
3131
super("Challenge nonce was not found in the nonce store");

src/main/java/eu/webeid/security/exceptions/ChallengeNullOrEmptyException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
package eu.webeid.security.exceptions;
2424

25-
public class ChallengeNullOrEmptyException extends TokenValidationException {
25+
public class ChallengeNullOrEmptyException extends AuthTokenException {
2626
public ChallengeNullOrEmptyException() {
2727
super("Provided challenge is null or empty");
2828
}

src/main/java/eu/webeid/security/exceptions/JceException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import java.security.GeneralSecurityException;
2626

27-
public class JceException extends TokenValidationException {
27+
public class JceException extends AuthTokenException {
2828
public JceException(GeneralSecurityException e) {
2929
super("Java Cryptography Extension loading or configuration failed", e);
3030
}

src/main/java/eu/webeid/security/exceptions/OCSPCertificateException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
package eu.webeid.security.exceptions;
2424

25-
public class OCSPCertificateException extends TokenValidationException {
25+
public class OCSPCertificateException extends AuthTokenException {
2626

2727
public OCSPCertificateException(String message) {
2828
super(message);

src/main/java/eu/webeid/security/exceptions/SiteCertificateHashNotConfiguredException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* Thrown when the token signature was calculated with the origin HTTPS certificate hash,
2727
* but it is not provided in the configuration.
2828
*/
29-
public class SiteCertificateHashNotConfiguredException extends TokenValidationException {
29+
public class SiteCertificateHashNotConfiguredException extends AuthTokenException {
3030
public SiteCertificateHashNotConfiguredException() {
3131
super("Authentication token signature was calculated with the origin certificate hash, " +
3232
"but site certificate hash is not configured. Please provide it via " +

src/main/java/eu/webeid/security/exceptions/UserCertificateDisallowedPolicyException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when any of the configured disallowed policies is present in the user certificate.
2727
*/
28-
public class UserCertificateDisallowedPolicyException extends TokenValidationException {
28+
public class UserCertificateDisallowedPolicyException extends AuthTokenException {
2929
public UserCertificateDisallowedPolicyException() {
3030
super("Disallowed user certificate policy");
3131
}

src/main/java/eu/webeid/security/exceptions/UserCertificateMissingPurposeException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the user certificate purpose field is missing or empty.
2727
*/
28-
public class UserCertificateMissingPurposeException extends TokenValidationException {
28+
public class UserCertificateMissingPurposeException extends AuthTokenException {
2929
public UserCertificateMissingPurposeException() {
3030
super("User certificate purpose is missing");
3131
}

src/main/java/eu/webeid/security/exceptions/UserCertificateOCSPCheckFailedException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when user certificate revocation check with OCSP fails.
2727
*/
28-
public class UserCertificateOCSPCheckFailedException extends TokenValidationException {
28+
public class UserCertificateOCSPCheckFailedException extends AuthTokenException {
2929
public UserCertificateOCSPCheckFailedException(Throwable cause) {
3030
super("User certificate revocation check has failed", cause);
3131
}

src/main/java/eu/webeid/security/exceptions/UserCertificateParseException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when user certificate parsing fails.
2727
*/
28-
public class UserCertificateParseException extends TokenValidationException {
28+
public class UserCertificateParseException extends AuthTokenException {
2929
public UserCertificateParseException(Throwable cause) {
3030
super("Error parsing certificate", cause);
3131
}

src/main/java/eu/webeid/security/exceptions/UserCertificateRevokedException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the user certificate has been revoked.
2727
*/
28-
public class UserCertificateRevokedException extends TokenValidationException {
28+
public class UserCertificateRevokedException extends AuthTokenException {
2929
public UserCertificateRevokedException() {
3030
super("User certificate has been revoked");
3131
}

src/main/java/eu/webeid/security/exceptions/UserCertificateWrongPurposeException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Thrown when the user certificate purpose is not client authentication.
2727
*/
28-
public class UserCertificateWrongPurposeException extends TokenValidationException {
28+
public class UserCertificateWrongPurposeException extends AuthTokenException {
2929
public UserCertificateWrongPurposeException() {
3030
super("User certificate is not meant to be used as an authentication certificate");
3131
}

src/main/java/eu/webeid/security/util/Sha256Digest.java

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)