1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /**
   6  * Licensed to the Apache Software Foundation (ASF) under one
   7  * or more contributor license agreements. See the NOTICE file
   8  * distributed with this work for additional information
   9  * regarding copyright ownership. The ASF licenses this file
  10  * to you under the Apache License, Version 2.0 (the
  11  * "License"); you may not use this file except in compliance
  12  * with the License. You may obtain a copy of the License at
  13  *
  14  * http://www.apache.org/licenses/LICENSE-2.0
  15  *
  16  * Unless required by applicable law or agreed to in writing,
  17  * software distributed under the License is distributed on an
  18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  19  * KIND, either express or implied. See the License for the
  20  * specific language governing permissions and limitations
  21  * under the License.
  22  */
  23 package com.sun.org.apache.xml.internal.security.encryption;
  24 
  25 import java.util.Iterator;
  26 
  27 /**
  28  * {@code EncryptionProperties} can hold additional information concerning
  29  * the generation of the {@code EncryptedData} or
  30  * {@code EncryptedKey}. This information is wraped int an
  31  * {@code EncryptionProperty} element. Examples of additional information
  32  * is e.g., a date/time stamp or the serial number of cryptographic hardware
  33  * used during encryption).
  34  * <p>
  35  * It is defined as follows:
  36  * <pre>{@code
  37  * <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
  38  * <complexType name='EncryptionPropertiesType'>
  39  *     <sequence>
  40  *         <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
  41  *     </sequence>
  42  *     <attribute name='Id' type='ID' use='optional'/>
  43  * </complexType>
  44  * }</pre>
  45  *
  46  * @author Axl Mattheus
  47  */
  48 public interface EncryptionProperties {
  49 
  50     /**
  51      * Returns the {@code EncryptionProperties}' id.
  52      *
  53      * @return the id.
  54      */
  55     String getId();
  56 
  57     /**
  58      * Sets the id.
  59      *
  60      * @param id the id.
  61      */
  62     void setId(String id);
  63 
  64     /**
  65      * Returns an {@code Iterator} over all the
  66      * {@code EncryptionPropterty} elements contained in this
  67      * {@code EncryptionProperties}.
  68      *
  69      * @return an {@code Iterator} over all the encryption properties.
  70      */
  71     Iterator<EncryptionProperty> getEncryptionProperties();
  72 
  73     /**
  74      * Adds an {@code EncryptionProperty}.
  75      *
  76      * @param property
  77      */
  78     void addEncryptionProperty(EncryptionProperty property);
  79 
  80     /**
  81      * Removes the specified {@code EncryptionProperty}.
  82      *
  83      * @param property
  84      */
  85     void removeEncryptionProperty(EncryptionProperty property);
  86 }
  87