I haven't found an easy implementation to convert a private key from XML format to PEM in C#. I looked at different threads but I wasn't able to get anything out of it.
That's my private key
<RSAKeyValue><Modulus>4o+sD++qc7EmMZaa+KRCaHSNKoxSzfOEcUwm/ICAN2guEriPrYJOoOSHWm/QWlhJxNgxfAvQpTXcEp9IGm0Nd7Y6rNn2+BMOx/r0BR7E3hNPel+eFOSDxiwQg17lujBpsEVIqJpt10FrPr9T+IUaCs9WfpFIBO8tzZkyV9qQPXE=</Modulus><Exponent>AQAB</Exponent><P>8W7gBjRZovnKdQSiv45P1QLE9lx+k/yjTJ/mWa3nhaGC7U0o1/rPP+A1gy+FSYxH6Reg8v08w2bsSqBL+IGS4w==</P><Q>8DsWyFyM+fp5Tt0WQXsgQPHByidIyzOc4C9XgjO1T34qjdyO10yS+9Se22PZxf5AWqmEyyaDfoFrKJ/eIo3amw==</Q><DP>d23Ubd1JlgAgsWAYrc9VGFblXcUFbGkl0oqqpSQMiiMKJB7uHGDaUouzjPBd67L0A48HtAunGjX4nzXKPuTB5w==</DP><DQ>d/PJSHqOGjQrZmmWt1OXo1YUAbDj9DLtXjPFakoPeoXxEazT1kVyDzT3rWyKTQbLc3m5yQaOGhjdPQe2j2JtiQ==</DQ><InverseQ>m2t4wHSYOE+lu/WHUpYoF9cXGmlLG3uSzvUbGwpkPMCK85yjyAx+lDbkc/Hf0IlHCSeMozh7slaG9HkNLAtqPw==</InverseQ><D>dCe0z3bQrP/l1Qah7VhJs8QNnALVcUGoZW3ljw9SrRV8iZyWDR8BsPt5aaRp7efV6lXtCOwFzK4QZnvDO8ktXXvdtXeinNEwRxj1CJE1xu5d8wlfMt9oMwrrK/g/480p5MQ7mMj2roh/PYrdM9BSA1wM9b1Kmus68ZgC0fGc2QE=</D></RSAKeyValue>
and that's how I wanted to be:
-----BEGIN RSA PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOKPrA/vqnOxJjGW
mvikQmh0jSqMUs3zhHFMJvyAgDdoLhK4j62CTqDkh1pv0FpYScTYMXwL0KU13BKf
SBptDXe2OqzZ9vgTDsf69AUexN4TT3pfnhTkg8YsEINe5bowabBFSKiabddBaz6/
U/iFGgrPVn6RSATvLc2ZMlfakD1xAgMBAAECgYB0J7TPdtCs/+XVBqHtWEmzxA2c
AtVxQahlbeWPD1KtFXyJnJYNHwGw+3lppGnt59XqVe0I7AXMrhBme8M7yS1de921
d6Kc0TBHGPUIkTXG7l3zCV8y32gzCusr+D/jzSnkxDuYyPauiH89it0z0FIDXAz1
vUqa6zrxmALR8ZzZAQJBAPFu4AY0WaL5ynUEor+OT9UCxPZcfpP8o0yf5lmt54Wh
gu1NKNf6zz/gNYMvhUmMR+kXoPL9PMNm7EqgS/iBkuMCQQDwOxbIXIz5+nlO3RZB
eyBA8cHKJ0jLM5zgL1eCM7VPfiqN3I7XTJL71J7bY9nF/kBaqYTLJoN+gWson94i
jdqbAkB3bdRt3UmWACCxYBitz1UYVuVdxQVsaSXSiqqlJAyKIwokHu4cYNpSi7OM
8F3rsvQDjwe0C6caNfifNco+5MHnAkB388lIeo4aNCtmaZa3U5ejVhQBsOP0Mu1e
M8VqSg96hfERrNPWRXIPNPetbIpNBstzebnJBo4aGN09B7aPYm2JAkEAm2t4wHSY
OE+lu/WHUpYoF9cXGmlLG3uSzvUbGwpkPMCK85yjyAx+lDbkc/Hf0IlHCSeMozh7
slaG9HkNLAtqPw==
-----END RSA PRIVATE KEY-----
I am using .ToXmlString to generate private and public key as shown below:
// generate the public key
string publicKey = rsa.ToXmlString(false); // false to get the public key
// generate the private key
string privateKey = rsa.ToXmlString(true); // true to get the private key
and saving the results as an XML file as shown below
File.AppendAllText(mainDir + "publicKey.xml", publicKey); // save publicKey
File.AppendAllText(mainDir + "privateKey.xml", privateKey); // save privateK
Ultimately I want to use OpenSSL to decrypt data using the private key. Therefore, it will easier if my private key is in PEM format.
openssl rsautl -decrypt -inkey privateKey.pem -in encryptedLicense.dat -out decryptedLicense.dat
Is XML to PEM supported in C#? if so how do I do it?
I appreciate it if someone can provide me with a solution to this. Thanks in advance.