@@ -140,7 +140,7 @@ class SrtClient(private val connectChecker: ConnectChecker) {
140140 */
141141 fun setPassphrase (passphrase : String , type : EncryptionType ) {
142142 if (! isStreaming) {
143- if (passphrase.length < 10 || passphrase.length > 79 ) {
143+ if (passphrase.length !in 10 .. 79 ) {
144144 throw IllegalArgumentException (" passphrase must between 10 and 79 length" )
145145 }
146146 commandsManager.setPassphrase(passphrase, type)
@@ -213,6 +213,15 @@ class SrtClient(private val connectChecker: ConnectChecker) {
213213 val port = urlParser.port ? : 8888
214214 val path = urlParser.getQuery(" streamid" ) ? : urlParser.getFullPath()
215215 latency = urlParser.getQuery(" latency" )?.toIntOrNull() ? : latency
216+ val passphrase = urlParser.getQuery(" passphrase" ) ? : " "
217+ if (passphrase.isNotEmpty() && passphrase.length in 10 .. 79 ) {
218+ val encryptionType = when (urlParser.getQuery(" pbkeylen" )?.toIntOrNull()) {
219+ 192 -> EncryptionType .AES192
220+ 256 -> EncryptionType .AES256
221+ else -> EncryptionType .AES128
222+ }
223+ commandsManager.setPassphrase(passphrase, encryptionType)
224+ }
216225 if (path.isEmpty()) {
217226 isStreaming = false
218227 onMainThread {
@@ -232,7 +241,7 @@ class SrtClient(private val connectChecker: ConnectChecker) {
232241
233242 commandsManager.writeHandshake(socket, response.copy(
234243 encryption = commandsManager.getEncryptType(),
235- extensionField = ExtensionField .calculateValue(response.extensionField),
244+ extensionField = ExtensionField .calculateValue(response.extensionField, commandsManager.encryptionEnabled() ),
236245 handshakeType = HandshakeType .CONCLUSION ,
237246 handshakeExtension = HandshakeExtension (
238247 flags = ExtensionContentFlag .TSBPDSND .value or ExtensionContentFlag .TSBPDRCV .value or
0 commit comments