All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xades4j.properties.SignaturePolicyIdentifierProperty Maven / Gradle / Ivy

Go to download

The XAdES4j library is an high-level, configurable and extensible Java implementation of XML Advanced Electronic Signatures (XAdES 1.3.2 and 1.4.1). It enables producing, verifying and extending signatures in the main XAdES forms: XAdES-BES, XAdES-EPES, XAdES-T and XAdES-C. Also, extended forms are supported through the enrichment of an existing signature.

There is a newer version: 2.2.2
Show newest version
/*
 * XAdES4j - A Java library for generation and verification of XAdES signatures.
 * Copyright (C) 2010 Luis Goncalves.
 *
 * XAdES4j is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 3 of the License, or any later version.
 *
 * XAdES4j is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public License along
 * with XAdES4j. If not, see .
 */
package xades4j.properties;

import java.io.ByteArrayInputStream;
import java.io.InputStream;

/**
 * An explicit and unambiguous identifier of a signature policy.
 * @see SignaturePolicyBase
 * @author Luís
 */
public final class SignaturePolicyIdentifierProperty extends SignaturePolicyBase
{
    private final ObjectIdentifier identifier;
    private byte[] policyDocumentData;
    private InputStream policyDocumentStream;
    private String locationUrl;

    /**
     * @param identifier the policy identifier
     * @param policyDocumentStream an {@code InputStream} to the policy document
     * @throws NullPointerException if {@code policyDocumentStream} is {@code null}
     */
    public SignaturePolicyIdentifierProperty(
            ObjectIdentifier identifier,
            InputStream policyDocumentStream)
    {
        if (null == policyDocumentStream)
            throw new NullPointerException();

        this.identifier = identifier;
        this.policyDocumentStream = policyDocumentStream;
    }

    /**
     * @param identifier the policy identifier
     * @param policyDocumentData the content of the policy document
     * @throws NullPointerException if {@code policyDocumentData} is {@code null}
     */
    public SignaturePolicyIdentifierProperty(
            ObjectIdentifier identifier,
            byte[] policyDocumentData)
    {
        if (null == policyDocumentData)
            throw new NullPointerException();

        this.identifier = identifier;
        this.policyDocumentData = policyDocumentData;
    }

    /**
     * Gets the content of the policy document
     * @return the content or {@code null} if the instance was created with a stream
     */
    public byte[] getPolicyDocumentData()
    {
        return policyDocumentData;
    }

    /**
     * Gets the stream to the policy document. If the instance was created with
     * the policy document content, a ByteArrayInputStream is returned.
     * @return the stream
     */
    public InputStream getPolicyDocumentStream()
    {
        if (null == policyDocumentStream)
            policyDocumentStream = new ByteArrayInputStream(policyDocumentData);
        return policyDocumentStream;
    }

    public ObjectIdentifier getIdentifier()
    {
        return identifier;
    }
    
    /**
     * Adds a URL where a copy of the signature policy may be obtained. This will
     * be added as a qualifier.
     * @param url the location URL
     * @return the current instance
     */
    public SignaturePolicyIdentifierProperty withLocationUrl(String url)
    {
        locationUrl = url;
        return this;
    }
    
    public String getLocationUrl()
    {
        return locationUrl;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy