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

package org.bouncycastle.crypto.macs;

import org.bouncycastle.crypto.params.Blake3Parameters;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.digests.Blake3Digest;
import org.bouncycastle.crypto.Mac;

public class Blake3Mac implements Mac
{
    private final Blake3Digest theDigest;
    
    public Blake3Mac(final Blake3Digest theDigest) {
        this.theDigest = theDigest;
    }
    
    @Override
    public String getAlgorithmName() {
        return this.theDigest.getAlgorithmName() + "Mac";
    }
    
    @Override
    public void init(final CipherParameters cipherParameters) {
        CipherParameters key = cipherParameters;
        if (key instanceof KeyParameter) {
            key = Blake3Parameters.key(((KeyParameter)key).getKey());
        }
        if (!(key instanceof Blake3Parameters)) {
            throw new IllegalArgumentException("Invalid parameter passed to Blake3Mac init - " + cipherParameters.getClass().getName());
        }
        final Blake3Parameters blake3Parameters = (Blake3Parameters)key;
        if (blake3Parameters.getKey() == null) {
            throw new IllegalArgumentException("Blake3Mac requires a key parameter.");
        }
        this.theDigest.init(blake3Parameters);
    }
    
    @Override
    public int getMacSize() {
        return this.theDigest.getDigestSize();
    }
    
    @Override
    public void update(final byte b) {
        this.theDigest.update(b);
    }
    
    @Override
    public void update(final byte[] array, final int n, final int n2) {
        this.theDigest.update(array, n, n2);
    }
    
    @Override
    public int doFinal(final byte[] array, final int n) {
        return this.theDigest.doFinal(array, n);
    }
    
    @Override
    public void reset() {
        this.theDigest.reset();
    }
}
