/** * Dequeue all signer info requests for a given signer id. * * @param signerId to dequeue requests for * @param error if there was an error, null for success */ private synchronized void dequeueSignerInfoRequest(ByteString signerId, FederationError error) { List<String> domains = ImmutableList.copyOf(signerInfoRequests.get(signerId).keySet()); for (String domain : domains) { dequeueSignerInfoRequestForDomain(signerId, error, domain); } }
@Override public synchronized void prefetchDeltaSignerInfo(WaveletFederationProvider provider, ByteString signerId, WaveletName waveletName, HashedVersion deltaEndVersion, SignerInfoPrefetchResultListener callback) { ProtocolSignerInfo signerInfo = retrieveSignerInfo(signerId); if (signerInfo != null) { callback.onSuccess(signerInfo); } else { enqueueSignerInfoRequest(provider, signerId, waveletName, deltaEndVersion, callback); } }
/** * Returns the domains of all the addresses in the extended address path. */ private List<String> getParticipantDomains(ProtocolWaveletDelta delta) { Iterable<String> addresses = getExtendedAddressPath(delta); return getDeDupedDomains(addresses); }
@Override protected void setUp() throws Exception { super.setUp(); store = new MemoryStore(); config = ConfigFactory.parseString("federation.waveserver_disable_verification : " + false); manager = new CertificateManagerImpl(config, getSigner(), getVerifier(store, true), store); ticker = new Ticker(); }
@Override public ByteStringMessage<ProtocolWaveletDelta> verifyDelta(ProtocolSignedDelta signedDelta) throws SignatureException, UnknownSignerException { ByteStringMessage<ProtocolWaveletDelta> delta; try { delta = ByteStringMessage.parseProtocolWaveletDelta(signedDelta.getDelta()); } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException("signed delta does not contain valid delta", e); } if (disableVerfication) { return delta; } List<String> domains = getParticipantDomains(delta.getMessage()); if (domains.size() != signedDelta.getSignatureCount()) { throw new SignatureException("found " + domains.size() + " domains in " + "extended address path, but " + signedDelta.getSignatureCount() + " signatures."); } for (int i = 0; i < domains.size(); i++) { String domain = domains.get(i); ProtocolSignature signature = signedDelta.getSignature(i); verifySingleSignature(delta, signature, domain); } return delta; }
listener.onSuccess(retrieveSignerInfo(signerId)); } else { listener.onFailure(error);
@Override public void onSuccess(ProtocolSignerInfo signerInfo) { try { storeSignerInfo(signerInfo); dequeueSignerInfoRequest(signerId, null); } catch (SignatureException e) { LOG.warning("Failed to verify signer info", e); dequeueSignerInfoRequest(signerId, FederationErrors.badRequest(e.toString())); } }}); }
@Override protected void setUp() throws Exception { super.setUp(); store = new MemoryStore(); config = ConfigFactory.parseString("federation.waveserver_disable_verification : " + false); manager = new CertificateManagerImpl(config, getSigner(), getVerifier(store, true), store); ticker = new Ticker(); }
certificateManager = new CertificateManagerImpl(config, localSigner, null, null); final DeltaStore deltaStore = new MemoryDeltaStore(); final DeltaStoreTransient deltaStoreTransient = new MemoryDeltaStore();
certificateManager = new CertificateManagerImpl(config, localSigner, null, null); final DeltaStore deltaStore = new MemoryDeltaStore(); final Executor waveletLoadExecutor = MoreExecutors.sameThreadExecutor();
public void testRealSignature() throws Exception { manager = new CertificateManagerImpl(config, getSigner(), getRealVerifier(store), store); manager.storeSignerInfo(Certificates.getRealSignerInfo().toProtoBuf()); ByteStringMessage<ProtocolWaveletDelta> compare = manager.verifyDelta(getFakeSignedDelta()); assertEquals(compare, getFakeDelta()); }
public void testRealSignature() throws Exception { manager = new CertificateManagerImpl(config, getSigner(), getRealVerifier(store), store); manager.storeSignerInfo(Certificates.getRealSignerInfo().toProtoBuf()); ByteStringMessage<ProtocolWaveletDelta> compare = manager.verifyDelta(getFakeSignedDelta()); assertEquals(compare, getFakeDelta()); }
public void testSignature_missingSignerInfo() throws Exception { ProtocolWaveletDelta delta = ProtocolWaveletDelta.newBuilder() .setHashedVersion(getProtocolHashedVersion()) .setAuthor("bob@example.com") .build(); ByteStringMessage<ProtocolWaveletDelta> canonicalDelta = ByteStringMessage.serializeMessage(delta); manager = new CertificateManagerImpl(config, getSigner(), getVerifier(store, false), store); ProtocolSignedDelta signedDelta = manager.signDelta(canonicalDelta); try { manager.verifyDelta(signedDelta); fail("expected UnknownSignerException, but didn't get it"); } catch (UnknownSignerException e) { // expected } catch (Exception e) { fail("expected UnknownSignerExeception, but got " + e); } }
public void testSignature_missingSignerInfo() throws Exception { ProtocolWaveletDelta delta = ProtocolWaveletDelta.newBuilder() .setHashedVersion(getProtocolHashedVersion()) .setAuthor("bob@example.com") .build(); ByteStringMessage<ProtocolWaveletDelta> canonicalDelta = ByteStringMessage.serializeMessage(delta); manager = new CertificateManagerImpl(config, getSigner(), getVerifier(store, false), store); ProtocolSignedDelta signedDelta = manager.signDelta(canonicalDelta); try { manager.verifyDelta(signedDelta); fail("expected UnknownSignerException, but didn't get it"); } catch (UnknownSignerException e) { // expected } catch (Exception e) { fail("expected UnknownSignerExeception, but got " + e); } }