// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.asn1;

import java.io.IOException;

public class DERBitString extends ASN1BitString
{
    public static DERBitString convert(final ASN1BitString asn1BitString) {
        return (DERBitString)asn1BitString.toDERObject();
    }
    
    public DERBitString(final byte[] array) {
        this(array, 0);
    }
    
    public DERBitString(final byte b, final int n) {
        super(b, n);
    }
    
    public DERBitString(final byte[] array, final int n) {
        super(array, n);
    }
    
    public DERBitString(final int n) {
        super(ASN1BitString.getBytes(n), ASN1BitString.getPadBits(n));
    }
    
    public DERBitString(final ASN1Encodable asn1Encodable) throws IOException {
        super(asn1Encodable.toASN1Primitive().getEncoded("DER"), 0);
    }
    
    DERBitString(final byte[] array, final boolean b) {
        super(array, b);
    }
    
    @Override
    boolean encodeConstructed() {
        return false;
    }
    
    @Override
    int encodedLength(final boolean b) {
        return ASN1OutputStream.getLengthOfEncodingDL(b, this.contents.length);
    }
    
    @Override
    void encode(final ASN1OutputStream asn1OutputStream, final boolean b) throws IOException {
        final int n = this.contents[0] & 0xFF;
        final int n2 = this.contents.length - 1;
        final byte b2 = this.contents[n2];
        final byte b3 = (byte)(this.contents[n2] & 255 << n);
        if (b2 == b3) {
            asn1OutputStream.writeEncodingDL(b, 3, this.contents);
        }
        else {
            asn1OutputStream.writeEncodingDL(b, 3, this.contents, 0, n2, b3);
        }
    }
    
    @Override
    ASN1Primitive toDERObject() {
        return this;
    }
    
    @Override
    ASN1Primitive toDLObject() {
        return this;
    }
    
    static DERBitString fromOctetString(final ASN1OctetString asn1OctetString) {
        return new DERBitString(asn1OctetString.getOctets(), true);
    }
}
