Reputation: 131
i having problems to generate a Encrypted PEM formatted RSA private key with C# I have this:
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOWsj2WijN35Rxbt
ge2omKZCPNf3AchRxzUpnIEEHz/l9myBn+yZZLhJ3oec+z0ZJO2dOYzhsSDHbw3e
6VSyFpoES1mje2yPCQFX/JVDdJHIwOSoEDY0SNty6b578x0IweI8jV5IYcSl0RK3
nlrRLo3bg9bvfZebdlsaA6nW2G3XAgMBAAECgYEA31S3r52rmuEdtnbHI8EQhoLc
RSikLBURP2myDGZkuK61u3ckel4CaY0y/O2yBAxiM0fyQULpCTXEkFlUzI3LmKoj
/L0cSlk58xf8hB837/fn/bulnATWSajKn/p4ecXpBlPTySf9MPwoyNwXdyjjz0bQ
c6oo1U42VybQRNgvWGECQQD/bs/aDjypd9AGUVFn6l6zoQEFRjNLevsHUEveD871
UUmdkE9AXNyUR1k9W+OH1V74eS29spNphEnnCVV7ANVHAkEA5i8bXxa7g6Tue2/N
kOjFK5i54RTaGPbjvPcg1N1Wq8pew0lx0lY3q7A+qH3VjiJHwSRifY7n92zkxutS
qF4q8QJBAIcopYcmfWbW5RZStRadZ1r5WMbnrIDGJEpsbJimGMaqKp/bGnReLsGv
N0NGehEIEGa+CDwWX/Y3b7t2ruqVOEUCQEVgw2Y4qtH13y9zNklL70nBoZzWtRm7
KE8nSUz/XYUv3LoNo/HarLLhzzDnpHtPl8L+HXVsojvwJVBTUzmOEHECQAbb2iy3
tRNcIWj770+6+9qj5fKKvhNNtBoh5rzu79PA9Un8pxEy7OTSVQJ+HtwoRzUrxK07
IYp9K9Sbyy0yqkc=
-----END PRIVATE KEY-----
But i need it:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,A07111D1F6B87B67
mPmRmxCSDcdP6JW9BG12vp33aV1oxc3PRKwbBZJx8noV8RzqR4OnPEI9YzyvhLPT
APy1XWNhlNa0CPIPEPr1XAJBgkmIBH4RAcjqAvW7X3FbDt5TTkCWad15aCQdRiZN
vsab9/zX96GePrRyPkiVvTebhyHb0bsEaTl5ryYRcEos0aPreOSm+QJrQ4437I7C
X5rLMm5mfh7a/BoYN4weH3rOku4+ZFQp3UMPM5HWEoAK/F2hFYPcR0p9h84QrlPO
WVg5A5dN+28tk6LkWmdfTCXzV3r5jI3Pwo5eI8N6EWCyHMIfwZYIDKymSrCvF5i/
XXTh3OFtH1RoFJ9mchWacBN5lDck/2+/GBN5uQs3/Am7pQ4u/S1PBnT4bK4EjAf9
P6kYKT4aPIarqR2tIJ9HDfEZ3JbsvLbvqJSaxGGhXsRzSylL6W3/IpoxKNFCF39x
xEqXlN7OvW4fWA5HfM+fBQWNMcyt9FIv418+Z+GmT5TFG8BgaDcniKIk0XnfdDAw
AajBobsGnFYe/Bk8qbMBQSDs9j0kGV2UE9LCPOh1P1JnLgiBsQeocbVc6FO3v7Kr
kD3/aGRYMBJ80//0AzIJ/8m2Y+8y9D4i70KSCuC7WjTB85Nl6I77y8w1q3md4WJW
TbINsCOmb8MpMLIOuS800PgCDM423FaekrmDnfRQKgv0aBPQd5+PY56t+kRzAXCT
uihv+Pq7Rjpwbjewf/LI4Slt6o8o69VaNjDTOZiW3CYrxv4QQjKmdNdo12av+aJg
9ts6SgEd6w0nyl/niBMWHhMCV6aZT7SAm0k3GJoDpJN+CbxiJaHV9g==
-----END RSA PRIVATE KEY-----
The PEM of the top has been generated with C# and Bouncy Castle, the second with openssl.exe.
Regards
Upvotes: 2
Views: 2168
Reputation: 146
Im not sure if this is what you need and I'm new to using these frameworks. But if you use Bouncy castle, here is an example of a encrypted private key. Headers I think you can find in the pem object (pem.Headers) and begin end strings are just for show:
static void Main(string[] args)
{
Console.WriteLine(GeneratePrivateKey("12345", 4096, 4));
Console.ReadLine();
}
static string GeneratePrivateKey(string password, int strength, int iterationCount)
{
var rsa = new Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator();
rsa.Init(new Org.BouncyCastle.Crypto.KeyGenerationParameters(new Org.BouncyCastle.Security.SecureRandom(), strength));
var asym = rsa.GenerateKeyPair();
var generator = new Org.BouncyCastle.OpenSsl.Pkcs8Generator(asym.Private, Org.BouncyCastle.OpenSsl.Pkcs8Generator.PbeSha1_3DES);
generator.IterationCount = iterationCount;
generator.Password = password.ToCharArray();
var pem = generator.Generate();
return Convert.ToBase64String(pem.Content);
}
Upvotes: 1