nacl-core - NaCl.Core 1.0.0

Cryptography library for Paseto.Core

PM> Install-Package NaCl.Core -Version 1.0.0 -Source https://www.myget.org/F/nacl-core/api/v3/index.json

Copy to clipboard

> nuget.exe install NaCl.Core -Version 1.0.0 -Source https://www.myget.org/F/nacl-core/api/v3/index.json

Copy to clipboard

> dotnet add package NaCl.Core --version 1.0.0 --source https://www.myget.org/F/nacl-core/api/v3/index.json

Copy to clipboard
<PackageReference Include="NaCl.Core" Version="1.0.0" />
Copy to clipboard
source https://www.myget.org/F/nacl-core/api/v3/index.json

nuget NaCl.Core  ~> 1.0.0
Copy to clipboard

> choco install NaCl.Core --version 1.0.0 --source https://www.myget.org/F/nacl-core/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "nacl-core" -SourceLocation "https://www.myget.org/F/nacl-core/api/v2"
Install-Module -Name "NaCl.Core" -RequiredVersion "1.0.0" -Repository "nacl-core" 
Copy to clipboard

Browse the sources in this package using Visual Studio or WinDbg by configuring the following legacy symbol server URL: https://www.myget.org/F/nacl-core/symbols/


Paseto.NET, a Paseto (Platform-Agnostic Security Tokens) implementation for .NET

CI Maintenance contributions welcome

Features

PASETO protocols

purpose v1 v2 v3 v4
local
public

PASERK extension

type support
lid
local
seal
local-wrap
local-pw
sid
public
pid
secret
secret-wrap
secret-pw

Installation

NuGet Version

Install the Paseto.Core NuGet package from the .NET CLI using:

dotnet add package Paseto.Core

or from the NuGet package manager:

Install-Package Paseto.Core

Usage

PASETO

The library exposes a Fluent API with several method overloads found in Use(), WithKey(), AddClaim(), AddFooter() and so on to provide the flexibility needed for encoding and decoding PASETO tokens and also for generating the required symmetric or asymmetric key pairs. However, you can use the Protocols and Handlers directly if you like.

Below are a couple of examples for the most common use cases:

Generating a crypto random Symmetric Key

var pasetoKey = new PasetoBuilder().Use(version, Purpose.Local)
                                   .GenerateSymmetricKey();

Generating an Asymmetric Key Pair

var pasetoKey = new PasetoBuilder().Use(version, Purpose.Public)
                                   .GenerateAsymmetricKeyPair(seed);

NOTE: A seed is not required for protocol v1.

Generating a Token

var token = new PasetoBuilder().Use(version, purpose)
                               .WithKey(key)
                               .AddClaim("data", "this is a secret message")
                               .Issuer("https://github.com/daviddesmet/paseto-dotnet")
                               .Subject(Guid.NewGuid().ToString())
                               .Audience("https://paseto.io")
                               .NotBefore(DateTime.UtcNow.AddMinutes(5))
                               .IssuedAt(DateTime.UtcNow)
                               .Expiration(DateTime.UtcNow.AddHours(1))
                               .TokenIdentifier("123456ABCD")
                               .AddFooter("arbitrary-string-that-isn't-json")
                               .Encode();

Decoding a Token

var result = new PasetoBuilder().Use(version, purpose)
                                .WithKey(key)
                                .Decode(token);

Or validate the token's payload while decoding (the header and signature is always validated):

var valParams = new PasetoTokenValidationParameters
{
    ValidateLifetime = true,
    ValidateAudience = true,
    ValidateIssuer = true,
    ValidAudience = "https://paseto.io",
    ValidIssuer = "https://github.com/daviddesmet/paseto-dotnet"
};

var result = new PasetoBuilder().Use(version, purpose)
                                .WithKey(key)
                                .Decode(token, valParams);

PASERK

The library also provides the PASERK extension for encoding and decoding a key.

A serialized key in PASERK has the format:

k[version].[type].[data]

Encoding a Key

var paserk = Paserk.Encode(pasetoKey, type);

Decoding a Key

var key = Paserk.Decode(paserk);

Roadmap

  • Add support for remaining PASERK types and its operations.
  • Add support for version detection when decoding.
  • Add support for custom payload validation rules.
  • Improve documentation.

Test Coverage

codecov

  • Includes the mandatory test vectors for PASETO and PASERK.

