mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
usage() {
 | 
						|
	cat <<EOF
 | 
						|
Usage: $0 <command> <arguments...>
 | 
						|
Commands:
 | 
						|
  add <file>:			Add keyfile <file> to opkg trusted keys
 | 
						|
  remove <file>:		Remove keyfile matching <file> from opkg trusted keys
 | 
						|
  verify <sigfile> <list>:	Check list file <list> against signature file <sigfile>
 | 
						|
 | 
						|
EOF
 | 
						|
	exit 1
 | 
						|
}
 | 
						|
 | 
						|
opkg_key_verify() {
 | 
						|
	local sigfile="$1"
 | 
						|
	local msgfile="$2"
 | 
						|
 | 
						|
	(
 | 
						|
		zcat "$msgfile" 2>/dev/null ||
 | 
						|
		cat "$msgfile" 2>/dev/null
 | 
						|
	) | usign -V -P /etc/opkg/keys -q -x "$sigfile" -m -
 | 
						|
}
 | 
						|
 | 
						|
opkg_key_add() {
 | 
						|
	local key="$1"
 | 
						|
	[ -n "$key" ] || usage
 | 
						|
	[ -f "$key" ] || echo "Cannot open file $1"
 | 
						|
	local fingerprint="$(usign -F -p "$key")"
 | 
						|
	mkdir -p "/etc/opkg/keys"
 | 
						|
	cp "$key" "/etc/opkg/keys/$fingerprint"
 | 
						|
}
 | 
						|
 | 
						|
opkg_key_remove() {
 | 
						|
	local key="$1"
 | 
						|
	[ -n "$key" ] || usage
 | 
						|
	[ -f "$key" ] || echo "Cannot open file $1"
 | 
						|
	local fingerprint="$(usign -F -p "$key")"
 | 
						|
	rm -f "/etc/opkg/keys/$fingerprint"
 | 
						|
}
 | 
						|
 | 
						|
case "$1" in
 | 
						|
	add)
 | 
						|
		shift
 | 
						|
		opkg_key_add "$@"
 | 
						|
		;;
 | 
						|
	remove)
 | 
						|
		shift
 | 
						|
		opkg_key_remove "$@"
 | 
						|
		;;
 | 
						|
	verify)
 | 
						|
		shift
 | 
						|
		opkg_key_verify "$@"
 | 
						|
		;;
 | 
						|
	*) usage ;;
 | 
						|
esac
 |