NAME=r2-authpass-tls-flags
FILE=bins/ios/AuthPass.app/Frameworks/App.framework/App
ARGS=-NN -e bin.relocs.apply=true
CMDS=<<EOF
L ../src/r2/core_flutter.dylib
L ../src/r2/core_flutter.so
r2flutter -A
f~onBadCertificateWrapper~method
f~registerBadCertificateCallback~method~!_registerBadCertificateCallback_
f~_registerBadCertificateCallback_~method
f~_secureHandshake_~method
EOF
EXPECT=<<EOF
0x003199d4 0 method._RawSecureSocket_14069316._onBadCertificateWrapper_14069316
0x003194ec 0 method._SecureFilterImpl_14069316.registerBadCertificateCallback
0x0031954c 0 method._SecureFilterImpl_14069316._registerBadCertificateCallback_14069316
0x0031749c 0 method._RawSecureSocket_14069316._secureHandshake_14069316
EOF
RUN

NAME=r2-authpass-callsite-xrefs
FILE=bins/ios/AuthPass.app/Frameworks/App.framework/App
ARGS=-NN -e bin.relocs.apply=true
CMDS=<<EOF
L ../src/r2/core_flutter.dylib
L ../src/r2/core_flutter.so
r2flutter -A
pd 1 @ 0x3199bc~onBadCertificateWrapper[0]
pd 1 @ 0x316cd8~registerBadCertificateCallback[0]
pd 1 @ 0x319530~_registerBadCertificateCallback_[0]
pd 1 @ 0x317028~_secureHandshake_[0]
pd 1 @ 0x317514~_secureHandshake_[0]
pd 1 @ 0x3178b4~_secureHandshake_[0]
pd 1 @ 0x317e04~_secureHandshake_[0]
EOF
EXPECT=<<EOF
0x003199bc
0x00316cd8
0x00319530
0x00317028
0x00317514
0x003178b4
0x00317e04
EOF
RUN

NAME=r2-authpass-handshake-disasm
FILE=bins/ios/AuthPass.app/Frameworks/App.framework/App
ARGS=-NN -e bin.relocs.apply=true
CMDS=<<EOF
L ../src/r2/core_flutter.dylib
L ../src/r2/core_flutter.so
r2flutter -A
pd 1 @ 0x3174e4
pd 1 @ 0x31752c
pd 1 @ 0x317554
pd 1 @ 0x3175ac
EOF
EXPECT=<<EOF
            0x003174e4      3f060094       bl sym.func.00318de0        ; method._SecureFilterImpl_14069316.handshake ; method._SecureFilterImpl_14069316.handshake(0x0, 0x0, 0x0, 0x0)
            0x0031752c      c1c20091       add x1, x22, 0x30
            0x00317554      13000094       bl sym.func.003175a0        ; method._RawSecureSocket_14069316._scheduleFilter_14069316 ; method._RawSecureSocket_14069316._scheduleFilter_14069316(0x0, 0x0, 0x0, 0x0)
            0x003175ac      c0820091       add x0, x22, 0x20           ; mach0_segment64_0
EOF
RUN

NAME=r2-authpass-wrapper-disasm
FILE=bins/ios/AuthPass.app/Frameworks/App.framework/App
ARGS=-NN -e bin.relocs.apply=true
CMDS=<<EOF
L ../src/r2/core_flutter.dylib
L ../src/r2/core_flutter.so
r2flutter -A
pd 1 @ 0x3199f0
pd 1 @ 0x319a10
pd 1 @ 0x319a1c
EOF
EXPECT=<<EOF
            0x003199f0      01f045f8       ldur x1, [x0, 0x5f]
            0x00319a10      40003fd6       blr x2                      ; app.base(0x0, 0x0, 0x0, 0x0)
            0x00319a1c      c0035fd6       ret
EOF
RUN

NAME=r2-authpass-qjs-bypass
FILE=bins/ios/AuthPass.app/Frameworks/App.framework/App
ARGS=-NN -e bin.relocs.apply=true
CMDS=<<EOF
L ../src/r2/core_flutter.dylib
L ../src/r2/core_flutter.so
r2flutter -A
f~onBadCertificateWrapper~method
e io.cache=true
s 0x3199d4
wx c0820091c0035fd6
p8 8
EOF
EXPECT=<<EOF
0x003199d4 0 method._RawSecureSocket_14069316._onBadCertificateWrapper_14069316
c0820091c0035fd6
EOF
RUN
