aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lua/lua_rsa.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/lua/lua_rsa.c b/src/lua/lua_rsa.c
index 85d5f8745..571f62646 100644
--- a/src/lua/lua_rsa.c
+++ b/src/lua/lua_rsa.c
@@ -177,7 +177,12 @@ lua_rsa_privkey_save (lua_State *L)
}
if (rsa != NULL && filename != NULL) {
- f = fopen (filename, "wb");
+ if (strcmp (filename, "-") == 0) {
+ f = stdout;
+ }
+ else {
+ f = fopen(filename, "wb");
+ }
if (f == NULL) {
msg_err ("cannot save privkey to file: %s, %s",
filename,
@@ -185,8 +190,10 @@ lua_rsa_privkey_save (lua_State *L)
lua_pushboolean (L, FALSE);
}
else {
- /* Set secure permissions for the private key file */
- chmod (filename, S_IRUSR | S_IWUSR);
+ if (f != stdout) {
+ /* Set secure permissions for the private key file */
+ chmod(filename, S_IRUSR | S_IWUSR);
+ }
if (strcmp (type, "der") == 0) {
ret = i2d_RSAPrivateKey_fp (f, rsa);