penguin/utils

my env utils

commit e388f91068d4c5fbf38b944b535980d952b26f5f

author斟酌 鵬兄 <tgckpg@gmail.com>
date2022-08-13T16:32:14Z
subjectDropped xxd as it's not working properly on MacOS
commit e388f91068d4c5fbf38b944b535980d952b26f5f
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2022-08-13T16:32:14Z

    Dropped xxd as it's not working properly on MacOS
---
 bash/bashrc/sources/16_keystore | 36 +++++++++++++++++++++---------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/bash/bashrc/sources/16_keystore b/bash/bashrc/sources/16_keystore
index f455aaf..c21a293 100644
--- a/bash/bashrc/sources/16_keystore
+++ b/bash/bashrc/sources/16_keystore
@@ -12,11 +12,6 @@ if [ $? -ne 0 ]; then
     return 1
 fi
 
-if [ -z `which xxd` ]; then
-	echo "xxd is required" >&2
-	return 1
-fi
-
 _AUTH_DB=$RBASH_HOME/keystore.db
 _AUTH_SECRET=
 _KSTORE_DEF_PROP=${_KSTORE_DEF_PROP:-val}
@@ -36,8 +31,8 @@ function kstore {
 		search) shift; kstore-search $@ ;;
 		secret) shift; kstore-secret $@ ;;
 		*)
-			__func_head "add key value [prop, default: $_KSTORE_DEF_PROP]"
-			__func_help "update key value [prop, default: $_KSTORE_DEF_PROP]"
+			__func_head "add key value|file|- [prop, default: $_KSTORE_DEF_PROP]"
+			__func_help "update key value|file|- [prop, default: $_KSTORE_DEF_PROP]"
 			__func_help "get key [prop, default: $_KSTORE_DEF_PROP]"
 			__func_help "list"
 			__func_help "del key"
@@ -65,7 +60,7 @@ function kstore-init {
 CREATE TABLE IF NOT EXISTS store ( 
 	key TEXT UNIQUE NOT NULL
 	, prop TEXT NOT NULL
-	, data BLOB
+	, data TEXT
 	, PRIMARY KEY( key ASC, prop ASC )
 );
 ___SQL___
@@ -82,7 +77,13 @@ function kstore-enc {
 		return 1
 	fi
 
-	openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" | xxd -p | tr -d "\n"
+	if [ "$1" == "-" ]; then
+		openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A
+	elif [ -f "$1" ]; then
+		openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A -in "$1"
+	else
+		echo -n "$1" | openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A
+	fi
 }
 
 function kstore-dec {
@@ -91,7 +92,7 @@ function kstore-dec {
 		return 1
 	fi
 
-	openssl enc -d -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET"
+	openssl enc -d -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A
 }
 
 function kstore-secret-macos {
@@ -162,7 +163,7 @@ function kstore-update {
 	kstore-init || return 1
 	local _key _val _prop
 	_key=`kstore-quote "$1"`
-	_val=`echo -n "$2" | kstore-enc`
+	_val=`kstore-enc "$2"`
 	_val=`kstore-quote "$_val"`
 	_prop=`kstore-quote "${3:-$_KSTORE_DEF_PROP}"`
 	_cond="key = '$_key' AND prop = '$_prop'"
@@ -173,12 +174,12 @@ function kstore-add {
 	kstore-init || return 1
 	local _key _val _prop
 	_key=`kstore-quote "$1"`
-	_val=`echo -n "$2" | kstore-enc`
+	_val=`kstore-enc "$2"`
 	_val=`kstore-quote "$_val"`
 	_prop=`kstore-quote "${3:-$_KSTORE_DEF_PROP}"`
     sqlite3 "$_AUTH_DB" \
 		"INSERT INTO store ( key, prop, data )
-			VALUES( '$_key', '$_prop', X'$_val' );"
+			VALUES( '$_key', '$_prop', '$_val' );"
 }
 
 function kstore-get {
@@ -188,7 +189,12 @@ function kstore-get {
 	_prop=`kstore-quote "${2:-$_KSTORE_DEF_PROP}"`
 	_cond="key = '$_key' AND prop = '$_prop'"
 
-	echo -n "`$_SQLITE -list "$_AUTH_DB" "SELECT ( data ) FROM store WHERE $_cond;"`" | kstore-dec
+    sqlite3 "$_AUTH_DB" "SELECT 1111 FROM store WHERE $_cond;" | grep -q 1111
+	if [ $? -eq 0 ]; then
+		$_SQLITE -list "$_AUTH_DB" "SELECT ( data ) FROM store WHERE $_cond;" | kstore-dec
+	else
+		echo "\"$1\" not found" >&2
+	fi
 }
 
 function kstore-del {
@@ -213,7 +219,7 @@ function kstore-del {
 			echo "action canceled"
 		fi
 	else
-		echo "$1 not found"
+		echo "\"$1\" not found" >&2
 	fi
 }