Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
HmacSha512.cs
2using System.Text;
3using Waher.Content;
4
5namespace Waher.Security.JWS
6{
10 public class HmacSha512 : HmacSha
11 {
12 private HMACSHA512 hmacSHA512;
13
17 public HmacSha512()
18 {
19 using (RandomNumberGenerator Rnd = RandomNumberGenerator.Create())
20 {
21 byte[] Secret = new byte[64];
22 Rnd.GetBytes(Secret);
23
24 this.Init(Secret);
25 }
26 }
27
32 public HmacSha512(byte[] Secret)
33 {
34 this.Init(Secret);
35 }
36
37 private void Init(byte[] Secret)
38 {
39 this.hmacSHA512 = new HMACSHA512(Secret);
40 }
41
43 public override void Dispose()
44 {
45 if (!(this.hmacSHA512 is null))
46 {
47 this.hmacSHA512.Dispose();
48 this.hmacSHA512 = null;
49 }
50 }
51
55 public override string Name => "HS512";
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.hmacSHA512)
70 {
71 SignatureBin = this.hmacSHA512.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-512 algorithm.
Definition: HmacSha512.cs:11
override void Dispose()
IDisposable.Dispose
Definition: HmacSha512.cs:43
override string Sign(string HeaderEncoded, string PayloadEncoded)
Signs data.
Definition: HmacSha512.cs:63
override string Name
Short name for algorithm.
Definition: HmacSha512.cs:55
HmacSha512(byte[] Secret)
HMAC SHA-512 algorithm.
Definition: HmacSha512.cs:32
HmacSha512()
HMAC SHA-512 algorithm.
Definition: HmacSha512.cs:17
Abstract base class for HMAC SHA JWS algorithms.
Definition: HmacSha.cs:7