Package org.ietf.jgss

Source Code of org.ietf.jgss.Oid

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/

package org.ietf.jgss;

import java.io.IOException;
import java.io.InputStream;

import org.apache.harmony.auth.internal.nls.Messages;
import org.apache.harmony.security.asn1.ASN1Oid;
import org.apache.harmony.security.asn1.ObjectIdentifier;

public class Oid {

    // ASN.1 decoder/encoder
    private static final ASN1Oid ASN1 = ASN1Oid.getInstance();

    //inner representation of Object Identifier
    private final ObjectIdentifier oid;

    //ASN.1 DER encoding
    private byte[] encoding;

    Oid(int[] data) {
        super();
        oid = new ObjectIdentifier(data);
    }

    public Oid(byte[] data) throws GSSException {
        super();
        try {
            oid = new ObjectIdentifier((int[]) ASN1.decode(data));
        } catch (IOException e) {
            GSSException gsse = new GSSException(GSSException.FAILURE);
            gsse.initCause(e);
            throw gsse;
        }
    }

    public Oid(InputStream derOid) throws GSSException {
        super();
        if (derOid == null) {
            throw new NullPointerException();
        }

        try {
            oid = new ObjectIdentifier((int[]) ASN1.decode(derOid));
        } catch (IOException e) {
            GSSException gsse = new GSSException(GSSException.FAILURE);
            gsse.initCause(e);
            throw gsse;
        }
    }

    public Oid(String strOid) throws GSSException {
        super();
        try {
            oid = new ObjectIdentifier(strOid);
        } catch (IllegalArgumentException e) {
            GSSException gsse = new GSSException(GSSException.FAILURE);
            gsse.initCause(e);
            throw gsse;
        }
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (other == null || !(other instanceof Oid)) {
            return false;
        }
        return oid.equals(((Oid) other).oid);
    }

    public boolean containedIn(Oid[] oids) {
        if (oids == null) {
            throw new NullPointerException(Messages.getString("auth.0D")); //$NON-NLS-1$
        }
        for (Oid element : oids) {
            if (oid.equals(element.oid)) {
                return true;
            }
        }
        return false;
    }

    public byte[] getDER() throws GSSException {
        if (encoding == null) {
            encoding = ASN1.encode(oid.getOid());
        }
        byte[] enc = new byte[encoding.length];
        System.arraycopy(encoding, 0, enc, 0, enc.length);
        return enc;
    }

    @Override
    public String toString() {
        return oid.toString();
    }

    @Override
    public int hashCode() {
        return oid.hashCode();
    }
}
TOP

Related Classes of org.ietf.jgss.Oid

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.