An ARC signer.
Inheritance HierarchyMimeKit (in MimeKit.dll) Version: 4.12.0
Syntaxpublic abstract class ArcSigner : DkimSignerBase
The ArcSigner type exposes the following members.
Constructors Name Description ArcSigner(String, String, DkimSignatureAlgorithm) Initialize a new instance of the ArcSigner class. ArcSigner(AsymmetricKeyParameter, String, String, DkimSignatureAlgorithm) Initialize a new instance of the ArcSigner class. ArcSigner(Stream, String, String, DkimSignatureAlgorithm) Initialize a new instance of the ArcSigner class. ArcSigner(String, String, String, DkimSignatureAlgorithm) Initialize a new instance of the ArcSigner class. Top Properties Methods Name Description CreateSigningContext Create the digest signing context.An ARC signer.
Exampleusing System; using System.IO; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; using MimeKit; using MimeKit.Cryptography; namespace ArcSignerExample { class ExampleArcSigner : ArcSigner { public ExampleArcSigner (Stream stream, string domain, string selector, DkimSignatureAlgorithm algorithm = DkimSignatureAlgorithm.RsaSha256) : base (stream, domain, selector, algorithm) { } public ExampleArcSigner (string fileName, string domain, string selector, DkimSignatureAlgorithm algorithm = DkimSignatureAlgorithm.RsaSha256) : base (fileName, domain, selector, algorithm) { } public ExampleArcSigner (AsymmetricKeyParameter key, string domain, string selector, DkimSignatureAlgorithm algorithm = DkimSignatureAlgorithm.RsaSha256) : base (key, domain, selector, algorithm) { } public string AuthenticationServiceIdentifier { get; set; } protected override AuthenticationResults GenerateArcAuthenticationResults (FormatOptions options, MimeMessage message, CancellationToken cancellationToken) { var results = new AuthenticationResults (AuthenticationServiceIdentifier); for (int i = 0; i < message.Headers.Count; i++) { var header = message.Headers[i]; if (header.Id != HeaderId.AuthenticationResults) continue; if (!AuthenticationResults.TryParse (header.RawValue, out AuthenticationResults authres)) continue; if (authres.AuthenticationServiceIdentifier != AuthenticationServiceIdentifier) continue; foreach (var result in authres.Results) { if (!results.Results.Any (r => r.Method == result.Method)) results.Results.Add (result); } } return results; } protected override Task<AuthenticationResults> GenerateArcAuthenticationResultsAsync (FormatOptions options, MimeMessage message, CancellationToken cancellationToken) { return Task.FromResult (GenerateArcAuthenticationResults (options, message, cancellationToken)); } } class Program { public static void Main (string[] args) { if (args.Length < 2) { Help (); return; } for (int i = 0; i < args.Length; i++) { if (args[i] == "--help") { Help (); return; } } var headers = new HeaderId[] { HeaderId.From, HeaderId.Subject, HeaderId.Date }; var signer = new ExampleArcSigner ("privatekey.pem", "example.com", "brisbane", DkimSignatureAlgorithm.RsaSha256) { HeaderCanonicalizationAlgorithm = DkimCanonicalizationAlgorithm.Simple, BodyCanonicalizationAlgorithm = DkimCanonicalizationAlgorithm.Simple, AgentOrUserIdentifier = "@eng.example.com", }; if (!File.Exists (args[0])) { Console.Error.WriteLine ("{0}: No such file.", args[0]); return; } var message = MimeMessage.Load (args[0]); message.Prepare (EncodingConstraint.SevenBit); signer.Sign (message, headers); using (var stream = File.Create (args[1])) message.WriteTo (stream); } static void Help () { Console.WriteLine ("Usage is: ArcSigner [options] [message] [output]"); Console.WriteLine (); Console.WriteLine ("Options:"); Console.WriteLine (" --help This help menu."); } } }See Also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4