local data
local signature
- data=$(_ipc_msg_get "$msg" "data")
- signature=$(_ipc_msg_get "$msg" "signature")
+ if ! data=$(_ipc_msg_get "$msg" "data"); then
+ return 2
+ fi
+
+ if ! signature=$(_ipc_msg_get "$msg" "signature"); then
+ return 2
+ fi
if ! gpg --verify <(base64 -d <<< "$signature") <(echo "$data") 2>&1; then
return 1
local -i version
- if ! version=$(_ipc_msg_get "$msg" "version"); then
+ if ! version=$(ipc_msg_get_version "$msg"); then
log_error "Could not get version from message"
return 1
fi
return 0
}
-ipc_msg_get_signature_info() {
+_ipc_msg_get_signature_info() {
local msg="$1"
local signature
sig_email="(unknown)"
sig_key="(unknown)"
- if signature=$(_ipc_msg_get_signature "$msg"); then
- sig_valid="good"
- fi
+ signature=$(_ipc_msg_get_signature "$msg")
+ case "$?" in
+ 0)
+ sig_valid="good"
+ ;;
+ 1)
+ sig_valid="bad"
+ ;;
+ *)
+ return 1
+ ;;
+ esac
if [[ "$signature" =~ $sig_nameregex ]]; then
sig_name="${BASH_REMATCH[1]}"
return 0
}
-ipc_msg_get_signing_key() {
- local msg="$1"
-
- local signature
- local keyregex
-
- keyregex='([0-9a-fA-F]{32,})'
-
- if ! signature=$(_ipc_msg_get_signature "$msg"); then
- return 1
- fi
-
- if [[ "$signature" =~ $keyregex ]]; then
- echo "${BASH_REMATCH[1]}"
- return 0
- fi
-
- return 1
-}
-
ipc_msg_dump() {
local msg="$1"
return 0
}
+ipc_msg_get_version() {
+ local msg="$1"
+
+ local version
+
+ if ! version=$(_ipc_msg_get "$msg" "version"); then
+ return 1
+ fi
+
+ echo "$version"
+ return 0
+}
+
ipc_msg_get_source() {
local msg="$1"
return 0
}
+ipc_msg_get_user() {
+ local msg="$1"
+
+ local user
+
+ if ! user=$(_ipc_msg_get "$msg" "user"); then
+ return 1
+ fi
+
+ echo "$user"
+ return 0
+}
+
+ipc_msg_get_timestamp() {
+ local msg="$1"
+
+ local timestamp
+
+ if ! timestamp=$(_ipc_msg_get "$msg" "timestamp"); then
+ return 1
+ fi
+
+ echo "$timestamp"
+ return 0
+}
+
ipc_msg_get_data() {
local msg="$1"
return 0
}
-ipc_msg_get_user() {
+ipc_msg_get_signature() {
local msg="$1"
- local user
+ local signature
- if ! user=$(_ipc_msg_get "$msg" "user"); then
+ if ! signature=$(_ipc_msg_get "$msg" "signature"); then
return 1
fi
- echo "$user"
+ echo "$signature"
return 0
}
-ipc_msg_get_timestamp() {
+ipc_msg_get_signer_name() {
local msg="$1"
- local timestamp
+ local info
+ local fields
- if ! timestamp=$(_ipc_msg_get "$msg" "timestamp"); then
+ if ! info=$(_ipc_msg_get_signature_info "$msg"); then
return 1
fi
- echo "$timestamp"
+ read -ra fields <<< "$info"
+ echo "${fields[@]:3}"
+ return 0
+}
+
+ipc_msg_get_signer_email() {
+ local msg="$1"
+
+ local info
+ local fields
+
+ if ! info=$(_ipc_msg_get_signature_info "$msg"); then
+ return 1
+ fi
+
+ read -ra fields <<< "$info"
+
+ echo "${fields[2]}"
+ return 0
+}
+
+ipc_msg_get_signer_key() {
+ local msg="$1"
+
+ local info
+ local fields
+
+ if ! info=$(_ipc_msg_get_signature_info "$msg"); then
+ return 1
+ fi
+
+ read -ra fields <<< "$info"
+
+ echo "${fields[1]}"
return 0
}