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

package org.bouncycastle.pqc.crypto.sphincsplus;

import org.bouncycastle.crypto.Digest;

class HarakaS512Digest extends HarakaSBase implements Digest
{
    public HarakaS512Digest(final HarakaSXof harakaSXof) {
        this.haraka512_rc = harakaSXof.haraka512_rc;
    }
    
    @Override
    public String getAlgorithmName() {
        return "HarakaS-512";
    }
    
    @Override
    public int getDigestSize() {
        return 32;
    }
    
    @Override
    public void update(final byte b) {
        if (this.off > 63) {
            throw new IllegalArgumentException("total input cannot be more than 64 bytes");
        }
        this.buffer[this.off++] = b;
    }
    
    @Override
    public void update(final byte[] array, final int n, final int n2) {
        if (this.off > 64 - n2) {
            throw new IllegalArgumentException("total input cannot be more than 64 bytes");
        }
        System.arraycopy(array, n, this.buffer, this.off, n2);
        this.off += n2;
    }
    
    @Override
    public int doFinal(final byte[] array, final int n) {
        final byte[] array2 = new byte[64];
        this.haraka512Perm(array2);
        HarakaSBase.xor(array2, 8, this.buffer, 8, array, n, 8);
        HarakaSBase.xor(array2, 24, this.buffer, 24, array, n + 8, 16);
        HarakaSBase.xor(array2, 48, this.buffer, 48, array, n + 24, 8);
        this.reset();
        return array2.length;
    }
    
    @Override
    public void reset() {
        super.reset();
    }
}
