package org.jboss.resteasy.security.doseta;

import org.jboss.resteasy.annotations.security.doseta.After;
import org.jboss.resteasy.annotations.security.doseta.Signed;

/**
 * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
 * @version $Revision: 1 $
 */
public class AbstractDigitalSigningHeaderDecorator {
    protected Signed signed;

    protected DKIMSignature createHeader(KeyRepository repository) {
        DKIMSignature header = new DKIMSignature();
        if (signed.domain() != null && !signed.domain().equals("")) {
            header.setDomain(signed.domain());
        } else {
            if (repository != null) {
                header.setDomain(repository.getDefaultPrivateDomain());
            }
        }
        if (signed.algorithm() != null && !signed.algorithm().equals("")) {
            header.setAlgorithm(signed.algorithm());
        }
        if (signed.selector() != null && !signed.selector().equals("")) {
            header.setSelector(signed.selector());
        } else {
            if (repository != null) {
                header.setSelector(repository.getDefaultPrivateSelector());
            }

        }
        if (signed.timestamped()) {
            header.setTimestamp();
        }

        After after = signed.expires();
        if (after.seconds() > 0
                || after.minutes() > 0
                || after.hours() > 0
                || after.days() > 0
                || after.months() > 0
                || after.years() > 0) {
            header.setExpiration(after.seconds(), after.minutes(), after.hours(), after.days(), after.months(), after.years());
        }
        return header;
    }
}
