package org.snmp4j.security;

import java.io.IOException;
import java.nio.ByteBuffer;
import org.snmp4j.TransportStateReference;
import org.snmp4j.asn1.BERInputStream;
import org.snmp4j.asn1.BEROutputStream;
import org.snmp4j.event.CounterEvent;
import org.snmp4j.log.LogAdapter;
import org.snmp4j.log.LogFactory;
import org.snmp4j.mp.CounterSupport;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.mp.StatusInformation;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;

/* JADX INFO: loaded from: classes.dex */
public class TSM extends SNMPv3SecurityModel {
    private static final int MAX_PREFIX_LENGTH = 4;
    private static final byte PREFIX_SEPARATOR = 58;
    private static final LogAdapter logger = LogFactory.getLogger(TSM.class);
    private CounterSupport counterSupport;
    private boolean usePrefix;

    public TSM() {
        this(new OctetString(MPv3.createLocalEngineID()), false);
    }

    private int generateMessage(int i2, byte[] bArr, int i3, int i4, byte[] bArr2, byte[] bArr3, int i5, BERInputStream bERInputStream, SecurityStateReference securityStateReference, SecurityParameters securityParameters, BEROutputStream bEROutputStream, TransportStateReference transportStateReference) throws IOException {
        TsmSecurityStateReference tsmSecurityStateReference = (TsmSecurityStateReference) securityStateReference;
        if (tsmSecurityStateReference == null || tsmSecurityStateReference.getTmStateReference() == null) {
            transportStateReference.setSameSecurity(false);
            if (this.usePrefix) {
                String transportDomainPrefix = getTransportDomainPrefix(transportStateReference.getAddress());
                if (transportDomainPrefix == null) {
                    fireIncrementCounter(new CounterEvent(this, SnmpConstants.snmpTsmUnknownPrefixes));
                    return SnmpConstants.SNMPv3_TSM_UNKNOWN_PREFIXES;
                }
                String securityNamePrefix = getSecurityNamePrefix(bArr3);
                if (securityNamePrefix == null || !securityNamePrefix.equals(transportDomainPrefix)) {
                    fireIncrementCounter(new CounterEvent(this, SnmpConstants.snmpTsmInvalidPrefixes));
                    return SnmpConstants.SNMPv3_TSM_UNKNOWN_PREFIXES;
                }
                transportStateReference.setSecurityName(new OctetString(new String(bArr3).substring(securityNamePrefix.length() + 1)));
            } else {
                transportStateReference.setSecurityName(new OctetString(bArr3));
            }
        } else {
            TransportStateReference tmStateReference = tsmSecurityStateReference.getTmStateReference();
            tmStateReference.setRequestedSecurityLevel(tmStateReference.getTransportSecurityLevel());
            tmStateReference.setSameSecurity(true);
        }
        byte[] bArrBuildWholeMessage = SNMPv3SecurityModel.buildWholeMessage(new Integer32(i2), SNMPv3SecurityModel.buildMessageBuffer(bERInputStream), bArr, securityParameters);
        bEROutputStream.setBuffer((ByteBuffer) ByteBuffer.wrap(bArrBuildWholeMessage).position(bArrBuildWholeMessage.length));
        return 0;
    }

    private void updateStatusInfo(int i2, StatusInformation statusInformation, CounterEvent counterEvent) {
        if (statusInformation != null) {
            statusInformation.setSecurityLevel(new Integer32(i2));
            statusInformation.setErrorIndication(new VariableBinding(counterEvent.getOid(), counterEvent.getCurrentValue()));
        }
    }

    protected void fireIncrementCounter(CounterEvent counterEvent) {
        this.counterSupport.fireIncrementCounter(counterEvent);
    }

    @Override // org.snmp4j.security.SecurityModel
    public int generateRequestMessage(int i2, byte[] bArr, int i3, int i4, byte[] bArr2, byte[] bArr3, int i5, BERInputStream bERInputStream, SecurityParameters securityParameters, BEROutputStream bEROutputStream, TransportStateReference transportStateReference) throws IOException {
        return generateMessage(i2, bArr, i3, i4, bArr2, bArr3, i5, bERInputStream, null, securityParameters, bEROutputStream, transportStateReference);
    }

    @Override // org.snmp4j.security.SecurityModel
    public int generateResponseMessage(int i2, byte[] bArr, int i3, int i4, byte[] bArr2, byte[] bArr3, int i5, BERInputStream bERInputStream, SecurityStateReference securityStateReference, SecurityParameters securityParameters, BEROutputStream bEROutputStream) throws IOException {
        return generateMessage(i2, bArr, i3, i4, bArr2, bArr3, i5, bERInputStream, securityStateReference, securityParameters, bEROutputStream, null);
    }

    public CounterSupport getCounterSupport() {
        return this.counterSupport;
    }

