@@ -307,7 +307,11 @@ bool CHandler::IsFolderEncrypted(CNum folderIndex) const
307307 for (unsigned j = 0 ; j < idSize; j++)
308308 id64 = ((id64 << 8 ) | longID[j]);
309309 inByte.SkipDataNoCheck (idSize);
310- if (id64 == k_AES)
310+ if (id64 == k_AES
311+ || id64 == k_XCHACHA20
312+ || id64 == k_XCHACHA20_POLY1305
313+ || id64 == k_AES_XCHACHA20_POLY1305
314+ || id64 == k_AES_XCHACHA20_ASCON)
311315 return true ;
312316 if ((mainByte & 0x20 ) != 0 )
313317 inByte.SkipDataNoCheck (inByte.ReadNum ());
@@ -706,6 +710,46 @@ HRESULT CHandler::ObtainBlockMethods(CNum folderIndex, PROPVARIANT *prop, CHandl
706710 ConvertUInt32ToString (numCyclesPower, s);
707711 }
708712 break ;
713+ case k_XCHACHA20:
714+ if (info) continue ;
715+ name = " XChaCha20" ;
716+ if (propsSize >= 1 )
717+ {
718+ const Byte firstByte = props[0 ];
719+ const UInt32 numCyclesPower = firstByte & 0x3F ;
720+ ConvertUInt32ToString (numCyclesPower, s);
721+ }
722+ break ;
723+ case k_XCHACHA20_POLY1305:
724+ if (info) continue ;
725+ name = " XChaCha20-Poly1305" ;
726+ if (propsSize >= 1 )
727+ {
728+ const Byte firstByte = props[0 ];
729+ const UInt32 numCyclesPower = firstByte & 0x3F ;
730+ ConvertUInt32ToString (numCyclesPower, s);
731+ }
732+ break ;
733+ case k_AES_XCHACHA20_ASCON:
734+ if (info) continue ;
735+ name = " AES+XChaCha20+Ascon" ;
736+ if (propsSize >= 1 )
737+ {
738+ const Byte firstByte = props[0 ];
739+ const UInt32 numCyclesPower = firstByte & 0x3F ;
740+ ConvertUInt32ToString (numCyclesPower, s);
741+ }
742+ break ;
743+ case k_AES_XCHACHA20_POLY1305:
744+ if (info) continue ;
745+ name = " AES+XChaCha20-Poly1305" ;
746+ if (propsSize >= 1 )
747+ {
748+ const Byte firstByte = props[0 ];
749+ const UInt32 numCyclesPower = firstByte & 0x3F ;
750+ ConvertUInt32ToString (numCyclesPower, s);
751+ }
752+ break ;
709753 }
710754 }
711755
0 commit comments