Package org.hxzon.asn1.core.parse.ext

Source Code of org.hxzon.asn1.core.parse.ext.Asn1Utils

package org.hxzon.asn1.core.parse.ext;

import java.util.Iterator;

import org.hxzon.asn1.core.parse.BerInputStream;
import org.hxzon.asn1.core.parse.Tag;
import org.hxzon.asn1.core.type.BerBMPString;
import org.hxzon.asn1.core.type.BerBitString;
import org.hxzon.asn1.core.type.BerBoolean;
import org.hxzon.asn1.core.type.BerCharacterString;
import org.hxzon.asn1.core.type.BerEmbeddedPDV;
import org.hxzon.asn1.core.type.BerEnumerated;
import org.hxzon.asn1.core.type.BerExternal;
import org.hxzon.asn1.core.type.BerGeneralString;
import org.hxzon.asn1.core.type.BerGeneralTime;
import org.hxzon.asn1.core.type.BerGraphicsString;
import org.hxzon.asn1.core.type.BerIA5String;
import org.hxzon.asn1.core.type.BerInteger;
import org.hxzon.asn1.core.type.BerNull;
import org.hxzon.asn1.core.type.BerNumericString;
import org.hxzon.asn1.core.type.BerOID;
import org.hxzon.asn1.core.type.BerObjectDescriptor;
import org.hxzon.asn1.core.type.BerOctetString;
import org.hxzon.asn1.core.type.BerPrintableString;
import org.hxzon.asn1.core.type.BerReal;
import org.hxzon.asn1.core.type.BerRelativeOID;
import org.hxzon.asn1.core.type.BerSequence;
import org.hxzon.asn1.core.type.BerSet;
import org.hxzon.asn1.core.type.BerTeletexString;
import org.hxzon.asn1.core.type.BerUTCTime;
import org.hxzon.asn1.core.type.BerUTF8String;
import org.hxzon.asn1.core.type.BerUniversalString;
import org.hxzon.asn1.core.type.BerVideoTextString;
import org.hxzon.asn1.core.type.BerVisibleString;
import org.hxzon.asn1.core.type.base.BerConstruct;
import org.hxzon.asn1.core.type.base.BerNode;
import org.hxzon.asn1.core.type.ext.BerChoice;
import org.hxzon.asn1.core.type.ext.BerSequenceOf;
import org.hxzon.asn1.core.type.ext.FakeBerInteger;
import org.hxzon.asn1.core.type.ext.FakeBerNode;
import org.hxzon.asn1.core.type.ext.TimeOfDay;
import org.hxzon.asn1.core.type.ext.UnknownBerNode;
import org.hxzon.asn1.core.type.ext.UtcTime;
import org.hxzon.asn1.mms.common.FloatingPoint;

public class Asn1Utils {

    public static String printBerNode(BerNode node) {
        StringBuffer buffer = new StringBuffer();

        buffer.append(node.getId()).append(":");
        if (node instanceof BerConstruct) {
            buffer.append(Tag.toString(node.getTag())).append("{");
            Iterator<BerNode> it = (Iterator<BerNode>) ((BerConstruct) node).iterator();
            while (it.hasNext()) {
                buffer.append('\n');
                buffer.append(printBerNode(it.next()));
                if (it.hasNext()) {
                    buffer.append(';');
                }
            }
            buffer.append("}");
        } else {
            buffer.append(node.toString());
        }
        return buffer.toString();
    }

    public static BerNode createUnknown(int tag, BerInputStream stream) {
        BerNode node = null;
        switch (tag) {
        case Tag.UNIVERSAL | Tag.BITSTRING:
            node = new BerBitString();
            break;
        case Tag.UNIVERSAL | Tag.BMPSTRING:
            node = new BerBMPString();
            break;
        case Tag.UNIVERSAL | Tag.BOOLEAN:
            node = new BerBoolean();
            break;
        case Tag.UNIVERSAL | Tag.CHARACTERSTRING:
            node = new BerCharacterString();
            break;
        case Tag.UNIVERSAL | Tag.EMBEDDEDPDV:
            node = new BerEmbeddedPDV();
            break;
        case Tag.UNIVERSAL | Tag.ENUMERATED:
            node = new BerEnumerated();
            break;
        case Tag.UNIVERSAL | Tag.EXTERNAL:
            node = new BerExternal();
            break;
        case Tag.UNIVERSAL | Tag.GENERALSTRING:
            node = new BerGeneralString();
            break;
        case Tag.UNIVERSAL | Tag.GENERALTIME:
            node = new BerGeneralTime();
            break;
        case Tag.UNIVERSAL | Tag.GRAPHICSTRING:
            node = new BerGraphicsString();
            break;
        case Tag.UNIVERSAL | Tag.IA5STRING:
            node = new BerIA5String();
            break;
        case Tag.UNIVERSAL | Tag.INTEGER:
            node = new BerInteger();
            break;
        case Tag.UNIVERSAL | Tag.NULL:
            node = new BerNull();
            break;
        case Tag.UNIVERSAL | Tag.NUMERICSTRING:
            node = new BerNumericString();
            break;
        case Tag.UNIVERSAL | Tag.OBJECTDESCRIPTOR:
            node = new BerObjectDescriptor();
            break;
        case Tag.UNIVERSAL | Tag.OBJECTID:
            node = new BerOID();
            break;
        case Tag.UNIVERSAL | Tag.OCTETSTRING:
            node = new BerOctetString();
            break;
        case Tag.UNIVERSAL | Tag.PRINTABLESTRING:
            node = new BerPrintableString();
            break;
        case Tag.UNIVERSAL | Tag.REAL:
            node = new BerReal();
            break;
        case Tag.UNIVERSAL | Tag.RELATIVEOID:
            node = new BerRelativeOID();
            break;
        case Tag.UNIVERSAL | Tag.SEQUENCE:
            node = new BerSequence();
            break;
        case Tag.UNIVERSAL | Tag.SET:
            node = new BerSet();
            break;
        case Tag.UNIVERSAL | Tag.TELETEXSTRING:
            node = new BerTeletexString();
            break;
        case Tag.UNIVERSAL | Tag.UNIVERSALSTRING:
            node = new BerUniversalString();
            break;
        case Tag.UNIVERSAL | Tag.UTCTIME:
            node = new BerUTCTime();
            break;
        case Tag.UNIVERSAL | Tag.UTF8STRING:
            node = new BerUTF8String();
            break;
        case Tag.UNIVERSAL | Tag.VIDEOTEXTSTRING:
            node = new BerVideoTextString();
            break;
        case Tag.UNIVERSAL | Tag.VISIBLESTRING:
            node = new BerVisibleString();
            break;
        default:
            node = new UnknownBerNode(tag);
            break;
        }
        return node.init(tag, stream).setName("unknown " + Tag.toString(tag));
    }

