xpTURN.Atropos 0.1.1

dotnet add package xpTURN.Atropos --version 0.1.1
                    
NuGet\Install-Package xpTURN.Atropos -Version 0.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="xpTURN.Atropos" Version="0.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="xpTURN.Atropos" Version="0.1.1" />
                    
Directory.Packages.props
<PackageReference Include="xpTURN.Atropos" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add xpTURN.Atropos --version 0.1.1
                    
#r "nuget: xpTURN.Atropos, 0.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package xpTURN.Atropos@0.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=xpTURN.Atropos&version=0.1.1
                    
Install as a Cake Addin
#tool nuget:?package=xpTURN.Atropos&version=0.1.1
                    
Install as a Cake Tool

xpTURN.Atropos

Dependency-free, Zero-GC-oriented pure C# Ed25519 (RFC 8032, plain PureEdDSA) sign/verify primitive for Unity (IL2CPP/AOT-safe) and Godot. No native libs, no DLLs, no Klotho dependency — designed to be split out as a standalone project.

Public API

Ed25519 is the only public type — plain Ed25519 (no context, no prehash), RFC 8032 deterministic (signatures byte-identical across any conformant implementation). Every operation allocates zero heap after a one-time per-thread warm-up, is thread-safe, and Verify rejects non-canonical signatures (non-malleable). All I/O is Span<byte>; sizes: SeedSize 32, PublicKeySize 32, SignatureSize 64.

Derive a public key from a 32-byte private seed:

using xpTURN.Atropos;

Span<byte> publicKey = stackalloc byte[Ed25519.PublicKeySize];   // 32
Ed25519.DerivePublicKey(seed /* 32 B */, publicKey);

Sign a message with the seed (writes a 64-byte signature):

Span<byte> signature = stackalloc byte[Ed25519.SignatureSize];   // 64
Ed25519.Sign(seed /* 32 B */, message, signature);

Verify a signature against the public key:

bool ok = Ed25519.Verify(publicKey, message, signature);

Installation

Unity (UPM)

  1. Open Window > Package Manager
  2. Click + > Add package from git URL...
  3. Enter:
https://github.com/xpTURN/Atropos.git?path=com.xpturn.atropos
Assembly Definition usage

If your project uses Assembly Definition (.asmdef), add a reference to this package's runtime assembly in any asmdef that calls the API.

  1. Select your Assembly Definition (.asmdef) file and open it in the Inspector.
  2. Under References, click + and add xpTURN.Atropos.

NuGet (.NET / Godot)

dotnet add package xpTURN.Atropos

Ships netstandard2.1 + net8.0.

From source

ProjectReference the Server~/xpTURN.Atropos/xpTURN.Atropos.csproj mirror, or <Compile Include> Runtime/**/*.cs.

Third-party

Ed25519 ref10 math + SHA-512 are vendored from Chaos.NaCl (public domain). See Runtime/ThirdParty/Ed25519/LICENSE.txt and PROVENANCE.md for the pinned source commit and the local-modification log.

Performance

Zero allocation on every operation, with latency competitive with BouncyCastle. Measured (net8 Release, Apple-silicon desktop; a comparison against BouncyCastle 2.5.1 as a reference — machine-dependent, relative):

op Atropos µs/op Atropos B/op BouncyCastle µs/op BouncyCastle B/op Latency ×vs BC
DerivePublicKey 23.2 0 26.0 1,776 1.12×
Sign (msg 160 B) 47.3 0 53.7 3,448 1.14×
Verify (msg 160 B) 62.5 0 55.0 6,176 0.88×
  • Latency ×vs BC = BouncyCastle µs ÷ Atropos µs; >1 means Atropos is faster. Derive/Sign run ~1.1× faster; Verify trails by ~12% on this host, offset by 0 allocation.
  • 0 bytes/op vs 1.8–6.2 KB/op, and a ~28× smaller code footprint with no dependency.
  • Field arithmetic uses an even/odd (radix-2⁵¹) Karatsuba fe_mul/fe_sq with the hot small ops inlined.
  • Numbers are machine-dependent (an x86 host enables BouncyCastle's SIMD paths); treat as relative.

Reproduce:

dotnet run -c Release --project Server~/xpTURN.Atropos.Bench

License

Apache-2.0 (see LICENSE.md) for the Atropos wrapper/facade code. Vendored ThirdParty/ retains its upstream public-domain dedication.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.1 224 7/5/2026