summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2016-05-12 16:42:16 +0200
committerMarcello Stanisci <marcello.stanisci@inria.fr>2016-05-12 16:42:16 +0200
commit79bd5ee547132e49c841e5f52c4528612095258e (patch)
treef0da70e0a506ba9ea9b08033cd08760ee9ab073f /docker
parentc33c86e6ffeb5bdfb4ed37558391c2dfaae98c00 (diff)
downloaddeployment-79bd5ee547132e49c841e5f52c4528612095258e.tar.gz
deployment-79bd5ee547132e49c841e5f52c4528612095258e.tar.bz2
deployment-79bd5ee547132e49c841e5f52c4528612095258e.zip
adding crx generating script
Diffstat (limited to 'docker')
-rwxr-xr-xdocker/selenium/crxmake.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/docker/selenium/crxmake.sh b/docker/selenium/crxmake.sh
new file mode 100755
index 0000000..539dbfc
--- /dev/null
+++ b/docker/selenium/crxmake.sh
@@ -0,0 +1,43 @@
+#!/bin/bash -e
+#
+# Purpose: Pack a Chromium extension directory into crx format
+# Downloaded from https://developer.chrome.com/extensions/crx
+
+if test $# -ne 2; then
+ echo "Usage: crxmake.sh <extension dir> <pem path>"
+ exit 1
+fi
+
+dir=$1
+key=$2
+name=$(basename "$dir")
+crx="$name.crx"
+pub="$name.pub"
+sig="$name.sig"
+zip="$name.zip"
+trap 'rm -f "$pub" "$sig" "$zip"' EXIT
+
+# zip up the crx dir
+cwd=$(pwd -P)
+(cd "$dir" && zip -qr -9 -X "$cwd/$zip" .)
+
+# signature
+openssl sha1 -sha1 -binary -sign "$key" < "$zip" > "$sig"
+
+# public key
+openssl rsa -pubout -outform DER < "$key" > "$pub" 2>/dev/null
+
+byte_swap () {
+ # Take "abcdefgh" and return it as "ghefcdab"
+ echo "${1:6:2}${1:4:2}${1:2:2}${1:0:2}"
+}
+
+crmagic_hex="4372 3234" # Cr24
+version_hex="0200 0000" # 2
+pub_len_hex=$(byte_swap $(printf '%08x\n' $(ls -l "$pub" | awk '{print $5}')))
+sig_len_hex=$(byte_swap $(printf '%08x\n' $(ls -l "$sig" | awk '{print $5}')))
+(
+ echo "$crmagic_hex $version_hex $pub_len_hex $sig_len_hex" | xxd -r -p
+ cat "$pub" "$sig" "$zip"
+) > "$crx"
+echo "Wrote $crx"