private byte[] s2v(final byte[]... s) throws GeneralSecurityException {
    if (s.length == 0) {
      // Should never happen with AES-SIV, but we include this for completeness.
      return cmacForS2V.compute(BLOCK_ONE, AesUtil.BLOCK_SIZE);
    }

    byte[] result = cmacForS2V.compute(BLOCK_ZERO, AesUtil.BLOCK_SIZE);
    for (int i = 0; i < s.length - 1; i++) {
      final byte[] currBlock;
      if (s[i] == null) {
        currBlock = new byte[0];
      } else {
        currBlock = s[i];
      }
      result =
          com.google.crypto.tink.subtle.Bytes.xor(
              AesUtil.dbl(result), cmacForS2V.compute(currBlock, AesUtil.BLOCK_SIZE));
    }
    byte[] lastBlock = s[s.length - 1];
    if (lastBlock.length >= 16) {
      result = com.google.crypto.tink.subtle.Bytes.xorEnd(lastBlock, result);
    } else {
      result =
          com.google.crypto.tink.subtle.Bytes.xor(AesUtil.cmacPad(lastBlock), AesUtil.dbl(result));
    }
    return cmacForS2V.compute(result, AesUtil.BLOCK_SIZE);
  }
s2v per https://tools.ietf.org/html/rfc5297

@param s
@return s2v(si)
@throws GeneralSecurityException
java_src/src/main/java/com/google/crypto/tink/subtle/AesSiv.java