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

package org.bouncycastle.cert.crmf;

import java.io.OutputStream;
import org.bouncycastle.operator.MacCalculator;
import org.bouncycastle.asn1.DERBitString;
import java.io.IOException;
import org.bouncycastle.asn1.crmf.PKMACValue;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;

abstract class PKMACValueGenerator
{
    private PKMACValueGenerator() {
    }
    
    public static PKMACValue generate(final PKMACBuilder pkmacBuilder, final char[] array, final SubjectPublicKeyInfo subjectPublicKeyInfo) throws CRMFException {
        final MacCalculator build = pkmacBuilder.build(array);
        final OutputStream outputStream = build.getOutputStream();
        try {
            outputStream.write(subjectPublicKeyInfo.getEncoded("DER"));
            outputStream.close();
        }
        catch (final IOException ex) {
            throw new CRMFException("exception encoding mac input: " + ex.getMessage(), ex);
        }
        return new PKMACValue(build.getAlgorithmIdentifier(), new DERBitString(build.getMac()));
    }
}
