Skip to content

Commit

Permalink
remove filter api from Verifier
Browse files Browse the repository at this point in the history
  • Loading branch information
Hellblazer committed Aug 12, 2024
1 parent c6306f7 commit 08a8bd3
Show file tree
Hide file tree
Showing 11 changed files with 23 additions and 132 deletions.
6 changes: 5 additions & 1 deletion choam/src/main/java/com/salesforce/apollo/choam/Session.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@ public static <T> CompletableFuture<T> retryNesting(Supplier<CompletableFuture<T
for (int i = 0; i < maxRetries; i++) {
final var attempt = i;
cf = cf.thenApply(CompletableFuture::completedFuture).exceptionally(e -> {
log.info("resubmitting after attempt: {} exception: {}", attempt + 1, e.toString());
if (e instanceof CompletionException ce) {
log.info("resubmitting after attempt: {} exception: {}", attempt + 1, ce.toString());
} else {
log.info("resubmitting after attempt: {} exception: {}", attempt + 1, e.toString());
}
return supplier.get();
}).thenCompose(java.util.function.Function.identity());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,28 +24,6 @@
public interface Verifier {
Verifier NO_VERIFIER = new NoVerifier();

default Filtered filtered(SigningThreshold threshold, JohnHancock signature, byte[]... message) {
return filtered(threshold, signature, BbBackedInputStream.aggregate(message));
}

default Filtered filtered(SigningThreshold threshold, JohnHancock signature, ByteBuffer... message) {
return filtered(threshold, signature, BbBackedInputStream.aggregate(message));
}

default Filtered filtered(SigningThreshold threshold, JohnHancock signature, ByteString... message) {
return filtered(threshold, signature, BbBackedInputStream.aggregate(message));
}

Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message);

default Filtered filtered(SigningThreshold threshold, JohnHancock signature, List<ByteBuffer> forSigning) {
return filtered(threshold, signature, BbBackedInputStream.aggregate(forSigning));
}

default Filtered filtered(SigningThreshold threshold, JohnHancock signature, String message) {
return filtered(threshold, signature, BbBackedInputStream.aggregate(message.getBytes()));
}

default boolean verify(JohnHancock signature, byte[]... message) {
return verify(signature, BbBackedInputStream.aggregate(message));
}
Expand Down Expand Up @@ -125,11 +103,6 @@ public static Map<Integer, PublicKey> mapped(PublicKey[] array) {
return mapped;
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return signature.filter(threshold, keys, message);
}

@Override
public String toString() {
return "V[" + keys.values().stream().map(k -> ":" + DigestAlgorithm.DEFAULT.digest(k.getEncoded())).toList()
Expand All @@ -149,11 +122,6 @@ public boolean verify(SigningThreshold threshold, JohnHancock signature, InputSt

class NoVerifier implements Verifier {

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return new Filtered(false, signature.signatureCount(), signature);
}

@Override
public String toString() {
return "<No Verifier>";
Expand All @@ -172,11 +140,6 @@ public boolean verify(JohnHancock signature, InputStream message) {

class MockVerifier implements Verifier {

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return new Filtered(true, signature.signatureCount(), signature);
}

@Override
public boolean verify(JohnHancock signature, InputStream message) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -978,17 +978,8 @@ private Digests commonDigests() {
.build();
}

private Verifier.Filtered filtered(SelfAddressingIdentifier id, SigningThreshold threshold, JohnHancock signature,
InputStream message) {
var verifier = verifiers.verifierFor(id);
if (verifier.isEmpty()) {
return new Verifier.Filtered(false, 0, null);
}
return verifier.get().filtered(threshold, signature, message);
}

/**
* Garbage collect the member. Member is now shunned and cannot recover
* Garbage collects the member. Member is now shunned and cannot recover
*
* @param member
*/
Expand Down Expand Up @@ -1703,12 +1694,6 @@ public boolean equals(Object obj) {
return false;
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
final var current = note;
return View.this.filtered(getIdentifier(), threshold, signature, message);
}

public int getAccusationCount() {
var count = 0;
for (var acc : validAccusations) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ public int compareTo(Member o) {
return id.compareTo(o.getId());
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return null;
}

@Override
public Digest getId() {
return id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@
*/
package com.salesforce.apollo.membership.impl;

import static com.salesforce.apollo.membership.Member.getMemberIdentifier;
import static com.salesforce.apollo.membership.Member.getSigningKey;

import java.io.InputStream;
import java.security.PublicKey;
import java.security.cert.X509Certificate;

import com.salesforce.apollo.cryptography.Digest;
import com.salesforce.apollo.cryptography.JohnHancock;
import com.salesforce.apollo.cryptography.SignatureAlgorithm;
import com.salesforce.apollo.cryptography.SigningThreshold;
import com.salesforce.apollo.membership.Member;

import java.io.InputStream;
import java.security.PublicKey;
import java.security.cert.X509Certificate;

import static com.salesforce.apollo.membership.Member.getMemberIdentifier;
import static com.salesforce.apollo.membership.Member.getSigningKey;

/**
* A member of the view
*
*
* @author hal.hildebrand
* @since 220
*/
Expand Down Expand Up @@ -89,7 +89,7 @@ public int hashCode() {

@Override
public String toString() {
return "Member" + id + "";
return "Member" + id;
}

/**
Expand All @@ -100,11 +100,6 @@ public boolean verify(JohnHancock signature, InputStream message) {
return new DefaultVerifier(new PublicKey[] { signingKey }).verify(signature, message);
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return new DefaultVerifier(new PublicKey[] { signingKey }).filtered(threshold, signature, message);
}

@Override
public boolean verify(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return new DefaultVerifier(new PublicKey[] { signingKey }).verify(SigningThreshold.unweighted(1), signature,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,6 @@ public boolean equals(Object obj) {
return id.equals(((Member) obj).getId());
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
var verifier = identifier.getVerifier();
if (verifier.isEmpty()) {
return null;
}
return verifier.get().filtered(threshold, signature, message);
}

public CertificateWithPrivateKey getCertificateWithPrivateKey(Instant validFrom, Duration valid,
SignatureAlgorithm signatureAlgorithm) {
return identifier.provision(validFrom, valid, signatureAlgorithm);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,6 @@ public boolean equals(Object obj) {
return id.equals(((Member) obj).getId());
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return verifier().filtered(threshold, signature, message);
}

@Override
public Digest getId() {
return id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,20 @@ public KeyStateVerifier(D identifier) {
this.identifier = identifier;
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
var verifier = verifierFor(signature.getSequenceNumber());
return verifier.isEmpty() ? new Filtered(false, 0,
new JohnHancock(signature.getAlgorithm(), new byte[] {}, ULong.MIN))
: verifier.get().filtered(threshold, signature, message);
}

public D identifier() {
return identifier;
}

@Override
public boolean verify(SigningThreshold threshold, JohnHancock signature, InputStream message) {
var verifier = verifierFor(signature.getSequenceNumber());
return verifier.isEmpty() ? false : verifier.get().verify(threshold, signature, message);
return verifier.isPresent() && verifier.get().verify(threshold, signature, message);
}

@Override
public boolean verify(JohnHancock signature, InputStream message) {
var verifier = verifierFor(signature.getSequenceNumber());
return verifier.isEmpty() ? false : verifier.get().verify(signature, message);
return verifier.isPresent() && verifier.get().verify(signature, message);
}

protected abstract KeyState getKeyState(ULong sequenceNumber);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ public Optional<Verifier> verifierFor(Identifier identifier) {

Verifier v() {
return new Verifier() {
@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return new Filtered(false, 0, null);
}

@Override
public boolean verify(JohnHancock signature, InputStream message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,17 @@
*/
package com.salesforce.apollo.stereotomy.identifier;

import static com.salesforce.apollo.cryptography.QualifiedBase64.bs;
import static com.salesforce.apollo.cryptography.QualifiedBase64.publicKey;
import static com.salesforce.apollo.cryptography.QualifiedBase64.shortQb64;
import com.salesforce.apollo.cryptography.JohnHancock;
import com.salesforce.apollo.cryptography.SigningThreshold;
import com.salesforce.apollo.cryptography.Verifier;
import com.salesforce.apollo.cryptography.proto.PubKey;
import com.salesforce.apollo.stereotomy.event.proto.Ident;

import java.io.InputStream;
import java.security.PublicKey;
import java.util.Objects;

import com.salesforce.apollo.stereotomy.event.proto.Ident;
import com.salesforce.apollo.cryptography.proto.PubKey;
import com.salesforce.apollo.cryptography.JohnHancock;
import com.salesforce.apollo.cryptography.SigningThreshold;
import com.salesforce.apollo.cryptography.Verifier;
import static com.salesforce.apollo.cryptography.QualifiedBase64.*;

/**
* @author hal.hildebrand
Expand All @@ -45,11 +43,6 @@ public boolean equals(Object obj) {
return Objects.equals(publicKey, other.publicKey);
}

@Override
public Filtered filtered(SigningThreshold threshold, JohnHancock signature, InputStream message) {
return new Verifier.DefaultVerifier(publicKey).filtered(threshold, signature, message);
}

public PublicKey getPublicKey() {
return publicKey;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@

import com.salesforce.apollo.cryptography.JohnHancock;
import com.salesforce.apollo.cryptography.SignatureAlgorithm;
import com.salesforce.apollo.cryptography.Verifier.DefaultVerifier;
import com.salesforce.apollo.stereotomy.KEL;
import com.salesforce.apollo.stereotomy.KeyState;
import com.salesforce.apollo.stereotomy.event.EstablishmentEvent;
import com.salesforce.apollo.stereotomy.event.KeyEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -25,21 +22,6 @@
public interface KeyEventVerifier {
Logger log = LoggerFactory.getLogger(KeyEventVerifier.class);

default JohnHancock verifyAuthentication(KeyState state, KeyEvent event, JohnHancock signatures, KEL kel) {
KeyEvent lookup = kel.getKeyEvent(state.getLastEstablishmentEvent());
if (lookup == null) {
throw new MissingEstablishmentEventException(event, state.getLastEstablishmentEvent());
}
var kee = (EstablishmentEvent) lookup;
var filtered = new DefaultVerifier(kee.getKeys()).filtered(kee.getSigningThreshold(), signatures,
event.getBytes());
if (!filtered.verified()) {
throw new UnmetSigningThresholdException(event);
}

return filtered.filtered();
}

default Map<Integer, JohnHancock> verifyEndorsements(KeyState state, KeyEvent event,
Map<Integer, JohnHancock> receipts) {
var validReceipts = new HashMap<Integer, JohnHancock>();
Expand Down

0 comments on commit 08a8bd3

Please sign in to comment.