You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Client instantiation via dependency injection with customization
varserviceCollection=newServiceCollection();serviceCollection.AddWebKeyDirectory<PgpPublicKeyRing,BouncyCastleKeyParser>(builder =>{// Set connection timeoutbuilder.SetTimeout(TimeSpan.FromSeconds(15));// Set HTTP user agentbuilder.SetUserAgent("WKD Client/0.1");// Customize key validation// e.g. rejects RSA keys weaker than 2048 bitsbuilder.ConfigureKeyValidation(opts =>opts.RejectWeakKeys(2048,Library.Contracts.OpenPgpPublicKeyAlgorithm.RsaEncryptOnly,Library.Contracts.OpenPgpPublicKeyAlgorithm.RsaEncryptOrSign,Library.Contracts.OpenPgpPublicKeyAlgorithm.RsaSignOnly));});varserviceProvider=serviceCollection.BuildServiceProvider();varclient=serviceProvider.GetRequiredService<IWkdClient<PgpPublicKeyRing>>();
Key discovery
stringemail="fabrizio@fabriziotarizzo.org";Console.Write($"Checking Public Key(s) for {email}... ");awaitclient.DiscoverKeyAsync(email).TapError(errors =>{// Handle errorsConsole.WriteLine("FAILED.");foreach(varerrorinerrors)Console.WriteLine($" {error.Message}");}).Tap(response =>{Console.WriteLine($"OK ({response.Method} Method).");varkeys=response.Keys;Console.WriteLine($"Found {keys.Count} key(s) for {email}.");shorti=1;foreach(varkeyinkeys){Console.WriteLine($" Key {i}: Fingerprint {key.Fingerprint}");i++;}if(response.HasRejectedKeys){varrejectedKeys=response.RejectedKeys;Console.WriteLine($"Rejected {rejectedKeys.Count} key(s) for {email}.");i=1;foreach(varrejectedKeyinrejectedKeys){Console.WriteLine($" Key {i}: Fingerprint {rejectedKey.Key.Fingerprint} ({rejectedKey.RejectionReason.Message})");i++;}}});
Policy flags
stringdomain="fabriziotarizzo.org";Console.Write($"Checking policy file for domain {domain}... ");awaitclient.GetPolicyFlagsAsync(domain).TapError(errors =>{// Handle errorsConsole.WriteLine("FAILED.");foreach(varerrorinerrors)Console.WriteLine($" {error.Message}");}).Tap(response =>{Console.WriteLine($"OK ({response.Method} Method).");if(response.Policy.MailboxOnly){Console.WriteLine("The mail server provider does only accept keys with only a mailbox in the User ID");}varmsg=response.Policy.ProtocolVersion.Map(version =>$"This domain supports WDK protocol version {version}").Or("No WDK protocol version specified");Console.WriteLine(msg);});
Submission address
stringdomain="fabriziotarizzo.org";Console.Write($"\nChecking Submission address for domain {domain}... ");varsubmissionAddress=awaitclient.GetSubmissionAddressAsync(domain);submissionAddress.TapError(errors =>{// Handle errorsConsole.WriteLine("FAILED.");foreach(varerrorinerrors)Console.WriteLine($" {error.Message}");}).Tap(result =>{Console.WriteLine($"OK ({result.Method} Method).");varaddress=result.Address;Console.WriteLine($" Submission address for {domain}: {address}");});