docs: void sign(byte[] data, int offset, int length,
                  ServerMessageBlock request, ServerMessageBlock response) {
          request.signSeq = signSequence;
          if( response != null ) {
              response.signSeq = signSequence + 1;
              response.verifyFailed = false;
          }
  
          try {
              update(macSigningKey, 0, macSigningKey.length);
              int index = offset + ServerMessageBlock.SIGNATURE_OFFSET;
              for (int i = 0; i < 8; i++) data[index + i] = 0;
              ServerMessageBlock.writeInt4(signSequence, data, index);
              update(data, offset, length);
              System.arraycopy(digest(), 0, data, index, 8);
              if (bypass) {
                  bypass = false;
                  System.arraycopy("BSRSPYL ".getBytes(), 0, data, index, 8);
              }
          } catch (Exception ex) {
              if( log.level > 0 )
                  ex.printStackTrace( log );
          } finally {
              signSequence += 2;
          }
      }