package com.limegroup.gnutella.security;
import java.security.SignatureException;
import org.limewire.io.IpPort;
/**
* Verifies certified messages.
* <p>
* Certified messages are message that contain a key version, a signature,
* a payload signed by that signature and optionally a certificate with a
* public key to verify the message.
* <p>
* The certificate would have to be verified itself.
*/
public interface CertifiedMessageVerifier {
/**
* Verifies a <code>message</code> from <code>messageSource</code>
* @param message the message to verify
* @param messageSource the source from which the message was sent, used
* for reporting, can be null
* @return the certificate that was used for verifying the
* @throws SignatureException if the message does not verify
*/
Certificate verify(CertifiedMessage message, IpPort messageSource) throws SignatureException;
/**
* Defines a certified message.
*/
public interface CertifiedMessage {
/**
* @return a key version > -1
*/
int getKeyVersion();
byte[] getSignature();
byte[] getSignedPayload();
Certificate getCertificate();
}
}