2cc13ac9bb
Did not run code. Had a spur of the moment to try something out.
87 lines
2.5 KiB
C#
87 lines
2.5 KiB
C#
using System;
|
|
using System.Security.Cryptography;
|
|
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using Org.BouncyCastle.Crypto.Parameters;
|
|
using Org.BouncyCastle.OpenSsl;
|
|
|
|
|
|
namespace Icarus.Certs
|
|
{
|
|
|
|
public class SigningIssuerCertificate : IDisposable
|
|
{
|
|
private readonly RSACryptoServiceProvider _rsa;
|
|
|
|
public SigningIssuerCertificate()
|
|
{
|
|
_rsa = new RSACryptoServiceProvider();
|
|
}
|
|
|
|
// public or private key?
|
|
public RsaSecurityKey GetIssuerSigningKey(string publicKeyPath)
|
|
{
|
|
var file = publicKeyPath;
|
|
var publicKey = System.IO.File.ReadAllText(file);
|
|
|
|
using (var reader = System.IO.File.OpenText(file))
|
|
{
|
|
var pem = new PemReader(reader);
|
|
var o = (RsaKeyParameters)pem.ReadObject();
|
|
var parameters = new RSAParameters();
|
|
parameters.Modulus = o.Modulus.ToByteArray();
|
|
parameters.Exponent = o.Exponent.ToByteArray();
|
|
_rsa.ImportParameters(parameters);
|
|
}
|
|
|
|
return new RsaSecurityKey(_rsa);
|
|
}
|
|
|
|
|
|
public void Dispose()
|
|
{
|
|
_rsa?.Dispose();
|
|
}
|
|
}
|
|
|
|
|
|
public class SigningAudienceCertificate : IDisposable
|
|
{
|
|
// private readonly RSA _rsa;
|
|
private readonly RSACryptoServiceProvider _rsa;
|
|
|
|
public SigningAudienceCertificate()
|
|
{
|
|
_rsa = new RSACryptoServiceProvider();
|
|
}
|
|
// public or private key?
|
|
public SigningCredentials GetAudienceSigningKey(string keyPath)
|
|
{
|
|
// string privateXmlKey = System.IO.File.ReadAllText("./private_key.xml");
|
|
// rsa.FromXmlString(privateXmlKey);
|
|
|
|
var file = keyPath;
|
|
var publicKey = System.IO.File.ReadAllText(file);
|
|
// var rsa = new RSACryptoServiceProvider();
|
|
|
|
using (var reader = System.IO.File.OpenText(file))
|
|
{
|
|
var pem = new PemReader(reader);
|
|
var o = (RsaKeyParameters)pem.ReadObject();
|
|
var parameters = new RSAParameters();
|
|
parameters.Modulus = o.Modulus.ToByteArray();
|
|
parameters.Exponent = o.Exponent.ToByteArray();
|
|
_rsa.ImportParameters(parameters);
|
|
}
|
|
|
|
return new SigningCredentials(
|
|
key: new RsaSecurityKey(_rsa),
|
|
algorithm: SecurityAlgorithms.RsaSha256);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_rsa?.Dispose();
|
|
}
|
|
}
|
|
} |