@Override
    public boolean verifySignature ( byte[] buffer, int i, int size ) {
        /*
         * Verification fails (w/ W2K3 server at least) if status is not 0. This
         * suggests MS doesn't compute the signature (correctly) for error responses
         * (perhaps for DOS reasons).
         */
        /*
         * Looks like the failure case also is just reflecting back the signature we sent
         */

        /**
         * Maybe this is related:
         * 
         * If signing is not active, the SecuritySignature field of the SMB Header for all messages sent, except
         * the SMB_COM_SESSION_SETUP_ANDX Response (section 2.2.4.53.2), MUST be set to
         * 0x0000000000000000. For the SMB_COM_SESSION_SETUP_ANDX Response, the SecuritySignature
         * field of the SMB Header SHOULD<226> be set to the SecuritySignature received in the
         * SMB_COM_SESSION_SETUP_ANDX Request (section 2.2.4.53.1).
         */
        if ( this.digest != null && getErrorCode() == 0 ) {
            boolean verify = this.digest.verify(buffer, i, size, 0, this);
            this.verifyFailed = verify;
            return !verify;
        }
        return true;
    }
@ Override public boolean verifySignature ( byte [ ] buffer , int i , int size ) { if ( this . digest != null && getErrorCode ( ) == 0 ) { boolean verify = this . digest . verify ( buffer , i , size , 0 , this ) ; this . verifyFailed = verify ; return ! verify ; } return true ; }
{@inheritDoc}

@see jcifs.util.transport.Response#verifySignature(byte[], int, int)