Cryptography

  • Uses Ed25519 (EdDSA over Curve25519) algorithm from CodesInChaos Chaos.NaCl cryptography library.
  • Uses Blake2b cryptographic hash function from Konscious.Security.Cryptography repository.
  • Uses AES-256-CTR, ECDSA over P-384 algorithms from Bouncy Castle cryptography library.
  • Uses XChaCha20-Poly1305 AEAD from NaCl.Core repository.

Learn More

License

  • .NETFramework 4.7
  • .NETStandard 2.0
  • .NETFramework 4.7: 4.7.0.0
  • .NETStandard 2.0: 2.0.0.0

                        
Assembly Assembly hash Match
/lib/net47/nacl.core.dll 15aecff5a2c64a7ea123de0d21252458FFFFFFFF
/lib/netstandard2.0/nacl.core.dll 75b601a1b12849659e2fff944e965c17FFFFFFFF
/lib/net47/nacl.core.dll e2206340c2674c5cb33aa0d6bec34f9cFFFFFFFF
/lib/netstandard2.0/nacl.core.dll f8ee77cd27d34e48830990633f60779aFFFFFFFF

Owners

daviddesmet

Authors

David De Smet

Project URL

https://github.com/idaviddesmet/paseto-dotnet

License

MIT

Tags

NaCl cryptography dotnet dotnet-core netstandard

Info

