/* * 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 <http://www.gnu.org/licenses/>. */ 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; } }