code: function parse_EncryptionHeader(blob, length/*:number*/) {
  	var tgt = blob.l + length;
  	var o = {};
  	o.Flags = (blob.read_shift(4) & 0x3F);
  	blob.l += 4;
  	o.AlgID = blob.read_shift(4);
  	var valid = false;
  	switch(o.AlgID) {
  		case 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;
  		case 0x6801: valid = (o.Flags == 0x04); break;
  		case 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;
  		default: throw 'Unrecognized encryption algorithm: ' + o.AlgID;
  	}
  	if(!valid) throw new Error("Encryption Flags/AlgID mismatch");
  	o.AlgIDHash = blob.read_shift(4);
  	o.KeySize = blob.read_shift(4);
  	o.ProviderType = blob.read_shift(4);
  	blob.l += 8;
  	o.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');
  	blob.l = tgt;
  	return o;
  }
docs: /* [MS-OFFCRYPTO] 2.3.2 Encryption Header