3.1.5.11 Updating the Checksum of a Personal Distribution List

Whenever a member is added to or removed from a personal distribution list, the client SHOULD update the value of the PidLidDistributionListChecksum property (section 2.2.2.2.3). The checksum is calculated by iterating through each byte of each PtypBinary value in the multivalue PidLidDistributionListMembers property (section 2.2.2.2.1), as specified by the following algorithm.

 SET CheckSum = 0
 FOR EACH PtypBinaryValue in PidLidDistributionListMembers
 FOR EACH byteValue in PtypBinaryValue
 Checksum = CRC(Checksum, byteValue)
 ENDFOR
 ENDFOR

This algorithm uses the IEEE 802.3 CRC polynomial 0xEDB88320 (x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1) with a seed value of 0x00000000. For more details about the polynomial, see [ISO/IEC8802-3] section 3.2.8.