001/*
002 * $HeadURL: http://juliusdavies.ca/svn/not-yet-commons-ssl/tags/commons-ssl-0.3.9/src/java/org/apache/commons/ssl/ASN1Structure.java $
003 * $Revision: 121 $
004 * $Date: 2007-11-13 21:26:57 -0800 (Tue, 13 Nov 2007) $
005 *
006 * ====================================================================
007 * Licensed to the Apache Software Foundation (ASF) under one
008 * or more contributor license agreements.  See the NOTICE file
009 * distributed with this work for additional information
010 * regarding copyright ownership.  The ASF licenses this file
011 * to you under the Apache License, Version 2.0 (the
012 * "License"); you may not use this file except in compliance
013 * with the License.  You may obtain a copy of the License at
014 *
015 *   http://www.apache.org/licenses/LICENSE-2.0
016 *
017 * Unless required by applicable law or agreed to in writing,
018 * software distributed under the License is distributed on an
019 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
020 * KIND, either express or implied.  See the License for the
021 * specific language governing permissions and limitations
022 * under the License.
023 * ====================================================================
024 *
025 * This software consists of voluntary contributions made by many
026 * individuals on behalf of the Apache Software Foundation.  For more
027 * information on the Apache Software Foundation, please see
028 * <http://www.apache.org/>.
029 *
030 */
031
032package org.apache.commons.ssl;
033
034import org.apache.commons.ssl.util.Hex;
035
036import java.util.Iterator;
037import java.util.LinkedList;
038import java.util.List;
039import java.util.Set;
040import java.util.TreeSet;
041
042/**
043 * @author Credit Union Central of British Columbia
044 * @author <a href="http://www.cucbc.com/">www.cucbc.com</a>
045 * @author <a href="mailto:juliusdavies@cucbc.com">juliusdavies@cucbc.com</a>
046 * @since 16-Nov-2005
047 */
048class ASN1Structure {
049    List derIntegers = new LinkedList();
050    Set oids = new TreeSet();
051    String oid1;
052    String oid2;
053    String oid3;
054    byte[] salt;
055    byte[] iv;
056    int iterationCount;
057    int keySize;
058    byte[] bigPayload;
059    byte[] smallPayload;
060
061    public String toString() {
062        StringBuffer buf = new StringBuffer(256);
063        buf.append("------ ASN.1 PKCS Structure ------");
064        buf.append("\noid1:    ");
065        buf.append(oid1);
066        if (oid2 != null) {
067            buf.append("\noid2:    ");
068            buf.append(oid2);
069        }
070        buf.append("\nsalt:   ");
071        if (salt != null) {
072            buf.append(Hex.encode(salt));
073        } else {
074            buf.append("[null]");
075        }
076        buf.append("\nic:      ");
077        buf.append(Integer.toString(iterationCount));
078        if (keySize != 0) {
079            buf.append("\nkeySize: ");
080            buf.append(Integer.toString(keySize * 8));
081        }
082        if (oid2 != null) {
083            buf.append("\noid3:    ");
084            buf.append(oid3);
085        }
086        if (oid2 != null) {
087            buf.append("\niv:      ");
088            if (iv != null) {
089                buf.append(Hex.encode(iv));
090            } else {
091                buf.append("[null]");
092            }
093        }
094        if (bigPayload != null) {
095            buf.append("\nbigPayload-length:   ");
096            buf.append(bigPayload.length);
097        }
098        if (smallPayload != null) {
099            buf.append("\nsmallPayload-length: ");
100            buf.append(smallPayload.length);
101        }
102        if (!oids.isEmpty()) {
103            Iterator it = oids.iterator();
104            buf.append("\nAll oids:");
105            while (it.hasNext()) {
106                buf.append("\n");
107                buf.append((String) it.next());
108            }
109        }
110        return buf.toString();
111    }
112}