mirror of
https://github.com/drwetter/testssl.sh.git
synced 2025-01-03 23:39:45 +01:00
Merge pull request #1495 from dcooper16/fix_pub_key_length_calculation
Fix public key length calculation
This commit is contained in:
commit
9a0325875e
58
testssl.sh
58
testssl.sh
@ -10503,83 +10503,83 @@ get_pub_key_size() {
|
|||||||
i=2
|
i=2
|
||||||
len1="0x${pubkey:i:2}"
|
len1="0x${pubkey:i:2}"
|
||||||
if [[ $len1 -lt 0x80 ]]; then
|
if [[ $len1 -lt 0x80 ]]; then
|
||||||
i=$i+2
|
i+=2
|
||||||
else
|
else
|
||||||
len1=$len1-0x80
|
len1=$((len1-0x80))
|
||||||
i=$i+2*$len1+2
|
i+=$((2*len1+2))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Skip over algorithm field
|
# Skip over algorithm field
|
||||||
i=$i+2
|
i+=2
|
||||||
len1="0x${pubkey:i:2}"
|
len1="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
if [[ $len1 -lt 0x80 ]]; then
|
if [[ $len1 -lt 0x80 ]]; then
|
||||||
i=$i+2*$len1
|
i+=$((2*len1))
|
||||||
else
|
else
|
||||||
case $len1 in
|
case $len1 in
|
||||||
129) len="0x${pubkey:i:2}" ;;
|
129) len="0x${pubkey:i:2}" ;;
|
||||||
130) len="0x${pubkey:i:2}"
|
130) len="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
;;
|
;;
|
||||||
131) len="0x${pubkey:i:2}"
|
131) len="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
;;
|
;;
|
||||||
132) len="0x${pubkey:i:2}"
|
132) len="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
i=$i+2+2*$len
|
i+=$((2+2*len))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Next is the public key BIT STRING. Skip over tag, length, and number of unused bits.
|
# Next is the public key BIT STRING. Skip over tag, length, and number of unused bits.
|
||||||
i=$i+2
|
i+=2
|
||||||
len1="0x${pubkey:i:2}"
|
len1="0x${pubkey:i:2}"
|
||||||
if [[ $len1 -lt 0x80 ]]; then
|
if [[ $len1 -lt 0x80 ]]; then
|
||||||
i=$i+4
|
i+=4
|
||||||
else
|
else
|
||||||
len1=$len1-0x80
|
len1=$((len1-0x80))
|
||||||
i=$i+2*$len1+4
|
i+=$((2*len1+4))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Now get the length of the public key
|
# Now get the length of the public key
|
||||||
i=$i+2
|
i+=2
|
||||||
len1="0x${pubkey:i:2}"
|
len1="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
if [[ $len1 -lt 0x80 ]]; then
|
if [[ $len1 -lt 0x80 ]]; then
|
||||||
len=$len1
|
len=$len1
|
||||||
else
|
else
|
||||||
case $len1 in
|
case $len1 in
|
||||||
129) len="0x${pubkey:i:2}" ;;
|
129) len="0x${pubkey:i:2}" ;;
|
||||||
130) len="0x${pubkey:i:2}"
|
130) len="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
;;
|
;;
|
||||||
131) len="0x${pubkey:i:2}"
|
131) len="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*$len+"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
;;
|
;;
|
||||||
132) len="0x${pubkey:i:2}"
|
132) len="0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
i=$i+2
|
i+=2
|
||||||
len=256*"0x${pubkey:i:2}"
|
len=256*$len+"0x${pubkey:i:2}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
len=8*$len # convert from bytes to bits
|
len=$((8*len)) # convert from bytes to bits
|
||||||
pubkeybits="$(printf "%d" $len)"
|
pubkeybits="$(printf "%d" $len)"
|
||||||
echo "Server public key is $pubkeybits bit" >> $TMPFILE
|
echo "Server public key is $pubkeybits bit" >> $TMPFILE
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user