> -----Ursprüngliche Nachricht-----

> Von: Andreas Beeker <[email protected]>

> Gesendet: Montag, 2. März 2020 00:24

> An: POI Developers List <[email protected]>

> Cc: Hölzl, Dominik <[email protected]>

> Betreff: Re: HSMF enhancements

>

> Hello Dominik,

>

> I'm having a look at the patch.

>

> Where is the CRC32 code from? ... and please point me to the

> documentation of the GUID logic.

>

> Thank you and best wishes,

> Andi

>

> On 24.02.20 13:04, Hölzl, Dominik wrote:

> > Hello!

> >

> > Can somebody please have a look

> https://github.com/apache/poi/pull/167?

> >

> > Thank you and regards,

> > Dominik Hölzl

> >

> >

>





Hello!



The GUID-logic is exactly documented here:



https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxmsg/b046868c-9fbf-41ae-9ffb-8de2bd4eec82



(Chapter 2.2.3 Named Property Mapping Storage)



As there is no explicit documentation on the CRC-32 parameters there 
(2.2.3.2.2.1 Stream ID Equation - the only hint is "X25" which seems to be a 
dead end), I grabbed this from here:



https://github.com/yorkshiretwist/ReadAnOutlookMsg/blob/master/OutlookStorage.cs

(Seems to be originated from 
https://github.com/jukka/jtnef/blob/master/src/net/freeutils/tnef/CompressedRTFInputStream.java)



The only thing I needed from there were the CRC-32 parameters, which are 
poly=0x04C11DB7 (which is the "default" CRC-32 value), init=0x00000000, 
xor=0x00000000, revin=true, revout=true.

This leads to the check value of 0x2DFD2D88 which can e.g. be tested here: 
http://www.zorc.breitbandkatze.de/crc.html



Public CRC32 algorithm implementation is broadly available.

https://en.wikipedia.org/wiki/Cyclic_redundancy_check



Regards,

Dominik


Reply via email to