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

package org.bouncycastle.pqc.crypto.hqc;

import org.bouncycastle.crypto.digests.SHAKEDigest;

class Shake256RandomGenerator
{
    private final SHAKEDigest digest;
    
    public Shake256RandomGenerator(final byte[] array, final byte b) {
        (this.digest = new SHAKEDigest(256)).update(array, 0, array.length);
        this.digest.update(b);
    }
    
    public Shake256RandomGenerator(final byte[] array, final int n, final int n2, final byte b) {
        (this.digest = new SHAKEDigest(256)).update(array, n, n2);
        this.digest.update(b);
    }
    
    public void init(final byte[] array, final int n, final int n2, final byte b) {
        this.digest.reset();
        this.digest.update(array, n, n2);
        this.digest.update(b);
    }
    
    public void nextBytes(final byte[] array) {
        this.digest.doOutput(array, 0, array.length);
    }
    
    public void nextBytes(final byte[] array, final int n, final int n2) {
        this.digest.doOutput(array, n, n2);
    }
    
    public void xofGetBytes(final byte[] array, final int n) {
        final int n2 = n & 0x7;
        final int n3 = n - n2;
        this.digest.doOutput(array, 0, n3);
        if (n2 != 0) {
            final byte[] array2 = new byte[8];
            this.digest.doOutput(array2, 0, 8);
            System.arraycopy(array2, 0, array, n3, n2);
        }
    }
}