    @Override // org.snmp4j.security.SecurityModel
    public int getID() {
        return 4;
    }

    protected String getSecurityNamePrefix(byte[] bArr) {
        String str = new String(new OctetString(bArr).getValue());
        int iIndexOf = str.indexOf(58);
        if (iIndexOf <= 0 || iIndexOf > 4) {
            return null;
        }
        return str.substring(0, iIndexOf);
    }

    protected String getTransportDomainPrefix(Address address) {
        return GenericAddress.getTDomainPrefix(address.getClass());
    }

    @Override // org.snmp4j.security.SecurityModel
    public boolean hasAuthoritativeEngineID() {
        return false;
    }

    public boolean isUsePrefix() {
        return this.usePrefix;
    }

    @Override // org.snmp4j.security.SecurityModel
    public SecurityParameters newSecurityParametersInstance() {
        return new TsmSecurityParameters();
    }

    @Override // org.snmp4j.security.SecurityModel
    public SecurityStateReference newSecurityStateReference() {
        return new TsmSecurityStateReference();
    }

    @Override // org.snmp4j.security.SecurityModel
    public int processIncomingMsg(int i2, int i3, SecurityParameters securityParameters, SecurityModel securityModel, int i4, BERInputStream bERInputStream, TransportStateReference transportStateReference, OctetString octetString, OctetString octetString2, BEROutputStream bEROutputStream, Integer32 integer32, SecurityStateReference securityStateReference, StatusInformation statusInformation) throws IOException {
        octetString.setValue(this.localEngineID.getValue());
        if (transportStateReference == null || !transportStateReference.isTransportSecurityValid()) {
            fireIncrementCounter(new CounterEvent(this, SnmpConstants.snmpTsmInvalidCaches));
            return SnmpConstants.SNMPv3_TSM_INVALID_CACHES;
        }
        if (this.usePrefix) {
            String tDomainPrefix = GenericAddress.getTDomainPrefix(transportStateReference.getAddress().getClass());
            if (tDomainPrefix == null) {
                CounterEvent counterEvent = new CounterEvent(this, SnmpConstants.snmpTsmUnknownPrefixes);
                fireIncrementCounter(counterEvent);
                updateStatusInfo(i4, statusInformation, counterEvent);
                return SnmpConstants.SNMPv3_TSM_UNKNOWN_PREFIXES;
            }
            if (tDomainPrefix.length() <= 0 || tDomainPrefix.length() > 4) {
                CounterEvent counterEvent2 = new CounterEvent(this, SnmpConstants.snmpTsmInvalidPrefixes);
                fireIncrementCounter(counterEvent2);
                updateStatusInfo(i4, statusInformation, counterEvent2);
                return SnmpConstants.SNMPv3_TSM_UNKNOWN_PREFIXES;
            }
            OctetString octetString3 = new OctetString(tDomainPrefix);
            octetString3.append((byte) 58);
            octetString3.append(transportStateReference.getSecurityName());
            octetString2.setValue(octetString3.getValue());
        } else {
            octetString2.setValue(transportStateReference.getSecurityName().getValue());
        }
        if (i4 > transportStateReference.getTransportSecurityLevel().getSnmpValue()) {
            CounterEvent counterEvent3 = new CounterEvent(this, SnmpConstants.snmpTsmInadequateSecurityLevels);
            fireIncrementCounter(counterEvent3);
            updateStatusInfo(i4, statusInformation, counterEvent3);
            return SnmpConstants.SNMPv3_TSM_INADEQUATE_SECURITY_LEVELS;
        }
        ((TsmSecurityStateReference) securityStateReference).setTmStateReference(transportStateReference);
        TsmSecurityParameters tsmSecurityParameters = (TsmSecurityParameters) securityParameters;
        int scopedPduPosition = tsmSecurityParameters.getScopedPduPosition();
        byte[] bArrBuildMessageBuffer = SNMPv3SecurityModel.buildMessageBuffer(bERInputStream);
        bEROutputStream.setFilledBuffer(ByteBuffer.wrap(bArrBuildMessageBuffer, scopedPduPosition, bArrBuildMessageBuffer.length - scopedPduPosition));
        integer32.setValue(i3 - tsmSecurityParameters.getBERMaxLength(i4));
        return 0;
    }

    public void setLocalEngineID(OctetString octetString) {
        this.localEngineID = octetString;
    }

    public void setUsePrefix(boolean z) {
        this.usePrefix = z;
    }

    @Override // org.snmp4j.security.SecurityModel
    public boolean supportsEngineIdDiscovery() {
        return false;
    }

    public TSM(OctetString octetString, boolean z) {
        this.counterSupport = CounterSupport.getInstance();
        this.localEngineID = octetString;
        this.usePrefix = z;
    }
}
