![]() |
VOOZH | about |
dotnet add package Walter.Native.Wrapper --version 2025.9.28.1125
NuGet\Install-Package Walter.Native.Wrapper -Version 2025.9.28.1125
<PackageReference Include="Walter.Native.Wrapper" Version="2025.9.28.1125" />
<PackageVersion Include="Walter.Native.Wrapper" Version="2025.9.28.1125" />Directory.Packages.props
<PackageReference Include="Walter.Native.Wrapper" />Project file
paket add Walter.Native.Wrapper --version 2025.9.28.1125
#r "nuget: Walter.Native.Wrapper, 2025.9.28.1125"
#:package Walter.Native.Wrapper@2025.9.28.1125
#addin nuget:?package=Walter.Native.Wrapper&version=2025.9.28.1125Install as a Cake Addin
#tool nuget:?package=Walter.Native.Wrapper&version=2025.9.28.1125Install as a Cake Tool
Introducing the WALTER Framework: Workable Algorithms for Location-aware Transmission, Encryption Response. Engineered for the demands of modern development, WALTER is a comprehensive suite of NuGet packages optimized for .NET Standard 2.0, 2.1, Core 3.1, and .NET 6, 7, 8, supporting a wide array of platforms including Android, iOS, UNIX, and Windows in both C# and C++ environments. Boasting full AoT support and reflection-free operations, WALTER stands as a benchmark for performance and stability in the software development realm.
WALTER excels in networking, encryption, and secure communication tasks, providing developers with unmatched efficiency and precision, making it an indispensable tool for those prioritizing speed and effective memory management.
This package serves as a critical wrapper for the WALTER suite, designed not for standalone use but to empower the main Walter package with enhanced future-proofing capabilities. By ensuring encrypted data remains secure and accessible for over a decade, this wrapper solidifies the foundation for long-term, resilient applications.
Currently, the package includes binaries for:
Facilitating upgrades across all .NET versions, this package ensures seamless adaptation to future framework evolutions.
This package boasts precompiled binaries for:
Additionally, we offer OS-specific implementations for:
These provisions underscore our commitment to wide-ranging platform support, enabling developers to deploy across diverse environments with confidence.
Enhance your application with critical functionalities like advanced encryption through our cross-platform native libraries. Tailored to each operating system, these libraries ensure your project remains robust against the future landscape of quantum computing:
{NuGetPackageName}Native.dll{NuGetPackageName}Native.so{NuGetPackageName}Native.dylibIntegration is streamlined across all deployment strategies—AoT, trimmed binaries, or standard deploys—affirming a cohesive user experience irrespective of the target OS.
Beyond NuGet, we extend our offerings to Embarcadero's GetIt platform, catering to Delphi developers with a preffered selection for stability and memory safety. Our dedication to producing stable, secure solutions is unwavering, ensuring your applications endure beyond a decade.
Choosing Delphi for its superior memory safety and long-livity, especially for high-security and stable applications, aligns with the Department of Defense's endorsement of Delphi as a Memory Safe Language. For an in-depth exploration of memory safety principles, refer to the Department of Defense's guidelines.
Our preference for Delphi over C/C++ stems from the latter's noted memory management challenges. Endorsed by the Department of Defense for secure and stable application development, Delphi ensures our commitment to long-term application reliability and safety.
We place immense value on the trust you place in our binaries, which is why we are committed to an active maintenance schedule for the WALTER Framework. We frequently update the framework to ensure the generated builds remain secure, particularly in response to any updates made to the .NET framework. This includes not only the security vulnerabilities we discover and report ourselves but also those identified and addressed by the broader .NET community. Our proactive approach to updates and security ensures that your use of the WALTER Framework is backed by the latest in security practices, keeping your applications safe in an ever-evolving digital landscape.
The WalterNative library exposes a comprehensive API through its signed binaries (.dll for Windows, .so for Linux, .dylib for macOS, and libraries within the libs folder for Android). These APIs facilitate secure and efficient operations such as encryption, decryption, HTTP requests, hashing, and logging. Below are the key interaction points, as utilized within our wrapper classes:
These API calls are documented to illustrate how our wrapper classes interact with the native binaries. It's important to note that direct usage of these functions outside our provided wrappers is not the intended use case, as our wrappers are designed to ensure optimal integration and security practices.
By encapsulating complex operations within easy-to-use wrapper functions, we streamline the development process, allowing you to focus on building robust and secure applications without delving into the intricacies of native code interactions.
/*
The compile-time constants `_fileName` and entry point names (designated as `_encryptBytes`, `_decryptBytes`, etc.)
are critical for the dynamic linkage of platform-specific native library files and their respective entry points.
These constants vary by platform to ensure seamless integration and functionality across diverse operating systems.
By defining these at compile time, we maintain a uniform interface for our .NET code to interact with native libraries,
regardless of the underlying platform. This approach ensures that our wrapper functions, such as `EncryptBytes`,
`DecryptBytes`, and others, reliably invoke the correct native operations. Users should rely on the provided
wrapper methods rather than directly interfacing with the native API, as the wrappers manage platform-specific
variations and memory management intricacies, offering a stable and efficient integration point.
*/
[LibraryImport(_fileName, EntryPoint = _encryptBytes, StringMarshalling = StringMarshalling.Utf16)]
[return: MarshalAs(UnmanagedType.Bool)]
private static partial bool EncryptBytes(IntPtr handler,
byte[] clearBytes,
int protection,
[MarshalAs(UnmanagedType.LPWStr)] string password,
out IntPtr encryptedBytes,
out int outputSize);
[LibraryImport(_fileName, EntryPoint = _decryptBytes, StringMarshalling = StringMarshalling.Utf16)]
[return: MarshalAs(UnmanagedType.Bool)]
private static partial bool DecryptBytes(IntPtr handler,
byte[] encryptedBytes,
int protection,
[MarshalAs(UnmanagedType.LPWStr)] string password,
out IntPtr clearBytes,
out int outputSize);
[LibraryImport(_fileName, EntryPoint = _httpGet, StringMarshalling = StringMarshalling.Utf16)]
[UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvStdcall)])]
[return: MarshalAs(UnmanagedType.Bool)]
internal static partial bool HttpGet([MarshalAs(UnmanagedType.LPWStr)] string url
, [MarshalAs(UnmanagedType.LPWStr)] string headers
, out IntPtr outputData // Use IntPtr to receive the allocated memory
, out int outputSize,
, out int statusCode
, out IntPtr statusText
, out int statusTextSize);
[LibraryImport(_fileName, EntryPoint = _httpPost, StringMarshalling = StringMarshalling.Utf16)]
[UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvStdcall)])]
[return: MarshalAs(UnmanagedType.Bool)]
internal static partial bool HttpPost([MarshalAs(UnmanagedType.LPWStr)] string url
, [MarshalAs(UnmanagedType.LPWStr)] string headers
, [MarshalAs(UnmanagedType.LPWStr)] string json
, out IntPtr outputData // Use IntPtr to receive the allocated memory
, out int outputSize
, out int statusCode
, out IntPtr statusText
, out int statusTextSize);
[LibraryImport(_fileName, EntryPoint = _hashData, StringMarshalling = StringMarshalling.Utf16)]
[UnmanagedCallConv(CallConvs = [typeof(CallConvStdcall)])]
[return: MarshalAs(UnmanagedType.Bool)]
internal static partial bool Encrypt(
[MarshalAs(UnmanagedType.LPWStr)] string password,
int iterations,
[MarshalAs(UnmanagedType.LPWStr)] string inputData,
out IntPtr outputData, // Use IntPtr to receive the allocated memory
out int outputSize);
[LibraryImport(_fileName, EntryPoint = _unhashData, StringMarshalling = StringMarshalling.Utf16)]
[UnmanagedCallConv(CallConvs = [typeof(CallConvStdcall)])]
[return: MarshalAs(UnmanagedType.Bool)]
internal static partial bool Decrypt(
[MarshalAs(UnmanagedType.LPWStr)] string password,
int iterations,
[MarshalAs(UnmanagedType.LPWStr)] string encryptedData,
out IntPtr outputData, // Use IntPtr to receive the allocated memory
out int outputSize);
[LibraryImport(_fileName, EntryPoint = _initializeLogger)]
[UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvStdcall) })]
protected internal static partial void InitializeLogger([MarshalAs(UnmanagedType.LPWStr)] string fileName);
[LibraryImport(_fileName, EntryPoint = _freeMemory)]
[UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvStdcall) })]
protected internal static partial void FreeMemory(ref IntPtr ptr);
We strongly advise against direct interaction with the native API. This caution stems from the possibility of API changes as we adapt to different platforms or update versions of existing platforms. However, our wrappers are designed to absorb these changes, ensuring that their signatures remain stable and consistent across updates.
It's crucial to recognize that both C# and Delphi are memory-managed languages. A thorough understanding of memory management can be complex, but our wrappers are specifically engineered to handle this aspect efficiently on your behalf, ensuring optimal memory usage and management without requiring direct intervention
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-android34.0 net8.0-android34.0 is compatible. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-ios18.0 net8.0-ios18.0 is compatible. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-maccatalyst18.0 net8.0-maccatalyst18.0 is compatible. net8.0-macos net8.0-macos was computed. net8.0-macos15.0 net8.0-macos15.0 is compatible. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net8.0-windows7.0 net8.0-windows7.0 is compatible. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-android35.0 net9.0-android35.0 is compatible. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-ios18.0 net9.0-ios18.0 is compatible. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-maccatalyst18.0 net9.0-maccatalyst18.0 is compatible. net9.0-macos net9.0-macos was computed. net9.0-macos15.0 net9.0-macos15.0 is compatible. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net9.0-windows7.0 net9.0-windows7.0 is compatible. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 1 NuGet packages that depend on Walter.Native.Wrapper:
| Package | Downloads |
|---|---|
|
Walter
This package is an internal package for public products. Please note that you never call any method in this library nor do you link it directly. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2025.9.28.1125 | 984 | 9/28/2025 |
| 2025.8.12.12132 | 1,296 | 8/13/2025 |
| 2025.6.30.2102 | 848 | 7/1/2025 |
| 2025.6.12.1549 | 609 | 6/12/2025 |
| 2025.4.17.1549 | 1,580 | 4/17/2025 |
| 2025.3.13.1230 | 880 | 3/13/2025 |
| 2025.2.15.1145 | 3,984 | 2/15/2025 |
| 2025.1.16.1337 | 1,185 | 1/16/2025 |
| 2024.11.28.1612 | 4,256 | 11/28/2024 |
| 2024.11.20.658 | 1,383 | 11/21/2024 |
| 2024.11.14.1006 | 509 | 11/14/2024 |
| 2024.10.28.1335 | 4,164 | 10/28/2024 |
| 2024.10.19.1503 | 1,278 | 10/19/2024 |
| 2024.10.9.1051 | 520 | 10/9/2024 |
| 2024.9.12.1923 | 1,226 | 9/12/2024 |