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

package org.bouncycastle.oer.its;

import java.security.AccessController;
import java.util.Iterator;
import java.util.ArrayList;
import java.security.PrivilegedAction;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Sequence;
import java.util.List;
import org.bouncycastle.util.Arrays;

public class ItsUtils
{
    public static byte[] octetStringFixed(final byte[] array, final int n) {
        if (array.length != n) {
            throw new IllegalArgumentException("octet string out of range");
        }
        return array;
    }
    
    public static byte[] octetStringFixed(final byte[] array) {
        if (array.length < 1 || array.length > 32) {
            throw new IllegalArgumentException("octet string out of range");
        }
        return Arrays.clone(array);
    }
    
    public static ASN1Sequence toSequence(final List list) {
        return new DERSequence(list.toArray(new ASN1Encodable[0]));
    }
    
    public static ASN1Sequence toSequence(final ASN1Encodable... array) {
        return new DERSequence(array);
    }
    
    @Deprecated
    public static <T> List<T> fillList(final Class<T> clazz, final ASN1Sequence asn1Sequence) {
        return AccessController.doPrivileged((PrivilegedAction<List<T>>)new PrivilegedAction<List<T>>() {
            @Override
            public List<T> run() {
                try {
                    final ArrayList list = new ArrayList();
                    final Iterator<ASN1Encodable> iterator = asn1Sequence.iterator();
                    while (iterator.hasNext()) {
                        list.add(clazz.cast(clazz.getMethod("getInstance", Object.class).invoke(null, iterator.next())));
                    }
                    return list;
                }
                catch (final Exception cause) {
                    throw new IllegalStateException("could not invoke getInstance on type " + cause.getMessage(), cause);
                }
            }
        });
    }
}
