Skip to content

Instantly share code, notes, and snippets.

@heaths
Last active October 23, 2020 17:36
Show Gist options
  • Save heaths/af0edfacb001c999e8865af1cf21d549 to your computer and use it in GitHub Desktop.
Save heaths/af0edfacb001c999e8865af1cf21d549 to your computer and use it in GitHub Desktop.
Simple ImportCertificate sample
// Copyright 2020 Heath Stewart
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// #r nuget:Azure.Identity,1.2.3
// #r nuget:Azure.Security.KeyVault.Certificates,4.1.0
// #r nuget:System.CommandLine.DragonFruit,0.3.0-alpha.20371.2
using System;
using System.Diagnostics.Tracing;
using System.IO;
using System.Threading.Tasks;
using Azure.Core.Diagnostics;
using Azure.Identity;
using Azure.Security.KeyVault.Certificates;
class Program
{
static async Task Main(Uri uri, FileInfo path, string name, bool verbose = false, bool debug = false)
{
var clientOptions = new CertificateClientOptions();
if (debug)
{
verbose = true;
clientOptions.Diagnostics.IsLoggingContentEnabled = true;
}
using var listener = AzureEventSourceListener.CreateConsoleLogger(
verbose ? EventLevel.Verbose : EventLevel.Error);
var credential = new DefaultAzureCredential();
var client = new CertificateClient(uri, credential, clientOptions);
var cert = File.ReadAllBytes(path.FullName);
var options = new ImportCertificateOptions(name, cert);
if (".pem".Equals(path.Extension, StringComparison.OrdinalIgnoreCase))
{
options.Policy = new CertificatePolicy(WellKnownIssuerNames.Self, "CN=Imported")
{
ContentType = CertificateContentType.Pem,
};
}
var certificate = await client.ImportCertificateAsync(options);
Console.WriteLine($"Successfully imported {certificate.Value.Name}");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment