Skip to content

Commit

Permalink
Compute assertionSignatureCount only once in FinishAssertionSteps
Browse files Browse the repository at this point in the history
  • Loading branch information
emlun committed May 31, 2022
1 parent 5b3fe6a commit 0828654
Showing 1 changed file with 7 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -503,34 +503,33 @@ public ByteArray signedBytes() {
class Step21 implements Step<Finished> {
private final String username;
private final RegisteredCredential credential;
private final long assertionSignatureCount;
private final long storedSignatureCountBefore;

public Step21(String username, RegisteredCredential credential) {
this.username = username;
this.credential = credential;
this.assertionSignatureCount =
response.getResponse().getParsedAuthenticatorData().getSignatureCounter();
this.storedSignatureCountBefore = credential.getSignatureCount();
}

@Override
public void validate() throws InvalidSignatureCountException {
if (validateSignatureCounter && !signatureCounterValid()) {
throw new InvalidSignatureCountException(
response.getId(), storedSignatureCountBefore + 1, assertionSignatureCount());
response.getId(), storedSignatureCountBefore + 1, assertionSignatureCount);
}
}

private boolean signatureCounterValid() {
return (assertionSignatureCount() == 0 && storedSignatureCountBefore == 0)
|| assertionSignatureCount() > storedSignatureCountBefore;
return (assertionSignatureCount == 0 && storedSignatureCountBefore == 0)
|| assertionSignatureCount > storedSignatureCountBefore;
}

@Override
public Finished nextStep() {
return new Finished(credential, username, assertionSignatureCount(), signatureCounterValid());
}

private long assertionSignatureCount() {
return response.getResponse().getParsedAuthenticatorData().getSignatureCounter();
return new Finished(credential, username, assertionSignatureCount, signatureCounterValid());
}
}

Expand Down

0 comments on commit 0828654

Please sign in to comment.