Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
HmacSha256.cs
1using System.Security.Cryptography;
2using System.Text;
3using Waher.Content;
4
5namespace Waher.Security.JWS
6{
10 public class HmacSha256 : HmacSha
11 {
12 private HMACSHA256 hmacSHA256;
13
17 public HmacSha256()
18 {
19 using (RandomNumberGenerator Rnd = RandomNumberGenerator.Create())
20 {
21 byte[] Secret = new byte[32];
22 Rnd.GetBytes(Secret);
23
24 this.Init(Secret);
25 }
26 }
27
32 public HmacSha256(byte[] Secret)
33 {
34 this.Init(Secret);
35 }
36
37 private void Init(byte[] Secret)
38 {
39 this.hmacSHA256 = new HMACSHA256(Secret);
40 }
41
43 public override void Dispose()
44 {
45 if (!(this.hmacSHA256 is null))
46 {
47 this.hmacSHA256.Dispose();
48 this.hmacSHA256 = null;
49 }
50 }
51
55 public override string Name => "HS256";
56
63 public override string Sign(string HeaderEncoded, string PayloadEncoded)
64 {
65 byte[] SignatureBin;
66 string Token = HeaderEncoded + "." + PayloadEncoded;
67 byte[] TokenBin = Encoding.ASCII.GetBytes(Token);
68
69 lock (this.hmacSHA256)
70 {
71 SignatureBin = this.hmacSHA256.ComputeHash(TokenBin);
72 }
73
74 return Base64Url.Encode(SignatureBin);
75 }
76 }
77}
Static class that does BASE64URL encoding (using URL and filename safe alphabet), as defined in RFC46...
Definition: Base64Url.cs:11
static string Encode(byte[] Data)
Converts a binary block of data to a Base64URL-encoded string.
Definition: Base64Url.cs:48
HMAC SHA-256 algorithm.
Definition: HmacSha256.cs:11
override string Sign(string HeaderEncoded, string PayloadEncoded)
Signs data.
Definition: HmacSha256.cs:63
override void Dispose()
IDisposable.Dispose
Definition: HmacSha256.cs:43
HmacSha256()
HMAC SHA-256 algorithm.
Definition: HmacSha256.cs:17
override string Name
Short name for algorithm.
Definition: HmacSha256.cs:55
HmacSha256(byte[] Secret)
HMAC SHA-256 algorithm.
Definition: HmacSha256.cs:32
Abstract base class for HMAC SHA JWS algorithms.
Definition: HmacSha.cs:7