58 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| # Demo git-annex external backend program.
 | |
| # 
 | |
| # Install in PATH as git-annex-backend-XFOO
 | |
| #
 | |
| # Copyright 2020 Joey Hess; licenced under the GNU GPL version 3 or higher.
 | |
| 
 | |
| set -e
 | |
| 
 | |
| hashfile () {
 | |
| 	local contentfile="$1"
 | |
| 	# could send PROGRESS while doing this, but it's
 | |
| 	# hard to implement that in shell
 | |
| 	md5sum "$contentfile" | cut -d ' ' -f 1 || echo ''
 | |
| }
 | |
| 
 | |
| while read line; do
 | |
| 	set -- $line
 | |
| 	case "$1" in
 | |
| 		GETVERSION)
 | |
| 			echo VERSION 1
 | |
| 		;;
 | |
| 		CANVERIFY)
 | |
| 			echo CANVERIFY-YES
 | |
| 		;;
 | |
| 		ISSTABLE)
 | |
| 			echo ISSTABLE-YES
 | |
| 		;;
 | |
| 		ISCRYPTOGRAPHICALLYSECURE)
 | |
| 			# md5 is not cryptographically secure
 | |
| 			echo ISCRYPTOGRAPHICALLYSECURE-NO
 | |
| 		;;
 | |
| 		GENKEY)
 | |
| 			contentfile="$2"
 | |
| 			hash=$(hashfile "$contentfile")
 | |
| 			sz=$(wc -c "$contentfile" | cut -d ' ' -f 1)
 | |
| 			if [ -n "$hash" ]; then
 | |
| 				echo "GENKEY-SUCCESS" "XFOO-s$sz--$hash"
 | |
| 			else
 | |
| 				echo "GENKEY-FAILURE" "md5sum failed"
 | |
| 			fi
 | |
| 		;;
 | |
| 		VERIFYKEYCONTENT)
 | |
| 			key="$2"
 | |
| 			contentfile="$3"
 | |
| 			hash=$(hashfile "$contentfile")
 | |
| 			khash=$(echo "$key" | sed 's/.*--//')
 | |
| 			if [ "$hash" = "$khash" ]; then
 | |
| 				echo "VERIFYKEYCONTENT-SUCCESS"
 | |
| 			else
 | |
| 				echo "VERIFYKEYCONTENT-FAILURE"
 | |
| 			fi
 | |
| 		;;
 | |
| 		*)
 | |
| 			echo ERROR protocol error
 | |
| 		;;
 | |
| 	esac
 | |
| done
 | 
