001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.crypto.asn1;
019
020 import java.io.IOException;
021 import java.util.Enumeration;
022
023 public class BERSet
024 extends DERSet
025 {
026 /**
027 * create an empty sequence
028 */
029 public BERSet()
030 {
031 }
032
033 /**
034 * create a set containing one object
035 */
036 public BERSet(
037 DEREncodable obj)
038 {
039 super(obj);
040 }
041
042 /**
043 * @param v - a vector of objects making up the set.
044 */
045 public BERSet(
046 DEREncodableVector v)
047 {
048 super(v, true);
049 }
050
051 /**
052 * @param v - a vector of objects making up the set.
053 */
054 BERSet(
055 DEREncodableVector v,
056 boolean needsSorting)
057 {
058 super(v, needsSorting);
059 }
060
061 /*
062 */
063 void encode(
064 DEROutputStream out)
065 throws IOException
066 {
067 if (out instanceof ASN1OutputStream || out instanceof BEROutputStream)
068 {
069 out.write(SET | CONSTRUCTED);
070 out.write(0x80);
071
072 Enumeration e = getObjects();
073 while (e.hasMoreElements())
074 {
075 out.writeObject(e.nextElement());
076 }
077
078 out.write(0x00);
079 out.write(0x00);
080 }
081 else
082 {
083 super.encode(out);
084 }
085 }
086 }