package at.gv.egiz.eaaf.modules.auth.sl20.utils; import java.io.IOException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.cert.X509Certificate; import java.util.List; import javax.annotation.Nonnull; import at.gv.egiz.eaaf.modules.auth.sl20.data.VerificationResult; import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SL20Exception; import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SlCommandoBuildException; import org.jose4j.jwa.AlgorithmConstraints; import org.jose4j.lang.JoseException; import com.fasterxml.jackson.databind.JsonNode; public interface IJoseTools { /** * Create a JWS signature. * *
This method adds the certificate chain into JOSE header.
* * @param payLoad Payload to sign * @throws SlCommandoBuildException In case of a signature creation error */ String createSignature(String payLoad) throws SlCommandoBuildException; /** * Create a JWS signature. * * @param payLoad Payload to sign * @param addFullCertChain Iftrue
the full certificate chain will be added,
* otherwise only the X509CertSha256Fingerprint is added into JOSE header
* @return Signed PayLoad in serialized form
* @throws SlCommandoBuildException SlCommandoBuildException In case of a signature creation error
*/
String createSignature(String payLoad, boolean addFullCertChain) throws SlCommandoBuildException;
/**
* Validates a signed SL2.0 message.
*
* @param serializedContent Serialized JWS signature
* @return Verification-result DAO
* @throws SL20Exception In case of a signature validation error
*/
@Nonnull
VerificationResult validateSignature(@Nonnull String serializedContent) throws SL20Exception;
/**
* Validate a JWS signature.
*
* @param serializedContent JWS in serialized form
* @param trustedCerts trusted X509 certificates
* @param constraints signature verification constraints
* @return Signature-verification result
* @throws JoseException In case of a signature verification error
* @throws IOException In case of a general IO error
*/
@Nonnull
VerificationResult validateSignature(@Nonnull String serializedContent, @Nonnull List