password-store

Simple password manager using gpg and ordinary unix directories
git clone https://git.zx2c4.com/password-store
Log | Files | Refs | README | LICENSE

darwin.sh (1832B)


      1 # Copyright (C) 2012 - 2014 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
      2 # This file is licensed under the GPLv2+. Please see COPYING for more information.
      3 
      4 clip() {
      5 	local sleep_argv0="password store sleep for user $(id -u)"
      6 	pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
      7 	local before="$(pbpaste | $BASE64)"
      8 	echo -n "$1" | pbcopy
      9 	(
     10 		( exec -a "$sleep_argv0" sleep "$CLIP_TIME" )
     11 		local now="$(pbpaste | $BASE64)"
     12 		[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
     13 		echo "$before" | $BASE64 -d | pbcopy
     14 	) >/dev/null 2>&1 & disown
     15 	echo "Copied $2 to clipboard. Will clear in $CLIP_TIME seconds."
     16 }
     17 
     18 tmpdir() {
     19 	[[ -n $SECURE_TMPDIR ]] && return
     20 	unmount_tmpdir() {
     21 		[[ -n $SECURE_TMPDIR && -d $SECURE_TMPDIR && -n $DARWIN_RAMDISK_DEV ]] || return
     22 		umount "$SECURE_TMPDIR"
     23 		diskutil quiet eject "$DARWIN_RAMDISK_DEV"
     24 		rm -rf "$SECURE_TMPDIR"
     25 	}
     26 	trap unmount_tmpdir INT TERM EXIT
     27 	SECURE_TMPDIR="$(mktemp -d "${TMPDIR:-/tmp}/$PROGRAM.XXXXXXXXXXXXX")"
     28 	DARWIN_RAMDISK_DEV="$(hdid -drivekey system-image=yes -nomount 'ram://32768' | cut -d ' ' -f 1)" # 32768 sectors = 16 mb
     29 	[[ -z $DARWIN_RAMDISK_DEV ]] && die "Error: could not create ramdisk."
     30 	newfs_hfs -M 700 "$DARWIN_RAMDISK_DEV" &>/dev/null || die "Error: could not create filesystem on ramdisk."
     31 	mount -t hfs -o noatime -o nobrowse "$DARWIN_RAMDISK_DEV" "$SECURE_TMPDIR" || die "Error: could not mount filesystem on ramdisk."
     32 }
     33 
     34 qrcode() {
     35 	if type imgcat >/dev/null 2>&1; then
     36 		echo -n "$1" | qrencode --size 10 -o - | imgcat
     37 	else
     38 		echo -n "$1" | qrencode -t utf8
     39 	fi
     40 }
     41 
     42 GETOPT="$({ test -x /usr/local/opt/gnu-getopt/bin/getopt && echo /usr/local/opt/gnu-getopt; } || brew --prefix gnu-getopt 2>/dev/null || { command -v port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
     43 SHRED="srm -f -z"
     44 BASE64="openssl base64"