161 total downloads
1 downloads for version 1.0.0
Download (19.06 KB)
Download legacy symbols (43.53 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
1.2.0 38.5 KB Tue, 05 Feb 2019 03:33:42 GMT 3
1.1.0 37.63 KB Tue, 27 Nov 2018 05:08:47 GMT 2
1.1.0-CI00046 38.52 KB Thu, 17 Jan 2019 22:46:55 GMT 1
1.1.0-CI00045 38.52 KB Thu, 17 Jan 2019 22:03:43 GMT 1
1.1.0-CI00044 38.52 KB Thu, 17 Jan 2019 13:41:28 GMT 1
1.1.0-CI00043 38.52 KB Wed, 16 Jan 2019 23:49:57 GMT 1
1.1.0-CI00042 38.52 KB Wed, 16 Jan 2019 23:33:22 GMT 2
1.1.0-CI00041 38.52 KB Wed, 16 Jan 2019 23:26:15 GMT 1
1.1.0-CI00040 38.52 KB Wed, 16 Jan 2019 22:48:47 GMT 1
1.1.0-CI00039 38.52 KB Wed, 16 Jan 2019 22:31:42 GMT 1
1.1.0-CI00038 38.52 KB Wed, 16 Jan 2019 07:12:42 GMT 1
1.1.0-CI00037 38.51 KB Wed, 16 Jan 2019 06:54:33 GMT 1
1.1.0-CI00036 38.52 KB Wed, 16 Jan 2019 06:47:31 GMT 1
1.1.0-CI00035 38.51 KB Wed, 16 Jan 2019 04:53:44 GMT 1
1.1.0-CI00034 38.52 KB Wed, 16 Jan 2019 04:23:23 GMT 1
1.1.0-CI00033 38.38 KB Fri, 28 Dec 2018 17:44:42 GMT 1
1.1.0-CI00032 38.38 KB Fri, 28 Dec 2018 16:44:19 GMT 1
1.1.0-CI00031 38.38 KB Fri, 28 Dec 2018 16:38:31 GMT 1
1.1.0-CI00030 38.41 KB Wed, 05 Dec 2018 23:36:04 GMT 1
1.1.0-CI00029 38.42 KB Wed, 05 Dec 2018 19:40:14 GMT 21
1.1.0-CI00028 38.42 KB Tue, 04 Dec 2018 23:09:11 GMT 1
1.1.0-CI00027 38.59 KB Tue, 04 Dec 2018 22:40:41 GMT 1
1.1.0-CI00026 38.79 KB Tue, 04 Dec 2018 20:21:06 GMT 2
1.1.0-CI00025 38.79 KB Tue, 04 Dec 2018 20:14:21 GMT 1
1.1.0-CI00024 38.79 KB Mon, 03 Dec 2018 23:52:13 GMT 1
1.1.0-CI00023 38.57 KB Mon, 03 Dec 2018 17:37:56 GMT 1
1.1.0-CI00022 40.61 KB Sat, 01 Dec 2018 18:43:25 GMT 0
1.1.0-CI00021 38.08 KB Sat, 01 Dec 2018 00:00:43 GMT 1
1.1.0-CI00020 39.08 KB Fri, 30 Nov 2018 23:27:38 GMT 1
1.1.0-CI00019 39.08 KB Fri, 30 Nov 2018 21:55:00 GMT 1
1.1.0-CI00018 39.07 KB Fri, 30 Nov 2018 21:44:18 GMT 1
1.1.0-CI00017 39.06 KB Fri, 30 Nov 2018 21:38:06 GMT 0
1.1.0-CI00016 39.07 KB Fri, 30 Nov 2018 20:36:18 GMT 1
1.1.0-CI00015 39.07 KB Fri, 30 Nov 2018 20:22:08 GMT 1
1.1.0-CI00014 39.07 KB Fri, 30 Nov 2018 20:09:46 GMT 1
1.1.0-CI00013 39.07 KB Fri, 30 Nov 2018 19:56:42 GMT 1
1.1.0-CI00012 39.07 KB Fri, 30 Nov 2018 19:41:48 GMT 1
1.1.0-CI00011 39.06 KB Fri, 30 Nov 2018 19:35:52 GMT 1
1.1.0-CI00010 39.06 KB Fri, 30 Nov 2018 18:58:06 GMT 20
1.1.0-CI00009 39.07 KB Fri, 30 Nov 2018 18:42:43 GMT 1
1.1.0-CI00008 39.06 KB Fri, 30 Nov 2018 18:31:07 GMT 1
1.1.0-CI00007 39.07 KB Fri, 30 Nov 2018 18:18:14 GMT 21
1.1.0-CI00006 39.07 KB Fri, 30 Nov 2018 17:47:03 GMT 1
1.1.0-CI00005 39.07 KB Fri, 30 Nov 2018 17:38:45 GMT 1
1.1.0-CI00004 39.07 KB Fri, 30 Nov 2018 17:27:24 GMT 2
1.1.0-CI00003 39.06 KB Fri, 30 Nov 2018 17:22:07 GMT 1
1.1.0-CI00002 39.07 KB Tue, 27 Nov 2018 19:56:03 GMT 21
1.1.0-CI00001 37.64 KB Tue, 27 Nov 2018 05:18:41 GMT 1
1.0.3-CI00023 37.62 KB Tue, 27 Nov 2018 04:42:39 GMT 1
1.0.3-CI00022 37.84 KB Tue, 27 Nov 2018 04:27:07 GMT 1
1.0.3-CI00021 37.07 KB Mon, 26 Nov 2018 19:47:49 GMT 2
1.0.2-CI00020 37.07 KB Mon, 26 Nov 2018 19:34:48 GMT 1
1.0.2-CI00019 37.05 KB Mon, 26 Nov 2018 19:08:05 GMT 2
1.0.2-CI00018 19.18 KB Sun, 25 Nov 2018 18:08:11 GMT 1
1.0.2-CI00017 19.18 KB Wed, 21 Nov 2018 20:04:41 GMT 1
1.0.2-CI00016 19.14 KB Mon, 19 Nov 2018 23:06:34 GMT 1
1.0.2-CI00015 19.14 KB Mon, 19 Nov 2018 22:32:25 GMT 2
1.0.1-CI00014 19.14 KB Mon, 19 Nov 2018 22:26:18 GMT 1
1.0.1-CI00013 19.13 KB Mon, 19 Nov 2018 22:21:38 GMT 1
1.0.1-CI00012 19.13 KB Thu, 04 Oct 2018 05:13:46 GMT 1
1.0.1-CI00011 19.12 KB Thu, 04 Oct 2018 05:05:04 GMT 1
1.0.1-CI00010 19.12 KB Wed, 26 Sep 2018 05:54:18 GMT 1
1.0.1-CI00009 19.13 KB Mon, 10 Sep 2018 22:55:01 GMT 1
1.0.1-CI00006 19.13 KB Wed, 06 Jun 2018 19:09:55 GMT 2
1.0.1-CI00005 19.13 KB Wed, 06 Jun 2018 15:41:23 GMT 1
1.0.1-CI00004 19.14 KB Wed, 06 Jun 2018 06:22:41 GMT 1
1.0.1-CI00003 19.04 KB Fri, 01 Jun 2018 17:22:27 GMT 1
1.0.1-CI00002 19.04 KB Fri, 01 Jun 2018 17:10:31 GMT 1
1.0.1-CI00001 19.04 KB Fri, 01 Jun 2018 16:58:46 GMT 1
1.0.1-CI00000 19.04 KB Fri, 01 Jun 2018 16:04:50 GMT 2
1.0.0 19.06 KB Fri, 01 Jun 2018 16:11:17 GMT 1
1.0.0-CI00001 19.04 KB Fri, 01 Jun 2018 15:57:19 GMT 1
1.0.0-CI00000 19.07 KB Fri, 01 Jun 2018 15:30:47 GMT 1