diff options
author | kevku | 2023-02-19 14:46:32 +0200 |
---|---|---|
committer | kevku | 2023-02-19 14:46:32 +0200 |
commit | b44e41b7a5000ff872db056d53019c899792be06 (patch) | |
tree | 5f00f3c7abc8f47f59ad45660696cf966d9ae0bd | |
parent | bf0f997a212352f2e2d33aaf72de4a805ef87c6b (diff) | |
download | aur-b44e41b7a5000ff872db056d53019c899792be06.tar.gz |
build crx
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 78 |
2 files changed, 79 insertions, 16 deletions
@@ -1,22 +1,29 @@ pkgbase = web-eid-webextension pkgdesc = Web eID browser extension pkgver = 2.2.0 - pkgrel = 1 + pkgrel = 2 url = https://web-eid.eu/ arch = any license = MIT makedepends = git makedepends = nodejs-lts-hydrogen makedepends = npm - depends = web-eid - source = web-eid-webextension::git+https://github.com/web-eid/web-eid-webextension.git#tag=v2.2.0 + makedepends = openssl + makedepends = zip + makedepends = xxd + makedepends = jq + source = web-eid-webextension::git+https://github.com/web-eid/web-eid-webextension.git?signed#tag=v2.2.0 source = web-eid-js::git+https://github.com/web-eid/web-eid.js.git validpgpkeys = 1282B0F8809D0DC632C85A3F86B611CE24492160 sha256sums = SKIP sha256sums = SKIP pkgname = firefox-extension-web-eid - pkgdesc = Web eID Firefox extension + pkgdesc = Web eID Firefox extension (unsigned) + depends = web-eid-native + conflicts = web-eid-firefox pkgname = chromium-extension-web-eid - pkgdesc = Unpacked Web eID Chromium extension + pkgdesc = Web eID Chromium extension (unsigned) + depends = web-eid-native + conflicts = web-eid-chrome @@ -2,14 +2,13 @@ pkgbase=web-eid-webextension pkgname=("firefox-extension-web-eid" "chromium-extension-web-eid") pkgver=2.2.0 -pkgrel=1 +pkgrel=2 pkgdesc="Web eID browser extension" arch=('any') url="https://web-eid.eu/" license=('MIT') -depends=('web-eid') -makedepends=('git' 'nodejs-lts-hydrogen' 'npm') -source=("$pkgbase::git+https://github.com/web-eid/web-eid-webextension.git#tag=v$pkgver" +makedepends=('git' 'nodejs-lts-hydrogen' 'npm' 'openssl' 'zip' 'xxd' 'jq') +source=("$pkgbase::git+https://github.com/web-eid/web-eid-webextension.git?signed#tag=v$pkgver" "web-eid-js::git+https://github.com/web-eid/web-eid.js.git") sha256sums=("SKIP" "SKIP") validpgpkeys=( @@ -30,17 +29,74 @@ build() { } package_firefox-extension-web-eid() { - pkgdesc="Web eID Firefox extension" + pkgdesc="Web eID Firefox extension (unsigned)" + depends=(web-eid-native) + conflicts=(web-eid-firefox) cd "$srcdir/$pkgbase" install -Dm644 ./dist/firefox.zip "$pkgdir/usr/lib/firefox/browser/extensions/{e68418bc-f2b0-4459-a9ea-3e72b6751b07}.xpi" install -Dm644 "$srcdir/$pkgbase/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } - package_chromium-extension-web-eid() { - pkgdesc="Unpacked Web eID Chromium extension" - mkdir -p "$pkgdir/usr/share/$pkgname" - cd "$srcdir/$pkgbase" - cp -dr --no-preserve=ownership ./dist/chrome/* "$pkgdir/usr/share/$pkgname/" - install -Dm644 "$srcdir/$pkgbase/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + pkgdesc="Web eID Chromium extension (unsigned)" + depends=(web-eid-native) + conflicts=(web-eid-chrome) + cd "$srcdir/$pkgbase/dist/" + # https://stackoverflow.com/questions/18693962/pack-chrome-extension-on-server-with-only-command-line-interface + openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out "$pkgbase.pem" + openssl rsa -in "$pkgbase.pem" -pubout -outform der | openssl dgst -sha256 -binary -out "$pkgbase.crxid" + truncate -s 16 "$pkgbase.crxid" + openssl rsa -pubout -outform DER < "$pkgbase.pem" > "$pkgbase.pub" 2>/dev/null + crx_id=$(xxd -p -c0 "$pkgbase.crxid" | tr '0-9a-f' 'a-p') + cd chrome + jq --ascii-output --arg key $(cat "../$pkgbase.pub" | base64 -w0) '. + {key: $key}' manifest.json > manifest.json.new + mv manifest.json.new manifest.json + zip -qr -9 -X "../$pkgbase.zip" . + cd .. + ( + printf "CRX3 SignedData" + echo "00 12 00 00 00 0A 10" | xxd -r -p + cat "$pkgbase.crxid" "$pkgbase.zip" + ) > "$pkgbase.presig" + openssl dgst -sha256 -binary -sign "$pkgbase.pem" < "$pkgbase.presig" > "$pkgbase.sig" + + crmagic_hex="43 72 32 34" # Cr24 + version_hex="03 00 00 00" # 3 + header_length="45 02 00 00" + header_chunk_1="12 AC 04 0A A6 02" + header_chunk_2="12 80 02" + header_chunk_3="82 F1 04 12 0A 10" + ( + echo "$crmagic_hex $version_hex $header_length $header_chunk_1" | xxd -r -p + cat "$pkgbase.pub" + echo "$header_chunk_2" | xxd -r -p + cat "$pkgbase.sig" + echo "$header_chunk_3" | xxd -r -p + cat "$pkgbase.crxid" "$pkgbase.zip" + ) > "$crx_id.crx" + cat << EOF > "$crx_id.json" +{ + "external_crx": "/usr/share/$pkgname/$crx_id.crx", + "external_version": "${pkgver}" +} +EOF + cat << EOF > "eu.webeid.json" +{ +"name": "eu.webeid", +"description": "Web-eid native application", +"path": "/usr/bin/web-eid", +"type": "stdio", +"allowed_origins": [ + "chrome-extension://$crx_id/" +] +} +EOF + install -Dm644 "eu.webeid.json" "$pkgdir/usr/share/web-eid/eu.webeid.json" + mkdir -p $pkgdir/etc/chromium/native-messaging-hosts + ln -sf "/usr/share/web-eid/eu.webeid.json" "$pkgdir/etc/chromium/native-messaging-hosts/eu.webeid.json" + install -Dm644 "$crx_id.crx" "$pkgdir/usr/share/$pkgname/$crx_id.crx" + install -Dm644 "$crx_id.json" "$pkgdir/usr/share/chromium/extensions/$crx_id.json" + # vivaldi + mkdir -p $pkgdir/etc/opt/chrome/native-messaging-hosts + ln -sf "/usr/share/web-eid/eu.webeid.json" "$pkgdir/etc/opt/chrome/native-messaging-hosts/eu.webeid.json" } |