/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.message.Message
 *  com.l7tech.policy.assertion.Assertion
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.PolicyAssertionException
 *  com.l7tech.policy.assertion.xmlsec.WssDecorationConfig
 *  com.l7tech.security.xml.decorator.DecorationRequirements
 *  org.springframework.beans.factory.BeanFactory
 *  org.springframework.context.ApplicationContext
 */
package com.l7tech.server.policy.assertion.xmlsec;

import com.l7tech.message.Message;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.xmlsec.WssDecorationConfig;
import com.l7tech.security.xml.decorator.DecorationRequirements;
import com.l7tech.server.message.AuthenticationContext;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.AbstractMessageTargetableServerAssertion;
import com.l7tech.server.policy.assertion.xmlsec.AddWssSignatureSupport;
import com.l7tech.server.policy.assertion.xmlsec.q;
import java.io.IOException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.w3c.dom.Document;

public abstract class ServerAddWssSignature<AT extends Assertion & WssDecorationConfig>
extends AbstractMessageTargetableServerAssertion<AT> {
    protected final AddWssSignatureSupport addWssSignatureSupport;

    protected ServerAddWssSignature(AT AT, ApplicationContext applicationContext, boolean bl2) {
        super(AT);
        this.addWssSignatureSupport = new AddWssSignatureSupport(this.getAuditHaver(), (WssDecorationConfig)AT, (BeanFactory)applicationContext, bl2, Assertion.isResponse(AT));
    }

    @Override
    protected AssertionStatus doCheckRequest(PolicyEnforcementContext policyEnforcementContext, Message message, String string, AuthenticationContext authenticationContext) throws IOException, PolicyAssertionException {
        return this.addWssSignatureSupport.applySignatureDecorationRequirements(policyEnforcementContext, message, string, authenticationContext, new q(this));
    }

    protected abstract int addDecorationRequirements(PolicyEnforcementContext var1, AuthenticationContext var2, Document var3, DecorationRequirements var4, Message var5) throws PolicyAssertionException;
}

