X-Git-Url: https://git.plutz.net/?p=cgilite;a=blobdiff_plain;f=session.sh;h=5b36ae032af4e818af91d4b73190a9f83614da15;hp=8929ab3de62638fa4084cbf3f6d50ba5510ec960;hb=a76f6a5931782adbae717678f8f92569ed0d5bcb;hpb=52e798535235e32bd536c3275d25aa7fda65f27d diff --git a/session.sh b/session.sh index 8929ab3..5b36ae0 100755 --- a/session.sh +++ b/session.sh @@ -16,8 +16,16 @@ fi if which openssl >/dev/null; then session_mac(){ { [ $# -gt 0 ] && printf %s "$*" || cat; } | openssl dgst -sha1 -hmac "$(server_key)" -binary |slopecode; } else - # sham hmac if openssl is unavailable - session_mac(){ { [ $# -gt 0 ] && printf %s "$*" || cat; server_key; } | sha256sum |cut -d\ -f1; } + # Gonzo MAC if openssl is unavailable + session_mac(){ + { server_key | dd status=none bs=256 count=1 skip=1 + { server_key | dd status=none bs=256 count=1 + [ $# -gt 0 ] && printf %s "$*" || cat + } \ + | sha256sum -; + } \ + | sha256sum | cut -d\ -f1 + } fi server_key(){ @@ -106,6 +114,11 @@ SESSION_VAR() { fi } +SESSION_COOKIE() { + SET_COOKIE 0 session="$SESSION_KEY" Path=/ SameSite=Strict HttpOnly +} + SESSION_KEY="$(update_session)" -SET_COOKIE 0 session="$SESSION_KEY" Path=/ SameSite=Strict HttpOnly SESSION_ID="${SESSION_KEY%% *}" + +[ "$1" = nocookie ] || SESSION_COOKIE