using Org.BouncyCastle.OpenSsl; namespace InnovEnergy.App.OpenVpnCertificatesServer.PKI; public static class Pem { public static String Encode(Object obj) { using var sw = new StringWriter(); var pem = new PemWriter(sw); pem.WriteObject(obj); pem.Writer.Flush(); return sw.ToString(); } public static T Decode(String pem) { using var reader = new StringReader(pem); var pemReader = new PemReader(reader); return (T) pemReader.ReadObject(); } public static T? Decode(String pem, IPasswordFinder pwf) { try { using var reader = new StringReader(pem); var pemReader = new PemReader(reader, pwf); return (T) pemReader.ReadObject(); } catch { return default; } } public static T? Decode(String pem, String password) { try { using var reader = new StringReader(pem); var pwf = new PwdFinder(password); var pemReader = new PemReader(reader, pwf); return (T) pemReader.ReadObject(); } catch (Exception) { return default; } } }