Skip to content

Commit 754a0d7

Browse files
committed
Merge pull request #981 from woodb/node-v4-checksums
[New] Added support for sha256 checksums on `io.js` / merged `node`. Fixes #664, relates to #736 and #687.
2 parents 21c3727 + f73bfb6 commit 754a0d7

File tree

1 file changed

+32
-12
lines changed

1 file changed

+32
-12
lines changed

nvm.sh

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -759,15 +759,37 @@ nvm_ls_remote_index_tab() {
759759

760760
nvm_checksum() {
761761
local NVM_CHECKSUM
762-
if nvm_has "sha1sum" && ! nvm_is_alias "sha1sum"; then
763-
NVM_CHECKSUM="$(command sha1sum "$1" | command awk '{print $1}')"
764-
elif nvm_has "sha1" && ! nvm_is_alias "sha1"; then
765-
NVM_CHECKSUM="$(command sha1 -q "$1")"
766-
elif nvm_has "shasum" && ! nvm_is_alias "shasum"; then
767-
NVM_CHECKSUM="$(shasum "$1" | command awk '{print $1}')"
762+
if [ -z "$3" ] || [ "$3" == "sha1" ]; then
763+
if nvm_has "sha1sum" && ! nvm_is_alias "sha1sum"; then
764+
NVM_CHECKSUM="$(command sha1sum "$1" | command awk '{print $1}')"
765+
elif nvm_has "sha1" && ! nvm_is_alias "sha1"; then
766+
NVM_CHECKSUM="$(command sha1 -q "$1")"
767+
elif nvm_has "shasum" && ! nvm_is_alias "shasum"; then
768+
NVM_CHECKSUM="$(shasum "$1" | command awk '{print $1}')"
769+
else
770+
echo "Unaliased sha1sum, sha1, or shasum not found." >&2
771+
return 2
772+
fi
768773
else
769-
echo "Unaliased sha1sum, sha1, or shasum not found." >&2
770-
return 2
774+
if nvm_has "sha256sum" && ! nvm_is_alias "sha256sum"; then
775+
NVM_CHECKSUM="$(sha256sum "$1" | awk '{print $1}')"
776+
elif nvm_has "shasum" && ! nvm_is_alias "shasum"; then
777+
NVM_CHECKSUM="$(shasum -a 256 "$1" | awk '{print $1}')"
778+
elif nvm_has "sha256" && ! nvm_is_alias "sha256"; then
779+
NVM_CHECKSUM="$(sha256 -q "$1" | awk '{print $1}')"
780+
elif nvm_has "gsha256sum" && ! nvm_is_alias "gsha256sum"; then
781+
NVM_CHECKSUM="$(gsha256sum "$1" | awk '{print $1}')"
782+
elif nvm_has "openssl" && ! nvm_is_alias "openssl"; then
783+
NVM_CHECKSUM="$(openssl dgst -sha256 "$1" | rev | awk '{print $1}' | rev)"
784+
elif nvm_has "libressl" && ! nvm_is_alias "libressl"; then
785+
NVM_CHECKSUM="$(libressl dgst -sha256 "$1" | rev | awk '{print $1}' | rev)"
786+
elif nvm_has "bssl" && ! nvm_is_alias "bssl"; then
787+
NVM_CHECKSUM="$(bssl sha256sum "$1" | awk '{print $1}')"
788+
else
789+
echo "Unaliased sha256sum, shasum, sha256, gsha256sum, openssl, libressl, or bssl not found." >&2
790+
echo "WARNING: Continuing *without checksum verification*" >&2
791+
return
792+
fi
771793
fi
772794

773795
if [ "_$NVM_CHECKSUM" = "_$2" ]; then
@@ -1051,8 +1073,7 @@ nvm_install_merged_node_binary() {
10511073
fi
10521074
if (
10531075
[ "$NVM_INSTALL_ERRORED" != true ] && \
1054-
echo "WARNING: checksums are currently disabled for node.js v4.0 and later" >&2 && \
1055-
# nvm_checksum "$tmptarball" "$sum" && \
1076+
nvm_checksum "$tmptarball" "$sum" "sha256" && \
10561077
command tar -x${tar_compression_flag}f "$tmptarball" -C "$tmpdir" --strip-components 1 && \
10571078
command rm -f "$tmptarball" && \
10581079
command mkdir -p "$VERSION_PATH" && \
@@ -1126,8 +1147,7 @@ nvm_install_iojs_binary() {
11261147
fi
11271148
if (
11281149
[ "$NVM_INSTALL_ERRORED" != true ] && \
1129-
echo "WARNING: checksums are currently disabled for io.js" >&2 && \
1130-
# nvm_checksum "$tmptarball" "$sum" && \
1150+
nvm_checksum "$tmptarball" "$sum" "sha256" && \
11311151
command tar -x${tar_compression_flag}f "$tmptarball" -C "$tmpdir" --strip-components 1 && \
11321152
command rm -f "$tmptarball" && \
11331153
command mkdir -p "$VERSION_PATH" && \

0 commit comments

Comments
 (0)