public static Shout Create(Timestamp creationTime, IMemoryOwner <byte> value, OmniDigitalSignature digitalSignature) { using var bytesPipe = new BytesPipe(); var target = new Shout(creationTime, value, null); target.Export(bytesPipe.Writer, BytesPool.Shared); var certificate = OmniDigitalSignature.CreateOmniCertificate(digitalSignature, bytesPipe.Reader.GetSequence()); return(new Shout(creationTime, value, certificate)); }
public static IEnumerable <object?[]> GetRandomSendAndReceiveTestCases() { var clientDigitalSignature = OmniDigitalSignature.Create("client", OmniDigitalSignatureAlgorithmType.EcDsa_P521_Sha2_256); var serverDigitalSignature = OmniDigitalSignature.Create("server", OmniDigitalSignatureAlgorithmType.EcDsa_P521_Sha2_256); var results = new List <(OmniDigitalSignature?, OmniDigitalSignature?)> { (null, null), (clientDigitalSignature, serverDigitalSignature), }; return(results.Select(n => new object?[] { n.Item1, n.Item2 })); }
public static AuthenticationMessage Create(DateTime creationTime, ReadOnlyMemory <byte> hash, OmniDigitalSignature?digitalSignature) { if (digitalSignature is null) { return(new AuthenticationMessage(Timestamp.FromDateTime(creationTime), hash, null)); } using var bytesPipe = new BytesPipe(); var target = new AuthenticationMessage(Timestamp.FromDateTime(creationTime), hash, null); target.Export(bytesPipe.Writer, BytesPool.Shared); var certificate = OmniDigitalSignature.CreateOmniCertificate(digitalSignature, bytesPipe.Reader.GetSequence()); return(new AuthenticationMessage(Timestamp.FromDateTime(creationTime), hash, certificate)); }
public static OmniSignature GetOmniSignature(OmniDigitalSignature digitalSignature) { if (digitalSignature is null) { throw new ArgumentNullException(nameof(digitalSignature)); } if (digitalSignature.Name == null) { throw new ArgumentNullException(nameof(digitalSignature.Name)); } if (digitalSignature.AlgorithmType == OmniDigitalSignatureAlgorithmType.EcDsa_P521_Sha2_256) { return(new OmniSignature(digitalSignature.Name, CreateOmniHash(digitalSignature.Name, digitalSignature.PublicKey.Span, OmniHashAlgorithmType.Sha2_256))); } else { throw new NotSupportedException(); } }
public static OmniCertificate Create(OmniDigitalSignature digitalSignature, ReadOnlySequence <byte> sequence) { if (digitalSignature is null) { throw new ArgumentNullException(nameof(digitalSignature)); } ReadOnlyMemory <byte> value; if (digitalSignature.AlgorithmType == OmniDigitalSignatureAlgorithmType.EcDsa_P521_Sha2_256) { value = EcDsa_P521_Sha2_256.Sign(digitalSignature.PrivateKey, sequence); } else { throw new NotSupportedException(nameof(digitalSignature.AlgorithmType)); } return(new OmniCertificate(digitalSignature.Name, digitalSignature.AlgorithmType, digitalSignature.PublicKey, value)); }
public static BroadcastClue Create(string type, Timestamp creationTime, Clue clue, OmniDigitalSignature digitalSignature) { var hub = new Hub(); try { var target = new BroadcastClue(type, creationTime, clue, null); target.Export(hub.Writer, BufferPool.Shared); hub.Writer.Complete(); var certificate = OmniCertificate.Create(digitalSignature, hub.Reader.GetSequence()); hub.Reader.Complete(); return(new BroadcastClue(type, creationTime, clue, certificate)); } finally { hub.Reset(); } }
public static OmniCertificate CreateOmniCertificate(OmniDigitalSignature digitalSignature, ReadOnlySequence <byte> sequence) { return(OmniCertificate.Create(digitalSignature, sequence)); }
public static async ValueTask <MulticastClue> Create(string type, Channel channel, Timestamp creationTime, Clue clue, OmniDigitalSignature digitalSignature, int miningLimit, TimeSpan miningTimeout, CancellationToken token) { OmniHashcash hashcash = null; { var hub = new Hub(); try { var target = new MulticastClue(type, channel, creationTime, clue, null, null); target.Export(hub.Writer, BufferPool.Shared); hub.Writer.Complete(); hashcash = await OmniMiner.Create(hub.Reader.GetSequence(), _utf8Encoding.Value.GetBytes(digitalSignature.GetOmniSignature().ToString()), OmniHashcashAlgorithmType.Sha2_256, miningLimit, miningTimeout, token); hub.Reader.Complete(); } finally { hub.Reset(); } } { var hub = new Hub(); try { var target = new MulticastClue(type, channel, creationTime, clue, hashcash, null); target.Export(hub.Writer, BufferPool.Shared); hub.Writer.Complete(); var certificate = OmniCertificate.Create(digitalSignature, hub.Reader.GetSequence()); hub.Reader.Complete(); return(new MulticastClue(type, channel, creationTime, clue, hashcash, certificate)); } finally { hub.Reset(); } } }