186
ecryptfs_openssl_mkdir_recursive(char *dir, mode_t mode)
192
if (!strcmp(dir, ".") || !strcmp(dir, "/"))
199
parent = dirname(temp);
200
rc = ecryptfs_openssl_mkdir_recursive(parent, mode);
203
if (mkdir(dir, mode) == -1) {
204
if (errno != EEXIST) {
185
216
ecryptfs_openssl_write_key_to_file(RSA *rsa, char *filename, char *passphrase)
189
char *ecryptfs_dir = NULL;
190
char *pki_dir = NULL;
191
char *openssl_dir = NULL;
193
221
const EVP_CIPHER *enc = EVP_aes_256_cbc();
199
syslog(LOG_ERR, "%s: Unable to get the current directory from "
200
"the passwd file on this system\n", __FUNCTION__);
204
rc = asprintf(&ecryptfs_dir, "%s/.ecryptfs", pw->pw_dir);
209
rc = asprintf(&pki_dir, "%s/.ecryptfs/pki", pw->pw_dir);
214
rc = asprintf(&openssl_dir, "%s/.ecryptfs/pki/openssl", pw->pw_dir);
219
rc = mkdir(ecryptfs_dir, 0700);
220
if (rc && rc != EEXIST) {
221
syslog(LOG_WARNING, "%s: Error attempting to mkdir [%s]; "
222
"rc = [%d]\n", __FUNCTION__, ecryptfs_dir, rc);
224
rc = mkdir(pki_dir, 0700);
225
if (rc && rc != EEXIST) {
226
syslog(LOG_WARNING, "%s: Error attempting to mkdir [%s]; "
227
"rc = [%d]\n", __FUNCTION__, pki_dir, rc);
229
rc = mkdir(openssl_dir, 0700);
230
if (rc && rc != EEXIST) {
224
tmp_filename = strdup(filename);
225
if (tmp_filename == NULL) {
229
openssl_dir = dirname(tmp_filename);
230
rc = ecryptfs_openssl_mkdir_recursive(openssl_dir, 0700);
231
232
syslog(LOG_WARNING, "%s: Error attempting to mkdir [%s]; "
232
233
"rc = [%d]\n", __FUNCTION__, openssl_dir, rc);
234
235
if ((out = BIO_new(BIO_s_file())) == NULL) {
235
236
syslog(LOG_ERR, "Unable to create BIO for output\n");
239
240
if (BIO_write_filename(out, filename) <= 0) {
240
241
syslog(LOG_ERR, "Failed to open file for reading\n");
559
558
struct ecryptfs_subgraph_ctx *subgraph_ctx;
561
if (ecryptfs_verbosity)
562
syslog(LOG_INFO, "%s: Called w/ node->val = [%s]\n",
563
__FUNCTION__, node->val);
562
564
subgraph_ctx = (struct ecryptfs_subgraph_ctx *)(*foo);
563
565
if ((rc = asprintf(&subgraph_ctx->openssl_data.passphrase, "%s",
564
566
node->val)) == -1) {
565
567
rc = MOUNT_ERROR;
568
571
node->val = NULL;
569
572
if ((rc = ecryptfs_openssl_process_key(subgraph_ctx, mnt_params))) {
570
573
syslog(LOG_ERR, "Error processing OpenSSL key; rc = [%d]", rc);
788
791
.default_val = NULL,
789
792
.suggested_val = "passwd",
790
793
.flags = (DISPLAY_TRANSITION_NODE_VALS | ECRYPTFS_DISPLAY_PRETTY_VALS
791
| ECRYPTFS_PARAM_FLAG_ECHO_INPUT),
794
| ECRYPTFS_PARAM_FLAG_ECHO_INPUT
795
| ECRYPTFS_ALLOW_IMPLICIT_TRANSITION),
792
796
.num_transitions = 3,
793
797
.tl = {{.val = "passwd",
794
798
.pretty_val = "passwd: Enter on Console",