SimonSpeckNet 0.3.0

dotnet add package SimonSpeckNet --version 0.3.0
NuGet\Install-Package SimonSpeckNet -Version 0.3.0
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="SimonSpeckNet" Version="0.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SimonSpeckNet --version 0.3.0
#r "nuget: SimonSpeckNet, 0.3.0"
#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.
// Install SimonSpeckNet as a Cake Addin
#addin nuget:?package=SimonSpeckNet&version=0.3.0

// Install SimonSpeckNet as a Cake Tool
#tool nuget:?package=SimonSpeckNet&version=0.3.0

Build Status Windows Build status Coverity Scan Build Status NuGet version FOSSA Status

simon-speck-net

c# wrapper implement of Naruto/simon-speck-c

simon and speck are lightweight block cipher algorithms, published by NSA.(iadgov/simon-speck)

support platforms are Desktop Platforms(Windows, macOS, Linux), Xamarin iOS and MonoAndroid.

Supports

  • algorithms and block sizes, key sizes and modes
    • speck ECB
      • 128/128
      • 128/192
      • 128/256
    • speck CTR
      • 128/128
      • 128/192
      • 128/256
  • platforms, architectures
    • windows x64
    • macOS x64
    • linux x64
    • Xamarin iOS
    • MonoAndroid

Sample

simple encrypt and decrypt code.

String plainText = "test text abcdefg.";
byte[] plainByte = System.Text.Encoding.ASCII.GetBytes(plainText);

// Speck ECB mode
using (SymmetricAlgorithm algo = new Speck())
{
    algo.BlockSize = 128;
    algo.KeySize = 128;
    
    algo.GenerateKey();
    using (ICryptoTransform encryptor = algo.CreateEncryptor() , decryptor = algo.CreateDecryptor())
    {
        byte[] plainEnc = encryptor.TransformFinalBlock(plainByte, 0, plainByte.Length);
        byte[] plainDec = decryptor.TransformFinalBlock(plainEnc, 0, plainEnc.Length);
        Console.WriteLine(System.Text.Encoding.ASCII.GetString(plainDec));
        Console.WriteLine();
    }
}

// Speck CTR mode
using (SymmetricAlgorithm algo = new SpeckCTR())
{
    algo.BlockSize = 128;
    algo.KeySize = 128;
    
    algo.GenerateIV();
    algo.GenerateKey();
    using (ICryptoTransform encryptor = algo.CreateEncryptor() , decryptor = algo.CreateDecryptor())
    {
        byte[] plainEnc = encryptor.TransformFinalBlock(plainByte, 0, plainByte.Length);
        byte[] plainDec = decryptor.TransformFinalBlock(plainEnc, 0, plainEnc.Length);
        Console.WriteLine(System.Text.Encoding.ASCII.GetString(plainDec));
        Console.WriteLine();
    }
}

development

preapre

  • mono
  • Unity (if create unity package)

get source

git clone --recursive git@github.com:Naruto/simon-speck-net.git

build

build simon-speck-net and nunit test.

cd /path/to/simon-speck-net
cd ./net
mono .nuget/nuget.exe restore
xbuild /p:TargetFrameworkVersion="v4.5" /p:Configuration=Release
mono ./packages/NUnit.ConsoleRunner.3.7.0/tools/nunit3-console.exe ./speckTest/bin/Release/speckTest.dll

or

cd /path/to/simon-speck-net
./scripts/build.sh

create nuget package

cd /path/to/simon-speck-net
./scripts/create_nuget.sh

SimonSpeckNet nuget package file is outputted to out/net directory.

create unity package

cd /path/to/simon-speck-net
./scripts/create_unitypackage.sh

SimonSpeckNet unitypackage file is outputted to out/unity directory.

update native library

update simon-speck-c sumobule

git submodule update --init --recursive

Android

export NDK_ROOT=/path/to/android-ndk-path
./scripts/plugins/deploy_android.sh

deploy each archtectures library files to net/plugins/Android/libs

iOS

./scripts/pluginsdeploy_ios.sh

deploy fat library file to net/plugins/iOS

Linux

./scripts/plugins/deploy_linux.sh

deploy .so file to net/plugins/x64

macOS

./scripts/plugins/deploy_mac.sh

deploy .dylib and .bundle files to net/plugins/x64

Windows

T.B.D

License

FOSSA Status

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 was computed.  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. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard is compatible.  netstandard1.0 was computed.  netstandard1.1 was computed.  netstandard1.2 was computed.  netstandard1.3 was computed.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 was computed.  netstandard2.1 was computed. 
.NET Framework net is compatible.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid is compatible. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Windows Phone wp8 was computed.  wp81 was computed.  wpa81 was computed. 
Windows Store netcore is compatible.  netcore45 was computed.  netcore451 was computed.  win is compatible. 
Xamarin.iOS xamarinios is compatible. 
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.

This package has 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.3.0 3,356 10/4/2017
0.2.0 933 9/30/2017
0.1.2 826 9/22/2017

- version up simon-speck-c to v0.6
- change SpeckCTR default padding mode to `Padding.None`
- SpeckCTR allows any length data when setting `Padding.None`. And return values length is same as input data length.