package org.bouncycastle.crypto.generators; import org.bouncycastle.crypto.DataLengthException; import org.bouncycastle.crypto.DerivationParameters; import org.bouncycastle.crypto.Digest; import org.bouncycastle.crypto.DigestDerivationFunction; import org.bouncycastle.crypto.params.ISO18033KDFParameters; import org.bouncycastle.crypto.params.KDFParameters; import org.bouncycastle.util.Pack; /* loaded from: classes6.dex */ public class BaseKDFBytesGenerator implements DigestDerivationFunction { private int counterStart; private Digest digest; private byte[] iv; private byte[] shared; @Override // org.bouncycastle.crypto.DerivationFunction public void init(DerivationParameters derivationParameters) { if (derivationParameters instanceof KDFParameters) { KDFParameters kDFParameters = (KDFParameters) derivationParameters; this.shared = kDFParameters.getSharedSecret(); this.iv = kDFParameters.getIV(); } else { if (!(derivationParameters instanceof ISO18033KDFParameters)) { throw new IllegalArgumentException("KDF parameters required for generator"); } this.shared = ((ISO18033KDFParameters) derivationParameters).getSeed(); this.iv = null; } } @Override // org.bouncycastle.crypto.DigestDerivationFunction public Digest getDigest() { return this.digest; } @Override // org.bouncycastle.crypto.DerivationFunction public int generateBytes(byte[] bArr, int i, int i2) throws DataLengthException, IllegalArgumentException { int i3 = i2; int i4 = i; if (bArr.length - i3 < i4) { throw new DataLengthException("output buffer too small"); } long j = i3; int digestSize = this.digest.getDigestSize(); if (j > 8589934591L) { throw new IllegalArgumentException("Output length too large"); } long j2 = digestSize; int i5 = (int) (((j + j2) - 1) / j2); byte[] bArr2 = new byte[this.digest.getDigestSize()]; byte[] bArr3 = new byte[4]; Pack.intToBigEndian(this.counterStart, bArr3, 0); int i6 = this.counterStart & (-256); for (int i7 = 0; i7 < i5; i7++) { Digest digest = this.digest; byte[] bArr4 = this.shared; digest.update(bArr4, 0, bArr4.length); this.digest.update(bArr3, 0, 4); byte[] bArr5 = this.iv; if (bArr5 != null) { this.digest.update(bArr5, 0, bArr5.length); } this.digest.doFinal(bArr2, 0); if (i3 > digestSize) { System.arraycopy(bArr2, 0, bArr, i4, digestSize); i4 += digestSize; i3 -= digestSize; } else { System.arraycopy(bArr2, 0, bArr, i4, i3); } byte b = (byte) (bArr3[3] + 1); bArr3[3] = b; if (b == 0) { i6 += 256; Pack.intToBigEndian(i6, bArr3, 0); } } this.digest.reset(); return (int) j; } /* JADX INFO: Access modifiers changed from: protected */ public BaseKDFBytesGenerator(int i, Digest digest) { this.counterStart = i; this.digest = digest; } }