소스 검색

[Minor] Set 0600 mode on privkey files by default

Issue: #4023
tags/3.2
Vsevolod Stakhov 2 년 전
부모
커밋
d2a9a7765c
1개의 변경된 파일22개의 추가작업 그리고 2개의 파일을 삭제
  1. 22
    2
      src/rspamadm/dkim_keygen.c

+ 22
- 2
src/rspamadm/dkim_keygen.c 파일 보기

@@ -20,6 +20,8 @@
#include "libcryptobox/cryptobox.h"
#include "contrib/libottery/ottery.h"
#include "lua/lua_common.h"
#include "unix-std.h"

#include <openssl/rsa.h>
#include <openssl/bn.h>
#include <openssl/pem.h>
@@ -108,15 +110,33 @@ rspamd_dkim_generate_rsa_keypair (const gchar *domain, const gchar *selector,
g_assert (EVP_PKEY_set1_RSA (pk, r) == 1);

if (priv_fname) {
privout = BIO_new_file (priv_fname, "w");
int fd = open (priv_fname, O_WRONLY | O_CREAT | O_TRUNC, 0600);

if (fd < 0) {
rspamd_fprintf (stderr, "cannot open output file %s: %s\n",
priv_fname, strerror (errno));
exit (EXIT_FAILURE);
}

FILE *fp = fdopen (fd, "w");

if (fp == NULL) {
close (fd);
rspamd_fprintf (stderr, "cannot open output file %s: %s\n",
priv_fname, strerror (errno));
exit (EXIT_FAILURE);
}

privout = BIO_new_fp (fp, BIO_CLOSE);

if (privout == NULL) {
fclose (fp);
rspamd_fprintf (stderr, "cannot open output file %s: %s\n",
priv_fname, strerror (errno));
exit (EXIT_FAILURE);
}
} else {
privout = BIO_new_fp (stdout, 0);
privout = BIO_new_fp (stdout, BIO_NOCLOSE);
}

rc = PEM_write_bio_PrivateKey (privout, pk, NULL, NULL, 0, NULL, NULL);

Loading…
취소
저장