5 Appendix A: Product Behavior
The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.
Microsoft Office 2010 suites
Microsoft Office 2013
Microsoft SharePoint Server 2010
Microsoft SharePoint Server 2013
Microsoft SharePoint Workspace 2010
Windows 8.1 Update
Microsoft Office 2016
Windows 10 operating system
Microsoft SharePoint Server 2016
Microsoft Office 2019
Microsoft SharePoint Server 2019
Microsoft Office 2021
Microsoft SharePoint Server Subscription Edition
Microsoft Office 2024 Preview
Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.
Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.
<1> Section 2.2.2: If there is only one object in the file, Microsoft SharePoint Server 2010 does not return the Intermediate Node Object, but a Leaf Node Object at the beginning.
<2> Section 2.2.3.1: SharePoint Server 2010 and SharePoint Server 2013 do not support the Data Hash Header.
<3> Section 2.2.3.1: The Data Hash computation is as follows:
A quick, simple non-cryptographic hash algorithm that works by XORing the bytes in a circular-shifting fashion.
A high level description of the algorithm without the introduction of the length is as follows:
Let's say a "block" is a 20-byte array.
-
method block zero(): returns a block with all zero bits. method block reverse(block b) returns a block with all of the bytes reversed (00010203... => ...03020100) method block extend8(byte b): returns a block with all zero bits except for the lower 8 bits which come from b. method block extend64(int64 i): returns a block of all zero bits except for the lower 64 bits which come from i and are in little-endian byte order. method block rotate(block bl, int n): returns bl rotated left by n bits. method block xor(block bl1, block bl2): returns a bitwise xor of bl1 with bl2 method block XorHash0(byte[] rgb): block ret = zero() for (int i = 0; i < rgb.Length; i ++) ret = xor(ret, rotate(extend8(rgb[i]), i * 11)) returns reverse(ret)
<4> Section 2.4.1: The signature is stored in the Leaf node corresponding to the local file header chunk.
<5> Section 2.4.1: The signature is stored in the node corresponding to the data file chunk which is a child of the root Intermediate node.
<6> Section 2.4.1: Office 2010 March 2015 CU adds an additional unsigned 32-bit integer, which specifies the CRC of the compressed data, after CRC field.
<7> Section 2.4.1: This sequence of bytes is randomly generated in Microsoft products.
<8> Section 2.4.1: For SharePoint Server 2010, if the number of .ZIP file bytes represented by a chunk is greater than 1 megabyte, a list of subchunks is generated. Each subchunk represents a sequential chunk of the .ZIP file data. The size of each subchunk is at most 1 megabyte. All but the last subchunk is 1 megabyte in size.
<9> Section 2.4.1: This sequence of bytes is randomly generated in Microsoft products.
<10> Section 2.4.2: SharePoint Server 2010 performs the RDC analysis if the file size is more than or equal to 32768 bytes and less than 262,144,000 bytes.