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

package com.google.crypto.tink.mac.internal;

import java.security.GeneralSecurityException;
import java.nio.ByteBuffer;
import com.google.crypto.tink.mac.ChunkedMacComputation;
import com.google.crypto.tink.util.Bytes;
import com.google.crypto.tink.mac.ChunkedMacVerification;

final class ChunkedMacVerificationFromComputation implements ChunkedMacVerification
{
    private final Bytes tag;
    private final ChunkedMacComputation macComputation;
    
    private ChunkedMacVerificationFromComputation(final ChunkedMacComputation macComputation, final byte[] tag) {
        this.macComputation = macComputation;
        this.tag = Bytes.copyFrom(tag);
    }
    
    @Override
    public void update(final ByteBuffer data) throws GeneralSecurityException {
        this.macComputation.update(data);
    }
    
    @Override
    public void verifyMac() throws GeneralSecurityException {
        final byte[] other = this.macComputation.computeMac();
        if (!this.tag.equals(Bytes.copyFrom(other))) {
            throw new GeneralSecurityException("invalid MAC");
        }
    }
    
    static ChunkedMacVerification create(final ChunkedMacComputation macComputation, final byte[] tag) {
        return new ChunkedMacVerificationFromComputation(macComputation, tag);
    }
}
