パスワード追加機能性で、パスワードが既に存在するかどうか確認

このコミットが含まれているのは:
守矢諏訪子 2024-02-01 16:45:52 +09:00
コミット e0d792f5c3
2個のファイルの変更27行の追加11行の削除

ファイルの表示

@ -2,6 +2,7 @@
* やっとTOTP機能性を修正した
* makeを実行したら、バイナリがもっと小さくなる
* パスワードの長さの延長
* パスワード追加機能性で、パスワードが既に存在するかどうか確認
# 1.1.2
* OpenBSDでのコンパイラーが発生された問題を修正した

ファイルの表示

@ -74,9 +74,35 @@ void getpasswd(char* prompt, char*pw, size_t pwlen) {
}
void addpass(char* file) {
// パスを準備
char* homedir = getenv("HOME");
if (homedir == NULL) {
perror("ホームディレクトリを受取に失敗。");
return;
}
char* basedir = "/.local/share/sp/";
char* ext = ".gpg";
char pass[256];
char knin[256];
int alllen = snprintf(NULL, 0, "%s%s%s%s", homedir, basedir, file, ext) + 1;
char* gpgpathchk = malloc(alllen);
if (gpgpathchk == NULL) {
perror("メモリを割当に失敗。");
return;
}
// ファイルが既に存在するかどうか確認
snprintf(gpgpathchk, alllen, "%s%s%s%s", homedir, basedir, file, ext);
if (access(gpgpathchk, F_OK) != -1) {
fprintf(stderr, "パスワードが既に存在しています。\n変更するには、「 sp -e %s 」を実行して下さい。\n", file);
free(gpgpathchk);
return;
}
free(gpgpathchk);
// パスワードを受け取る
getpasswd("パスワード: ", pass, sizeof(pass));
puts("");
@ -126,16 +152,6 @@ void addpass(char* file) {
gpgme_data_new(&out);
// パスを準備
char* homedir = getenv("HOME");
if (homedir == NULL) {
perror("ホームディレクトリを受取に失敗。");
return;
}
char* basedir = "/.local/share/sp/";
char* ext = ".gpg";
// 鍵を受け取る
char keypath[256];
snprintf(keypath, sizeof(keypath), "%s%s%s", homedir, basedir, ".gpg-id");
@ -183,7 +199,6 @@ void addpass(char* file) {
}
// 暗号化したタイルを開く
int alllen = snprintf(NULL, 0, "%s%s%s%s", homedir, basedir, file, ext) + 1;
char* gpgpath = malloc(alllen);
if (gpgpath == NULL) {
cleanup(ctx, key[0], in, out);