Skip to content

Rebuild PJSIP with Opus and SHA-256 digest authentication - #16

Merged
PetrShtuka merged 1 commit into
feature/p0-call-qualityfrom
chore/pjsip-opus-sha256
Aug 11, 2026
Merged

Rebuild PJSIP with Opus and SHA-256 digest authentication#16
PetrShtuka merged 1 commit into
feature/p0-call-qualityfrom
chore/pjsip-opus-sha256

Conversation

@PetrShtuka

Copy link
Copy Markdown
Owner

Что внутри

Пересборка PJSIP.xcframework — пункты P0.1 (Opus) и P0.4 (SHA-256 digest) из плана улучшений. База — feature/p0-call-quality, потому что PR #15 ещё не вмерджен; после его мержа базу нужно переключить на main (кнопка Edit в PR).

Opus 1.5.2

  • Opus собран статически под все три слайса (ios-arm64, simulator arm64/x86_64) и влинкован в libPJSIP.a.
  • preferredCodecs теперь может включать opus/48000/2 — широкополосный звук.
  • Скрипт сборки grep'ает PJMEDIA_HAS_OPUS_CODEC 1 в config_auto.h, чтобы Opus молча не потерялся.

SHA-256 digest authentication (RFC 8760)

  • Патч Patches/sip-auth-client-sha256.patch учит no-OpenSSL ветку sip_auth_client.c отвечать на challenge algorithm=SHA-256 рядом с MD5. SHA-512-256 осознанно не включён.
  • Своя реализация Patches/callwave-sha256.h проходит все NIST KAT-векторы (empty / abc / 448-bit / million-a) — проверка Patches/test-sha256.c.
  • Серверы, требующие SHA-256, больше не отваливаются на регистрации.

Проверки

  • ./Scripts/verify-pjsip-xcframework.sh — зелёный: архитектуры, iOS 15 floor, Apple TLS, Opus и SHA-256 символы.
  • Новый CallWavePJSIPCapabilityTests: эталонный digest (сверен с shasum -a 256) и регистрация кодека opus/48000/2 через pjsua_codec_set_priority.
  • ./Scripts/run-package-tests.sh — 57/57 зелёных, в том числе прогон уже против бинарника, скачанного из релиза pjsip-2.17-ios15-opus-sha256.1 (checksum f534773f4dc0e813d0e7a7e3be10a751804232721876d1bad286ab3cba0d16a4).

Прочее

  • Scripts/build-pjsip-xcframework.sh стал возобновляемым (stamp-файлы в PJSIP_WORK_ROOT).
  • Лицензии: Vendor/ThirdPartyLicenses/OPUS-COPYING и CALLWAVE-SHA256-SOURCE.txt.
  • В git трекаются обновлённые libPJSIP.a (23 МБ XCFramework), как и раньше.

Релиз с ассетом уже опубликован: https://github.com/PetrShtuka/CallWaveKit/releases/tag/pjsip-2.17-ios15-opus-sha256.1

- Build Opus 1.5.2 statically for all three slices and link it into
  libPJSIP.a, so preferredCodecs can use opus/48000/2 for wideband calls.
- Patch sip_auth_client.c (Patches/sip-auth-client-sha256.patch) to answer
  algorithm=SHA-256 challenges per RFC 8760 next to MD5, backed by a
  self-contained SHA-256 (Patches/callwave-sha256.h) that passes every NIST
  KAT vector; verified standalone via Patches/test-sha256.c.
- build-pjsip-xcframework.sh is resumable via PJSIP_WORK_ROOT stamp files
  and greps PJMEDIA_HAS_OPUS_CODEC in config_auto.h after the build.
- verify-pjsip-xcframework.sh now also checks Opus and SHA-256 symbols.
- Add CallWavePJSIPCapabilityTests: SHA-256 digest against a known answer
  (cross-checked with shasum -a 256) and pjsua codec priority for opus.
- Package.swift resolves release pjsip-2.17-ios15-opus-sha256.1 with
  checksum f534773f4dc0e813d0e7a7e3be10a751804232721876d1bad286ab3cba0d16a4.
- Licenses for Opus and the SHA-256 snippet under Vendor/ThirdPartyLicenses.
@PetrShtuka
PetrShtuka merged commit db7b8d6 into feature/p0-call-quality Aug 11, 2026
4 checks passed
PetrShtuka added a commit that referenced this pull request Aug 12, 2026
- Build Opus 1.5.2 statically for all three slices and link it into
  libPJSIP.a, so preferredCodecs can use opus/48000/2 for wideband calls.
- Patch sip_auth_client.c (Patches/sip-auth-client-sha256.patch) to answer
  algorithm=SHA-256 challenges per RFC 8760 next to MD5, backed by a
  self-contained SHA-256 (Patches/callwave-sha256.h) that passes every NIST
  KAT vector; verified standalone via Patches/test-sha256.c.
- build-pjsip-xcframework.sh is resumable via PJSIP_WORK_ROOT stamp files
  and greps PJMEDIA_HAS_OPUS_CODEC in config_auto.h after the build.
- verify-pjsip-xcframework.sh now also checks Opus and SHA-256 symbols.
- Add CallWavePJSIPCapabilityTests: SHA-256 digest against a known answer
  (cross-checked with shasum -a 256) and pjsua codec priority for opus.
- Package.swift resolves release pjsip-2.17-ios15-opus-sha256.1 with
  checksum f534773f4dc0e813d0e7a7e3be10a751804232721876d1bad286ab3cba0d16a4.
- Licenses for Opus and the SHA-256 snippet under Vendor/ThirdPartyLicenses.

Co-authored-by: PeterSthuka <pitmailcom@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant