RFC/Standard for AES XTS

Hello,

I see AES XTS support added in MBEDTLS release. Wanted to know more details about AES XTS Implementation.

  1. Can you point out to standard/RFC which is used to implement AES XTS
  2. AES XTS implementation uses GF multiplication. Can you please point out to the standard/RFC which is used to implement this.

/*

  • GF(2^128) multiplication function

  • This function multiplies a field element by x in the polynomial field

  • representation. It uses 64-bit word operations to gain speed but compensates

  • for machine endianess and hence works correctly on both big and little

  • endian machines.
    */
    static void mbedtls_gf128mul_x_ble( unsigned char r[16],
    const unsigned char x[16] )
    {
    uint64_t a, b, ra, rb;

    GET_UINT64_LE( a, x, 0 );
    GET_UINT64_LE( b, x, 8 );

    ra = ( a << 1 ) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) );
    rb = ( a >> 63 ) | ( b << 1 );

    PUT_UINT64_LE( ra, r, 0 );
    PUT_UINT64_LE( rb, r, 8 );
    }

Note this question is a duplicate of RFC/standard for AES XTS implementation, so we will continue discussion there