So i think i have found the soloution.
for (int i = 0; i < sizeof(sbuf) - 1; i += 2)
checksum += (sbuf[i] << 8) + sbuf[i + 1];
if (sizeof(sbuf) % 2)
checksum += sbuf[sizeof(sbuf) - 1];
Now this does calculate the correct checksum for any lenght of messege. But i can't confirm if it is a real solution or it just works because the last byte of my message is always zero.