    public static BerNode createBerOID(String name, String display, int tag, BerInputStream stream) {
        return new BerOID().init(name, display, tag, stream);
    }

//  public static BerNode createBerUnsigned(String name, String display, int tag, BerInputStream stream) {
//    return new BerInteger().init(name, display, tag, stream);
//  }

    public static BerNode createBerUnsignedX(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(64, true).init(name, display, tag, stream);
    }

    public static BerNode createBerUnsigned8(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(8, true).init(name, display, tag, stream);
    }

    public static BerNode createBerUnsigned16(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(16, true).init(name, display, tag, stream);
    }

    public static BerNode createBerUnsigned32(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(32, true).init(name, display, tag, stream);
    }

//  public static BerNode createBerInteger(String name, String display, int tag, BerInputStream stream) {
//    return new BerInteger().init(name, display, tag, stream);
//  }

//  public static BerNode createBerInteger(String name, String display, int tag, BerInputStream stream, int bitLen) {
//    return new BerInteger().limitBitLength(bitLen).init(name, display, tag, stream);
//  }

    public static BerNode createBerIntegerX(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(64).init(name, display, tag, stream);
    }

    public static BerNode createBerInteger8(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(8).init(name, display, tag, stream);
    }

    public static BerNode createBerInteger16(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(16).init(name, display, tag, stream);
    }

    public static BerNode createBerInteger32(String name, String display, int tag, BerInputStream stream) {
        return new BerInteger().limitBitLength(32).init(name, display, tag, stream);
    }

    public static BerNode createBerNull(String name, String display, int tag, BerInputStream stream) {
        return new BerNull().init(name, display, tag, stream);
    }

    public static BerNode createBerBoolean(String name, String display, int tag, BerInputStream stream) {
        return new BerBoolean().init(name, display, tag, stream);
    }

    public static BerNode createBerVisibleString(String name, String display, int tag, BerInputStream stream) {
        return new BerVisibleString().init(name, display, tag, stream);
    }

    public static BerNode createBerUtf8String(String name, String display, int tag, BerInputStream stream) {
        return new BerUTF8String().init(name, display, tag, stream);
    }

    public static BerNode createBerOctetString(String name, String display, int tag, BerInputStream stream) {
        return new BerOctetString().init(name, display, tag, stream);
    }

    public static BerNode createBerBitString(String name, String display, int tag, BerInputStream stream) {
        return new BerBitString().init(name, display, tag, stream);
    }

    public static BerNode createBerReal(String name, String display, int tag, BerInputStream stream) {
        return new BerReal().init(name, display, tag, stream);
    }

    public static BerNode createFloatPoint(String name, String display, int tag, BerInputStream stream) {
        return new FloatingPoint().init(name, display, tag, stream);
    }

    public static BerNode createBerSequenceOf(String name, String display, int tag, BerInputStream stream, Class<? extends BerNode> clazz) {
        return new BerSequenceOf(clazz).init(name, display, tag, stream);
    }

    public static BerNode createBerSequenceOf(String name, String display, int tag, BerInputStream stream, Class<? extends BerChoice> clazz, boolean choiceChildHasTag) {
        return new BerSequenceOf(clazz, choiceChildHasTag).init(name, display, tag, stream);
    }

    public static BerNode createBerIecUtcTime(String name, String display, int tag, BerInputStream stream) {
        return new UtcTime().init(name, display, tag, stream);
    }

    public static BerNode createBerIecTimeOfDay(String name, String display, int tag, BerInputStream stream) {
        return new TimeOfDay().init(name, display, tag, stream);
    }

    public static BerNode createFakeBerInteger(String name, String display, long value, int offset, int len) {
        FakeBerNode node = new FakeBerInteger(value);
        node.setId(name);
        node.setName(display);
        node.setTagOffset(offset);
        node.setTotalLen(len);
        return node;
    }

//  private static boolean notAddChoiceNode = true;
//
//  public static void setNotAddChoiceNode(boolean b) {
//    notAddChoiceNode = b;
//  }
//
//  public static boolean isNotAddChoiceNode() {
//    return notAddChoiceNode;
//  }
}
TOP

Related Classes of org.hxzon.asn1.core.parse.ext.Asn1Utils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.