Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Major changing for Guid (UUID) core processing. Moving up to Fnv-1a-128 based algorithms #51

Open
3F opened this issue Aug 21, 2021 · 1 comment

Comments

@3F
Copy link
Owner

3F commented Aug 21, 2021

Here, I was saying about Huid (-> Fnv-1a-128 (-> LX4Cnh)) which provides related fastest generating UUID in a .NET System.Guid compatible manner.

Today's MvsSln relies on MD5 (or SHA-1, edition for DllExport) when generating and comparing something from strings using Guid.

For example, XProject.PId and related Guid-like hashing

PId = CalculatePId(prj);
}
protected Guid CalculatePId(Project prj)
{
if(Project == null) {
return Guid.Empty;
}
return (
FindGuid(prj)
+ ProjectItem.projectConfig
+ ProjectItem.solutionConfig
)
.Guid();

This, of course, should not affect any well known Guids for VS/msbuild support. Only parts where must be generating a new one from input string. However, this invalidates the previously generated values which may require a complete re-evaluation in some cases.

Please feedback if this upgrading may cause problems and cannot be adapted in some used infrastructure etc.

@3F 3F added this to the 3.0 milestone Aug 21, 2021
@3F
Copy link
Owner Author

3F commented Jun 9, 2024

Starting with 187f0e9, you can define the following:

  • MvsSlnFeatureHuid=true to enable implementation on Huid
  • MvsSlnFeatureGuidSha1=true to use Sha-1 based hashing (edition for DllExport up to 1.7.4)

Note:

  1. Huid (Fnv-1a-128 (via LX4Cnh)) and Sha-1 hashing works in Guids.domainMvsSln (the base),
    while implementation on MD5 uses initial vector.

  2. Remember, the default md5 for MvsSln 2.x is not FIPS compliant (according to the use of the System.Security.Cryptography implementation) and can cause the problems like this. I won't re-implement md5 beyond System.Security.Cryptography because 👇

  3. ! MvsSln doesn't use any weak algorithms (md5, Fnv1a, LX4Cnh, sha1, ...) for security related purposes. Only for UUID related things.

  4. MvsSlnFeatureHuid via AdditionalProperties in ProjectReference may cause problems

<ProjectReference Include="...MvsSln.csproj">
    ...
  <AdditionalProperties>MvsSlnFeatureHuid=true</AdditionalProperties>

because we're using a common.props

@3F 3F removed the review label Jun 9, 2024
3F added a commit to 3F/DllExport that referenced this issue Jun 9, 2024
3F added a commit to 3F/DllExport that referenced this issue Feb 25, 2025
* NEW: Extends support for .NET 9, .NET 8, .NET 7,
       .NET 6, .NET 5, netcoreapp3.1, netstandard2.1, ...
       Issues: #219, #193, #132, #239

* NEW: Custom `.typref ...` & `.assembly extern ...` in the Wizard
       using modern 3F's IL Assembler 9.3+

* NEW: Support $-interpolation in modern .NET 9-6, Span, Memory, ...
       configure in the Wizard.

* NEW: New [Ref] packages control and related options.

* NEW: ImageBase + step control in multiple targeting.
       configure in the Wizard.

* NEW: New `DllExport -pe` keys:
          -list-addr, -list-ord, -list-all
          -magic, -num-functions, -base

* NEW: Official ILRepack support in Pre-processing; 2.0.39
       https://github.com/gluck/il-repack/releases/tag/2.0.39

* NEW: New PE Check option to control PE32/PE32+ arch.

* NEW: -action RecoverInit in addition to -action Recover;
       Recover to initial setup using predefined/exported data.

* NEW: Option to refresh intermediate module (obj) using modified. Issue #206.

* NEW: x86+x64 copy support for `Publish` targets. Related issue #224.
       `DllExportResolvePublish` property to control it.

* FIXED: Crashes or empty exports if code contains `.class extern forwarder` declarations.

* FIXED: error: syntax error at token '.' in .interfaceimpl type... Issue: #205.

* FIXED: Post-Proc: possible "The given key was not present in the dictionary."

* FIXED: Fixed Pre-Proc ILMerge for netcore.

* FIXED: Fix copying to own directory for "Provide x86+x64 assemblies"
         when no active dependencies.

* FIXED: Pre-Proc: fixed edit Exec raw command in the Wizard.

* FIXED: Fixed possible Incorrect RVA: 0 when PE Check is on.

* FIXED: Fixed -action Export: Parameter "unevaluatedValue" cannot be null.

* FIXED: Fixed Post-Proc DllExportDirX64 & DllExportDirX86 properties.

* FIXED: DllExportResolvePublish support for a single platform
         Related issue #235 or like.

* FIXED: Failed to write to log file ... because it is being used by another process. Issue #223.

* CHANGED: Execute `-action Restore` in case of loss of generated meta
         for the cases like ImplicitUsings=true etc.
         It will probably help with problems like #184.

* CHANGED: Improved support for nested projects using $(DllExportDir) etc.

* CHANGED: Improved managing `PlatformTarget` when applying the configuration.

* CHANGED: Improved TargetFrameworks multi-targeting support. ImageBase can be configured separately.

* CHANGED: Improved IsNetCoreBased logic for modern tfms.

* CHANGED: Improved cleaning logic at Pre-processing stage to delete correctly DllExport.Dll, Conari.dll
           and other assemblies from TargetDir when merging using [Ref] etc.

* CHANGED: `DllExport -action keys` are no longer case sensitive.

* CHANGED: Adds /PDB /OPTIMIZE and other types of PDB generation.
            Automatic option is relied on DebugType + Optimize + DebugSymbols properties:
            * Optimize: Optimize long instructions to short
            * PdbOptimize: +Create the PDB file without enabling debug info tracking
            * DebugOptimize: Enable JIT optimization, create PDB file, use implicit sequence points
            * Debug: Disable JIT optimization, create PDB file, use sequence points from PDB
            * DebugImpl: Disable JIT optimization, create PDB file, use implicit sequence points
            * Legacy True/False: Debug or Optimize

* CHANGED: Updated .PDB deletion logic according to ISymUnmanagedWriter problem.

* CHANGED: Use `wDxpMsgLevel` environment variable to control message level.

* CHANGED: Full integration with modern hMSBuild 2.4.1+
           https://github.com/3F/hMSBuild
           ```
           DllExport -hMSBuild -help
           ```

           GetNuTool now through hMSBuild engine:
           ```
           DllExport -hMSBuild -GetNuTool ...
           ```

* CHANGED: `DllExport -pe-exp-list` marked as obsolete;
           Use new `-pe` instead.
           ```
           DllExport -pe -help
           ```

* CHANGED: +Log option for IlMerge & ILRepack in the Wizard.

* CHANGED: Changed `-action Upgrade` logic same to `-action Configure`

* CHANGED: Make all paths relative as `$(DllExportDir)..\` in configured project files.

* CHANGED: Updated wrapper in offline version
           `offline.DllExport.1.8...zip` https://www.nuget.org/packages/DllExport/1.8

* CHANGED: Added netfx4sdk 1.2 helper to build using legacy tfm
           https://github.com/3F/netfx4sdk

* CHANGED: Updated
           * ILAsm 9.3.0
             https://github.com/3F/coreclr/releases/tag/9.3.0

           * ILMerge 3.0.41
             https://www.nuget.org/packages/ilmerge/3.0.41

           * Cecil 0.11.6
             https://github.com/jbevain/cecil/releases/tag/0.11.6

           * Conari 1.5.0
             https://github.com/3F/Conari/releases/tag/1.5

           * MvsSln 2.7 with enabled Huid implementation
             3F/MvsSln#51 (comment)

* NOTE: Tests for net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net472;...
        can be found in official repo https://github.com/3F/DllExport

        ~ https://github.com/3F/DllExport/tree/master/src/DllExport/assets
          https://github.com/3F/DllExport/tree/master/src/DllExport/UnitedTest

* NOTE: To upgrade to 1.8:
        DllExport -mgr-up -dxp-version 1.8
        or
        DllExport -action Upgrade -dxp-version 1.8

* NOTE: official manager can be found here:
        https://3F.github.io/DllExport/releases/latest/manager/
        or here:
        * https://github.com/3F/DllExport/releases/tag/1.8
        * https://www.nuget.org/packages/DllExport/1.8
3F added a commit to 3F/DllExport that referenced this issue Feb 25, 2025
* NEW: Extends support for .NET 9, .NET 8, .NET 7,
       .NET 6, .NET 5, netcoreapp3.1, netstandard2.1, ...
       Issues: #219, #193, #132, #239

* NEW: Custom `.typref ...` & `.assembly extern ...` in the Wizard
       using modern 3F's IL Assembler 9.3+

* NEW: Support $-interpolation in modern .NET 9-6, Span, Memory, ...
       configure in the Wizard.

* NEW: New [Ref] packages control and related options.

* NEW: ImageBase + step control in multiple targeting.
       configure in the Wizard.

* NEW: New `DllExport -pe` keys:
          -list-addr, -list-ord, -list-all
          -magic, -num-functions, -base

* NEW: Official ILRepack support in Pre-processing; 2.0.39
       https://github.com/gluck/il-repack/releases/tag/2.0.39

* NEW: New PE Check option to control PE32/PE32+ arch.

* NEW: -action RecoverInit in addition to -action Recover;
       Recover to initial setup using predefined/exported data.

* NEW: Option to refresh intermediate module (obj) using modified. Issue #206.

* NEW: x86+x64 copy support for `Publish` targets. Related issue #224.
       `DllExportResolvePublish` property to control it.

* FIXED: Crashes or empty exports if code contains `.class extern forwarder` declarations.

* FIXED: error: syntax error at token '.' in .interfaceimpl type... Issue: #205.

* FIXED: Post-Proc: possible "The given key was not present in the dictionary."

* FIXED: Fixed Pre-Proc ILMerge for netcore.

* FIXED: Fix copying to own directory for "Provide x86+x64 assemblies"
         when no active dependencies.

* FIXED: Pre-Proc: fixed edit Exec raw command in the Wizard.

* FIXED: Fixed possible Incorrect RVA: 0 when PE Check is on.

* FIXED: Fixed -action Export: Parameter "unevaluatedValue" cannot be null.

* FIXED: Fixed Post-Proc DllExportDirX64 & DllExportDirX86 properties.

* FIXED: DllExportResolvePublish support for a single platform
         Related issue #235 or like.

* FIXED: Failed to write to log file ... because it is being used by another process. Issue #223.

* CHANGED: Execute `-action Restore` in case of loss of generated meta
         for the cases like ImplicitUsings=true etc.
         It will probably help with problems like #184.

* CHANGED: Improved support for nested projects using $(DllExportDir) etc.

* CHANGED: Improved managing `PlatformTarget` when applying the configuration.

* CHANGED: Improved TargetFrameworks multi-targeting support. ImageBase can be configured separately.

* CHANGED: Improved IsNetCoreBased logic for modern tfms.

* CHANGED: Improved cleaning logic at Pre-processing stage to delete correctly DllExport.Dll, Conari.dll
           and other assemblies from TargetDir when merging using [Ref] etc.

* CHANGED: `DllExport -action keys` are no longer case sensitive.

* CHANGED: Adds /PDB /OPTIMIZE and other types of PDB generation.
            Automatic option is relied on DebugType + Optimize + DebugSymbols properties:
            * Optimize: Optimize long instructions to short
            * PdbOptimize: +Create the PDB file without enabling debug info tracking
            * DebugOptimize: Enable JIT optimization, create PDB file, use implicit sequence points
            * Debug: Disable JIT optimization, create PDB file, use sequence points from PDB
            * DebugImpl: Disable JIT optimization, create PDB file, use implicit sequence points
            * Legacy True/False: Debug or Optimize

* CHANGED: Updated .PDB deletion logic according to ISymUnmanagedWriter problem.

* CHANGED: Use `wDxpMsgLevel` environment variable to control message level.

* CHANGED: Full integration with modern hMSBuild 2.4.1+
           https://github.com/3F/hMSBuild
           ```
           DllExport -hMSBuild -help
           ```

           GetNuTool now through hMSBuild engine:
           ```
           DllExport -hMSBuild -GetNuTool ...
           ```

* CHANGED: `DllExport -pe-exp-list` marked as obsolete;
           Use new `-pe` instead.
           ```
           DllExport -pe -help
           ```

* CHANGED: +Log option for IlMerge & ILRepack in the Wizard.

* CHANGED: Changed `-action Upgrade` logic same to `-action Configure`

* CHANGED: Make all paths relative as `$(DllExportDir)..\` in configured project files.

* CHANGED: Updated wrapper in offline version
           `offline.DllExport.1.8...zip` https://www.nuget.org/packages/DllExport/1.8

* CHANGED: Added netfx4sdk 1.2 helper to build using legacy tfm
           https://github.com/3F/netfx4sdk

* CHANGED: Updated
           * ILAsm 9.3.0
             https://github.com/3F/coreclr/releases/tag/9.3.0

           * ILMerge 3.0.41
             https://www.nuget.org/packages/ilmerge/3.0.41

           * Cecil 0.11.6
             https://github.com/jbevain/cecil/releases/tag/0.11.6

           * Conari 1.5.0
             https://github.com/3F/Conari/releases/tag/1.5

           * MvsSln 2.7 with enabled Huid implementation
             3F/MvsSln#51 (comment)

* NOTE: Tests for net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net472;...
        can be found in official repo https://github.com/3F/DllExport

        ~ https://github.com/3F/DllExport/tree/master/src/DllExport/assets
          https://github.com/3F/DllExport/tree/master/src/DllExport/UnitedTest

* NOTE: To upgrade to 1.8:
        DllExport -mgr-up -dxp-version 1.8
        or
        DllExport -action Upgrade -dxp-version 1.8

* NOTE: official manager can be found here:
        https://3F.github.io/DllExport/releases/latest/manager/
        or here:
        * https://github.com/3F/DllExport/releases/tag/1.8
        * https://www.nuget.org/packages/DllExport/1.8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant