@Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        InternalRequestSignature that = (InternalRequestSignature) o;
        return MessageDigest.isEqual(requestBody, that.requestBody)
            && mac.getAlgorithm().equals(that.mac.getAlgorithm())
            && mac.getMacLength() == that.mac.getMacLength()
            && mac.getProvider().equals(that.mac.getProvider())
            && MessageDigest.isEqual(requestSignature, that.requestSignature);
    }
Extract a signature from a request.

@param crypto        the cryptography library used to generate {@link Mac} instances, may not be null
@param requestBody   the body of the request; may not be null
@param headers       the headers for the request; may be null
@return the signature extracted from the request, or null if one or more request signature
headers was not present
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/InternalRequestSignature.java