From 1653877e26f1f908bfd22c98aa35100e295adbdf Mon Sep 17 00:00:00 2001 From: Dmytro Bogovych Date: Sat, 31 Jan 2026 21:42:23 +0300 Subject: [PATCH] - add libsrtp back as part of top repo - this repo should be solid --- src/libs/libsrtp/.clang-format | 79 + .../libsrtp/.github/workflows/android.yml | 44 + .../libsrtp/.github/workflows/autotools.yml | 92 + src/libs/libsrtp/.github/workflows/cifuzz.yml | 30 + src/libs/libsrtp/.github/workflows/cmake.yml | 127 + .../.github/workflows/coverity_scan.yml | 41 + .../.github/workflows/format_check.yml | 17 + .../.github/workflows/fuzzer_build.yml | 24 + src/libs/libsrtp/.github/workflows/meson.yml | 144 + .../libsrtp/.github/workflows/stream_list.yml | 41 + src/libs/libsrtp/.gitignore | 48 + src/libs/libsrtp/CHANGES | 377 + src/libs/libsrtp/CMakeLists.txt | 536 ++ src/libs/libsrtp/CODEOWNERS | 3 + src/libs/libsrtp/Config.cmake.in | 3 + src/libs/libsrtp/LICENSE | 35 + src/libs/libsrtp/Makefile.in | 346 + src/libs/libsrtp/README.md | 556 ++ src/libs/libsrtp/config.guess | 1456 +++ src/libs/libsrtp/config.h | 202 + src/libs/libsrtp/config.sub | 1815 ++++ src/libs/libsrtp/config_in.h | 202 + src/libs/libsrtp/config_in_cmake.h | 141 + src/libs/libsrtp/configure | 7846 +++++++++++++++++ src/libs/libsrtp/configure.ac | 434 + src/libs/libsrtp/crypto/Makefile.in | 118 + src/libs/libsrtp/crypto/cipher/aes.c | 2160 +++++ .../libsrtp/crypto/cipher/aes_gcm_mbedtls.c | 442 + src/libs/libsrtp/crypto/cipher/aes_gcm_nss.c | 431 + src/libs/libsrtp/crypto/cipher/aes_gcm_ossl.c | 433 + src/libs/libsrtp/crypto/cipher/aes_gcm_wssl.c | 474 + src/libs/libsrtp/crypto/cipher/aes_icm.c | 449 + .../libsrtp/crypto/cipher/aes_icm_mbedtls.c | 402 + src/libs/libsrtp/crypto/cipher/aes_icm_nss.c | 415 + src/libs/libsrtp/crypto/cipher/aes_icm_ossl.c | 391 + src/libs/libsrtp/crypto/cipher/aes_icm_wssl.c | 399 + src/libs/libsrtp/crypto/cipher/cipher.c | 651 ++ .../libsrtp/crypto/cipher/cipher_test_cases.c | 365 + .../libsrtp/crypto/cipher/cipher_test_cases.h | 53 + src/libs/libsrtp/crypto/cipher/null_cipher.c | 166 + src/libs/libsrtp/crypto/hash/auth.c | 194 + .../libsrtp/crypto/hash/auth_test_cases.c | 70 + .../libsrtp/crypto/hash/auth_test_cases.h | 48 + src/libs/libsrtp/crypto/hash/hmac.c | 248 + src/libs/libsrtp/crypto/hash/hmac_mbedtls.c | 224 + src/libs/libsrtp/crypto/hash/hmac_nss.c | 291 + src/libs/libsrtp/crypto/hash/hmac_ossl.c | 343 + src/libs/libsrtp/crypto/hash/hmac_wssl.c | 228 + src/libs/libsrtp/crypto/hash/null_auth.c | 181 + src/libs/libsrtp/crypto/hash/sha1.c | 463 + src/libs/libsrtp/crypto/include/aes.h | 83 + src/libs/libsrtp/crypto/include/aes_gcm.h | 134 + src/libs/libsrtp/crypto/include/aes_icm.h | 62 + src/libs/libsrtp/crypto/include/aes_icm_ext.h | 112 + src/libs/libsrtp/crypto/include/alloc.h | 76 + src/libs/libsrtp/crypto/include/auth.h | 173 + src/libs/libsrtp/crypto/include/cipher.h | 242 + src/libs/libsrtp/crypto/include/cipher_priv.h | 62 + .../libsrtp/crypto/include/cipher_types.h | 80 + .../libsrtp/crypto/include/crypto_kernel.h | 215 + .../libsrtp/crypto/include/crypto_types.h | 116 + src/libs/libsrtp/crypto/include/datatypes.h | 264 + src/libs/libsrtp/crypto/include/err.h | 171 + src/libs/libsrtp/crypto/include/hmac.h | 58 + src/libs/libsrtp/crypto/include/key.h | 86 + src/libs/libsrtp/crypto/include/null_auth.h | 62 + src/libs/libsrtp/crypto/include/null_cipher.h | 57 + src/libs/libsrtp/crypto/include/rdb.h | 122 + src/libs/libsrtp/crypto/include/rdbx.h | 209 + src/libs/libsrtp/crypto/include/sha1.h | 90 + src/libs/libsrtp/crypto/kernel/alloc.c | 95 + .../libsrtp/crypto/kernel/crypto_kernel.c | 560 ++ src/libs/libsrtp/crypto/kernel/err.c | 108 + src/libs/libsrtp/crypto/kernel/key.c | 90 + src/libs/libsrtp/crypto/math/datatypes.c | 509 ++ src/libs/libsrtp/crypto/replay/rdb.c | 140 + src/libs/libsrtp/crypto/replay/rdbx.c | 338 + src/libs/libsrtp/crypto/test/aes_calc.c | 179 + src/libs/libsrtp/crypto/test/cipher_driver.c | 1159 +++ .../libsrtp/crypto/test/datatypes_driver.c | 226 + src/libs/libsrtp/crypto/test/env.c | 84 + src/libs/libsrtp/crypto/test/kernel_driver.c | 119 + src/libs/libsrtp/crypto/test/meson.build | 41 + src/libs/libsrtp/crypto/test/sha1_driver.c | 424 + src/libs/libsrtp/doc/Doxyfile.in | 2412 +++++ src/libs/libsrtp/doc/Makefile.in | 32 + src/libs/libsrtp/doc/crypto_kernel.txt | 74 + src/libs/libsrtp/doc/docs.css | 1479 ++++ src/libs/libsrtp/doc/meson.build | 22 + src/libs/libsrtp/format.sh | 35 + src/libs/libsrtp/fuzzer/Makefile.in | 34 + src/libs/libsrtp/fuzzer/README.md | 88 + .../002478e8528b7057018106308a03382f9c60dd62 | Bin 0 -> 142 bytes .../003573bfa48939dd1c2b3e875f1906b082662ea7 | Bin 0 -> 298 bytes .../0063584d99e559d95f7574303efaaa7d66aa1043 | Bin 0 -> 394 bytes .../0068209ec44b5bcc76df5fd390bee3451a931f75 | Bin 0 -> 135 bytes .../00aba68e0b49a70a5d9bd4ee363eacf106519586 | Bin 0 -> 35 bytes .../00f65461899db1e20bcfbc27a9f6a0c2e563a70f | Bin 0 -> 364 bytes .../01093511ce21ba2143348f1eb6cdc390b9d900ce | Bin 0 -> 108 bytes .../0191a956146c2b6eea8b009efb0f16589d44a856 | Bin 0 -> 106 bytes .../01980dea5a010187f31ea505fdf1b3f7e3e2c559 | Bin 0 -> 781 bytes .../01b951775bc6cd4f54461597e65b84e44c292402 | Bin 0 -> 1556 bytes .../01cf3f39acd95472695e7a92b27b69e7cf1aff88 | Bin 0 -> 114 bytes .../02137ddc6d4c8a03cce587f0f295f8a14dc0e960 | Bin 0 -> 102 bytes .../0225aedaaba06224630e8c7b641f9f987d38c29d | Bin 0 -> 108 bytes .../02274d492863405f178860185520e380b9253dd1 | Bin 0 -> 265 bytes .../02329129eb1b3647fcc65b670413e36fa6ffacd9 | Bin 0 -> 70 bytes .../0242c184029780608bd52c49883a188f333b90f5 | Bin 0 -> 211 bytes .../029c1bc38ee3a6a9e6d1cf95b421f06e868a8cc0 | Bin 0 -> 139 bytes .../02bed7d1b482d7b62be531eed715763b0872d6a5 | Bin 0 -> 174 bytes .../02c705f93c1f075b5e473909f35b652a1fe5bf80 | Bin 0 -> 93 bytes .../02e43835c3874d724b186b0d024add681b1f9219 | Bin 0 -> 171 bytes .../02fb62ce864b7637f14818c411348cae30392a9e | Bin 0 -> 221 bytes .../030481afcfe047f8584391dc64b9307273590b6f | Bin 0 -> 106 bytes .../031e311800ff4e60382f18f854418870fd4aef13 | Bin 0 -> 164 bytes .../0320551674956cf13d9827f99490b0339d59e672 | Bin 0 -> 103 bytes .../0339be7ee6c0a259d62bd533cc6bc1d94612d5ae | Bin 0 -> 532 bytes .../034276781b173338c670d819af0ab4321d6aa50d | Bin 0 -> 442 bytes .../03454e15dbc51d7de1126d1dfbaba101b483309c | Bin 0 -> 225 bytes .../0385a3ffe2e5c799e479400669be2c29d6276531 | Bin 0 -> 69 bytes .../039d62fcc18ecd8a91e8ba631c179911a8db340e | Bin 0 -> 108 bytes .../03b310f8e1c16c57e8f263c3d20448a9c0a1d00e | Bin 0 -> 164 bytes .../03b7bc0ef864657df7756e2f38fc9c108f4edfa0 | Bin 0 -> 160 bytes .../04dfe903049df3eb0701a4785f5617a7a2d4735c | Bin 0 -> 46 bytes .../04e6dd5a888667bc225e7d9eac4e58b65045b42b | Bin 0 -> 378 bytes .../0500cd32ae315af1bf538eecd4572cc74ab94905 | Bin 0 -> 161 bytes .../050e91306cebc8f11b032eb9e9d662e862e92a3c | Bin 0 -> 108 bytes .../051781418c3b4c91c3e84fe1c262d2a7e5aedf1b | Bin 0 -> 54 bytes .../051df98d56e1664ca2179b51485bcb49728cd3be | Bin 0 -> 139 bytes .../051f2e54bc804cc50fe9c2262e9d5ec67061ae65 | Bin 0 -> 105 bytes .../05539d721692acd0db015698981d31b923485a3d | Bin 0 -> 148 bytes .../055a309f795cc0d18fa936a70dc3fbdb20f16a0a | Bin 0 -> 314 bytes .../056fe9accc18d702f74947a041dfa3528595a28e | Bin 0 -> 114 bytes .../058d2ffb707aa9a256f8a27b482c351dc59d9562 | Bin 0 -> 72 bytes .../0592773c7693fcb746fcccae36e018c816d72548 | Bin 0 -> 347 bytes .../0593930c933a73b0ae747d1c57f3e8ce1990d66c | Bin 0 -> 199 bytes .../059c4168c4567d8ddace90563ae3d4faad8c5aad | Bin 0 -> 138 bytes .../05a53ea6556822ee0ba50cf11477cdc82bca042b | Bin 0 -> 102 bytes .../05ac2b295f457e6d82af70e03197058e243330a5 | Bin 0 -> 72 bytes .../05ba6eed3aaf1e11881f108e363705ea6684b5ee | Bin 0 -> 106 bytes .../05de42787114bd230c00bc28974c2e0abc5276cd | Bin 0 -> 156 bytes .../05e4184169408bddef4e3ed9395b25b3307c0dc4 | Bin 0 -> 167 bytes .../05fd25c9e7186a048e4b048316725d7d8e2957f2 | Bin 0 -> 2210 bytes .../063561babc7dd125c0199ce988b2d9e3ecf5b166 | Bin 0 -> 82 bytes .../065e940fa5cec8b3198461acf8f5284ec45f588b | Bin 0 -> 101 bytes .../06766094522762e8f4c17953a7a437e5ff0ce2f5 | Bin 0 -> 196 bytes .../067cc48411aaea493a14052eb1974ca2b3477846 | Bin 0 -> 217 bytes .../069e356aeb44c3384ac22309d6601d75337ce2d0 | Bin 0 -> 100 bytes .../06a8e02d0a2fa29cee49b44b1ae9a4c3fb4e2405 | Bin 0 -> 577 bytes .../06b8aeed1879d286b3e4234132fdd2169c693ae2 | Bin 0 -> 1254 bytes .../06b9a8464c56257b2f7d51211da84cead2a5e171 | Bin 0 -> 144 bytes .../06c8e757034bdac3525e1155089b4dfc01386bb2 | Bin 0 -> 429 bytes .../07060875482510021e7e723e03d15b58b89d23ba | Bin 0 -> 173 bytes .../070ebaae52ef308f39d3b6d2aec9d4987645dbfe | Bin 0 -> 108 bytes .../0713046ee5b8569f6d68e44892a284cb8d07f1e6 | Bin 0 -> 99 bytes .../072d3e69419fae30bb4d06f5b3b682998b413df3 | Bin 0 -> 69 bytes .../0745fbf2076dd36e71d517486c51fbb29275fb99 | Bin 0 -> 1083 bytes .../077bfe79b6b8e2f07e5142cb0ff7f2af106c981d | Bin 0 -> 106 bytes .../07814cbcb24e0b5546e9aa864e7f7aa9a168c564 | Bin 0 -> 180 bytes .../0798cf7167b61ed2cfb1800011801bc68c65214d | Bin 0 -> 102 bytes .../07f6c6929eff77bd0d56e82ea4736ec28f7aea3a | Bin 0 -> 139 bytes .../081ea4232ae7fdecc019ec13088c224a73b0b451 | Bin 0 -> 290 bytes .../0840e6087046fc23e86e2c331aedfa68123108e2 | Bin 0 -> 92 bytes .../0842d7d0c5f51d75658a8d060ce8b69dc5df61d5 | 1 + .../088764c1162b27b87d049bd2b4121aaa8f49d6e9 | Bin 0 -> 194 bytes .../08898301ab36474b3dfb6462a699b1900b7fe6a3 | Bin 0 -> 102 bytes .../08902272daf08e6bf1b54733ff959b2d6a15ba79 | Bin 0 -> 112 bytes .../089e1387a8ea73afd87f01bfa75af9327ddfe3c5 | Bin 0 -> 106 bytes .../08ba205bc389ee3a7e42a47a80489a6fc68b5922 | Bin 0 -> 321 bytes .../08c4b15079e0c5a2eed4604535299d145a23c16c | Bin 0 -> 1005 bytes .../08c4f6f4abfa6fbdf044775fc91dea997eca8da1 | Bin 0 -> 106 bytes .../08f15fc50d84dc626a87437e3b6833d7b04d73e2 | Bin 0 -> 1012 bytes .../08f7011dda2e8df54ed4a4c7932648f067d74b88 | Bin 0 -> 85 bytes .../092d5acd482e169f1a35215856f8fbd5a1ebc358 | Bin 0 -> 360 bytes .../09348a438f44b9bbd2a9432bf8878d98ac2dd9ef | Bin 0 -> 123 bytes .../093c49bb9bccdac898ffb2d59c6a68b2e89f2f96 | Bin 0 -> 250 bytes .../09408a322bedf519a3c5d821133d722d88b21c58 | Bin 0 -> 99 bytes .../0941531e215dca2d25d3206ae458ac4f4d2d8d88 | Bin 0 -> 283 bytes .../094aefe210ab041f01d93f25e77480ec1107843f | Bin 0 -> 506 bytes .../096ede5656818a9b33329aeb1a6bf7265627b640 | Bin 0 -> 230 bytes .../0982c7135c8ad390b4f89c160825b6d98ab803a6 | Bin 0 -> 97 bytes .../098c766ed84871e1fe0d55e342176141b88c6e18 | Bin 0 -> 145 bytes .../099a19243cad226b84fed1b8db1bfc3e5113c45f | Bin 0 -> 235 bytes .../09ff328b37e723d6a52d6c5cad15e328a46d67cc | Bin 0 -> 112 bytes .../0a08bdde597d95bef31b3f2f679ddcb1b816f11b | Bin 0 -> 725 bytes .../0a1f21f7bcee5a153c2bb0e5f9c194a997a90426 | Bin 0 -> 252 bytes .../0a23315ff62c0ec8a48c8e45de2e6409321e4ff5 | Bin 0 -> 194 bytes .../0a485c09b9b7116c12b0c09d76f34c43aae136aa | Bin 0 -> 171 bytes .../0a5f6124c715f94dd5834b7f0117c8a367176117 | Bin 0 -> 73 bytes .../0a83be702790967e92a681ae521e34f9dcb7032e | Bin 0 -> 106 bytes .../0a9cafa9df7a5f6edb1823e7d854ac46a9b244d2 | Bin 0 -> 466 bytes .../0a9cf33434e23f6f4db4e45df315c4ec73c2a260 | Bin 0 -> 113 bytes .../0ab40fbf2b76dca836fa4fa121ca393663cc2e7b | Bin 0 -> 40 bytes .../0b0a7d16784aebbd05cf5a7b2af92f3657004d8b | Bin 0 -> 202 bytes .../0b0e0fa9cfdd30cae7823d1dcf622a2f504884f4 | Bin 0 -> 108 bytes .../0b45eaf9ca6d929c409d344b55e91f5e6e36942f | Bin 0 -> 302 bytes .../0b47f78707cf005058384cd1e7e034845b332fd7 | Bin 0 -> 230 bytes .../0b53d780e946f28d827e35ac7778d17f8bb130ff | Bin 0 -> 70 bytes .../0b6878d289eead16e8ff787fb0bb630f834c9acc | Bin 0 -> 121 bytes .../0b71974af915b2f0c6fd38bd27082c99262e7b8e | Bin 0 -> 103 bytes .../0b73ad5e360a55bedc8bd3f908692aa19082f163 | Bin 0 -> 69 bytes .../0b95252916e3788b4e49600d3646e069fad8e392 | Bin 0 -> 103 bytes .../0ba4cfd67c08eab21f1a4ef02e966b7d8a9eab25 | Bin 0 -> 73 bytes .../0bb532b810a0b0f13d473838d4f7676b206bfcf0 | Bin 0 -> 360 bytes .../0bcd6e7d3c5e1ce3d3184bc64fb37ead8de43a16 | Bin 0 -> 171 bytes .../0be07a86c0df5258ebd70442c46bbba5009927dc | Bin 0 -> 195 bytes .../0c2e96c40ae7c243fffc9825a44b00d206444b56 | Bin 0 -> 176 bytes .../0c3b829efd6c1df47d4cf903c7ea96f1e8b54cee | Bin 0 -> 233 bytes .../0c78f857acec16092cf998d8c44894eb1ddce77c | Bin 0 -> 102 bytes .../0c9cd9b8d3dbf3d31be28725f635a4ef59901c99 | Bin 0 -> 210 bytes .../0cb30cc8bb29e9ecb263f86c8fb65b3462274d99 | Bin 0 -> 132 bytes .../0cc45599f2bdce269a425cea96f7873ffba96439 | Bin 0 -> 206 bytes .../0ce33b085f7fd07e35a255014258c43ed6aeac5e | Bin 0 -> 298 bytes .../0cf2c747728fff29b1f5f58c6c0e05e07e21cae7 | Bin 0 -> 252 bytes .../0d04ce1a2c20bcb54992f345f4257155d0e0719d | Bin 0 -> 555 bytes .../0d57949067883dc35477e6ec810947ef44450e64 | Bin 0 -> 1456 bytes .../0d6a5e25c11d7f569ef579d3a4d0f3de7bc21bf7 | Bin 0 -> 108 bytes .../0d6cf32fc6ee3cec7b0807f3316c6ca2f5e9e0cb | Bin 0 -> 103 bytes .../0d813bc002fa52de02deebe0bb0fa428a1ee4cad | Bin 0 -> 66 bytes .../0da5f1e1de1727cd7555dcb9ca1a0c725ee62e3f | Bin 0 -> 144 bytes .../0df58d320f751d2dcf559f8fafedb42994035dd8 | Bin 0 -> 83 bytes .../0df9354cb689e53770b13c7b31219bcf34d0163b | Bin 0 -> 351 bytes .../0e151d71bcf4df62790cc196096eb6d0e1601688 | Bin 0 -> 50 bytes .../0e16367eceb4f5b5526e06bc7a5b55d1b53fca73 | Bin 0 -> 184 bytes .../0e1f38d2f6c55064c22525d6d143f42fa174bc19 | Bin 0 -> 235 bytes .../0e24e772929f8f6356686d362a5c6d81000a5b2f | Bin 0 -> 136 bytes .../0e27505ded1b13af4c9a60452ea1e5c8689a3a68 | Bin 0 -> 134 bytes .../0e2d32b4b3026107dfbf6271b4c29eda5ddc8225 | Bin 0 -> 115 bytes .../0e8fe4feacfe262b2e81eccb028e26f30a0ae9a9 | Bin 0 -> 216 bytes .../0e903098663ddeaa0a8cffb4cb0794687d443387 | Bin 0 -> 203 bytes .../0ea94a4329b77ac55425accc3f45e00835cabcab | Bin 0 -> 278 bytes .../0eadc19736f781636c50a9a0ac6b25bd4414c96e | Bin 0 -> 108 bytes .../0ed5d3e2df87df961cd2deb341b8e9a67209c6e1 | Bin 0 -> 96 bytes .../0ef196119127905d092568e2f4dff4ca9819f994 | Bin 0 -> 70 bytes .../0f0297462fb6410ce428cc75cb3ff96f1c3ed0b8 | Bin 0 -> 144 bytes .../0f12faf5d8fbedafbe01aac0b4bbc8f356751e2b | Bin 0 -> 139 bytes .../0f15f407a1ac27a9b189cb1985227022d227f01f | Bin 0 -> 2407 bytes .../0f457ddfd42fd5dd20fc59eae9c1371d9f274c70 | Bin 0 -> 69 bytes .../0f897cf0f5f6312eb24bdd6f702987843df0b5fc | Bin 0 -> 105 bytes .../0faec3c7bbe27664d58ffdb654dd5650e56a010b | Bin 0 -> 580 bytes .../0ff2e806b8e0557f336dfcd9a2c3f11af71d20c1 | Bin 0 -> 102 bytes .../0ffed8703f6db0aaf1fbdee67426f19868359873 | Bin 0 -> 2245 bytes .../10020fdcdb69d0b4b5600c1e476d3c7dee0a497c | Bin 0 -> 153 bytes .../10353359261f90d378d885e136c8822da559e277 | Bin 0 -> 2730 bytes .../106899ffb306c8414a01763d3641ea3d49f15f69 | Bin 0 -> 421 bytes .../106d937a6e03980521f5cb5ca1da09f668361e45 | Bin 0 -> 2994 bytes .../1086fbbfd6b30c19b6dc5416b7e90242e95ffb59 | Bin 0 -> 69 bytes .../108b064b51c763b4ad0746b36dc371ced2a1df53 | Bin 0 -> 359 bytes .../10c2c1a37537b0a61065d730ea05d8012da701aa | Bin 0 -> 112 bytes .../10f85c3d2ee49a5314f754d2f36b1b9bb10c639c | Bin 0 -> 69 bytes .../112bf82f42f7565c078c10cbacd857ce7719390c | Bin 0 -> 69 bytes .../113cc39dbe4e96e681d052a79747ad2927aa6730 | Bin 0 -> 54 bytes .../11610fedcbba0e344e28e157e9aef567f5d16345 | Bin 0 -> 108 bytes .../118f06bdbeb591043148d4e5d1ce27b0a9c9f8f3 | Bin 0 -> 1529 bytes .../11a49d50bc766e99bf0dcec52086f469a2f5f103 | Bin 0 -> 49 bytes .../11bc680cc678bb6bbb5e680a990265e615dc4bfb | Bin 0 -> 139 bytes .../11c2513261f7802865fa2c2d050b46b3928b2ad2 | Bin 0 -> 1023 bytes .../11ce8e0171a1f053a92450f2618e202e33c0e07d | Bin 0 -> 2407 bytes .../11d3d01f2c2e8294a7d1baff76819cf558b57500 | Bin 0 -> 664 bytes .../11d784f1929d0a45649bb5be9d007e3770a67b75 | Bin 0 -> 828 bytes .../11f711de1fea529eda028d72bec4fbaf52142955 | Bin 0 -> 270 bytes .../125ec7476de02df91a1b7fffcae7af02535b4a7e | Bin 0 -> 611 bytes .../129713ffde375e2a70a33c335ef12123815a6f08 | Bin 0 -> 39 bytes .../12b841b6938f6bc4ad6f9280414dc059e36e4628 | Bin 0 -> 82 bytes .../12c4887d4f77ce1f88da51c42373c1677f5fb2ce | Bin 0 -> 1004 bytes .../12cb907b48884f4aee44a0d1bab61d27556659fc | Bin 0 -> 112 bytes .../1332d4bedb9482a958e4a9ee88f0b2824ef4ac4c | Bin 0 -> 108 bytes .../1347b7e3c16ba49ecd523c6405d33fee8e9102d3 | Bin 0 -> 587 bytes .../137786a5add9ae16566d363c74a98339bf95069c | Bin 0 -> 582 bytes .../139d5e002579f5937f218cf10a73d89e8edf9411 | Bin 0 -> 54 bytes .../13cb2e6d4f20030a7dfe97256da1fbb6f06aec43 | Bin 0 -> 268 bytes .../13d2c7efc608333c80ad377f00854cc1eb477ac8 | Bin 0 -> 102 bytes .../13f2ccae0436f4625fbbea1b467afa94708cf677 | Bin 0 -> 466 bytes .../13f9cec1aabcd60730a792ee79d43cd13040721a | Bin 0 -> 260 bytes .../1411668b05f1ebea15b894317aa013ee23e0db81 | Bin 0 -> 56 bytes .../14250df0dce407c9ca1762d042f3c223bf47bea2 | Bin 0 -> 2483 bytes .../14ada392455cce4e078ac9011d65a1a0511e6023 | Bin 0 -> 286 bytes .../14fb2f67765a562023bd18e4d264088cd9a5a4ec | Bin 0 -> 884 bytes .../152d339594b5af9a0a28e045cf9b5eb845017c99 | Bin 0 -> 203 bytes .../1530fd7edbeec7869c725a18ed679e41c624ae3d | 1 + .../153fccc706e5c47b7436ea81499c8a6f986b31f9 | Bin 0 -> 618 bytes .../15509174166c9a924a5e48e12154074775b5fc37 | Bin 0 -> 280 bytes .../1568ae57a7f12f568f76b8f0057473a9b4b7519b | Bin 0 -> 104 bytes .../158e9583be2f79abf80f7282f24c723a76fde845 | Bin 0 -> 2717 bytes .../15b3290f4811f52095f53b8dbe5bfda07280c656 | Bin 0 -> 99 bytes .../15bf86750a9593c30ad1bc6c0de027c022b48d1f | Bin 0 -> 140 bytes .../15d35184a67502a0cbc45b8de19c05570aa99a7d | Bin 0 -> 139 bytes .../15d7a8f78b14422e1a79d5bdd936f78d48101cfd | Bin 0 -> 617 bytes .../15eefbe9fcc1fcf48d544816d4fe517b63363a06 | Bin 0 -> 149 bytes .../15ef439075a2c3e589aa7aa527ae9f5697304c88 | Bin 0 -> 106 bytes .../162f7fdaa63159281641a0f529b86598ececcba1 | Bin 0 -> 76 bytes .../164fb77e922240a2dd91a53d9e4dbaeebefaba74 | Bin 0 -> 2091 bytes .../1655d4709eb28ee3f4d0475c8de90a0cd9331191 | Bin 0 -> 1042 bytes .../1690d12228908395a0dbee2057af9c10f338957f | Bin 0 -> 413 bytes .../16b8bcc4d8ec930505532403d9ef82ac4cddc756 | Bin 0 -> 1008 bytes .../16c0e62840c363d445403c8c384a968df4ab6129 | Bin 0 -> 339 bytes .../16c7b668a461b4918816139a9ad3cce469a4e347 | Bin 0 -> 2338 bytes .../16ca5cde1e50ad6b0909b5bbe7b69d8880141000 | Bin 0 -> 103 bytes .../16d758b26c9a90f85223cc5e0235304716088283 | Bin 0 -> 69 bytes .../16e2f1c0d0db630d92a7aacc679c082f804d22bd | Bin 0 -> 2150 bytes .../16ea25a019063bb1ccf7b806c5c9f5e1893fc710 | Bin 0 -> 852 bytes .../16ef185c5da3d10634abdd0d2b37fc5765e58cbf | Bin 0 -> 40 bytes .../17289773390a998809f87df4c0ad828b304b17a2 | Bin 0 -> 2381 bytes .../1748e19ed1d71535cc11e7d4d3e2b95601daa152 | Bin 0 -> 1284 bytes .../180b5d8e467eaa17c97f8354c9764297d5fd2c69 | Bin 0 -> 168 bytes .../180cbb1659b9d13634580714afeb51d64712e180 | Bin 0 -> 102 bytes .../1833e1700d98ffa165ec05491e1d51e451ceb1b9 | Bin 0 -> 358 bytes .../183420e4a244ec70f35b35f5beb47d09225ebfb6 | Bin 0 -> 73 bytes .../185edb2648ee2955e8be0092b5cfe3538a79a409 | Bin 0 -> 69 bytes .../189034da51d05386e0428ff97433aef413764026 | Bin 0 -> 108 bytes .../18b1e77bd0b37d14731aaaafc5b33d108d680a16 | Bin 0 -> 101 bytes .../18bafde5a80020975ac51fc61ce4308b843caf81 | Bin 0 -> 37 bytes .../18bb987b2b56d2a842893b69482a81d593a83bda | Bin 0 -> 106 bytes .../18c1fc9726579bcb19df251b41a35c9934f1cb45 | Bin 0 -> 914 bytes .../18ee580f0036635e86777fcae1898413cb85b5f1 | Bin 0 -> 173 bytes .../190dd7833b267c8d92d3479266e3213d51bfcb54 | Bin 0 -> 1124 bytes .../190f6cb999f13a8ba278b005a33fc9809347633b | Bin 0 -> 69 bytes .../191048251f2c2e09b17745ab719f6e2bd838f26e | Bin 0 -> 135 bytes .../19181dcd992e1a7d1d33ab591d21ba60a693b8ad | Bin 0 -> 1528 bytes .../192a17d52a83eaa270acf582e9e61cb6af690541 | Bin 0 -> 559 bytes .../19389f74563061d1b6157f1f89ab4d16093de5e3 | Bin 0 -> 115 bytes .../193ab2d67563efbe350f17ce9cf473a0e0c7dc88 | Bin 0 -> 524 bytes .../194dab4253a4300ca7776e1309f931529d1d5ff9 | Bin 0 -> 85 bytes .../1952f847e548db1d422ad9ab80f1a9ff529c7a0f | Bin 0 -> 681 bytes .../195b412f8c979a39c5a20fa6e38f6064e4c135c8 | Bin 0 -> 101 bytes .../199f12346c862ac534d33cdfa126e2449f2fb304 | Bin 0 -> 2231 bytes .../19a685aac9dc4f6480eeb04ee8cfa17d3862ce60 | Bin 0 -> 106 bytes .../19b18f85e4c13b1c2c4aff0e77007a9f960776ab | Bin 0 -> 192 bytes .../19b95f88c6bc9aee7c73ad2cb314df5076eb93f3 | Bin 0 -> 101 bytes .../19bb3720429208bbf3b0f810df1c2e66f02beb26 | Bin 0 -> 713 bytes .../19be43ff2713b92a328b043d3cd4dbe4bc296416 | Bin 0 -> 356 bytes .../19c83bb9287208ac96ce3aba044791697a56a792 | Bin 0 -> 491 bytes .../19e7cfda3dad7f03203852b5b3eba69dd7a7288b | Bin 0 -> 106 bytes .../19e8fdf7cde60aaad5adfbde80ddd63dc420e7f3 | Bin 0 -> 225 bytes .../19eab4f5e394806e573c01c8bac367fdffee6975 | Bin 0 -> 735 bytes .../1a1b82f5bc63cc1726632aabd342001a6e3a9f99 | Bin 0 -> 69 bytes .../1a2b4d487f5ce01dd47f34f6ff9c5a39e68010e6 | Bin 0 -> 101 bytes .../1a4e264291647ba9af8e65803c03c74f2f411a32 | Bin 0 -> 457 bytes .../1ac596ee837462a1cb97c505ae116430a83ffe3c | Bin 0 -> 106 bytes .../1ad20d4c38e26a0b9e4672c2e4d1aebe39e9f3d3 | 1 + .../1ae963370d665e48a6961d9e88424998c0fb88c3 | Bin 0 -> 69 bytes .../1b0b7ceabc1a5fd6a4236b578742f5de7aa49ebb | Bin 0 -> 166 bytes .../1b3d48cff56a0335891bb4b61621c3d70e7a7d51 | Bin 0 -> 1356 bytes .../1b5481b66dde6ee35c80bce903d630cc3c2b5851 | Bin 0 -> 139 bytes .../1b65df661cfe121d546ba9362253e10b2696632b | Bin 0 -> 238 bytes .../1b76fd0ad1366043a1f56b75f6c87ff4f51d46dc | Bin 0 -> 75 bytes .../1b7d36ac56b808296ad4bcf1fa65eef7b8d256f0 | Bin 0 -> 370 bytes .../1bc9b6c41825ac42ce21717ad4afbc53683465bc | Bin 0 -> 347 bytes .../1be1b517d92b4d495ecd47c887d0d7c268c6db49 | Bin 0 -> 108 bytes .../1c596a3a0b033b20de20f8deba4ad83c8d84a6f6 | Bin 0 -> 84 bytes .../1c726e5ff7b037b201648e2dd403327597b5a375 | Bin 0 -> 1010 bytes .../1c7928b22e737ea5fd9720c636fe8c3a06f1e118 | Bin 0 -> 156 bytes .../1c82db6ba0cd64689a2f4daa3128908529253a31 | Bin 0 -> 69 bytes .../1cab314ed40788602a9abbb0f3180e704c679d02 | Bin 0 -> 103 bytes .../1cb5781376248984e1028512c5cdb5777d4fc6a4 | Bin 0 -> 75 bytes .../1cde4c21d886ccec58748c0d7df993a6e8c701da | Bin 0 -> 212 bytes .../1ce211f0e78de79878c1c2f26744aa9460e81d35 | Bin 0 -> 441 bytes .../1d20720b200177fd0af56cf36d492509a761abf4 | Bin 0 -> 109 bytes .../1d3b79b6b0040c3eb529d0819b55b0c8b8914dda | Bin 0 -> 110 bytes .../1d4bcefe39a815a4f323a5e5df3009acc2c3e1b3 | Bin 0 -> 102 bytes .../1d8acc57eea6870ad737ded85d4e0774b961557c | 1 + .../1d92a1890b0aac435aa0eb63697cdc4aaff77181 | Bin 0 -> 116 bytes .../1dca16d2e29e2bfb2476d153401ded8a0f50b9c1 | Bin 0 -> 226 bytes .../1de28f1e1b6d8f703c99a2846712d9e63a1e6155 | Bin 0 -> 162 bytes .../1df08a552acca9caab5ef72c1b39184c26981a50 | Bin 0 -> 108 bytes .../1df6482dbec92e60541dbb58d6819cf519c00cda | Bin 0 -> 179 bytes .../1e001b058cbf8a551961951384d42da41971fb72 | Bin 0 -> 85 bytes .../1e1de04d68b75e3a1415ccef3371e9bb72b99f9a | Bin 0 -> 491 bytes .../1e257a9aca2ce3439a6e83188e56c9c6416f969b | Bin 0 -> 103 bytes .../1e3ba081980c7474a300b5608fd0c5abf9d45db0 | Bin 0 -> 108 bytes .../1e5bdda85a505648439ff41ac23c33d5cf6b0ef7 | Bin 0 -> 1218 bytes .../1e5e4774fba88bf5d28f2a6e08b11ad2ebde47f5 | Bin 0 -> 3232 bytes .../1e75f08c8fdfdd5ec4bb70eec4f236e77b3f3c49 | Bin 0 -> 136 bytes .../1f09cdb2f36a27faa3215a482922d0ddd171fb30 | Bin 0 -> 69 bytes .../1f243de603023706b356a1c202396c890b931d5a | Bin 0 -> 835 bytes .../1f47ab0e8c89c4505faf634959468b81e58107d3 | Bin 0 -> 3203 bytes .../1f491b62170a646d98a0d5747939b46f2772fe71 | Bin 0 -> 78 bytes .../1f4e8530da7437fae1266020f6fe48febf0007cd | Bin 0 -> 69 bytes .../1f7217e98aff28adbc22ae15da519b468806d9ce | Bin 0 -> 106 bytes .../1f9065e1fa9ec98fe4ba0b3f48c4936687a69e4f | Bin 0 -> 106 bytes .../1fa57f9f404b031475b678adb8d5b58ac93beffc | Bin 0 -> 363 bytes .../1fb4aa3a057a008d92b9a42de0b081e009f7dcab | Bin 0 -> 69 bytes .../1fc76076c283821acd06cb51d2bec0cb40841775 | Bin 0 -> 913 bytes .../1fe52b716c5d1f12064976beafb3f4c70fefcccf | Bin 0 -> 108 bytes .../2024efffb9c49434d8893ba644d45dd77931363e | Bin 0 -> 1024 bytes .../203167cf6a0ab546f9376abe90aab7843600ee22 | Bin 0 -> 46 bytes .../2057a70c4bb533699c469d33ab4953200bf39183 | Bin 0 -> 624 bytes .../2064fa04451a270836ce84717b7560d9b46191e7 | Bin 0 -> 138 bytes .../20a6a5b02f865bcbcf9917bd84384c18cb6370c7 | Bin 0 -> 106 bytes .../20b298482c5928c3de0d9ee2cc045eec2fc98810 | Bin 0 -> 112 bytes .../20b34f745ae491df455949031b534e4af7a8fa3c | Bin 0 -> 1029 bytes .../20d484f3139ac254c92b40b6f3375b3a5452ead4 | Bin 0 -> 108 bytes .../20db24304c5de28bb68109c0365d7c690d0da989 | Bin 0 -> 73 bytes .../21318c1a2b8c7365b1bf7649c9ec0f3b79e50a27 | Bin 0 -> 103 bytes .../21550a35b9b0025fdb52e878f389d79caacae33e | Bin 0 -> 69 bytes .../21684e5e2d68246e4e674db92544a31c778a63cf | Bin 0 -> 44 bytes .../21716e33b4ee3ab55154b72e1cfa0e2145e3c561 | Bin 0 -> 106 bytes .../220e94d92ff849bab5ce93b251e34a2377b503e1 | Bin 0 -> 630 bytes .../22319cd6f55d76f5bd2ad557d53c38a181185510 | Bin 0 -> 69 bytes .../223edd321605b2a814a42ef7bcfddbdc7d6de6b1 | Bin 0 -> 82 bytes .../22820aaac73f83bbd2e51a446677a68210cd2abe | Bin 0 -> 226 bytes .../22964ffcca595066641ec08ca797ba4fb61b2626 | Bin 0 -> 325 bytes .../22ba06644742205b84c5edb64a828c6c2ff9fe53 | Bin 0 -> 1991 bytes .../22cf9894602eda1a399027e2c36986aa5f37f541 | Bin 0 -> 102 bytes .../22d276898acc2ef6fe03f8e92d3970d8c5a9c0fa | Bin 0 -> 112 bytes .../22d88f38377f5a29624de95ad24187d0b7f2f822 | Bin 0 -> 2527 bytes .../22e706b61599b63012daf28576fbbf951c06fb2f | Bin 0 -> 244 bytes .../22e8328ac63816abed85d1c30e12999cfbf0b2a9 | Bin 0 -> 172 bytes .../22eb4071735ba26425b0ed9e7e9ecd9c3b6b36ef | Bin 0 -> 109 bytes .../22f3d21f1de355398fb28e60af305eaa0d3def1c | Bin 0 -> 2019 bytes .../2313e4928dde8c50a69f5e98c91dd82f62679354 | Bin 0 -> 206 bytes .../2348a7177c749a58c82c40db51fee5dcfc9b2bfd | Bin 0 -> 404 bytes .../239a453aa1df476a83b8b34480ba8a741f0bb6ac | Bin 0 -> 384 bytes .../23af973f0a19010fe3e341052c6c6958ebc788d6 | Bin 0 -> 69 bytes .../23b5ba1837a9e8033bbfae75a9f0035cdd3005b8 | Bin 0 -> 201 bytes .../23bf4e0b5d758f920fd11106e5543639bbf865e4 | Bin 0 -> 581 bytes .../23d7f6cf0e85ea06af8b3914c8dd2ff41bb38b24 | Bin 0 -> 74 bytes .../23eb335737546cbcfbb12d0bad97af4abc31d4a4 | Bin 0 -> 995 bytes .../23f0dc1a2d2e9531bdf2b50b8e3f4cc6564ff11f | Bin 0 -> 39 bytes .../24066e9de96bd46630d07606ac12b8acc3a5a050 | Bin 0 -> 525 bytes .../241be221f09d0a69e929da58cc1198dc7f7d8446 | Bin 0 -> 113 bytes .../2423e0cee389b740112a04a935a28b5da664dc66 | Bin 0 -> 79 bytes .../244fa9f5c80e78a3b3b2b2f4259dfc838abd803f | Bin 0 -> 110 bytes .../246698c04d8849dc19e8a103928a53f5006a044f | Bin 0 -> 422 bytes .../246daf04584b1b3a3b3069215f2e3b386eed7630 | Bin 0 -> 131 bytes .../247c682f37063541eebd05e45f8b590f0d2d8442 | Bin 0 -> 42 bytes .../2485ab2cdd6337d7e3157ed5a4780dd7630464fa | Bin 0 -> 359 bytes .../24e5e89131727595bba3ad7abd10a735f0791683 | Bin 0 -> 69 bytes .../25055f92a8aaaa223150ab4eda6754ead23fec6f | Bin 0 -> 164 bytes .../25297ce21678042b03d55b3162326f3409903ee9 | Bin 0 -> 1163 bytes .../2596b607e7f3e2c35331a6bae16ccbf436d8eb9d | Bin 0 -> 467 bytes .../259c4e5e079300b8b3a059c4ea5a9c3e8a6f5513 | Bin 0 -> 120 bytes .../25b0c0b4ae8dbca7e3455401be9f534e0afd8717 | Bin 0 -> 390 bytes .../25c3d2aafdaf53d5cfe45a36bf927c58f7986a69 | Bin 0 -> 218 bytes .../25c5862d2d7fc0ae1fe4704613b9f6e0ac8d1b0e | Bin 0 -> 69 bytes .../25cb6d57cfe58d83ef4bcc4d5327f185d5c50971 | Bin 0 -> 102 bytes .../25f63d41f5aa30bea23374d2f98bd2fb5bc6e330 | Bin 0 -> 134 bytes .../25f71c075445f2ca32f378d9b73a99043fb7299c | Bin 0 -> 633 bytes .../261abd3920c9848bb7e27d132f56396ac71e81eb | Bin 0 -> 98 bytes .../266d4d8456fbe6e9492ef131edc18f08e92ad969 | Bin 0 -> 2355 bytes .../26bd241443c6ca63fb02587e96e7f56821f616be | Bin 0 -> 134 bytes .../26e5d99c26ce43fc432883c50ff75fcdd8f0e9ab | Bin 0 -> 48 bytes .../276c148ce886ab053d55dc7a45b1ba2089608488 | Bin 0 -> 48 bytes .../276cd356df9685144bc41ed78d813e6421fd96a4 | Bin 0 -> 247 bytes .../278880f708e854f9b7669ae76dfa4221f98ee9cb | Bin 0 -> 3173 bytes .../27b247b75feab9765414a16e7e94de7bbf7397c3 | Bin 0 -> 69 bytes .../27e9eb505ac8401904ee7ff4d9a34eb3f873afe5 | Bin 0 -> 114 bytes .../2812717d79d66037931c0d8b3092a892842ddaa7 | Bin 0 -> 100 bytes .../28485ae79b2ff5ca3dbd31e514a0ced95e8045ff | Bin 0 -> 50 bytes .../284f3000a725d125cf1d65db2d15cc2d92860f14 | Bin 0 -> 55 bytes .../285ccc5acf8c016da64fd33ed910c2320d385050 | Bin 0 -> 102 bytes .../2870bb659278b0907ea62fd38dd1fff5df58069c | Bin 0 -> 106 bytes .../287934ac53e229708f5caa467cf905ae6dcfff76 | Bin 0 -> 166 bytes .../288011eea6ae35fe9017fada0d235a66120adb35 | Bin 0 -> 99 bytes .../28a6865768a7b43ec593b1d8ee4933c78e0562e9 | Bin 0 -> 466 bytes .../28aa8de4a01317db99d4baf57e41f582424e9a90 | Bin 0 -> 466 bytes .../28b080f54b1d4323e2bcb2d4d64dbe68c74bf840 | Bin 0 -> 92 bytes .../28b4b75d0fba962051d25e9ca6db1a2c870e39da | Bin 0 -> 465 bytes .../28c304f04cc35c1d67d97210fc65fa99c6b0c3ac | Bin 0 -> 104 bytes .../28d63e980c334119aefe2ea928b3e4bab4834ec1 | Bin 0 -> 116 bytes .../291e958f82465146816cfe86d7964796893911a3 | Bin 0 -> 251 bytes .../296f1aaf63c1ed2099da363e718be68a2d67f1d1 | Bin 0 -> 1059 bytes .../29704b3d9b9c0645c1320d852ab1beea871a1ca3 | Bin 0 -> 1228 bytes .../2985d508c0f8f374504ddfc6786eb21934aae32b | Bin 0 -> 71 bytes .../298f69b74788cf92817b9f2395f5383a18b148d1 | 1 + .../299218026c0e3f24bb8f7ee7a3e5bbab4013a438 | Bin 0 -> 1327 bytes .../2998e292991fc5c2abd7dfccb2f497b6f2aca0bd | Bin 0 -> 136 bytes .../29a13021ac5be7f0923f25b1fffc37a5d33e1cbf | Bin 0 -> 957 bytes .../29a62d158c6ba4f9736219bffcb7d103019406cb | Bin 0 -> 149 bytes .../29c9b1c37e16b9fab789366a57efaea4b694a3da | Bin 0 -> 102 bytes .../29fd5570888006939e71a86bbc0201742783adca | Bin 0 -> 3150 bytes .../2a0979e8d583541d1437ff3f6f10334606a24588 | Bin 0 -> 491 bytes .../2a57659db0b59c22251257abc75e07f3ad71b746 | Bin 0 -> 426 bytes .../2a9137d8bbd841e49c09cf835c3725f44465fa6a | Bin 0 -> 180 bytes .../2aa08ae64041b0afe24a0722f9b9053ed2a5cdc0 | Bin 0 -> 599 bytes .../2acb3dfc6d7857429d3a277ae413af55afefdee9 | Bin 0 -> 665 bytes .../2af0dab1f33551f7022e6da7af7970cf73c2a2b1 | Bin 0 -> 408 bytes .../2af1c5d0d5347c8d540f726d402816153ccc9981 | Bin 0 -> 208 bytes .../2b0eeaba194b803783b311c0ad77403162c39d51 | Bin 0 -> 105 bytes .../2b3444a8e868a2d2264a075e9dea23c42db723be | Bin 0 -> 2647 bytes .../2b703c0e974c7eed7640d4abc70f40d935591a33 | Bin 0 -> 100 bytes .../2ba839bf04327768140748b8bfcccf9c72100ebf | Bin 0 -> 144 bytes .../2bb298d1f0223998820582ec7b67fbfd0f6040c6 | Bin 0 -> 274 bytes .../2bb3697dc1c419b5e940eb5acf2951f49006fad4 | Bin 0 -> 738 bytes .../2be7c75fa6ef71a1d75907e4c68dbdc8b9c98501 | Bin 0 -> 1232 bytes .../2bee35c47df46ea0217d0c6011ad24e8fca4e124 | Bin 0 -> 1003 bytes .../2c118bf269688e7562987e20964d5861de9bb517 | Bin 0 -> 408 bytes .../2c22aa93fd640cfa4ed55e48f93af608f978691b | Bin 0 -> 495 bytes .../2c2a4bcd3ca4db18b35c8608a74a4b02c2476c27 | Bin 0 -> 115 bytes .../2ca5b5ea23724a9aae48dcf587bbdb93f5647bd8 | Bin 0 -> 100 bytes .../2ca79063c49122e0f47e397c3d9e79c993d666c7 | Bin 0 -> 11 bytes .../2ced2f6093d5e4331730cbf9d88d766229f9cd3b | Bin 0 -> 102 bytes .../2d1a23f3862d9280ff671fba2070923ad6e1947a | Bin 0 -> 166 bytes .../2d4242afa49b93a6225225692ca154c3e45724d5 | Bin 0 -> 211 bytes .../2d581bb7c0a36182032532922f7e5699793337ca | Bin 0 -> 516 bytes .../2d66ac9504561c6a0f844138e2b4d52418c67f80 | Bin 0 -> 1117 bytes .../2d71aaa244448b9f4cc5d055953855d0d85fae3f | Bin 0 -> 106 bytes .../2d843e83cfefd6a8a7ba872d4062f974239cafee | Bin 0 -> 69 bytes .../2da6fe9966c981144a9dd5d39e5bfc7f300476ed | Bin 0 -> 68 bytes .../2dae7e025ff6cdb13331958ec792bcc85e00f2e5 | Bin 0 -> 411 bytes .../2db9dc6a54e6a1129d9092eb324401741b9d24eb | Bin 0 -> 172 bytes .../2dc75a74bf59fd36e1d17f4eab639b4118365114 | Bin 0 -> 217 bytes .../2de31f9b6d02c301449a79e5384b485d9d225223 | Bin 0 -> 69 bytes .../2e32dee727385859cb50fd99e8f5352c8016c2c5 | Bin 0 -> 128 bytes .../2e4dd57095e0aab0b275de64702c69a40db96c50 | Bin 0 -> 66 bytes .../2e50d0db4befbd9dcc3fbc8d1cf208e6cc2033ac | Bin 0 -> 103 bytes .../2e5e64528591a41347878d9925d1fd241aaa4139 | Bin 0 -> 108 bytes .../2e6088c241d4a37f5a95f5b9d6065c60e44900ee | Bin 0 -> 2117 bytes .../2e750f93090aee0bd4f31bfc34e39f500de73443 | Bin 0 -> 172 bytes .../2ea26a0c95bb875c408aa17e0f53b7c88c2b27fe | Bin 0 -> 106 bytes .../2ed032b963bb50e8a84a8820339b445392d08d46 | Bin 0 -> 140 bytes .../2ed038f5938825b41af5e044b4a49d176ed1f49f | Bin 0 -> 195 bytes .../2eda5d98220fbce3961573534a46f62ba02c7a47 | Bin 0 -> 109 bytes .../2f1995d1e57bf1c3247bcfe75e58b6cc4ca4a78d | Bin 0 -> 103 bytes .../2f1d370325c03f3d4ab53b75ae6e67516e6f987a | Bin 0 -> 108 bytes .../2f24d59e4afa404d79970b52e52530615b081c4b | Bin 0 -> 36 bytes .../2f3c8381e242e9b5f8a240ab4f3dd4f301f68363 | Bin 0 -> 326 bytes .../2f7a4bdd939fd227395e8b2e8a719fc835c08093 | Bin 0 -> 119 bytes .../2f7d3e7ca82d9c31fa362970c73f061067711165 | Bin 0 -> 738 bytes .../2f895aecf72f4c9227ecfb7451d6f2959c056a23 | Bin 0 -> 66 bytes .../2f9e9e3f2a74aaef978b51fa50b2b38af0d78da2 | Bin 0 -> 113 bytes .../300c545f97f160d32ac5c3c17b2cba0b75942c0b | Bin 0 -> 404 bytes .../301c5d6629e0a595690f459eeaaf37260e8d9499 | Bin 0 -> 458 bytes .../307a33742ee217ffe6c44351d1df18a910553cd4 | Bin 0 -> 69 bytes .../30e489610e3e71cb4534b9ed62a3375c203e9478 | Bin 0 -> 115 bytes .../30e9ee869066f7a79dc0fbefcf0fc18c37423813 | Bin 0 -> 216 bytes .../30f41ac83e042820e3738a44464f82d2fd7dfb48 | Bin 0 -> 139 bytes .../30f9024418bf8fc9d03a330a1ffa271cd57842c1 | Bin 0 -> 139 bytes .../31159657c8497099fdb8de9c3464691faaabcc2e | Bin 0 -> 767 bytes .../311eb84e6e831a361c7bd6fc2c683d6fefb3e7d9 | Bin 0 -> 209 bytes .../31639931451c559a9f8b5fa5a06869b0efc9fabb | Bin 0 -> 191 bytes .../31687b4405707ccd151394799ad0ce56ecdee2f4 | Bin 0 -> 102 bytes .../316ec5aeebb16f90f3b3eca41fea3073d100c588 | Bin 0 -> 112 bytes .../3195e8a4f141a82ff4ba3c534d022e15d3899799 | Bin 0 -> 174 bytes .../31cd11b914233dc41e2a8f094b77806d3886a898 | Bin 0 -> 165 bytes .../31fbf723caa4b5ab8c13eef1ab28a5af9a11b252 | Bin 0 -> 621 bytes .../321d0e9ffda61ba4e7f602b55ce88bcaad4bfe4c | Bin 0 -> 216 bytes .../322bab4ee1290c088af091695f09dda8f4a9c9f1 | Bin 0 -> 185 bytes .../323a81ff8759bce599717f6c66abd08ec47fb862 | Bin 0 -> 36 bytes .../3263949e1fae15f5ce342db9a78686ddf15151c5 | Bin 0 -> 106 bytes .../326728a546ac69adadd16535fa502a868c73e697 | Bin 0 -> 394 bytes .../328cf115bcb5e0abbaa5ff19e0f3f7664675d9cc | Bin 0 -> 1582 bytes .../3296e4620adf468afa30b02ab06f8b85e4c4ba7c | Bin 0 -> 1124 bytes .../32e5dfb5b0c33918722f7387b6f07175bd94a2a8 | Bin 0 -> 209 bytes .../33024c2d4c3b16db6ba069f497c20d1fe4c91fbc | Bin 0 -> 132 bytes .../334027b721576a743b67e98448ce3c5baa28897e | Bin 0 -> 139 bytes .../33547a3ec1c8c2a903c017f5e606badb1c7096d9 | Bin 0 -> 119 bytes .../335ddddde8eb1d243e9ab8df35ede4f8f834532a | Bin 0 -> 386 bytes .../33675e431250a58dc5880fbd65959d539808b81c | Bin 0 -> 139 bytes .../3392d5b4715288bdbb8f7979934beb4666c5032d | Bin 0 -> 1163 bytes .../3395595affc65d089707d441e2e25bd59cd6094f | Bin 0 -> 270 bytes .../339807e232d08bc40283c3b86378ee2cc139572f | Bin 0 -> 110 bytes .../33aa508cde4c11f0e4b71ef0cfabe8ecea0bc96e | Bin 0 -> 169 bytes .../33fe01ec2404d54d0bac1b2fb226221e94565b67 | Bin 0 -> 197 bytes .../34548ccb26e68f61c5bbaad4828304fdbcb972c9 | Bin 0 -> 280 bytes .../3457d577bc46c48886ebc1d8991c66591852d5eb | Bin 0 -> 103 bytes .../3459c86c8ade3b5dc7e52d3777da32360aa73d86 | Bin 0 -> 108 bytes .../34dd104366c79eaa63ef86c655e4d99360701637 | Bin 0 -> 241 bytes .../34e2e4748a7aaf8d10f8537525a06b0cbcf0f273 | Bin 0 -> 49 bytes .../34f6cc92ad5ad78d8ea36663ef08c760d080ac9a | Bin 0 -> 87 bytes .../354f8cbe60938f87c8c6990673eacb81836ed667 | Bin 0 -> 106 bytes .../3582246ca057c6a5c7737eec0715377eac1e14d8 | Bin 0 -> 2447 bytes .../35924cb6ba0dbe20ed96f6159f9496c6054a86be | Bin 0 -> 69 bytes .../35c34ab216412ea97c89a8d5618248601a8fb5c9 | Bin 0 -> 102 bytes .../35d2502327c6844ba4b9626b29a42dab1ca263fb | Bin 0 -> 39 bytes .../35dfb1e8ccb3aed1355b3cf3a88c960007b34bbd | Bin 0 -> 120 bytes .../363a17ee0ea87ed4a68a1bff23a5c170bb6bc0d7 | Bin 0 -> 234 bytes .../3642bff3fbfd91d0e756b44adb772f641de00d8a | Bin 0 -> 84 bytes .../366864e1c74b6641d235e313f817a85c10c31579 | Bin 0 -> 3427 bytes .../36e81f478101cc90267ce6cd3bbd98dbd01e8420 | Bin 0 -> 551 bytes .../36e946a964dd86881ad9b5f65edcb36dd9d9621e | Bin 0 -> 103 bytes .../36ecd5e6c48d02d9d78a933b76d1cc9bad0e55b0 | Bin 0 -> 2116 bytes .../36f2c2f608b4e348b61afaa2eb33671688549d6b | Bin 0 -> 106 bytes .../36f3fa3ef9e7914420c4971c63acc00a28e61c7b | Bin 0 -> 79 bytes .../36f98e764fb70a30aa6fe7e449190f9933a9ef6f | Bin 0 -> 1118 bytes .../36ff0852525ec8f7a8d3ac182bd72d6b14dcb8d3 | Bin 0 -> 132 bytes .../3731399a2b00a9362fa9395dcaafba38db8d1a11 | Bin 0 -> 79 bytes .../376fe3d3319a81e450cc836a8ecf226b6fc89813 | Bin 0 -> 77 bytes .../3777ffa7f5f6d0a6214f0c4914f48d16f3d1fafc | Bin 0 -> 102 bytes .../379ecc803c96c01cd666d5ae011d680a40689022 | Bin 0 -> 2861 bytes .../37c9f12b0dacae45dd089c567b83d81083533da9 | Bin 0 -> 110 bytes .../37ccc956fc98abc2bdfd1c898917c7d1bd126d6f | Bin 0 -> 150 bytes .../37dc70c7835a687490af81c9b7ac65aaaa69ea79 | Bin 0 -> 112 bytes .../37df83e8c6105d9e19f7670a731e89d1b8926730 | Bin 0 -> 139 bytes .../37f46006e3bdb78933beb43857eb91b6b2f822c7 | Bin 0 -> 73 bytes .../384722b39d0cbc498257d71accd00bf3771987bd | Bin 0 -> 103 bytes .../38474d73c748bf8a3e6b7c4942715bbe2ac0cfd5 | Bin 0 -> 1028 bytes .../3851ecc2228386a9f2397ce4a6b1062f7e968012 | Bin 0 -> 178 bytes .../388a3d4a14ab2988100ebebc55b9fa01f25eaef8 | Bin 0 -> 103 bytes .../389e74ba8d33356e11bc156fdcfb78e8ab87425c | Bin 0 -> 593 bytes .../38a2be07779a39ebaa16b676a9dd075c1ac4be35 | Bin 0 -> 182 bytes .../38b8cc94e5b7b0579db60ab32fc379d960ed9c93 | Bin 0 -> 92 bytes .../38e495437b0489074df62ac0e9c80fb8ae20b902 | Bin 0 -> 102 bytes .../38f9ab23eafa3172f5d997c0709115a9819f30d5 | Bin 0 -> 241 bytes .../3915ba54ef9cb376c3de9c3a6643b104ddbdac51 | Bin 0 -> 54 bytes .../3942771f68f432f704d3b57171809a4a16373b1d | Bin 0 -> 1172 bytes .../395deb37b57ba0bf27e65a4706d9ae912f887984 | Bin 0 -> 1148 bytes .../39708ed68d0d9b8021f7fb329e5e8481fc425b1f | Bin 0 -> 491 bytes .../39722794ff193e45909718eb2a478ac3e3274898 | Bin 0 -> 139 bytes .../3998ed85c4361a20be1a98d07b072223194bddb6 | Bin 0 -> 120 bytes .../39a5dc856caeb933e18fcee23b89c2c6949287c3 | Bin 0 -> 69 bytes .../39ac63bbc3262157ee25140961de3d027dfd460b | Bin 0 -> 164 bytes .../39cd4184fe91b6e094078cc42f6251cc2b01e097 | Bin 0 -> 139 bytes .../39df87ce18a963080e1ff6a19dfa5306c8e7c251 | Bin 0 -> 148 bytes .../3a13bc0c12d1f5e485e0ddca176e3a587e2a1fab | Bin 0 -> 52 bytes .../3a3c08bd4e1bb5107a4ac4ec6458f876699fdfd5 | Bin 0 -> 220 bytes .../3a4ac91d10b7258c53c547a53d00211d55078059 | Bin 0 -> 105 bytes .../3a78363ff2e86b505afe11f8e66433afa06b7f40 | Bin 0 -> 197 bytes .../3a9433d99a985eac8383a83fea07cb5b64257070 | Bin 0 -> 184 bytes .../3a95e6d99099003652330f3e02bce38016224beb | Bin 0 -> 552 bytes .../3a970316106f6c1b35d8f9d5f3e146c2112f14a5 | Bin 0 -> 632 bytes .../3abe683987a7d385ed4976d5c2733f50bca8d5a2 | Bin 0 -> 228 bytes .../3af86afa0cea1dc18159b6a3090d15b1787914f6 | Bin 0 -> 373 bytes .../3b10e09d3fd23deea69b0ad02423772b41a7eea0 | Bin 0 -> 513 bytes .../3b3ec9193d98ddc5b68f9080e4644a57cdc3434b | Bin 0 -> 267 bytes .../3b40fa26ef8d2efd89c7485a7169f8caa153cb81 | Bin 0 -> 103 bytes .../3ba6ebc2d5753118c4e8623aa7138470ffccf7f2 | Bin 0 -> 76 bytes .../3bc1ee34a43f22d79553624be0198b945020db01 | Bin 0 -> 108 bytes .../3bd120c9c543c838739a7a11e7203be29cd5f6d5 | Bin 0 -> 2680 bytes .../3bdd0b395cf4e85b9f9126ac449c8019d2ed05b2 | Bin 0 -> 175 bytes .../3c110c2ada493eaa4a3aa4be5c66f9e3f98aee5a | Bin 0 -> 146 bytes .../3c4bca2dcb7ec37c795be89744956dc098424e2b | Bin 0 -> 92 bytes .../3c53ca7f1515bfa6ac4da2758342f01943d85dc1 | Bin 0 -> 183 bytes .../3c66c6cc5aada6e33563fc14af3a52e1862462bc | Bin 0 -> 589 bytes .../3ccbf6fc3cbc8a832320011b1d6615faf6c2b832 | Bin 0 -> 115 bytes .../3cdaad14bf1228cd114e78fd4c8d9abdb1b0b8a3 | Bin 0 -> 1649 bytes .../3d0b741123a9c155718ad238791e177b3e734456 | Bin 0 -> 83 bytes .../3d18decfdd2aa7c608969f3b117c0ddb3a516cfa | Bin 0 -> 173 bytes .../3d223cb01f3463cd3e3ed7b422b1da522a17b29d | Bin 0 -> 1363 bytes .../3d275cbc3a9d8483c5a3c9344ee92ad6624f258a | Bin 0 -> 217 bytes .../3d73a879a78a074c651609b8eeed69133c351bf1 | Bin 0 -> 185 bytes .../3d7615c2c1d058eaec88b26db15c6a6400b8e12d | Bin 0 -> 216 bytes .../3d82ce853b6cc3ea62e2edbb69bb8af3340a18ba | Bin 0 -> 468 bytes .../3d9e73f99911b53a65ccc0af00699a9c1a60b103 | Bin 0 -> 3134 bytes .../3d9f8c75e3aa2a79f9b56aed46ec3c4eb695bcd3 | Bin 0 -> 116 bytes .../3dac9c7e9d9df3e3df60a2a045f7629e7ea19bd9 | Bin 0 -> 108 bytes .../3dc64a53c5888217ce40fdf659cf4d3925dc91f4 | Bin 0 -> 112 bytes .../3dda8a68d3fff33d141a7ebfd5101e2fd7f19489 | Bin 0 -> 99 bytes .../3e1a394fa18fe58a522b874cacf9afa093345879 | Bin 0 -> 738 bytes .../3e334e58f7c0a6193122088cfc3d45d87f481d64 | Bin 0 -> 149 bytes .../3e44ff8f35e193f7b7fa0e1831dc37cefaa4de02 | Bin 0 -> 144 bytes .../3e8b1c5a3088257149e28a9e485e0ba82ab628db | Bin 0 -> 492 bytes .../3e9e8ec251dc7ba7c255e8d23c99c0643468233d | Bin 0 -> 1357 bytes .../3eb0759adda77c53acce357222fdcf2053313094 | Bin 0 -> 237 bytes .../3f0d4db6e8f1b652dfc87aaa7adef1982655ccc0 | Bin 0 -> 489 bytes .../3f1349df4a14cc4d102b2583fecdd9082ce76081 | Bin 0 -> 140 bytes .../3f687d2e945375117d0a2b1caecd4f8c6e6d83ca | Bin 0 -> 458 bytes .../3f6ddc51c3619404b9e75f72fd112ec5a76fc64d | Bin 0 -> 294 bytes .../3f9ac80a27a5cdc533592f2435384f11feca27b7 | Bin 0 -> 108 bytes .../3f9f73ce36478867a4605a96694ad1ac58568b8d | Bin 0 -> 153 bytes .../3fb546812bd87b53fe9c8bd2fb8d4fe5f55b088c | Bin 0 -> 502 bytes .../3fc0df015ffc9d645d8e8a217a0b97e0670cba21 | Bin 0 -> 637 bytes .../3fd5193a7187cb18463bf8da4f4c842f314d5995 | Bin 0 -> 203 bytes .../3fd78ce33b5b209035ba45ca19e86442bf50ecf6 | Bin 0 -> 40 bytes .../3ff19c57ca1f3cc01876498b0a953273906dbbdc | Bin 0 -> 139 bytes .../3ff51948d3d4d45f4ebd06f358edabbc5b7b9591 | Bin 0 -> 458 bytes .../3ffbc29ca6b05a807f47e3fe8b801f024af6baa7 | Bin 0 -> 3133 bytes .../40329c2dfd0b5557ddad1426bb978a1f6ac5d3d4 | Bin 0 -> 209 bytes .../4044f02ae152b5586847f90572fd0213a0e02273 | Bin 0 -> 2146 bytes .../40458548157c8bd0cf6f4373d3e084a9b6e4fd5e | Bin 0 -> 1256 bytes .../4055d4180d2b5209e04a111dfbe6206c6b327797 | Bin 0 -> 195 bytes .../405ed43ddaaf49f883d26ffc462dbc7429ce8b00 | Bin 0 -> 136 bytes .../408d40b64b3c54d7d1ab7c510b5577007ea49b1b | Bin 0 -> 156 bytes .../4091f2765b6198e354d89934aa10a5a0123639e7 | Bin 0 -> 3632 bytes .../40aecdc88b99221f72b23e9e2eb43bdc717e45d5 | Bin 0 -> 102 bytes .../40c960d7a807e01bac5411dc8584842e50aca3be | Bin 0 -> 54 bytes .../40ca56e9bbba92657a7bd8084de43e29bff2ea37 | Bin 0 -> 72 bytes .../40dfbf10224d335a28026e0eef1656d4a40505ad | Bin 0 -> 229 bytes .../40f286c2fbf58efd5466f2db430fbf7494614be9 | Bin 0 -> 103 bytes .../412720548a693cdd970c50d2a44e5ccc7602db9c | Bin 0 -> 1354 bytes .../413106b9dc73ca31bdfecd23057e468e374c2f31 | Bin 0 -> 169 bytes .../41335e0c82bb96a952b1bbfa0c1f00df10fda809 | Bin 0 -> 136 bytes .../4134fcf90e7cf994669dc6acea4ecc1bd503d2cd | Bin 0 -> 108 bytes .../41584e3427ac6221f95e05d0a4a4d7e3055a240d | Bin 0 -> 99 bytes .../4186b85c4506bba256807c212d3e182743c93181 | Bin 0 -> 102 bytes .../4194d4f0bf534533aaa17f26b09cdf7f12553fb6 | Bin 0 -> 3123 bytes .../4196c508d14fe694df32f8204e3d2999f665da6a | Bin 0 -> 233 bytes .../41a107ed47ca1cf0fccd6be4290d840d6ff56684 | Bin 0 -> 199 bytes .../41bba768406de331145bc73184616283a6c21435 | Bin 0 -> 139 bytes .../41eb38f14e8b574a8843608940ad38a261f05168 | Bin 0 -> 308 bytes .../41ec92787063926df8944fdecefaf53fe1a7b5e5 | Bin 0 -> 69 bytes .../41eefbb789679b53a64f6626494d219f1430f879 | Bin 0 -> 374 bytes .../4206806f2d00c457ea5de97e66e55c6de6ffb89e | Bin 0 -> 43 bytes .../422488058b968a30cf7764d28d0ded8c1bf8449a | Bin 0 -> 86 bytes .../424b964fb6a4d92e4437d3110ae7698a7c9688fa | Bin 0 -> 136 bytes .../4256e705a385c38f2784695a200d16c542ac4a4f | Bin 0 -> 36 bytes .../426f5a6d1afbe4ce58a91cafa0529025ccbd075e | Bin 0 -> 152 bytes .../42914883e1e41c0835e439cbec407a8c81153fec | Bin 0 -> 108 bytes .../42ba9f5cdfb4bac5fbc46b9290c4d379ddbebfda | Bin 0 -> 1680 bytes .../42c04f4949f6accdb425e809024b0fa34f91f32c | Bin 0 -> 138 bytes .../42cc9a350b9d030354e8f34b217062cb7d6a12b5 | Bin 0 -> 70 bytes .../42f8549e216d4fc4fb83ec37f4ef82e8d1804270 | Bin 0 -> 42 bytes .../42ff558e612d32805292e10e0d5588aff9ebfdb4 | Bin 0 -> 1066 bytes .../4311d53ab583253003762d5c6df248d9ad0b960d | Bin 0 -> 138 bytes .../431f6692d5d3b59cd7a4abf3f85e516309faaf23 | Bin 0 -> 894 bytes .../434b3aba4fb23b0a1dde7253ba6ce2e5b941280b | Bin 0 -> 647 bytes .../43620b48bdc38c25d3301b1ee5f42aaa9fa22458 | Bin 0 -> 739 bytes .../438a00f2bd6fe62fd7ecaf1d01add57dd249b5d8 | Bin 0 -> 146 bytes .../43a04de428dc347375915abd1f32c95b14e07b9c | Bin 0 -> 139 bytes .../43a7dac2f22ed58d151d379f1a69492d15c4e4ec | Bin 0 -> 108 bytes .../43ab74cc4f5ecacf3a38572f954ed0388ecfd83c | Bin 0 -> 147 bytes .../43b16532811ba3ce84bd06113126a8e6230bc4e6 | Bin 0 -> 801 bytes .../43c65bc15f4c93adbb6bc2186d02d6d96946ae4b | Bin 0 -> 116 bytes .../43ccd4b004b8eba10b7981b649f41c212c7aef14 | Bin 0 -> 144 bytes .../43d0462689d206942c50b10018c5f2667afcaf9b | Bin 0 -> 73 bytes .../44268627072b273b31866855e3d89a46db4c5993 | Bin 0 -> 141 bytes .../442e7ba06aed4a44c6c60743ed6263a4c154dcc8 | Bin 0 -> 191 bytes .../446fbac27ea656dec4a21c616db79a6c45487ee3 | Bin 0 -> 104 bytes .../4484889954c72cdccaea7a64af2a633d6efd9e82 | Bin 0 -> 142 bytes .../44be8f2ae55fde174ac024caa7ab85037c4c6700 | Bin 0 -> 99 bytes .../44ef353cd648470e438ce3405416d834dd75eece | Bin 0 -> 98 bytes .../44f08b3d0f7edb74975426e4cd064027a885c576 | Bin 0 -> 169 bytes .../452f898e13f1b1a7096f7b7356ba805fd44e0a16 | Bin 0 -> 286 bytes .../456a4b84afd1e87dd2949a80e6b7de5532369daa | Bin 0 -> 104 bytes .../456e5aba481e9494480dfe0e30103d7a371c36f0 | Bin 0 -> 106 bytes .../4573539cd102309a639d6efa7fb372db109f1c47 | Bin 0 -> 550 bytes .../4580abd8e820990bcb6c9ba78bfca0aa3a0319ef | Bin 0 -> 108 bytes .../4580e371e8fbd69e47e02fa19e675785c501c989 | Bin 0 -> 105 bytes .../4596b3e125384fd6616fe9a21c2d84a9e9146b02 | Bin 0 -> 86 bytes .../45ad3957454b75c5ffd4b38e42f830a3ce2ddb58 | Bin 0 -> 103 bytes .../45b1bb3f7e17a0449d0632c3014196ce57acdf4b | Bin 0 -> 307 bytes .../45d30863d34d0525446a92da17db464e08f14742 | Bin 0 -> 291 bytes .../45e5313feec6e4f72bbb7115729571402922d931 | Bin 0 -> 458 bytes .../45fa6f391ca41c78ce36d4626c6b1ac7016e3c13 | Bin 0 -> 600 bytes .../45fb88e3f3545891f75e3ef9c16e3ce4e1de331d | Bin 0 -> 151 bytes .../46058ec8608adad0ecd5495eb19e52ccbf96058e | Bin 0 -> 3116 bytes .../462629b211c9a20ad7d076b9fe1c8f223c02b980 | Bin 0 -> 326 bytes .../4639b78e734ba41929677b69493804b8bbc7d2e7 | Bin 0 -> 382 bytes .../464840724f0b6c8590dbc07ec6c5591248351ec2 | Bin 0 -> 106 bytes .../465301866d547cf0c589fcb3e75703ce5913de47 | Bin 0 -> 37 bytes .../46a911b5776c3eb28cdff0d6cd72df92387528b0 | Bin 0 -> 3397 bytes .../4702789fc04046636f32d326f926dc29b7d407f6 | Bin 0 -> 36 bytes .../4704a9ae384ff7aa7883898660e6504ae1dceabe | Bin 0 -> 101 bytes .../472b029f7805fc89e06be91239b3fadd74603e52 | Bin 0 -> 294 bytes .../474aa41a3d0eab350d75f7a6b112f0c78c0d0d21 | Bin 0 -> 233 bytes .../475e9680116fad7e0b31d31ffae25bace7d0c5c2 | Bin 0 -> 109 bytes .../4761baf77c06ed60f43ce3742ba3eca60cd3bb7b | Bin 0 -> 79 bytes .../4766e711be17c18a4c6d8398d2c8337c270a90a4 | Bin 0 -> 144 bytes .../47a1282ecb3d35237e7c7fd8dc1429698af11b39 | Bin 0 -> 1556 bytes .../47caed181903c894531eb2e19c44c2d2b76fd6fd | Bin 0 -> 314 bytes .../47d8da30683459a8a20f3bef9ab28bee627eeac1 | Bin 0 -> 466 bytes .../481fe58bfa684ed3e01059d2f6b613ab0edf7c17 | Bin 0 -> 69 bytes .../48936ec5fdcca6e2d54051d2b5e2943e2894f2ef | Bin 0 -> 709 bytes .../4895768f927ac10572d9ede5d3bdd301ffdc8ff4 | Bin 0 -> 1555 bytes .../48ec9ee1da218d48c07791145a7082d619a8e91e | Bin 0 -> 106 bytes .../492c4cc59923d3323c34d620755f49db08a1287b | Bin 0 -> 115 bytes .../492db680886a5f6596808da294e4f55793c3d78b | Bin 0 -> 209 bytes .../494f88aaf4b5b8af268d6544b453ed46bd656e7d | Bin 0 -> 2915 bytes .../4966309a70277b9c5588b56c0cd160039a17b3f2 | Bin 0 -> 180 bytes .../49808e0f614be22eea31e052f23741e0d28fe1e4 | Bin 0 -> 339 bytes .../49a59eea737e131cb4d706b30843d8e8a025d2d1 | Bin 0 -> 69 bytes .../49ad6606238e6a58ad8d79088492aaead6c32e6b | Bin 0 -> 69 bytes .../49b49874138ada8be9f6ce4be49ef37e4fc2c50a | Bin 0 -> 1995 bytes .../4a0b5ed9b9184687f0350584abb89ba3cd3b6260 | Bin 0 -> 491 bytes .../4a3c9992ceb5151e25867043cff3b70b0615975a | Bin 0 -> 1528 bytes .../4a5d59b9bbf454e26e5b8da35934fbe5e56cd5e3 | Bin 0 -> 69 bytes .../4a6bf78cf8487aaf4dc9504f580290c58cd3865d | Bin 0 -> 100 bytes .../4a8b6c80b64fa974b7a5f514ea78291aff7267c9 | Bin 0 -> 66 bytes .../4ace626cc3e3115df77d85a5c313b24e3a2d2695 | Bin 0 -> 2748 bytes .../4b108731bb41e672ad5c98713f0250e026616d2c | Bin 0 -> 628 bytes .../4b1e095f3fec59b21d71f93800e6b57e3f70cf35 | Bin 0 -> 106 bytes .../4b6d6914f78e22b64597583a9226be7526e73397 | Bin 0 -> 69 bytes .../4b8afa2b5592ef534919776fb45430967d939775 | Bin 0 -> 209 bytes .../4b8e8b45144512387e4c6a3fa6b131170564ca57 | Bin 0 -> 4085 bytes .../4b9f834b48b7fc4252cbf27c7a86e7438b11fe98 | Bin 0 -> 163 bytes .../4bb28aaf30e244c6270e338f040d5f0328680be6 | Bin 0 -> 108 bytes .../4bc35a79dc6599fc0cfbcd77712d7c98c253222c | Bin 0 -> 353 bytes .../4bf138f9eb681100aea715ea17431f737857743c | Bin 0 -> 140 bytes .../4bf43cac903b57260989e5fa2fe06812eabbc932 | Bin 0 -> 69 bytes .../4bfc7f56dcd681c4cb0ac7564c9202ecb957c411 | Bin 0 -> 132 bytes .../4c2efcd1ba3a6c5b4363ccbf8ef4b5b9b1703a9a | Bin 0 -> 120 bytes .../4c4b0bc074912f4c7b56b8e410e182f2337061d5 | Bin 0 -> 235 bytes .../4c5426c031fcd5aebd60c559cca78d725222b4d1 | Bin 0 -> 256 bytes .../4c63c52327e53cb7ec69e322c3e5e4d16d127c13 | Bin 0 -> 116 bytes .../4c6e73b844b72584d3fd49553db60e9a8c8af22f | Bin 0 -> 96 bytes .../4c8426e1c7917411b91516c601b15c344c5adbf6 | Bin 0 -> 2201 bytes .../4c8c516495d0ebf82ba2e9cf13e50bf1870dad2a | Bin 0 -> 173 bytes .../4c91acd8996e220bd56bd35f88fe8552c233ddcf | Bin 0 -> 440 bytes .../4caf611587e949b11d2873a26ed09b9482b3f893 | Bin 0 -> 408 bytes .../4cd6f1e44b814d74bc5628a097736295f7db45b2 | Bin 0 -> 1078 bytes .../4cee4f3d2d5cdca267340f62aba696d2e2b8fbc4 | Bin 0 -> 290 bytes .../4cee5e4e9f91bbb7378f83da87e3cbcdc198a790 | Bin 0 -> 69 bytes .../4ceeb92459a82ce4a6045dd52f7a9523f38aea80 | Bin 0 -> 140 bytes .../4d054e710f51b8c97c7a22cd1aac848aa2006612 | Bin 0 -> 1504 bytes .../4d1c477534c42641c9b0b9a49f6c057e1cde7db4 | Bin 0 -> 106 bytes .../4d49541f67c134d92a2703fc1e3637a35be8135b | Bin 0 -> 79 bytes .../4dae34734a9e1f19378b8344110b583ee40f4e83 | Bin 0 -> 69 bytes .../4dc314104fbcdd1e05b81d8a76db145121b1b464 | Bin 0 -> 145 bytes .../4e192a34709c41ec0ff89952d29d77143563f3f1 | Bin 0 -> 491 bytes .../4e87292c228f8738cbba6e08e7309aa7be7903e5 | Bin 0 -> 438 bytes .../4e91084a57241b0a79a1e1017e469635285c8fd6 | Bin 0 -> 69 bytes .../4eb13aab6d110ba031cf58579a3aa65d196a177d | Bin 0 -> 198 bytes .../4f0d2ded2ea1fb09399d5baf8d0426fef5ee932a | Bin 0 -> 92 bytes .../4f0e3f83c981ba7b753340d23f7f5543ddb36ee5 | Bin 0 -> 37 bytes .../4f31000f5101f0168e01a3c0f98d5bcb12300e66 | Bin 0 -> 69 bytes .../4f5021168e063c367a32ba82304c09fd8144065e | Bin 0 -> 508 bytes .../4f516f048cf57bc27abda74d5ed7ed85ea43806d | Bin 0 -> 69 bytes .../4f6c0d8cc12b50e35b0007d6d24a7320c22c92e7 | Bin 0 -> 103 bytes .../4fa8b27a309641f206e149b137988ef92b57af15 | Bin 0 -> 1328 bytes .../4fb887ac3b5beb5ceb252e42134f064fbc645234 | Bin 0 -> 39 bytes .../4fb8accd2d976661f63fd26140a3f6b82934a253 | Bin 0 -> 79 bytes .../4fba302e5ab0006c79bc187f414c1f2508c21bcc | Bin 0 -> 172 bytes .../4fc051a19cebce0a9fa46fd3086d296d1ce4f768 | Bin 0 -> 46 bytes .../4fc0c97126d20173535a93372152b8ccc353923b | Bin 0 -> 116 bytes .../4ffa879630136e59cc52c1bdf983dc82627a6ab5 | Bin 0 -> 450 bytes .../503fa851d5bfe40f5a30ad59c26118790cad5e01 | Bin 0 -> 966 bytes .../5066166ab1196da51226b9c132a6f0c7c1cbe22b | Bin 0 -> 211 bytes .../507021a3175cadd66970ba070a29878ed6520f23 | Bin 0 -> 83 bytes .../50bd31f8a41c5c705594112b9329b6ec3eab6f10 | Bin 0 -> 66 bytes .../50c152827e67573a02deb9d9a30329e2d55fb74d | Bin 0 -> 967 bytes .../50f397d584965ccdf5ab70a6bd75bf740f7a358e | Bin 0 -> 191 bytes .../518e2b27db6127d24d2c06636b9fb145db4452eb | Bin 0 -> 69 bytes .../5191a0357a3358dd3290f61cddcd563021505012 | Bin 0 -> 70 bytes .../51c4b7732852c0709b0438a0f37717cd7499b24d | Bin 0 -> 458 bytes .../51ca2d31463c473b3abac0e275e3fdbcfa32bc85 | Bin 0 -> 111 bytes .../51e52a805dcf6774afe3c4876f54034f32aae495 | Bin 0 -> 3553 bytes .../51e5aefb13840b34db2a876123f56f3d2810cc8d | Bin 0 -> 36 bytes .../520b82ffdce9643af41fb4113ae76a121f6a33a1 | Bin 0 -> 102 bytes .../52228d0291c8ba4a0f9749dd9a803362d6ad0efa | Bin 0 -> 76 bytes .../523985886f09a66395616f0fc28f68e6cea0e38f | Bin 0 -> 136 bytes .../526f1564cc0ea0a19ca78d9324c8638ff72477e9 | Bin 0 -> 102 bytes .../532c36b979af8b1003ffbe124f4f1e1dca212516 | Bin 0 -> 69 bytes .../53b62164ae11fd3c45e2062d9806c6bb51a9bbee | Bin 0 -> 538 bytes .../53ffeb0791f8111cbf6c1280a2f8815b66d37a96 | Bin 0 -> 106 bytes .../54286dc58e34b136b358bf3593882ed78a1b99e7 | Bin 0 -> 1041 bytes .../54553aed9bc6f2427aecf1b7fc547898cc21230b | Bin 0 -> 177 bytes .../5456e481d33928590f6151e34693cb1cc497c2d2 | Bin 0 -> 280 bytes .../547dc3ebdd8776281f996bfcb3e9f69ad97974d6 | Bin 0 -> 738 bytes .../549f9773b9bc7ecc0b0ba7f26c0bdd8d3b0abf54 | Bin 0 -> 459 bytes .../54b6695b808e5bf6565b2939b3ba6b2123234a6d | Bin 0 -> 115 bytes .../54b813a24e01e8357c43f5275aa8f5b9bd8b06d5 | Bin 0 -> 212 bytes .../54c6b0ff97fdf452114f9359b4d8a07cee10a0f4 | Bin 0 -> 139 bytes .../54c767f752d5b845f29062012dd30c58f90eb170 | Bin 0 -> 1408 bytes .../54eabcdf24bad3d8029203a754988def9d2f4d8f | Bin 0 -> 103 bytes .../55022bdea04bef0d4770f2496c9dbb0c0c8d92c8 | Bin 0 -> 315 bytes .../5520e0231a9026268e73739f5006c3a7a3605701 | Bin 0 -> 1146 bytes .../553402a2a319ba6c83bf602f993b7728b5b00273 | Bin 0 -> 108 bytes .../554884ce961a82608cc14679fa8f93dfa3707bca | Bin 0 -> 103 bytes .../558d59eba1bee63332fa787ad31a66030ac890bc | Bin 0 -> 92 bytes .../55d105dace85e02cb95ecb9e1c8dc78b3ace8bb5 | Bin 0 -> 1507 bytes .../55dc1e38a4fdb1b1aef71b65a08523376171d8eb | Bin 0 -> 139 bytes .../55f5592b8c6806a1ef9f8c438ca06e3f30b5e1f3 | Bin 0 -> 136 bytes .../5603da87ba03b13667501638a1d9788036c4634c | Bin 0 -> 104 bytes .../562ebbe8126d4344da90d35c7249294b52d4a6ae | Bin 0 -> 704 bytes .../563a9475b5b449fd62634f1df5bb3e00907be925 | Bin 0 -> 823 bytes .../566cb4d31a6fcc30c90f98c08afd1dce884649cc | Bin 0 -> 150 bytes .../56d8fb3d29f055ddae16b829cb094bb0ed754a18 | Bin 0 -> 1360 bytes .../574195f4c56357d6e3ab2c688ace9f7c5526872d | Bin 0 -> 106 bytes .../574754a107554e54128a886ae4ee46e8df527827 | Bin 0 -> 190 bytes .../5754d14d803f9268f6cbb6cf305d0e8dcc2bf4e0 | Bin 0 -> 378 bytes .../57de5380db49002b5f581b318ca337f7c6ba7b0d | Bin 0 -> 43 bytes .../57e00ddcd6236f2c282b1b57d8d67b3fd4a28eb1 | Bin 0 -> 36 bytes .../57e57debf4de3850f747f985bed9784124047c0d | Bin 0 -> 69 bytes .../583b5f47f4aaf0611fb0d3c51036a539e2e4a629 | Bin 0 -> 175 bytes .../5877ed503eb8389c81bc0692e2362f979c1eb075 | Bin 0 -> 166 bytes .../589e034121a252d445e72104dacc057c387c7d4e | Bin 0 -> 94 bytes .../58a3195b9dad3b35b48f68b9ee2bd5f8a4d187a8 | Bin 0 -> 470 bytes .../58a3dc918b9fd6004263929c54b81b880d2069d7 | Bin 0 -> 41 bytes .../58a966b45ac74ebf015a47770686ca4d61f372d8 | Bin 0 -> 246 bytes .../58c34f65a8fc98e52e2039dded3f230c3bfdf099 | Bin 0 -> 852 bytes .../58c440c190619330a10ea3a88c453abee1956bfd | Bin 0 -> 457 bytes .../58c61f6124427c2e45eb0ad6761e702618f969c4 | Bin 0 -> 679 bytes .../58f7d611e702da8140ea3cfba8ff69abfe6d2d46 | Bin 0 -> 344 bytes .../58f9e0111a6833627938e0dfbaad4c901d107df8 | Bin 0 -> 113 bytes .../590e3b30215b7d037913d0c26b8ae24c0843a452 | Bin 0 -> 106 bytes .../5934c811fcae83db8a8a576efc1a2472c08eea1d | Bin 0 -> 2814 bytes .../5951b46082cb84e45c8bebf9d5ea3f6a1018733f | Bin 0 -> 233 bytes .../5977f8d34f45745f63ff61e271623427d41da0c2 | Bin 0 -> 73 bytes .../59983fa03a6675fdd23b40b1cfd51debc20726ee | Bin 0 -> 37 bytes .../599a6b95c82ebc7b9f00050ecebb14392abe51c3 | Bin 0 -> 169 bytes .../59b4a9f480a1c995f5d9c5fca19d1eac5c367017 | Bin 0 -> 102 bytes .../5a0667e778e29501120b35a61c79eb6d6766acf1 | Bin 0 -> 209 bytes .../5a0adbb9d45f626e8fb08e03d1fac37b33bf6ada | Bin 0 -> 235 bytes .../5a3ec3051c1e08289c821a3ba9de31c94cc07787 | Bin 0 -> 137 bytes .../5a7930a948550d09baa6ee015b329e072581fade | Bin 0 -> 102 bytes .../5aa9b976c14d72f436487381eff2b555371cc2f3 | Bin 0 -> 173 bytes .../5aaafe06a140849cbc6e14647b219241b85cd867 | Bin 0 -> 69 bytes .../5ab4f4c621236226bf559041e869257f28131ecb | Bin 0 -> 128 bytes .../5add5469d7e867fe432d6958178e6863be5af6c9 | Bin 0 -> 123 bytes .../5b010a8b7dcaa3e995f9032893010eb4d0e4ebe9 | Bin 0 -> 186 bytes .../5b35017750540a5b1cdd4008558347708b568a84 | Bin 0 -> 308 bytes .../5b53d0a4e6ee6bc73a29391ad5f4cd6fa2d3017e | Bin 0 -> 143 bytes .../5b7ea3bba13d17d8fa4176ffa5cea0bc7a7f6c44 | Bin 0 -> 628 bytes .../5b9d48b61c7c6c9abc2669ad417cb1487b9934aa | Bin 0 -> 136 bytes .../5ba0b298eb42875f33ba8e5e0471faafa7b49e7d | Bin 0 -> 40 bytes .../5bd352048873f6d2ac8fbc0356ea7e7d05918ddd | Bin 0 -> 136 bytes .../5bf83221f44d32022c5c3adf4241f715f0794461 | Bin 0 -> 69 bytes .../5bffd900d1d343c268a7cdfa08c8faf000319974 | Bin 0 -> 354 bytes .../5c1ab7ce9dfefe55249e883d3359ade7e76e5ce0 | Bin 0 -> 944 bytes .../5c50457a8a183a1b286327c78b52a83a8c5e4c60 | Bin 0 -> 60 bytes .../5c65a7b3d7df8b9a962fc82df75b0d7b930a81b0 | Bin 0 -> 144 bytes .../5c7b86ea4762bf763c3134ec0aa3580f82cc70f9 | Bin 0 -> 733 bytes .../5c818e280c90078b385ac1cd9316bd4465144508 | Bin 0 -> 70 bytes .../5caeea41da4372ca05b0e28a15c4533d7517b203 | Bin 0 -> 133 bytes .../5cbd957537442bcf267687c9e3fae175a93da3a9 | Bin 0 -> 733 bytes .../5cf363baadf037f6b2d9ba6bc43274685aebf7bd | Bin 0 -> 245 bytes .../5cfd0e042d6237d0436a3ca12d8c1dfb536f8be3 | Bin 0 -> 101 bytes .../5d01f5a9544ad63f156ec2b9e9a30326e35d67b0 | Bin 0 -> 101 bytes .../5d0a2b8e5ab4c6220f70b408d5d82bf08a723732 | Bin 0 -> 96 bytes .../5d7a38cb9399eeda448bc84e1449e7a5bab0f5e6 | Bin 0 -> 43 bytes .../5d813c4465a4269409085a072f39cdf4234ef6fa | Bin 0 -> 1429 bytes .../5d9c2ba3bf785afa9339494d24e0c36fbea03ff6 | Bin 0 -> 102 bytes .../5d9e462a5151e631a1389f52fd7f220fd8c6a3d6 | Bin 0 -> 106 bytes .../5dd124861b5618cade180cb240caf3678b42c591 | Bin 0 -> 175 bytes .../5e065bc6b58574b3c83484e7dc6e1faf3fa5d161 | Bin 0 -> 75 bytes .../5e1a550e7021865bfcc959952a844d3b6a6bda24 | Bin 0 -> 41 bytes .../5e1a5b7ad4d785ddcb1849465ada15d4d3beaf83 | Bin 0 -> 271 bytes .../5e1f0fb312d887f114c0faf847c95ee3219a757f | Bin 0 -> 135 bytes .../5e47a25d23087289945f9226c0a37f9668dc1942 | Bin 0 -> 69 bytes .../5e625071f529dad68777f7a1f675743a528d366c | Bin 0 -> 102 bytes .../5e739c9eb9d9e4cbd0ecbaef1bdeb999d28a2d48 | Bin 0 -> 100 bytes .../5e8a84ddf667f21a9b423ae1c08fc8feb7e5ce8f | Bin 0 -> 40 bytes .../5eae25a49caeb548e54a3ef3c984fab8d9902622 | Bin 0 -> 164 bytes .../5eb71bd7ad624545905508d552b6dc10a2f847bb | Bin 0 -> 143 bytes .../5ebcffacdabd75a178673efcbdeefb1f79ed394b | Bin 0 -> 136 bytes .../5ec15755d11256b26300505f389936752ffe31c7 | Bin 0 -> 69 bytes .../5ee63fec474fb8683ba8926218ae3de284e07282 | Bin 0 -> 459 bytes .../5f140446c99237df25e408d21c553069f5c891ba | Bin 0 -> 242 bytes .../5f41358a7ecee7c3300274553aa6c2b8761e45ec | Bin 0 -> 44 bytes .../5f456be4a8881ef761297b4ee2b2396be9cd06f8 | Bin 0 -> 112 bytes .../5f4a78fae92e6d4e3cdc99e83ad125a2f7818c8f | Bin 0 -> 2643 bytes .../5fb6f5c740bc17d3b279ab715fd08fa81686d5b1 | Bin 0 -> 108 bytes .../5fcbf48d19223180ace1731b23b2c23e386d576b | Bin 0 -> 69 bytes .../5fe2d782d294f56e1391600e414ee2eeff844f08 | Bin 0 -> 80 bytes .../5ffd8ca2bda62b93f05301fc0a06c7e73a416bc8 | Bin 0 -> 1146 bytes .../603367d28ab8b9045648cb64bbc5030d1d15e5d9 | Bin 0 -> 102 bytes .../6042bfb5a12f07ee9eb070e5e2dff8697cad3908 | Bin 0 -> 189 bytes .../6043853a809a2e832897ad614133f55e14e2455a | Bin 0 -> 36 bytes .../6073e7130e4f96a16e97395e06e222a81366cc3a | Bin 0 -> 185 bytes .../609a69b86e5efde2de102c337a161b03e9c8876e | Bin 0 -> 783 bytes .../60b0c36b3f192b5f6316e5e0b9a417df091b37d5 | Bin 0 -> 139 bytes .../60b765c94aed815e0f753d1afbde5ee97bfb72ff | Bin 0 -> 108 bytes .../60c6babf6298dbab7c90c76280d5a94c88ea9222 | Bin 0 -> 99 bytes .../60c9128e76153d16fe8e7ba2adbb9ab7bbb220cc | Bin 0 -> 101 bytes .../60d0b929af1da32a0e54a72d27ee4407284a10f2 | Bin 0 -> 115 bytes .../60e4e9b585c7e41a5becab1dcbc0225e68d563d0 | Bin 0 -> 314 bytes .../60e7223c4b5304a98587b2478afdead8125c22aa | Bin 0 -> 220 bytes .../60f3638d7c58e1d52e2638cf50e68fa0cf3491db | Bin 0 -> 296 bytes .../61177a0f4a0c9ee089cb9388d13ef562be8831bd | Bin 0 -> 1319 bytes .../613413787bc761296f663cb8d45a447118b001cc | Bin 0 -> 54 bytes .../6138aa043c89611152dcdf360c687f014ca2a219 | Bin 0 -> 1953 bytes .../614e63bb137505589f4486d646ad255bf62d39da | Bin 0 -> 48 bytes .../617962216ea9a3e7d6b293fab5df70773c10c552 | Bin 0 -> 139 bytes .../618221ce08ce7422808dc657b7aedeb762b31b09 | Bin 0 -> 120 bytes .../61a0f4708cac4433f56b999985950ffbf610dc92 | Bin 0 -> 124 bytes .../61ab084dc7aa99e837e0309fcd63f2e199cf0aae | Bin 0 -> 97 bytes .../61f39c557fde0b40d5e2fe7fbb3747d5c8b822a7 | Bin 0 -> 112 bytes .../622482024bba090a3fdcf1683e6e82f3382d8086 | Bin 0 -> 69 bytes .../623a1074c0969b1c02dc5f11fc7efc12fea52d24 | Bin 0 -> 102 bytes .../6240592d3790fdf15fbd60321b06dd507cf22831 | Bin 0 -> 75 bytes .../626b74498e05ec6bc5d445f60f4dc60dba76336a | Bin 0 -> 69 bytes .../627d90fcc60f0bf1f70d75c9a31d84139216e488 | Bin 0 -> 101 bytes .../629382ca7562123161a091d5f0d795a235b5ca95 | Bin 0 -> 46 bytes .../62959435635107ddca7d9e4126a6f5d0c76fb1fd | Bin 0 -> 233 bytes .../62aa7143e0e3298c6876a5f4dd7246847f6af3c7 | Bin 0 -> 362 bytes .../62b23c4cd05662a84d93389e973a6da6a2b8b410 | Bin 0 -> 1152 bytes .../6300716f023e6c5963aae1d4a456de340e099717 | Bin 0 -> 1917 bytes .../630d4de33f784094077355d0d707a77a258d7848 | Bin 0 -> 204 bytes .../6314c3808ec7e85751b4d7b742cdefdb1d6e5856 | Bin 0 -> 37 bytes .../6317f6a493095cac0ca169a694f660d878919b01 | Bin 0 -> 70 bytes .../6364e84f407080cfe95722fe371595fce30ede1e | Bin 0 -> 245 bytes .../6374541bb9f70f78ffa594342ea59578337b8b18 | Bin 0 -> 735 bytes .../63961e70de1b626a269c1da07b22e12d1bdbc080 | Bin 0 -> 211 bytes .../63bf338dc5d47dffab0f003a1c5a7c5621cca9ad | Bin 0 -> 134 bytes .../63ca389b82b7722d6a57d17ccf887e94dc378f68 | Bin 0 -> 126 bytes .../63e4e38559bec6e6f834d2ef344929d0cad600ba | Bin 0 -> 158 bytes .../63e69871719679ce08615d1de566a614371cb4e3 | Bin 0 -> 69 bytes .../640580c9fd14ff70774f93394b5ca76cd2e83529 | Bin 0 -> 2043 bytes .../642a6b1533f4e765b30b75b115672a85d01e4365 | Bin 0 -> 102 bytes .../64777b1e4c8a4527989efb144e2226f2fda89c78 | Bin 0 -> 100 bytes .../648e42a480516eb541712b5431709d711167b633 | Bin 0 -> 122 bytes .../64913d4d83f772e4fe0423803e2852b30d0fefb0 | Bin 0 -> 377 bytes .../649666a82a6e54135c69c0570d39af075c72b74d | Bin 0 -> 106 bytes .../64a0471018b066406886ee21802fc46eac77c8b4 | Bin 0 -> 877 bytes .../64b49b5bd2d20ba64bea48d0d7766ad2c79408a6 | Bin 0 -> 133 bytes .../64b549f9658ff3b1d1ab5649b705f77f72120898 | Bin 0 -> 676 bytes .../64bc29377bd012c7df1b8a7bdc7f5475a4f0643d | Bin 0 -> 206 bytes .../64c4a66da785d46d25a68f571261e07d669019a3 | Bin 0 -> 139 bytes .../64dc6434cd5154dbca58a499214a180c006662ce | Bin 0 -> 218 bytes .../65169785c05132f61cb0fe7a4cac4d83eccfc261 | Bin 0 -> 110 bytes .../6519b017ccf082ce0b1a7670929e1e73547c16f5 | Bin 0 -> 289 bytes .../654041ce1022141719a977cf50e702d2686afb2d | Bin 0 -> 224 bytes .../654638b7d49e574401a253175531490edc4bd788 | Bin 0 -> 75 bytes .../65505a2237073f73dbf9cf827e743adef46e97c0 | Bin 0 -> 99 bytes .../6552662b273f17b5c04d28e15daa334e7dd1e283 | Bin 0 -> 244 bytes .../655e5fa01790ddc5c121f3c41e0a06c6d3dfb41a | Bin 0 -> 78 bytes .../656817d0384adc45c1846f58001d4a2817d6dfe8 | Bin 0 -> 107 bytes .../65686a887886829e0edc41d9d34cafecea09eb11 | Bin 0 -> 102 bytes .../65690bee1d02b8c2a2c5b7b02b0e4d5e79d25934 | Bin 0 -> 102 bytes .../65a24581d01b510d102c9b5a29b48dd081f9fbf8 | Bin 0 -> 457 bytes .../65ba55f8e41894702c8d2e9df35b8b17197345d1 | Bin 0 -> 1776 bytes .../65dda6438e7d606cc149433add5df57db4e2dc62 | Bin 0 -> 249 bytes .../65fda704bb8e39446ad2aa103004305ad1eafabf | Bin 0 -> 73 bytes .../661f78aeacd3ba77d84959e5824fb5842d375da8 | Bin 0 -> 530 bytes .../6622b04b6c6539d170a6c203f7c8047a2627ef1a | Bin 0 -> 103 bytes .../666c2f6d446832815b4142f23c41f946c744a506 | Bin 0 -> 458 bytes .../66701a843b5dffba78ad7e1e6c44cfc806ab31ff | Bin 0 -> 631 bytes .../668d1a8784fc7de20c2eb87f613a517cbf42d080 | Bin 0 -> 660 bytes .../66b27b57d4d7de1c90d7ee89bbd43c5468f21f52 | Bin 0 -> 106 bytes .../66b586f381f61302f2e7058a5b53361e7b8135f2 | Bin 0 -> 69 bytes .../66b87b59b7233b0c628c1061b6058336157f50cf | Bin 0 -> 202 bytes .../66ba0612397b891e0d5ec9a985b824650ba536c4 | Bin 0 -> 404 bytes .../66e5621c43fc9403d3e093d20018379455932343 | Bin 0 -> 83 bytes .../67278b928ece08b649bb41dd10a477f20f965570 | Bin 0 -> 144 bytes .../6745bbeb17c4281b97cee9be2f04b25f9b0bffe8 | Bin 0 -> 1360 bytes .../6756444b0a6fed74818a7ee4e7f56c23577ca520 | Bin 0 -> 496 bytes .../67630f5a980563718164a404ee8e24148c120bb8 | Bin 0 -> 1618 bytes .../680ac624889085a04c01325b19dca2ebddb9beda | Bin 0 -> 106 bytes .../6852c0ab304a4b0503da5ab3c4c3bb2cb47fb964 | Bin 0 -> 390 bytes .../68655185e37a948f14d5e22748576cb4d8ab7cc5 | Bin 0 -> 36 bytes .../687375f623183b3f91d4dbbc6d811d3772a94fe4 | Bin 0 -> 140 bytes .../6883b75c90df30d660e6d7b966c1ec516df0171e | Bin 0 -> 103 bytes .../6896f40df04bf1bdfcfa03df222b6e99bbb7aadd | Bin 0 -> 54 bytes .../689b5a59a782b95c72f11da560c6e6a13259eea0 | Bin 0 -> 106 bytes .../68afd8113b1f5dc78c6e363fa7b3235bb9f3e998 | Bin 0 -> 463 bytes .../68cd0772f3b8b697bf0883a6b3324ecceb820962 | Bin 0 -> 205 bytes .../68f7d41620a0c7ddec132492611badf720f6b5cd | Bin 0 -> 607 bytes .../691f85fd1300bd2e5746fdc9bef75768040ece0b | Bin 0 -> 187 bytes .../69217d1e52829e915878d9886d2219317400a4fb | Bin 0 -> 106 bytes .../6967d470ff997b6398be723dc3d3ce9364a56885 | Bin 0 -> 466 bytes .../69c251669ae44e3eced748d2199b1dc431196b6c | Bin 0 -> 99 bytes .../69c3e05de7d033aefde7f8044c9ee29988c2046d | Bin 0 -> 571 bytes .../69c3fde5efff19e925d9ddd1d3ea12111a603aac | Bin 0 -> 499 bytes .../69cae98d93cf1a78af05aec89b343ff693445378 | Bin 0 -> 1587 bytes .../6a0592a9b603e91657d7ef842fe0343287577d83 | Bin 0 -> 420 bytes .../6a237c7db7dd04afb407ebb379f5cec036c6f6ad | Bin 0 -> 271 bytes .../6a2e403401c57d45174788ef50b720afdd9b9d4b | Bin 0 -> 2607 bytes .../6a716e6e19ded33bf8a122c334d86e4b24be29fa | Bin 0 -> 310 bytes .../6a7460d2afcb28811279ace5576a11f8b308b7ec | Bin 0 -> 295 bytes .../6a9b91a7baaaf95e8f33593d92a08fbfe955d256 | Bin 0 -> 220 bytes .../6abba7f854ad692202a9cd2f470a548f41c7c587 | Bin 0 -> 182 bytes .../6ac1f2adf0a276b930ac333f30e61009d3932ba0 | Bin 0 -> 202 bytes .../6afe5384c398e825595d124e174f5e403153e1b8 | Bin 0 -> 1510 bytes .../6b1393f61366e6ab27d618e095db5652dd640853 | Bin 0 -> 430 bytes .../6b285d460e5309ad9d2e141c37ee6e50432f06a1 | Bin 0 -> 346 bytes .../6b296b18dc6f859767385a7a1afb4e873b758285 | Bin 0 -> 677 bytes .../6b4e197ca4238a48008c54faa8e6a44a3447cd74 | Bin 0 -> 38 bytes .../6b5f61a47bbe9c1058e2d7b6248f2c4a532ae0c2 | Bin 0 -> 180 bytes .../6ba5f404e1f4c1a61205ca8819686c19b8a7e72d | Bin 0 -> 150 bytes .../6bc23a666a9a3964a045462b36d4ac19f0355323 | Bin 0 -> 99 bytes .../6bc8f0d768c1b81bd2280da42902103f8feb64c7 | Bin 0 -> 403 bytes .../6bdde9f513ee4f442b4a3b1eea8b3cc47d812e5e | Bin 0 -> 85 bytes .../6c165f1717d532249cdf43720fd746883396d020 | Bin 0 -> 118 bytes .../6c1cc0329fd20f56a8d91897348cf5faa5f953c3 | Bin 0 -> 108 bytes .../6c232a2066785dafb0b517009ee1c90380c5fe24 | Bin 0 -> 69 bytes .../6c464ff758fc5da32f56415ea4d312ea0787fe52 | Bin 0 -> 255 bytes .../6c506ead05f651d80e1ae8bd0d4510ea68174972 | Bin 0 -> 538 bytes .../6c5328b0c624f44f8ccf49ea0c819e94d4afebfd | Bin 0 -> 239 bytes .../6c61eeb721779feda1ea0e9c706ac4cb858e5d6d | Bin 0 -> 112 bytes .../6cabfbf82683b2378758215959a71fa0afa7bb2b | Bin 0 -> 319 bytes .../6cf49e1edbe3662a9f9c3eda6c221edfc1ae1de3 | Bin 0 -> 103 bytes .../6d63a35f78c5150ceb4ce1ca98ec8ff95f4684e6 | Bin 0 -> 70 bytes .../6d6c93b5582cdc7fdad3d1dd778c61c6e1990b9a | Bin 0 -> 167 bytes .../6d8e0536752ddbb305adfd65f1be91358ff7aa99 | Bin 0 -> 126 bytes .../6d8e5a6ba49e6fb393694bc7fdcdf4034aa59583 | Bin 0 -> 80 bytes .../6d9bcef0193d298b54d7d03635f2a5d755e3ad2c | Bin 0 -> 106 bytes .../6da3f86619934a68744f1f90bd569cc8d53e97d5 | Bin 0 -> 73 bytes .../6da74210deac7eeed903ca6c059d2b0adb942a8e | Bin 0 -> 1138 bytes .../6dc013b62c35f729a9eb71008215d4c64457a0f6 | Bin 0 -> 507 bytes .../6dddd2c93c97ec6b7dfc6e73dd7602bd4099f384 | Bin 0 -> 1076 bytes .../6dee58677ab1dda486feaa2d72dd789605a4d7e8 | Bin 0 -> 109 bytes .../6e22495ba490e0ee875284788badb9c14eaa0e69 | Bin 0 -> 92 bytes .../6e23c1f30efe0d956cb742e503ea7658e07cfa02 | Bin 0 -> 1044 bytes .../6e38f2a1804a36b5667b60f6a1731aed2549873f | Bin 0 -> 1126 bytes .../6e39726dcdcfe6bb695fd902a5028f4fb8a6fb9a | Bin 0 -> 280 bytes .../6e42d7365c2f21d5bc4eb1f73135670519597f20 | Bin 0 -> 671 bytes .../6e5e3e737a9fb09147a771b5290bfd8cd1f76aa3 | Bin 0 -> 255 bytes .../6e5fa073de61a515f4fdd0117c509fc1ba8edab3 | Bin 0 -> 105 bytes .../6e89c0bd2c624eaf3aa5669c2660ecaa499be4ac | Bin 0 -> 69 bytes .../6ebb0862deb584ba9219dbdfdc4b4d74109843dd | Bin 0 -> 816 bytes .../6ebb3b2e935646d3e2f02eec8f13219db747732d | Bin 0 -> 69 bytes .../6edde592b588d9013667a98ca56af9cd19af386b | Bin 0 -> 298 bytes .../6ee0ea0911fe6ce73316255b0b5b2bb3bd103e6c | Bin 0 -> 548 bytes .../6f15d9f4f8330bee8bc89e4b45c8645fe94dc02a | Bin 0 -> 64 bytes .../6f162cea130c89a0059ee343501343de3d01855a | Bin 0 -> 74 bytes .../6f2d29720f689464424daee284b20b078c2c2948 | Bin 0 -> 197 bytes .../6f72524ca639aa946a6fbf266661c60fa9a12a12 | Bin 0 -> 106 bytes .../6f99aed6a2d7debe2cf490f4cea897b250a57398 | Bin 0 -> 140 bytes .../6f9f35de55db285af5758d2ababf322255ac4be4 | Bin 0 -> 2449 bytes .../6fa722fc9c87d3928d8ef6026b0251a22b9e755d | Bin 0 -> 136 bytes .../6fa7c05cb238ec372624a1626cb9d012f1639491 | Bin 0 -> 547 bytes .../6fb5c7b62731e01283505b7467e5e76e1f74d0fd | Bin 0 -> 102 bytes .../6fb69b5f0565450159d46ee596b9ec9232a0b797 | Bin 0 -> 70 bytes .../7033ed258d94c307bfbea0a744b17e170ab55770 | Bin 0 -> 632 bytes .../7049f5d714d906f4b91b6158edad152aeec36afb | Bin 0 -> 3123 bytes .../706e99b5200a33d92fe18770621f8affdc6a418c | Bin 0 -> 113 bytes .../7075b3ea0b6a92bf0a84d76fbd52d526ec0b55e7 | Bin 0 -> 75 bytes .../70a772af87ee494dc824e44162f95f5f83113e1a | Bin 0 -> 73 bytes .../70ace6ab4c748bac8cd6f0d153ebb8dabeb24d20 | Bin 0 -> 69 bytes .../70b2ad450966a79ee222fafce5d7608f72672bf2 | Bin 0 -> 106 bytes .../70b68da82d72f9d9f56c8f563ea751bbc7a08713 | Bin 0 -> 108 bytes .../70bfe0c45d94a9c0fb11584127e1c3718a215392 | Bin 0 -> 69 bytes .../70d5c52f63225e602835946dcb386d1aa700078b | Bin 0 -> 121 bytes .../710b4648ba54b121f44898006b76b69bd8b66cbd | Bin 0 -> 108 bytes .../7124f8dec00a51babc1db2595c27e2bf098c02f4 | Bin 0 -> 103 bytes .../712e306cce235fd7c07acc4f9542e3e8d176b4f0 | Bin 0 -> 338 bytes .../717743fb883b330706bbea0e9a49afbe3dc907aa | Bin 0 -> 133 bytes .../717c5019bfa5d9d92e954c407084ee36a07f1d48 | Bin 0 -> 180 bytes .../719f9b36bafc225926b18d5b31ea111c0d20571e | Bin 0 -> 2975 bytes .../71cd1c25e8b6affaf2286d31730f641b4d1203d8 | Bin 0 -> 48 bytes .../71ec5ab0e76d1b30deeefd5304b3733a4597ebe7 | Bin 0 -> 1577 bytes .../720990112fdf8cd26c132d3aace3e5653f0c4756 | Bin 0 -> 207 bytes .../721fd414791e3f0e8509752ce857e5743e11016d | Bin 0 -> 74 bytes .../724d34b3d32e78744b9757c8e7282e26389ddd4e | Bin 0 -> 551 bytes .../7256851ae102c901118178247d0608dd2bede61c | Bin 0 -> 109 bytes .../7258166ffb827db0f294ad3f169a72c23f2195b7 | Bin 0 -> 101 bytes .../725f1f53fb6c5be7ab5815edc4ad728801c8f9af | Bin 0 -> 108 bytes .../72a41f35244bd47df22cff8cb97d7a0c1cbb0c83 | Bin 0 -> 102 bytes .../72baa8a47cb281f053c39fb483d4af8f45b48ee1 | Bin 0 -> 174 bytes .../72c83d7c35ffb01b9daa045a9a5b5b76bd80657b | Bin 0 -> 122 bytes .../72e12abdb30b4051d58c2336d12455da88bc74bf | Bin 0 -> 1011 bytes .../72f6619412fb7889db222ac3afccf525864b5755 | Bin 0 -> 139 bytes .../72f69427262628bc7b55884ca42782885ce749bc | Bin 0 -> 109 bytes .../7300d5491974cf7008bb306f6ce0f28294c3f4ad | Bin 0 -> 151 bytes .../7309d83b1f178d7ac52771891d0f87921cd2f282 | Bin 0 -> 119 bytes .../734c48b7b6f5c2e412aa8036c6bccd849c76dfca | Bin 0 -> 172 bytes .../7350c3788104634e2be77eaf02556badd86f13de | Bin 0 -> 99 bytes .../735add7f4b427ce83da42ae0b564095f4cea3dce | Bin 0 -> 775 bytes .../735b475e744643a1e493e9a89ac3a6c41e8e05a6 | Bin 0 -> 458 bytes .../7377effcd188d737f5235d4693db795b9d153167 | Bin 0 -> 800 bytes .../737d1a08227e4ce4424999f7c884f18607a0a3a8 | Bin 0 -> 140 bytes .../7399da9b1d75f2d484579109e92912ad332539c2 | Bin 0 -> 82 bytes .../73b2f62c4cc2dbdef1e4fa54ac8295b898862d62 | Bin 0 -> 161 bytes .../73e0eea6754e70efff92e2dfee68999220a9f6ac | Bin 0 -> 164 bytes .../73fa14e72a41c83f9a884f055b91e0d573add7b5 | Bin 0 -> 40 bytes .../7400ab608ee8af900cb7263b444387d62b213722 | Bin 0 -> 69 bytes .../740733262b0594c2fdb0c044a2645a6a958d89d0 | Bin 0 -> 336 bytes .../7408f6d49d112aee38c9fe3d7bada867c97f43c4 | Bin 0 -> 168 bytes .../7418b4823963f002f17f45004f69e28a548260c5 | Bin 0 -> 69 bytes .../741ac6075767d7cd8a080cf54ecde55c3d287e93 | Bin 0 -> 36 bytes .../742f841e65a01b5f484eac4a95c4b8b30814358c | Bin 0 -> 69 bytes .../7437a96fab759f43e25826c80da66186fdcddd3d | Bin 0 -> 562 bytes .../744542b36afbf140eb5e868bba0a56ec55a13fd3 | Bin 0 -> 132 bytes .../74578fad6a1e649a527682134507ac1188c4427d | Bin 0 -> 83 bytes .../74737f3ba6fec08624c0adab88eb827a40abdd4a | Bin 0 -> 91 bytes .../747841eb33d25b135b6473f3d38d57da4c82b4fa | Bin 0 -> 174 bytes .../748ae3bc9858646fa7ff250aae3d42c80453786d | Bin 0 -> 53 bytes .../74a4199d9a46e774a9be78a793a1796554311c26 | Bin 0 -> 97 bytes .../74b67a22359f591b61329d8783b312cc359f8aa5 | Bin 0 -> 69 bytes .../74df8a5ae0458398c81f0be2a0c53d3b20df722f | Bin 0 -> 102 bytes .../7504de0f47a357b3a5dbd3edd09cd792c5d84ed7 | Bin 0 -> 153 bytes .../7506432336562377cfed58373d1e46e6a1f6f2d4 | Bin 0 -> 69 bytes .../752d4ae7a84e10fc41d07919fad52db415214535 | Bin 0 -> 106 bytes .../753513327efc6ddee8f2815b143748dc0f88b7e8 | Bin 0 -> 917 bytes .../755ec363058b3d5326029c35fafb59fd13bdafcf | Bin 0 -> 1175 bytes .../75615998f9dad6af47a16b949e0f5999afc6ec2c | Bin 0 -> 240 bytes .../757f4aac1cb731b1db1aa933e1b8f4695a239550 | Bin 0 -> 143 bytes .../75ad40df9fb13569165c4587a686b8624f4f902e | Bin 0 -> 180 bytes .../75b96fe8745b1f80dbe3a909c8b87d0780279fe5 | Bin 0 -> 507 bytes .../75d45b9d9d3e7a5a6002b0300ca160d2da6f465a | Bin 0 -> 139 bytes .../76148cce4f02e4e8f1d5ced7e32e93293f22b631 | Bin 0 -> 108 bytes .../76567b98296bfd1a9e043a8e7acf8cfca5a6de90 | Bin 0 -> 457 bytes .../767297ace089d3ea2baeec77b980188359549401 | Bin 0 -> 97 bytes .../76a452ce995b841d441c1aacc1d31beb1571fd11 | Bin 0 -> 43 bytes .../76c051330fe32f41b2b6cd58178d35d7b92c7596 | Bin 0 -> 41 bytes .../76ca0885b51d330c14e6b8e9188b064b881b13b5 | Bin 0 -> 48 bytes .../76ce253bab0df4024f59b4fb3b0fdf193285d994 | Bin 0 -> 96 bytes .../76fe24e81d0e53ac5d96c74603050609b04e2f4d | Bin 0 -> 220 bytes .../76ffdbfcb856f1c0e670aca18e7f6a17c26486ee | Bin 0 -> 771 bytes .../770b4547f11111b3dc124d0fbbba277545378ffa | Bin 0 -> 389 bytes .../773eb63c3671453a04db73568a269b214d983b1d | Bin 0 -> 140 bytes .../7753101d9b2454fc727f599e4c16de29490a5da0 | Bin 0 -> 206 bytes .../777969909bb16e74240c6ca2ca2dea2170cba15c | Bin 0 -> 84 bytes .../778654fc820b1dfa4e45c2738e7762fbc6a33a55 | Bin 0 -> 139 bytes .../778817d1a44c3fbfbf636b99f43b1c38ee4fe0ac | Bin 0 -> 78 bytes .../77a8e297472ad2804d69d0ea1f8c19038e2f7c03 | Bin 0 -> 118 bytes .../77db4cb82f68f1fb6204cf7f61a79e92a532b753 | Bin 0 -> 475 bytes .../77fb00488655fb39f813b70219866d584997a957 | Bin 0 -> 235 bytes .../7839ef01eccd990cce7ac41dc1e17d2a53fe5b55 | Bin 0 -> 144 bytes .../7851267a92236d4b8a56ff38e4947e43e53005ba | Bin 0 -> 69 bytes .../78e5573d0226b65966df449ec5a586c2680856e9 | Bin 0 -> 54 bytes .../78ef41bd1903fb3df3f29bc6e64f3ab68e8d0c0b | Bin 0 -> 192 bytes .../7911c8def6c53751e90ef022b5e8261044366c97 | Bin 0 -> 174 bytes .../7921671356a6afb0fd81d4fa8555f2a0e499af08 | Bin 0 -> 69 bytes .../79613aa16aea067c77e179ec4c83022027090bdc | Bin 0 -> 139 bytes .../79695c079906ae4e31b451ddab525161a2586380 | Bin 0 -> 200 bytes .../797e06e44156ed117975201408ca6146d2004405 | Bin 0 -> 452 bytes .../79a337880062772b2e9506af7b16ad596b748492 | Bin 0 -> 415 bytes .../79ad937dc63af3a8662dc4d66c6b18a1c3b842e9 | Bin 0 -> 154 bytes .../79c9bcb1d0cc57012537070a9380189eb61d6a7a | Bin 0 -> 141 bytes .../79d1c3c982af023ec901e48bf5fcceeffc5249db | Bin 0 -> 219 bytes .../79d5d8e98d9e37778e200f5ce3443dddf5d1e04d | Bin 0 -> 1234 bytes .../79eefdef46f2001822160fab2b33307ce2451eb2 | Bin 0 -> 186 bytes .../79f89cdf048387b37c2c10ceb9885f63f8304889 | Bin 0 -> 998 bytes .../7a0456f56ad054d9bfec79c63516b38fb28229e3 | Bin 0 -> 1528 bytes .../7a14e8dd5a57e3e1c3b18b6f2cc7ca46aab0a1eb | Bin 0 -> 66 bytes .../7a16d2290d87efa23a0d5007dbada204f16ac844 | Bin 0 -> 585 bytes .../7a3212a3cc93b425e6c60d3024e319206b65bce4 | Bin 0 -> 466 bytes .../7a525c80f2606967be6063d0318a823dfed9fe56 | Bin 0 -> 106 bytes .../7a84c8813991ce79074eb9b3a0645f575bc6f60c | Bin 0 -> 634 bytes .../7a8768f48668207ea5fb42fd647d3ff767a95737 | Bin 0 -> 109 bytes .../7aa399e22cb80e5f28f473243c9548a8f325e98e | Bin 0 -> 79 bytes .../7aa4a10fa9118f949b9495f36b5c7026633b27c1 | Bin 0 -> 114 bytes .../7ac5ceb4aeda387b0a7cc3d10d196a1b38e04189 | Bin 0 -> 106 bytes .../7b0173b94d1ae43e291ef41258ad5be33a94658a | Bin 0 -> 143 bytes .../7b092f55055ec30d6410db03348db394de41df33 | Bin 0 -> 193 bytes .../7b151731c7616f4e39723ff6a4f73388409fa5ed | Bin 0 -> 466 bytes .../7b17286a1a5a6aaaa22b7baa5f14470e25275259 | Bin 0 -> 318 bytes .../7b3b5288678d4dc968f4ff182767222379fca94d | Bin 0 -> 139 bytes .../7b3bc04aaa1fbab06b8780b23009eb9134385b55 | Bin 0 -> 124 bytes .../7b82af1637d9bf085bf4691a4c2f6935109d7060 | Bin 0 -> 180 bytes .../7b90c46fa920fb6e34f38d280f8a814d5f7552d3 | Bin 0 -> 148 bytes .../7b9368ad86f03fa961b749e2a2c4a49488ee800f | Bin 0 -> 115 bytes .../7be86da7b09883e958b4325169bd6a468172581a | Bin 0 -> 458 bytes .../7c559c7a0a72338b642176e045a69a3e14bcf2b0 | Bin 0 -> 144 bytes .../7c6ed8364d243b4150cc551b59fda5913ba459b1 | Bin 0 -> 2112 bytes .../7c78a1a959ee5939c74a4b724ef120b566e1d9f9 | Bin 0 -> 139 bytes .../7c9f31688f3aab10d5ee2520112ae4c643e9a8f1 | Bin 0 -> 1062 bytes .../7ca3bf567198f63f7feaeb6e6f9cf35a66b260cd | Bin 0 -> 145 bytes .../7cb3ccde9e7c69c613f6bc03904fb2742fefd85d | Bin 0 -> 1059 bytes .../7cf3e801b1ebba0e4eb6fca00efcfcaff610ecbd | Bin 0 -> 108 bytes .../7d18ed36f5b3162c15cfb3564a2f1b96dad2131e | Bin 0 -> 1107 bytes .../7d70387c8179573c0f1043460320e8e84c45640e | Bin 0 -> 152 bytes .../7d7da6cb9102c0ed89ff8ec9d595ed3b2601eb05 | Bin 0 -> 106 bytes .../7d9bfcaada2b170255bcd0ef2e4b8921abb41779 | Bin 0 -> 69 bytes .../7db4f5591801a48c9b8a1575ae0cda54eaaeeb47 | Bin 0 -> 491 bytes .../7dbff32be3d3dfdf4cc6893c63969a6c31587d6c | Bin 0 -> 348 bytes .../7dc44283cf9cd2fab208ee4a2d853d451ba34c96 | Bin 0 -> 84 bytes .../7dd37c3acd5a930bc551075f36f17f73c4a0c58a | Bin 0 -> 102 bytes .../7dda43e86a2cc6ec3ad573803685b6f699f68e58 | Bin 0 -> 615 bytes .../7de45e20cd384ad3c999f012ab690d190b4b99c7 | Bin 0 -> 102 bytes .../7ded496fd531287d3aae5dbb5372e7008809aeff | Bin 0 -> 106 bytes .../7dfc1b2c5c9c6395a72d6f332273e1998d324dc8 | Bin 0 -> 103 bytes .../7e0c26ffa090b8c1f6b7b54d0691f20cf3120065 | Bin 0 -> 217 bytes .../7e1d8c9ceab68693700ed87c766d82bef1629d9d | Bin 0 -> 2270 bytes .../7e421fc80234232df6152662a076cab09aeec677 | Bin 0 -> 375 bytes .../7e4abdd11becb33a0de5bf8b3541f06232528dc2 | Bin 0 -> 598 bytes .../7e4e8fd08e84fe858f4b4285850e9759261a68cb | Bin 0 -> 102 bytes .../7e626c5828bf87790da19c322bb8492ce45ce8e0 | Bin 0 -> 140 bytes .../7e8fecf5af2e8c00c79f14c136a91214b4406ba3 | Bin 0 -> 139 bytes .../7ea2f73225fbbccd29b5f6bae4b793d73f74021e | Bin 0 -> 69 bytes .../7ec74e5bcd1e83890ca96a4d0a465910fc8875c5 | Bin 0 -> 254 bytes .../7ed2e85d653993c06abd46cea79dbf58c1ed7c92 | Bin 0 -> 312 bytes .../7ee74e1d27ad82d986a87c0b0e18b3a62d8cb7cf | Bin 0 -> 722 bytes .../7f1b44970724cfb5e013b5de190ad898069447ef | Bin 0 -> 179 bytes .../7f21d792b84feb969a588ab8701c3c446025639c | Bin 0 -> 108 bytes .../7f364438e2867951dc144639564bac988e21092f | Bin 0 -> 1873 bytes .../7f4b7b042a57169cd1ae1b289d8c2be8c0e18b91 | Bin 0 -> 69 bytes .../7f5e9cff3c70bb74434b9a6de050e320da341abc | Bin 0 -> 1555 bytes .../7f65151263c21b92829afbc48720b396735c625c | Bin 0 -> 3241 bytes .../7f94db37978e3d1cba15f6b340849c815ae12f7a | Bin 0 -> 145 bytes .../7fe5b833a6002dcc0a33f9ae66a8b4c74f87eeaf | Bin 0 -> 36 bytes .../7ff692f4166d9dbf92e3830324ee54b52dba2cfd | Bin 0 -> 120 bytes .../7ff77956a3160d1ad80a039dd981553a82e09e6b | Bin 0 -> 69 bytes .../801e9ccd13573640ccdc8f0b36b75b51019fb950 | Bin 0 -> 407 bytes .../80212c71e8c6f8efe86c4393414aaeb677c7dca2 | Bin 0 -> 101 bytes .../8045c1c468387f52dfbc9bcf24be5692627cdd5b | Bin 0 -> 39 bytes .../806f296a2c91af5ba074714eecf21e6d850b1afc | Bin 0 -> 614 bytes .../808cf56bd306ff3c1e886a5950f953eda3514777 | Bin 0 -> 113 bytes .../813c78fcd5c38bc6f770616a33e76f7ef08d3231 | Bin 0 -> 73 bytes .../815656d073ddeaed4b951541ab59e054a248aa04 | Bin 0 -> 78 bytes .../81737015d0a8c3794cb59c21478145c97648cbc7 | Bin 0 -> 139 bytes .../817a8ca197fdb664759d1f27d2001875926f682b | Bin 0 -> 219 bytes .../81a2292134efba059d371e783a777d1be421c638 | Bin 0 -> 144 bytes .../81a5601ccda21f25bab65ca370ab6cad3267060e | Bin 0 -> 733 bytes .../81c14769b1687e311ca6817e0e884fb5e7aa4f00 | Bin 0 -> 234 bytes .../81d264f99ba15235fb41af077433ee0e5cbcfce9 | Bin 0 -> 120 bytes .../81d2a20eae4d639dd5ba25e52e6da04e85da2416 | Bin 0 -> 80 bytes .../81d74e228936cabbc6c47467e4640c77c5d4906f | Bin 0 -> 246 bytes .../822f001dc348d448ee53ae991b94fc9c4b4570fb | Bin 0 -> 469 bytes .../823dc6449bb0e35a9cbe57f4fddde5f150e0431c | Bin 0 -> 135 bytes .../827264583bc9d8cbbe4459306f2955a8924a1b16 | Bin 0 -> 172 bytes .../829194fd1fe674b4ef21af7c2de69dbbc5419e2b | Bin 0 -> 70 bytes .../83295e9beb965d51bca434999f90b4dd3088ea90 | Bin 0 -> 69 bytes .../832ce48d3ac1c9d187e9376e203e2abf3c2bfe83 | Bin 0 -> 169 bytes .../8343f308867a510c80663a1cc5d6d9f5faaa2e4f | Bin 0 -> 1662 bytes .../8357c65dfa723f993a7adc4435dab2e869fb6385 | Bin 0 -> 160 bytes .../8368128be7299499d47fd820a33e22ba03f0f346 | Bin 0 -> 84 bytes .../836e8a86b74d983f2ebdf44ccf89aafb43be6728 | Bin 0 -> 440 bytes .../838fb7515c42cc990117fc4cd9aee4e5e5902901 | Bin 0 -> 97 bytes .../839bd7f3087b6ef97eb403ad8f9c50dde6113033 | Bin 0 -> 1120 bytes .../83aaf656c9cec31abf1df18e5901a4c1ec514d1d | Bin 0 -> 1125 bytes .../83ac3bf8271f06e6990d9712e32c62c014c91aad | Bin 0 -> 320 bytes .../83c2c8e8d2dab3587107b564be2bfdf77239439e | Bin 0 -> 2219 bytes .../83ceb37e0911c1ea340cfe06aae96c9792c0ee2d | Bin 0 -> 2240 bytes .../83ff6a97a76379dbc705cb2a649dcafd3ec5800e | Bin 0 -> 211 bytes .../84169541dea42a9ead48a05467c87e476da5a423 | Bin 0 -> 108 bytes .../84269ef122300aff914d44e874fd289d71952537 | Bin 0 -> 165 bytes .../843ad218f56b25a9a65e912c5ae5087c051820ec | Bin 0 -> 461 bytes .../843c395d632a4a7d2ef57d3cdd2f56d26f7e4f99 | Bin 0 -> 112 bytes .../84697aacc5b9d17211b3209c1d2a1ffccf66104d | Bin 0 -> 115 bytes .../84aa29d9f1c07ed0fce2749b0d6c3ad91d091d72 | Bin 0 -> 102 bytes .../84c3b7c1bed5e7bec706d1bc9491ec333cdc14cf | Bin 0 -> 139 bytes .../84d9ee97e80792f722cf3752a050e357a2c73fd9 | Bin 0 -> 108 bytes .../84e0972b0da768a23fd43d01322ec552c1635ad4 | Bin 0 -> 1138 bytes .../84e1fe67392229f6c566803ba88cd65c05315735 | Bin 0 -> 40 bytes .../84f8b5f5b9c5a7c34a40f4eabb333f2d908ee678 | Bin 0 -> 204 bytes .../850557e4b78c6bb31c67e51bfae6235bfcc9b2f3 | Bin 0 -> 640 bytes .../851beeb3295d1997cadcd226d8ae05c9294df9f0 | Bin 0 -> 105 bytes .../852612e944281ec8139573813dab235aeb6a6cc9 | Bin 0 -> 106 bytes .../85330683dc886c9529e975e47ce499ca5ea93d04 | Bin 0 -> 112 bytes .../853bee8034cdaf5508442392fd1ddba978ce277a | Bin 0 -> 69 bytes .../856f290a4e613976f50b0c1ae9449cdf60964110 | Bin 0 -> 124 bytes .../85c2117ab7b9c18f6e21eb42bb2d5ab936fa5c3e | Bin 0 -> 233 bytes .../85c6633f1c4be30a33c84fba0a4d974478968950 | Bin 0 -> 102 bytes .../85cd491db9b3e30f8de137fe417210e443c7ed8a | Bin 0 -> 73 bytes .../85e378555ca5b283f7d2e9472dc330d98ad3cd52 | Bin 0 -> 70 bytes .../8600f7f2793a98d56e3d0329772f462d9aaa810e | Bin 0 -> 209 bytes .../8602854c2537d10d71f0a1feed9a49976d0a17bd | Bin 0 -> 384 bytes .../8602c8f5c2f3e050d9825b2661ebeb90aca5520b | Bin 0 -> 140 bytes .../8621400cde2f424219d1db947833e6d78b96a750 | Bin 0 -> 3341 bytes .../863d5803a1d1672d1a49af867acac045599e2a57 | Bin 0 -> 122 bytes .../86809a69ff6837e8ed7a777aa8712f6ce4814cc4 | Bin 0 -> 102 bytes .../8693ddb1919f7d855269474d7dd4d6c2d62f2c6d | Bin 0 -> 3139 bytes .../869c67e392cec89e4385c74586f2745ac73227d1 | Bin 0 -> 119 bytes .../86c231d06de82c7b9323381c890c08781cffc920 | Bin 0 -> 133 bytes .../8709e064a75e666341bd138cf01ea00c2baa8838 | Bin 0 -> 1752 bytes .../870ab117cdacd7c533576194ec83ae4c4f021361 | Bin 0 -> 603 bytes .../871a393a6a16621389065074177176ebe605e38d | Bin 0 -> 102 bytes .../871e89cad3d9428e4f9b434ee977fd6115bff4be | Bin 0 -> 69 bytes .../87312761190a6d7c95d9ca38bda0312334b0be9b | Bin 0 -> 288 bytes .../875acf905688e648da8ef9cd69730dbbd54e86b7 | Bin 0 -> 150 bytes .../876a402c981413c92b7a2b69cec555405f31d5f8 | Bin 0 -> 103 bytes .../876a8dc97ae0d995214c8c724e3f4938a6fe084f | Bin 0 -> 1408 bytes .../87776d60387b3ce817199d4cd87f77e30bc9a0ce | Bin 0 -> 108 bytes .../879f9560171860c1ebae7be6cebfc308ca8e1c17 | Bin 0 -> 40 bytes .../87a0d7637479e620efe963d2dec085916fa810fa | Bin 0 -> 69 bytes .../8836f451454ff9741877b0f856c42e2dabb0ee0e | Bin 0 -> 165 bytes .../8871564ba0add28be21ffe008f11ce91fd38147a | Bin 0 -> 324 bytes .../887fd53302917e27b02fa2cc85ec35b9b5d43041 | Bin 0 -> 206 bytes .../889d9c11977466f0952cf51d726930eaf880f2c5 | Bin 0 -> 91 bytes .../88e331430bbae0eea37b9686b20fb37be874217d | Bin 0 -> 771 bytes .../88f97414425e6fb2ea409a72141e68bca93fd56d | Bin 0 -> 394 bytes .../890c7d9b9112b86ea26820718f2f8540f14c4132 | Bin 0 -> 333 bytes .../892c436a5218d714f0b772ba6011cfcd0b77706d | Bin 0 -> 36 bytes .../8939a893b12c5a792930d7d8c353408314182391 | Bin 0 -> 327 bytes .../89431df7a1e1f0b7a8f584f0384bdc2a7a511cc4 | Bin 0 -> 76 bytes .../898aac0c810f2e2c74f78936540260561fe8b3e4 | Bin 0 -> 120 bytes .../89b094c57c741e7b84cb15e900085165b6a54201 | Bin 0 -> 155 bytes .../89e3d570a222c18bc945408b71bd3f08e143c063 | Bin 0 -> 106 bytes .../8a0b3eccb0767fabc3f46ba7bf63e31ccce3b02b | Bin 0 -> 100 bytes .../8a0f401f798207db6c8b01913220e4ff4049cc5e | Bin 0 -> 166 bytes .../8a22188c29211f7e6906e37f43c4460e2812a832 | Bin 0 -> 302 bytes .../8a33417e455ee41b684d90e2d32cf8806e629fa5 | Bin 0 -> 100 bytes .../8a5b85c717c89c65dc63fac75b01781c118c7c12 | Bin 0 -> 105 bytes .../8a71421daf13eacddcb0d8cfd490703916557780 | Bin 0 -> 104 bytes .../8a7364f68bda9f6fa37d7cd945f89308f2220c6c | Bin 0 -> 165 bytes .../8a7bfff5d38f3462e876e712d0818e4f009e0d53 | Bin 0 -> 146 bytes .../8a8e8718644eaec23c0c27e2a7737fde55df8b1b | Bin 0 -> 574 bytes .../8ac69ec669a6cd0f8d68c441915970591f1c8939 | Bin 0 -> 126 bytes .../8acfcf0fe8b00098ddb6a27a2e096b0e06b47e51 | Bin 0 -> 339 bytes .../8ad02a0ed4b7ba475c9ab4ec3e763dd476060fc8 | Bin 0 -> 370 bytes .../8ad93fd0d1962574b6c11eabbd2f10926f8fe761 | Bin 0 -> 630 bytes .../8ae43351f05a1f4f7c780ba1b20efba0f094923c | Bin 0 -> 102 bytes .../8ae8aaf59850fb7d967e8eba8e3eb0e5d4acbc2b | Bin 0 -> 102 bytes .../8af7b82ad27d65e0cde8609e40578070b3e29982 | Bin 0 -> 586 bytes .../8b226f84c1593a323c1a1387b5f76ce2d27053df | Bin 0 -> 104 bytes .../8b2e0dda68c540ab2670f0a4a03265b8e5789902 | Bin 0 -> 1217 bytes .../8b46dc3a74c1f00ec2d797d4725bf77bb26b8618 | Bin 0 -> 110 bytes .../8b9dc8086e6803264f339153d8d501cf0b304fd9 | Bin 0 -> 142 bytes .../8ba0b96015902ac14f3a2066f517302fe28c6edf | Bin 0 -> 2153 bytes .../8bb5913391d907b3829e475a0d982e98217230fe | Bin 0 -> 101 bytes .../8bda61d0d497216bde6d2865b7f8c26df0702954 | Bin 0 -> 1163 bytes .../8bed6f305898ddcfaf14ac4c4d3febb1b69e56dc | Bin 0 -> 206 bytes .../8c4753a130f6268258ac1cc39108b843a4210df4 | Bin 0 -> 69 bytes .../8c84bd43c113b9f1fa988796307fe5ed77b923c8 | Bin 0 -> 134 bytes .../8c89e29dd1d57d7e5616a3b68d39678267df60d2 | Bin 0 -> 74 bytes .../8cb003b20ad361f711a61634a1e280dcf7ca4910 | Bin 0 -> 147 bytes .../8cbe50e5868507dbfa64360ab8935689ac005f42 | Bin 0 -> 491 bytes .../8ced8f7fc42421ce6d4920c62688b621fabbbf60 | Bin 0 -> 120 bytes .../8d09b8839f60d7289c31fc73a47767def27110ab | Bin 0 -> 71 bytes .../8d2a81f2b79778b61e84b96ce111083b918d12b1 | Bin 0 -> 3193 bytes .../8d37cfc4bc1b0d607e967a774712de0cfdc1d0d6 | Bin 0 -> 99 bytes .../8d45ad1dc43b87bd5e87ac210a13222135ee8e2f | Bin 0 -> 1876 bytes .../8d585e33080801d329007cdd945a1cf95e9dd1ea | Bin 0 -> 92 bytes .../8d9ac5f667371272cd3044f321c02c28a42c25dc | Bin 0 -> 877 bytes .../8dca3fa748a2eceaad67d32e4ec211fdb68550fc | Bin 0 -> 446 bytes .../8e2d519f3841c8d5220778e40913b1a462c97b12 | Bin 0 -> 223 bytes .../8e5362552348074c79a58a7705bc8734ad7fe373 | Bin 0 -> 157 bytes .../8e640d948e1dff48c4f488d42917d957835c7795 | Bin 0 -> 574 bytes .../8e698937b5ebe1bf7aad256d8340b7ad013f2adb | 1 + .../8e73653222f4bc524d3b5fa96221daad0ac941e9 | Bin 0 -> 168 bytes .../8ed44f9d26529e79c5f1ec78381d33f732e8ef17 | Bin 0 -> 185 bytes .../8edf800c03a8aad4523c3d8de48bf4599a42e6fd | Bin 0 -> 211 bytes .../8efa9187d6a0e27a24408e91b68606fa6b459f0e | Bin 0 -> 248 bytes .../8f01b61dcb5c337b995dcf0e5764f34e5de119aa | Bin 0 -> 325 bytes .../8f1a55d99de3071ae0f6e59100450ec5b692a447 | Bin 0 -> 121 bytes .../8f331152d08cc196dec4a1d056788d4de085eaee | Bin 0 -> 145 bytes .../8f36ff88bf4b338ab4947e4c0239f9eb3575fcf9 | Bin 0 -> 190 bytes .../8f39339cc14bd9193514c410014081bfa344c808 | Bin 0 -> 139 bytes .../8f40d833d26571fd8c25a30163093c71b8ec14e1 | Bin 0 -> 114 bytes .../8f4a7f193fdcb4e8d9304a74317a9fa6921c3ffb | Bin 0 -> 4 bytes .../8f52a3721d402c54d4f3604bc1df28a1796d3f32 | Bin 0 -> 144 bytes .../8f57c6744d49926eb8d6c0a36b80991c50996344 | Bin 0 -> 331 bytes .../8f8748ad3794c703d767666b91847b9747eb38c4 | Bin 0 -> 179 bytes .../8fbc8b089aa011ffef0a708cdc7b1d9b968e7ac4 | Bin 0 -> 458 bytes .../8fc1fc6eb61142f1f8db3972b8355b8d2351af17 | Bin 0 -> 106 bytes .../902e9545496f4bd52675923b09256bdb3d285e40 | Bin 0 -> 144 bytes .../904219e4f56c8e679d64389a9f16a87f876cb9cc | Bin 0 -> 376 bytes .../907c814ebe5a217c57b1532198428d001cff0bf8 | Bin 0 -> 108 bytes .../90839e2f2bc032d0e688d04d06e00da1e5b6769b | Bin 0 -> 102 bytes .../909df934174cd3496294e668eca5b1ba6dd22e60 | Bin 0 -> 2255 bytes .../90bb6fc426b1324848a639c7bb414e5d14356550 | Bin 0 -> 223 bytes .../90c7cb30b59b02b23cff45739cbc964fdff4b3f9 | Bin 0 -> 120 bytes .../90d4c2d95d25aa1e67ab78f1553148de43f42ceb | Bin 0 -> 160 bytes .../90dfac881acb62787fd9479f8c2c90aca0979866 | Bin 0 -> 67 bytes .../90f2d8c6a973a3044bb3d9f7b2b505fe8b735467 | Bin 0 -> 102 bytes .../90fd5c59f63f6404bdeec3571a7c22dd471f2a76 | Bin 0 -> 236 bytes .../90ffd04a9547fd44b574e2346764605436b494dd | Bin 0 -> 107 bytes .../910bb3ca72a76508a0a036830f0b0678d1ce8cf6 | Bin 0 -> 73 bytes .../9113dc61fd586fcacaae9ed3cf37ea084ece8990 | Bin 0 -> 1019 bytes .../9114620e87fa084243157b4f03684e2abb72ea0b | Bin 0 -> 66 bytes .../91267d27e463ef628be63cad43b38a6243eebe90 | Bin 0 -> 106 bytes .../913d43ae64592c8b4c55bccbfcaf1e34d9b6c78c | Bin 0 -> 1163 bytes .../9148b45122d0ecadf51458de33998ff27ce96e55 | Bin 0 -> 175 bytes .../914ff5d72f2c35c5dd5246f56ceb26f135043ca7 | Bin 0 -> 466 bytes .../9166dd5c71910bc2a5c88c6b610c822518f47b49 | Bin 0 -> 1241 bytes .../91923f189c6813b46baa52a30f72bea9dab4cec3 | Bin 0 -> 134 bytes .../91a8e37b3a1f44bda6ac409980e6a2d4a9156a11 | Bin 0 -> 360 bytes .../91f7985c3e6d3d8a17580a9d293d643e52d5c534 | Bin 0 -> 625 bytes .../92148259f949540128b36486bcb9e6d3ab8ec124 | Bin 0 -> 880 bytes .../923ceaee40c82c9fa5491ba85b4972b8582a2c69 | Bin 0 -> 112 bytes .../927caaad37be4c7c3ff69eaf3fccea4a0a2c3c6e | Bin 0 -> 41 bytes .../928aed4be9c6335cfdec4e04a3644d36b162e59f | Bin 0 -> 195 bytes .../928e5ea8a82bd17015cb1b2b828dccbae05ed81c | Bin 0 -> 208 bytes .../92d49fa60a0535d9a2993d81e71bcd893b96744d | Bin 0 -> 100 bytes .../92e4b808ccd7718fa4494efe2803822b377596ea | Bin 0 -> 112 bytes .../92e6fca9bb5223fecf157bc2fda2a3b02181b3e7 | Bin 0 -> 115 bytes .../932359778a7ddaf719fc878a4e23093e142948c6 | Bin 0 -> 69 bytes .../933b97f21c81d68e32857ca64df28cd97a04077a | Bin 0 -> 233 bytes .../93608c9cd306ea0818dedb1e1fd86a39952123ac | Bin 0 -> 378 bytes .../938900bbaf4a1a1eec75d16ec3e4bc45256de6cf | Bin 0 -> 40 bytes .../93d56d539af6ac5a69e695ad565ea6d02da157cd | Bin 0 -> 147 bytes .../93fa04a15a203225ace622afffd955ef2c50d46c | Bin 0 -> 408 bytes .../94296913d11ce753fe6ed95171410cf5f8d01c36 | Bin 0 -> 938 bytes .../94368c9131dd1ed8dd79e8ff7ca98aa40b30d7db | Bin 0 -> 1497 bytes .../943e790a9ef18ecae5661080ded421c3da4e967a | Bin 0 -> 505 bytes .../945b9a12a1b293ecd3af0b4bc4ad11a81183d2e7 | Bin 0 -> 1063 bytes .../9468850301ce9170aa86986ba4f10461b711349e | Bin 0 -> 78 bytes .../94b34427be5d7c62ee764559406a0c561184b660 | Bin 0 -> 212 bytes .../94c526d076b812e768ba933ef1e373c4ec0912d7 | Bin 0 -> 395 bytes .../94d124dbb6c5c418fd5edd09927de3fd3952c448 | Bin 0 -> 120 bytes .../94e3f46d03542cb08030511441a7b0e1502c9336 | Bin 0 -> 210 bytes .../94ff9bd5bb4dfb4d074c115e0201367247e6f40f | Bin 0 -> 92 bytes .../952418b86b69c6c5955480dbf4932965c0edaf21 | Bin 0 -> 2127 bytes .../954da74a4362ac8b00ea38a1cbb5d0c84e92e64a | Bin 0 -> 550 bytes .../958931c0af4fde12af91b2b4b2cf33dd3ea37061 | Bin 0 -> 51 bytes .../95a1f4c7cc112c88aac967b6feba84d9d8ce8013 | Bin 0 -> 276 bytes .../95cba40a6ad0d1f046081552fb1ba7561580de24 | Bin 0 -> 458 bytes .../95eca34f27a6a51ef5ddbd45e2181c4646033e35 | Bin 0 -> 610 bytes .../9650a9885e2b5ff63e106e33d261979961ddbdce | Bin 0 -> 84 bytes .../9650fd22b68938e9c792ce6db89ec95724183c1f | Bin 0 -> 232 bytes .../96530dca593097b70c65d339e3eec7de1579307c | Bin 0 -> 81 bytes .../9660c0988d5dd571f139b60462e2c3b6b8a99201 | Bin 0 -> 99 bytes .../967e23f677b127242edf6e398318c7b0be5d2e1c | Bin 0 -> 120 bytes .../96918754c1d8476b006388739968dce90720c2c7 | Bin 0 -> 69 bytes .../96b406c9132c08286fba4002d7d26142171f44cb | Bin 0 -> 106 bytes .../96d5767c72ec78d6fa16c097d95559b0b449e135 | Bin 0 -> 113 bytes .../96dac3f664df069f373a5f02afeed805f8d00918 | Bin 0 -> 754 bytes .../96e16ca69c68c6812c34b3f7d87381b4f5589361 | Bin 0 -> 106 bytes .../9701eac27e38b4d198e26228113ffdc76fdea589 | Bin 0 -> 69 bytes .../971b1560ab92e7840aff0034b89833ce4e62d8ca | Bin 0 -> 770 bytes .../971ec195d5011a172ec57c10863ecec6d036628f | 1 + .../97218a0b259b20d3e0777ec5193146c0f20c150e | Bin 0 -> 3470 bytes .../972bfb71e17aab591a53713624b9d38513800f2e | Bin 0 -> 69 bytes .../97641203c7593c4baffb35a61f7054a9b0049a4f | Bin 0 -> 1146 bytes .../977ee7319f66d5d4da2d9a37845a9d366fd752be | Bin 0 -> 154 bytes .../977fd46f27620198fe8eeb07ae07d6fb805e3129 | Bin 0 -> 84 bytes .../977ff6e02707adeff86521e71edb8ff32a76e30d | Bin 0 -> 106 bytes .../97fb5b3c5b5867374bf6f4200aaf675b1f053e54 | Bin 0 -> 120 bytes .../980b39be6d42e294ab54a02cd96b8325ffc4f982 | Bin 0 -> 392 bytes .../981057bbd4eeb0d24e7562feaf61e625c6dc88bd | Bin 0 -> 98 bytes .../981a6a5600069bdf40665c67bdec186b2df55a83 | Bin 0 -> 121 bytes .../982f865b15e081a25649c841cb03e95a1e49b09b | Bin 0 -> 136 bytes .../985593bc6f792360ce8b8a4b5a16346ec29c6a38 | Bin 0 -> 134 bytes .../985cfb783ed2c8a6a3e385d2669d7bab4201e2b4 | Bin 0 -> 348 bytes .../98693d04569d34ebca27f95425a38bbe1088eca7 | Bin 0 -> 108 bytes .../986fc5a28a4867a4dcb6bd2911228e087f53b391 | Bin 0 -> 69 bytes .../9872c895dbfff515d9dcc12a6815f0b7a57f9bd9 | Bin 0 -> 544 bytes .../98b5ce00c98db04f0c25ba401ce1c3473665c3d1 | Bin 0 -> 120 bytes .../98f8bf5a578768c9687ac66ced2222ce989c575a | Bin 0 -> 148 bytes .../9913741d1fc0599e9bc040e743b49d0910962b0e | Bin 0 -> 66 bytes .../99528249973de765e4650895580d15355443e67f | Bin 0 -> 42 bytes .../996f90eef9fbe51b578675b3907b3793d0ca64f6 | Bin 0 -> 286 bytes .../998b724972d21f411214771394c08a09a8e7bb79 | Bin 0 -> 65 bytes .../99ad7dcb5a371cf8285e48d7cdf6749027fea3d4 | Bin 0 -> 108 bytes .../99c020478bb68808a6c4d3757bfdddbefafd20ae | Bin 0 -> 106 bytes .../99f3870ed7b619a95946157e6ff86c3d466e3935 | Bin 0 -> 116 bytes .../99f6ef0fa50cfb4f1642f758c52820a68c964496 | Bin 0 -> 308 bytes .../9a6ed1be0606889e3124faf77f9f26821a308056 | Bin 0 -> 2970 bytes .../9a93158cd5cdaf8d19cbf54ef8fb451a53967339 | Bin 0 -> 2083 bytes .../9aaacdd034a4b6720322545ce68672a4ca32061c | Bin 0 -> 106 bytes .../9aad5607940370f7224c7aac753a22495984a9d6 | Bin 0 -> 430 bytes .../9abbd6f61f12dac2f0daaca291a329b8a2991d82 | Bin 0 -> 3203 bytes .../9aeac0b89be9a5d0175b3b7abc6bd80d3c4f1412 | Bin 0 -> 85 bytes .../9b0be960b1129fcf72d2ce3e1da0fe7796e0dbd3 | Bin 0 -> 47 bytes .../9b17ba5112ead18f32c69d680cf1b4c686003586 | Bin 0 -> 394 bytes .../9b28b7ceef627b9310f0cc35f61d78e461415797 | Bin 0 -> 104 bytes .../9b30d4296c272fdd48876e4d517d8cd48e7e23c8 | Bin 0 -> 108 bytes .../9b4be303509d04ccded139062d1c86949f13a749 | Bin 0 -> 73 bytes .../9b54cf3a3e5abac1f1798e62cf557eb53785cd71 | Bin 0 -> 842 bytes .../9b7c95b2ee72ab6347484a6679548b7671fec40d | Bin 0 -> 1066 bytes .../9ba8be5f01e6c59523360e246bf321707195c64e | Bin 0 -> 408 bytes .../9c1e071cd40ef456c80db14ab6279191908804e6 | Bin 0 -> 3200 bytes .../9c241260e18673e5a907fb110c8ab7578bbe82e7 | Bin 0 -> 103 bytes .../9c47e0548e795d9932d138becfeab778c0180a1d | Bin 0 -> 233 bytes .../9c60d94673a78e97b868eabdb3d20beafad86b7d | Bin 0 -> 144 bytes .../9c78b9075fba3c55fe322becd2c14de15357ab5e | Bin 0 -> 464 bytes .../9cd6dbd06c4d168f9f91f3ea3aada68e3bdcd3ee | Bin 0 -> 254 bytes .../9cec130b4190e0064c6654fdfc72e4c846f06ab3 | Bin 0 -> 329 bytes .../9cfe6596628788f5442c7b6d32dddd46b2e9322f | Bin 0 -> 1095 bytes .../9d3f8c4341dc52765ae5568821439d79b2ff4486 | Bin 0 -> 2225 bytes .../9d7bab66e6a5c032289b5bf8f41318432689f691 | Bin 0 -> 350 bytes .../9d94d57d2a876d3c974280a054f6b861e8b8ee8f | Bin 0 -> 79 bytes .../9da016e1836bf58d9e01bd78b407234e8a63d5b6 | Bin 0 -> 69 bytes .../9de256302dde57124d6e1a589384b22cbb6744d4 | Bin 0 -> 69 bytes .../9dedc2eb341a398320cfc085a594038b9059ea06 | Bin 0 -> 115 bytes .../9e2ae70380ac19788fc7895b341bdbab163a87e8 | Bin 0 -> 131 bytes .../9e30979bb21ddfdaa17bed28f606f472dff0f19e | Bin 0 -> 2474 bytes .../9e3ca060f2f65039dcd9e16d1ad3985ab44382b2 | Bin 0 -> 120 bytes .../9e449baa1048738d81380e1c891c07dd43e1a9b2 | Bin 0 -> 260 bytes .../9e5b8aa4c45e3619d85a1473229e1d66f4ad48e7 | Bin 0 -> 1555 bytes .../9e803f57defd8e912dc797b9dbfd3aac27b9ace9 | Bin 0 -> 99 bytes .../9ec2ede23b6c73d00cb2f6018b64f493dbcd8efa | Bin 0 -> 1327 bytes .../9ecf66a3ebd3a67fd436993d4bdb3f847daa3697 | Bin 0 -> 36 bytes .../9eee3d01b6f15e1dd4f63931031019468b3555a0 | Bin 0 -> 54 bytes .../9ef41e08dee8a1199d0a13a0386c67b71667ad6b | Bin 0 -> 69 bytes .../9f330d1c0863135fee70bd56c9f716d3a9bbefba | Bin 0 -> 2178 bytes .../9f4f5cc25f7e9f4ae4c55a52c1b1f01c70350d94 | Bin 0 -> 191 bytes .../9f52f113cf6b07f8fa43582f7a651e3b1a24082e | Bin 0 -> 144 bytes .../9f59ae1a679d0db7b98247533bbdbac5025eb28a | Bin 0 -> 206 bytes .../9f6ecea8ab081020ee29b0f69970cfcb1b470b23 | Bin 0 -> 235 bytes .../9f85bca93890d4ab652e0f78921590b71ad39922 | Bin 0 -> 180 bytes .../9fa9198d7ec1a0e0f29bf8e3843b4e331b2be8f9 | Bin 0 -> 166 bytes .../9fb7a6049b631b7a9b00dc8156ba10c76dc234a1 | Bin 0 -> 286 bytes .../a00ce6721f4e3b6c8bbde0357aa9b6ed3dcd2653 | Bin 0 -> 108 bytes .../a0402e7a7b9602d44e1da267a785de5b57a09668 | Bin 0 -> 166 bytes .../a04ec9682a046248e400ac66a09c69c968da8009 | Bin 0 -> 441 bytes .../a05f44b7ae3fe252ae56e532595ff032f2ece62e | Bin 0 -> 38 bytes .../a06e5d87f23c6dabba262a6b301a425636b434ef | Bin 0 -> 2707 bytes .../a0724ef9d2a467d743f996937ba3ef72225860e2 | Bin 0 -> 69 bytes .../a07bec09199f97fbe68679d9ef1b3f8180084336 | Bin 0 -> 69 bytes .../a07de385038f371937bbdc041d1698a3eeeb0e3a | Bin 0 -> 1023 bytes .../a0a5e60ad7c50a8adce5d9a706d1990194816322 | Bin 0 -> 250 bytes .../a0b74f15cc136779c3036836d74c7f833ae9655f | Bin 0 -> 105 bytes .../a124a6aea6603776b3a71cd813903d4191ec82c0 | Bin 0 -> 129 bytes .../a131ab9d440a60d6eb3f77ac366d91a4589744b6 | Bin 0 -> 538 bytes .../a140f3a860b94995c124e3ebe261598a20b2a390 | Bin 0 -> 717 bytes .../a17c51b2fa9f23ff210d0e89917b26fb14daf8a1 | Bin 0 -> 139 bytes .../a197d714b9b79700a96df7028af09116f360ba72 | Bin 0 -> 126 bytes .../a19e0848b6ae37a8334f174eb35725df1882dc62 | Bin 0 -> 139 bytes .../a1c6ff56ff1f880f79350ecbc7612e7f69023a6c | Bin 0 -> 870 bytes .../a23b0f4d2553440e151ce9cf8a24fffc6efad9c0 | Bin 0 -> 120 bytes .../a252e70476c0635ccafb278f4a35fb48e8818c30 | Bin 0 -> 333 bytes .../a25e19710fcd419d19f54f0a572449a0056f9d20 | Bin 0 -> 172 bytes .../a2778495452f89e265644e0fc66964af0f7d9e60 | Bin 0 -> 69 bytes .../a2a6b6cbc125c6b928182cc5ea8aae7a20425e0d | Bin 0 -> 108 bytes .../a2bdbdd72978f996e9d09afe3268c68b53b78783 | Bin 0 -> 281 bytes .../a2ec72c9750f0709b192400745be046d3da77685 | Bin 0 -> 69 bytes .../a30075c591196ff0ac86376af28a7be74de77ad1 | Bin 0 -> 106 bytes .../a31e589e6dea656fd22d7d01e46d98e5ef8b28d8 | Bin 0 -> 142 bytes .../a34e28b15e51ee0fbc40f0386395d98fa2ad339c | Bin 0 -> 192 bytes .../a3936fbf2a00ca8477e83d2a0cbb6c4e162f629e | Bin 0 -> 224 bytes .../a39828749775b26453a2d58c5a786922403dafc4 | Bin 0 -> 75 bytes .../a3ca6f82d249c0ab8f79ab4b58edc0b9d055d142 | Bin 0 -> 2969 bytes .../a40db43a6195cce6df5ff0077c7fca1fbe016fb3 | Bin 0 -> 72 bytes .../a41c29b344f7a32203f4c6fbb3341d66a76e0f8d | Bin 0 -> 69 bytes .../a4431c62fb8ef0665686a78cd818282946ba9aaa | Bin 0 -> 102 bytes .../a448a9d7e6765afd6d1028dec3cfca58e17b581b | Bin 0 -> 139 bytes .../a46ffe0e19429417ab070f2c3ce34a6fac2c582c | Bin 0 -> 69 bytes .../a472e7c34f650bfa9b6642c14d493a32c10d5492 | Bin 0 -> 108 bytes .../a4b78ac6b2d9cbb4aac5db15a808236c47c81648 | Bin 0 -> 1210 bytes .../a4de7cbc3d38d08ba145a1ea7cab672a5e7839c0 | Bin 0 -> 102 bytes .../a4eb99045b43365c0c07d08573ce80293e662f5b | Bin 0 -> 66 bytes .../a4f64bc10c0d08f3be022aabad141a68414ff5e3 | Bin 0 -> 101 bytes .../a555234f5da3adddce2137190718450dba377e56 | Bin 0 -> 69 bytes .../a568ae849db9ba3c316c7c3ddb48c5f88b6b1c25 | Bin 0 -> 80 bytes .../a57bdbc6ea4669a17704ca5de70aa2b1d1b09bd4 | Bin 0 -> 144 bytes .../a58164328a9db030f36a8fc7f11dccddfa1ca050 | Bin 0 -> 70 bytes .../a5a1a9ec9db8510374b7d62883154c95e13afdc1 | Bin 0 -> 136 bytes .../a5b715881b7e41246bb34205acf8a99cf6ad5b15 | Bin 0 -> 84 bytes .../a5db49eeea0edb757b08e378ded563004d33fb71 | Bin 0 -> 88 bytes .../a5e72b3b078d1d8f9b12007aaaeb57bffcff2684 | Bin 0 -> 352 bytes .../a60b2c853a9e3b3be9f31a3b19d94e6dcb957e83 | Bin 0 -> 639 bytes .../a62085e1420f6bc8587fa150147d892568930aeb | Bin 0 -> 136 bytes .../a63b134d68fcd412a837d7a684da1da24d3faebe | Bin 0 -> 39 bytes .../a648ffd089006c76755202162341974dfa085f0b | Bin 0 -> 69 bytes .../a64f2befea21affc7215b7710c8f698eff46f6f1 | Bin 0 -> 36 bytes .../a66e6843fa98cffdc1a61d3827b0a5e7d467e399 | Bin 0 -> 1560 bytes .../a671a8bce0d19da27a479f63d662d109321d7c1c | Bin 0 -> 312 bytes .../a68cfa9b49941181d0536cbe57c0ff875682be5f | Bin 0 -> 295 bytes .../a68f939e75f3107545f434142bea3f77de5af2aa | Bin 0 -> 108 bytes .../a6af47c9d1aa96128faf909754769812a92ea2cd | Bin 0 -> 1529 bytes .../a6b3e6680654fdbc7f8aa50dc1e200bbdacd1b86 | Bin 0 -> 218 bytes .../a6b7dcfe93de48aa50ab692f9dde48659cf8bb51 | Bin 0 -> 1327 bytes .../a6bb1a9b10959fe53936a1fac7eb0bde4be444aa | Bin 0 -> 127 bytes .../a6e1ce7cc857d744fd47a08b8a659a0ac0a4d466 | Bin 0 -> 112 bytes .../a6e33f3db52b71566c50f6eae9ccabea13071b05 | Bin 0 -> 346 bytes .../a6fca0cc59ddb4e67de9a60338c3c045f1bfaafe | Bin 0 -> 144 bytes .../a72ca9cb40b29c1264df92aeae418e3172042018 | Bin 0 -> 106 bytes .../a755472a71ea22d4f9f3b0645c4da32283838008 | Bin 0 -> 80 bytes .../a7757cd87759689bd919a5da5cbafc6d7ae55753 | Bin 0 -> 226 bytes .../a7b8b53d1b04ddd9c057aca5207626def04f20f3 | Bin 0 -> 107 bytes .../a7bfd49bdef2d481abe0b672994dbfb5091e5043 | Bin 0 -> 104 bytes .../a7c18a6bfc5b1d6d5c2912e0925f2a604335d558 | Bin 0 -> 86 bytes .../a7cf4e1481bbc25d69cde1223d0ca1f564f804a1 | Bin 0 -> 116 bytes .../a7e583fff5800704446327afa38bd746689bfbe9 | Bin 0 -> 1149 bytes .../a80466a2b191afca2d8a60dcbb61fd7b8b390b37 | Bin 0 -> 233 bytes .../a807bf50577e8c5083ded8e5c4d225dc05f47f6b | Bin 0 -> 102 bytes .../a80b911f1542d09573307e9c8577860fa9816285 | Bin 0 -> 113 bytes .../a82e293ea52cf8fc548427fa24dd7a55c81aed0c | Bin 0 -> 156 bytes .../a8610f7c50e75bfc1ca37b56db39c3b2f9025004 | Bin 0 -> 134 bytes .../a8621e272ae40c121e7fa695ed6668f237cd7892 | Bin 0 -> 99 bytes .../a8762aad35c5b45be111309e719165ff48773a2a | Bin 0 -> 108 bytes .../a8790d98d8a107d592eebb5f99dee7b017fdff3b | Bin 0 -> 75 bytes .../a8aed5fafaef98a6b997478b7ed68bbbf666fba4 | Bin 0 -> 40 bytes .../a8c1c193e7efd801f9e0a1d910da70ee9d584437 | Bin 0 -> 408 bytes .../a8f6bfc3f182aa200bc53909b9e4764efad16802 | Bin 0 -> 126 bytes .../a9085a24fb1d7300da30a5300f954e3671a52d01 | Bin 0 -> 143 bytes .../a926de9ddb04cdfb33ff1683b88f623ec67b584d | Bin 0 -> 375 bytes .../a9273ea543537deaf8dfd24f6b6f6201206b9abd | Bin 0 -> 97 bytes .../a964dd60aca3045d39dbdc0c98a037593c67d8c1 | Bin 0 -> 128 bytes .../a9980999939802d49268136d3f0a6629686b723a | Bin 0 -> 356 bytes .../a99d22b39d4c8d341f3ed3ddcb6cfa6d82ff6e8c | Bin 0 -> 103 bytes .../a99e5cc0ab33e44eaeab04bf5de5bfb533a4e23b | Bin 0 -> 458 bytes .../a9d704cf90f8a7ca642deb9d6a433341e0ca88cf | Bin 0 -> 82 bytes .../a9da33b40b2fa6670ba0e4dff941846eaf3663c0 | Bin 0 -> 69 bytes .../a9e37ec3b9565533fcf017f8b16736fd59b61d99 | Bin 0 -> 878 bytes .../a9f8447603bfc124119e9cdea2d8c879114e2171 | Bin 0 -> 139 bytes .../aa26685e89708e893feb311f566d4b40d18dad64 | Bin 0 -> 99 bytes .../aa3b95aac3c7d1ed8530c6683279b1831ae8a146 | Bin 0 -> 622 bytes .../aa3e480fea9bac83b7a634bbf7248d33c771cedc | Bin 0 -> 206 bytes .../aa5c4d5a591e8b9252992ce55ae8d4a41405fa28 | Bin 0 -> 104 bytes .../aa7a28bb2d469bf02cdfabe01275a62b44c499f1 | Bin 0 -> 120 bytes .../aaa1f07d9414ea9fe7be47cd6503e8e11b30bc10 | Bin 0 -> 4044 bytes .../ab0f35f174d1d5ee36f7c8503ff01b29e90b62c6 | Bin 0 -> 209 bytes .../ab179e4cea023bd1811d3abfebeb0e15df9734a9 | Bin 0 -> 116 bytes .../ab44a7c3df0a5f904290ed70aa12dcb06d7f6cbc | Bin 0 -> 106 bytes .../ab77f104aa790021b9820064a863915a2b428ff8 | Bin 0 -> 216 bytes .../ab95629542ccb25866fa532ec2cc211c5755acb3 | Bin 0 -> 466 bytes .../ab95f7b5ac2973fd98c5f05485649704e3b3238b | Bin 0 -> 574 bytes .../ab99877141b7d2af9892f88dd2aee0e20cd107e9 | Bin 0 -> 82 bytes .../abafd0bf8000a84106e3aaf1d5dbcc99584a939e | Bin 0 -> 872 bytes .../abc9a933d36067f16a6e15a7cec665f7e3a4afa8 | Bin 0 -> 167 bytes .../abcd351e2c4acca2d217d822faf119d76df34cd5 | Bin 0 -> 142 bytes .../ac1b044cdad246e47a4bea9734b7cc8a5e8b1411 | Bin 0 -> 262 bytes .../ac52ae7784ff5e407122bd10c1382ea3dc72adb3 | Bin 0 -> 103 bytes .../ac573f59d8cbc7628dc70fbe607273f7b4a90e14 | Bin 0 -> 376 bytes .../ac66b21b0d6e8f86ef3e4e0acb57f277ba596b02 | Bin 0 -> 3132 bytes .../acb32e7192b794c926b90d06963f95e1c0b66e72 | Bin 0 -> 106 bytes .../acb606851bdac198612ac62801f7a1c73b82be27 | Bin 0 -> 270 bytes .../acc711730e20e150881af343a1ab56b416056398 | Bin 0 -> 106 bytes .../acf53b89ce2f08f052602c438ee2aa52b461f3a0 | Bin 0 -> 69 bytes .../ad0dbd1e1da9a5830c00cddc9b803e98b423538e | Bin 0 -> 69 bytes .../ad37b6ad4541ba1e70e8ed071dcf87bcdddfe80a | Bin 0 -> 474 bytes .../ad4b1a1e5b1d101d805ebb7701aedde8a77b2e95 | Bin 0 -> 69 bytes .../ad576ac9cf0b654830eb06800ad44c23877ccb20 | Bin 0 -> 145 bytes .../ad83a49bd0873471b1ca7be8b42c6304c5a17c48 | Bin 0 -> 139 bytes .../ae004a2b950aa5f3a7c35c1fabbfb27f3ebacaa2 | Bin 0 -> 99 bytes .../ae122e655e7f051e8bf61282ed984c9d9c9ab615 | Bin 0 -> 2410 bytes .../ae9865a8b03a07140310e5b3b4ae839ec194f35f | Bin 0 -> 138 bytes .../aea36ae4121c712f1492013c8abc8c2a14ba2488 | Bin 0 -> 2140 bytes .../aeb959af83d479c18a5df10be115f641d739a14d | Bin 0 -> 207 bytes .../aed457ce90a7906073f591e1a90899c47e40c877 | Bin 0 -> 138 bytes .../aefabca803961bd5f8c8da0fe93629450c474fab | Bin 0 -> 101 bytes .../af04023d6c0b94605931eb6c898a5decd4095d41 | Bin 0 -> 493 bytes .../af13d6384d400e9ea79d5180be68bdab81b28006 | Bin 0 -> 106 bytes .../af14df49d0daf61bfb099627cc0e03c0198afb97 | Bin 0 -> 178 bytes .../af160ab09726a432f0cd0b26bbd35d7668a5d2be | Bin 0 -> 103 bytes .../af5cedd5aee77a244f0bfd53e11e16de96916525 | Bin 0 -> 984 bytes .../af620437941a7d0844db040b95e9d96ef23236cd | Bin 0 -> 108 bytes .../af8d61c41eb03f751c7a4cdf854472dae2f1d144 | Bin 0 -> 73 bytes .../affac4eaed8393429b7f04d63842aa37490e87fe | Bin 0 -> 564 bytes .../affe9b29aa183c3225409684ae7af7593fba56c5 | Bin 0 -> 573 bytes .../b022290019b3aed4b21d1788d75eb3ed38d8642e | Bin 0 -> 75 bytes .../b028acef0ec9253f6642ade799b41cd55e1a39bc | Bin 0 -> 83 bytes .../b02e208540bcf9a8d2c32ae51640c9adf645e284 | Bin 0 -> 1530 bytes .../b038fbb7453c449f1c944d66f7d4ec4481c9b645 | Bin 0 -> 1124 bytes .../b0542cd481de90f8dccab5ee9ac3bb38b8c237e7 | Bin 0 -> 3123 bytes .../b0a3c32657f342f9d89ab03aac57517202b71a0f | Bin 0 -> 533 bytes .../b0a70264a9c59cbca4f87ce3938def92b0434763 | Bin 0 -> 106 bytes .../b0fa5d53ba8dd1aaf3b86c52c46eb4e8690aa5df | Bin 0 -> 205 bytes .../b10f95e1644851b913a60078c8cb34a3b0b8e27f | Bin 0 -> 286 bytes .../b1125b0a2c6face1f55a14a2cb75d2e8f188ba4f | Bin 0 -> 2118 bytes .../b12e52a882f814bfe59003345091e01753cf5ee2 | Bin 0 -> 103 bytes .../b1652b614cf0beaa3e36f67925b430c8dd15b49c | 1 + .../b1b72da7f573b84560265a560b936d2064774bb9 | Bin 0 -> 110 bytes .../b1c2915aec9478032a8bc6563a575ede43894f61 | Bin 0 -> 2386 bytes .../b1f12b4bd20fab90bae94bebb056697ca05a5b6c | Bin 0 -> 1003 bytes .../b1f1b196ad277248bd22e963655405cfeffd5952 | Bin 0 -> 1023 bytes .../b1f58f240f4a90d9c1f2c6da77e4368358fa226a | Bin 0 -> 83 bytes .../b23e509660302582884606a0bc8be9a4768f804e | Bin 0 -> 181 bytes .../b291c888b73545b92980e02a535be54e949e389d | Bin 0 -> 180 bytes .../b327968a2a9ee61ecfe4e1db00c2ae77e9bfd6c7 | Bin 0 -> 273 bytes .../b33fd53eaa2d1a2352f898f378fe364f621b5baf | Bin 0 -> 147 bytes .../b3625fa9028a46535dd1a49acd1b70e752b0780e | Bin 0 -> 108 bytes .../b36336d1d29dd3ff1cef4b6784e3631a5f555b8d | Bin 0 -> 881 bytes .../b36abefba8e582309e15b81222eec2444aa5f969 | Bin 0 -> 1222 bytes .../b3c38cdc5412279d62511330e04a00ad95dc1a93 | Bin 0 -> 332 bytes .../b3cba0ac0c13bf7ee873e11343bb0c9920d9615b | Bin 0 -> 85 bytes .../b3e1785e7dca08bf2757feebb9a2648f29a3a1da | Bin 0 -> 1966 bytes .../b40035ce3c4a82585110a0e4773a275495c560d0 | Bin 0 -> 99 bytes .../b41513e38a40c11ae772fb7a1dc46849306fa929 | Bin 0 -> 729 bytes .../b440c4a8e9536d283137d567fc89cdb3920dc209 | Bin 0 -> 1932 bytes .../b447fd8e1f131f7cd3f82e8703a5ad3dddccf205 | Bin 0 -> 102 bytes .../b475e35ef68932ef1a70e67488b576714fc073ac | Bin 0 -> 628 bytes .../b47b8724900dd415fa9201a7b3b2720147a0ba5b | Bin 0 -> 458 bytes .../b48701709424c09e9c262b0367a66718df647b80 | Bin 0 -> 348 bytes .../b498d0f6ce383ab6aa52d7b786419dd839747bd9 | Bin 0 -> 79 bytes .../b4bbf596493692f306c888391e41aaeb59d3e417 | Bin 0 -> 112 bytes .../b4d490f1f29780eee91544d7451a5c977e0acb90 | Bin 0 -> 76 bytes .../b4eb663685b5a179cffe6a121849b1f06d102f3e | Bin 0 -> 107 bytes .../b4ed8fb5213913d7dcf0e5a72a3c1e2ab0f635f0 | Bin 0 -> 103 bytes .../b58033dc578bbf699bbf4c0dfc07678b08c76783 | Bin 0 -> 103 bytes .../b581d89809a1ebaedc42ab614a61d3cbd40c5aaa | Bin 0 -> 601 bytes .../b583162b28fa627f80ed2d06cfd4eb1acef39541 | Bin 0 -> 48 bytes .../b598725c815f06686e3c8690697f0ff201d0b57c | Bin 0 -> 1137 bytes .../b6039be1a02771294eb95a5982883ae855433a2a | Bin 0 -> 69 bytes .../b641d3fcf623bdd676f97a8833e82992a4743778 | Bin 0 -> 108 bytes .../b66b945d4a1b8d6dc719ed083e4f95754d83c31a | Bin 0 -> 803 bytes .../b6b6ebbb24ef7c3ecd1cd4f706c1cafbe710c9b3 | Bin 0 -> 69 bytes .../b6cb886ee698fcd534ab3da6654ef579547b8c11 | Bin 0 -> 480 bytes .../b6d8a56fc5e82c823b9d53b45f08787134d67dc7 | Bin 0 -> 115 bytes .../b6e96fb3fcc73bf1a984f147a3fd7082ee62d5de | Bin 0 -> 138 bytes .../b7001265e0587a7acc0278f748a87b5912021a63 | Bin 0 -> 69 bytes .../b72fbdd680d25a8f3a19798abc0348698d0cd3c7 | Bin 0 -> 108 bytes .../b745983a72ce95060aa62d8e5209a4681f3e127c | Bin 0 -> 69 bytes .../b74cbd5188f5dba946b826ce65c36119fae3f266 | Bin 0 -> 360 bytes .../b74f3d88c2ba867d41dd6f3f36529933eb2dc0b9 | Bin 0 -> 69 bytes .../b75b3aa437555a7e6f6ece21981361287fc666bb | Bin 0 -> 106 bytes .../b75bcc4549e2de797d41bcb716295e20f2dc4caf | Bin 0 -> 93 bytes .../b771cc23ceac245c40b5e7dc3c63f7dc1b350739 | Bin 0 -> 1127 bytes .../b7866740d2712c92b722e0f3cfa74300c48c5b5e | Bin 0 -> 1060 bytes .../b7960b8fe4c1db84b2e0c86cb95c93c1e414b6c4 | Bin 0 -> 1545 bytes .../b7b591c4c581bacff52f9fd9bf7304eac4d1f748 | Bin 0 -> 696 bytes .../b7b7c408a7166f903e9cc756f4920f79b426381e | Bin 0 -> 173 bytes .../b7bc2764cebdf51b913de3bc221f9c08373f5966 | Bin 0 -> 325 bytes .../b7f9e12ba48198f6312c7789e493c41c0be299c9 | Bin 0 -> 532 bytes .../b850ba1387ac36eb58c4a42135157b46d1529d9d | Bin 0 -> 2965 bytes .../b88f6fb5473a09c4d7fa4657b606131e8dd21715 | Bin 0 -> 102 bytes .../b8942cdf264fcfbb26c059e194bad0ee81ba32da | Bin 0 -> 75 bytes .../b8eeb4cce737fd22fd8a6fadd6d0b085d3a6b941 | Bin 0 -> 144 bytes .../b9050443cf8610e1ed7f893bdfd81a22eed05e6a | Bin 0 -> 499 bytes .../b932bb2aa2598878de6786c90bd1f9199290a148 | Bin 0 -> 134 bytes .../b93694a168b6db389856a8569a80629242d56b95 | Bin 0 -> 156 bytes .../b941c8a8a0296a082a8c2c33c3c93735d486fdb4 | Bin 0 -> 99 bytes .../b950473dc074b0a1d5e041ef84298cead70f06f3 | Bin 0 -> 86 bytes .../b95ae04faa88926bbce91e0a0d6475125e7f884e | Bin 0 -> 2208 bytes .../b98b9e3109fd96e1a933fc185b47555b162f6b44 | Bin 0 -> 87 bytes .../b995acb3754bfd20497513ef1b190331ea73e224 | Bin 0 -> 139 bytes .../b99f45d03362f3fd9a8f54f6bbdbd0d5730dfc1c | Bin 0 -> 106 bytes .../b99fbcf533ec1a09f6e3134adb59c101e8351c93 | Bin 0 -> 232 bytes .../b9aee39de19dc1039a82aeebb5ba0813a01f4c9e | Bin 0 -> 108 bytes .../b9caaa394e159a3b3bb10e17a1dd43430d01b97e | Bin 0 -> 194 bytes .../b9db8acd5cb7aab7e5abe50fc881cc8aaacf37ec | Bin 0 -> 79 bytes .../b9e69922a79d61b300e659da5d2e2e1a14f4cedd | Bin 0 -> 227 bytes .../b9ee4302c1793f9e890da1206f9a3be32a961588 | Bin 0 -> 154 bytes .../ba2d203e7be4e0c06ded8538ebe05a2733d53a46 | Bin 0 -> 292 bytes .../ba3a8325a6ba14ad6fae61f78f368e627cdcaafe | Bin 0 -> 141 bytes .../ba5715e84f3f2f69474df91f82a182e964797a06 | Bin 0 -> 116 bytes .../ba81531b7f4f7e40b5da85eaa0e5562d3e8022c5 | Bin 0 -> 54 bytes .../ba9a7f3948610b9eb91b70b69ac393854580dfa5 | Bin 0 -> 102 bytes .../baa3c3de1e52d0af2e5d0a48875732b189c63698 | Bin 0 -> 106 bytes .../bacce5ae9090baa05828db5575c8e133fe7fb8b5 | Bin 0 -> 458 bytes .../badf603f73835f42dfcebf1746493e20f5873b90 | Bin 0 -> 216 bytes .../bae520b513fd18dd19647b877cc04cc5ca3cbbe6 | Bin 0 -> 225 bytes .../baf43a9588c00adc1f4ff20422836f123a82aad5 | Bin 0 -> 104 bytes .../bb12542fbbcba0a6f45bd83fb468eb67f5c3a068 | Bin 0 -> 106 bytes .../bb5421891c0fe63fc68cc0c5b10b38964b648621 | Bin 0 -> 2037 bytes .../bb8d8660035858ac33272a3ebca5ec75d1ce4152 | Bin 0 -> 1791 bytes .../bb94b690309f0e51f458dd695f6a8860e9df379a | Bin 0 -> 83 bytes .../bb97088074b584944d0c9acced60172d4adfc4e5 | Bin 0 -> 69 bytes .../bb9ce42c48c7bc07fb00585fb7a4e93827b0c561 | Bin 0 -> 264 bytes .../bbbd45af44d2e41cd220e37483aefef6b2f52960 | Bin 0 -> 40 bytes .../bbd426d0bccdb69e46a7483e5615cb4ab94d650d | Bin 0 -> 158 bytes .../bc0ebc36e28b0f0c688902040f8e1ed8b2abd811 | Bin 0 -> 3254 bytes .../bc39a920a38aa8b64e7a685f27b79506ad0d23f1 | Bin 0 -> 85 bytes .../bc4952d872662fbc291a277ba13ae22d4ace930d | Bin 0 -> 219 bytes .../bc7826d580d440283dff429ac9c9905718bf75d6 | Bin 0 -> 926 bytes .../bc9426282e32313a9cd0a3ece6cc715a5ffd06ff | Bin 0 -> 36 bytes .../bc9cd7287ae59ba22c63b51218a0a91ae908838a | Bin 0 -> 127 bytes .../bd5ab3828cbac216f5d83280d9789cf4769ad8ff | Bin 0 -> 121 bytes .../bd5e1582204b02899c6d0dc7cf0826d0bb724b3c | Bin 0 -> 288 bytes .../bd635e6d7c9ebc629376a62e6af1aa0148afc566 | Bin 0 -> 40 bytes .../bd72c459d5a0efe7e82bfe4f1d32aca6687f2fe5 | Bin 0 -> 877 bytes .../bd9e7f46e6c5b1142ec9c009e5a83b523215e22d | Bin 0 -> 108 bytes .../bdea3acc726e3bd6d974fefb878197d5bd7a5485 | Bin 0 -> 101 bytes .../be09590cc41daae7ef0277a76c20bc4fd8b36a54 | Bin 0 -> 1620 bytes .../be23a59a45fe126b642362c68298fc63aaf13bf9 | Bin 0 -> 108 bytes .../be2699f198d68a817d9b05fa1db35cac7714a5ba | Bin 0 -> 315 bytes .../be2d7751cc20fec3f4e6ae46fc83ab4e32638298 | Bin 0 -> 220 bytes .../be5f64f7cf49e8529d9dfbdb32bc4b8a54c11ee5 | Bin 0 -> 108 bytes .../bead7fdb23ee992cf34ec618b7056d1be31eaddb | Bin 0 -> 491 bytes .../beaf8e60ed55818f340fde040a81c00334546ff9 | Bin 0 -> 112 bytes .../bee09d5ddacce66a5d55c99d6dcd7166649391c4 | Bin 0 -> 687 bytes .../bf25eda33a2717edffe85232d873613e4142aa64 | Bin 0 -> 200 bytes .../bf28d3c66562b717b60601e68e7fd8b4f266e528 | Bin 0 -> 458 bytes .../bf4ca10ebc1e9daac0585d49f16c632d5dadb515 | Bin 0 -> 144 bytes .../bf5c0891eaa757f14ffcd5977168d814e9e18c06 | Bin 0 -> 112 bytes .../bf6a832403a22548ac588dbf7cd340455f26b4cd | Bin 0 -> 386 bytes .../bf9a9a089dc3155f5bd73ecb3842a8c5a4e89628 | Bin 0 -> 41 bytes .../bf9bdc5e37e1191c1006cc17edb9c2491e136797 | Bin 0 -> 48 bytes .../bfba791d6de2cb64a2fa5f88adc0b929f943747a | Bin 0 -> 206 bytes .../bfcd9d6c1d8af57796c496e7474d230683d57aa0 | Bin 0 -> 218 bytes .../bfe684ae2803f6dbfabf51657fb81687ec0af29e | Bin 0 -> 51 bytes .../bfe71e8415c95c9697989f224bc1f7ab94f4316a | Bin 0 -> 458 bytes .../c036de3b12eebd08719e83ba015d7fc81e6c956a | Bin 0 -> 298 bytes .../c07f0071eb62d96cd63402853d07efb5b655fd0a | Bin 0 -> 313 bytes .../c09d173f9ae068a42da028e60732bf0a70fe0fbd | Bin 0 -> 1004 bytes .../c0f465088ec83d7c198850e7fe238beff5758588 | Bin 0 -> 108 bytes .../c1069a65f457437affe1cd0900ca119211db2feb | Bin 0 -> 82 bytes .../c11237425901fcc25154dedff96ffed3192ceadf | Bin 0 -> 142 bytes .../c12b91ee3a68f8296535c561809d067cc09527e3 | Bin 0 -> 626 bytes .../c1411b630bd7e3aa596b3a40e4e946abc4af88c1 | Bin 0 -> 99 bytes .../c16d3c8afbc3ca83624683d8c7e1492b5c907a31 | Bin 0 -> 108 bytes .../c1e3907ee03b769749f19ab00cb28bf33e99ab09 | Bin 0 -> 99 bytes .../c1e89aa3e73fe909f61617bdbf43763597ad6fc3 | Bin 0 -> 1117 bytes .../c1eb459cd03d0a4d03e31106551c69ca97124b55 | Bin 0 -> 138 bytes .../c1f3859559112f6c32c58d32232fddfdb526b922 | Bin 0 -> 877 bytes .../c1f52c21de300b53a2e0c8d9d6545e0905698fa1 | Bin 0 -> 144 bytes .../c203db055a500681a923313c2b92bc79e575526f | Bin 0 -> 69 bytes .../c22794f9f42f6280db779bc63a9ebe9c43bbce05 | 1 + .../c2759a503427d4ffd8e1723afe56d2bdba100dc4 | Bin 0 -> 144 bytes .../c278dfba9bfd8a3e0495a5f72e350174e1192888 | Bin 0 -> 171 bytes .../c285127a1a0b809aa3102e31a09c62c42c0d7631 | Bin 0 -> 491 bytes .../c28e7cd1d2bb18d686da20b8f435c76a2e673a26 | Bin 0 -> 148 bytes .../c28f4fed438bfafe7306966c35cb77a6bab3f91b | Bin 0 -> 110 bytes .../c2992980283a52be70113fb7f1277f9e2737f7d2 | Bin 0 -> 685 bytes .../c2a3722505d7fc1e1743e3b8c3da664b9e4ffdfa | Bin 0 -> 533 bytes .../c2b7aa8e50612547e24dae560cb4cfc8653e64e8 | Bin 0 -> 334 bytes .../c2cea58f238f9bf8c11a992a370998bd463e00b6 | Bin 0 -> 102 bytes .../c2daed9a16520ef15a7fea26a5281386fac26c09 | Bin 0 -> 73 bytes .../c2eeeecf81dc9b7041495009b1211f6a3cf63300 | Bin 0 -> 3704 bytes .../c320ebce64164499243bcadf7d3fbdc048658e37 | Bin 0 -> 108 bytes .../c3502c0c149c2d815caeb5887b505a00bd8cc3e1 | Bin 0 -> 37 bytes .../c35db0e03cf5ceb983298ecf8e7f43f651b4b058 | Bin 0 -> 305 bytes .../c373e20971c91af94c6ad258f0261fc21037a3af | Bin 0 -> 278 bytes .../c37fdda0a01bc6bdb2850a750eee373338e5c40c | Bin 0 -> 108 bytes .../c39d08faf1a141c5c7a3cb2aefa623339b2579b8 | Bin 0 -> 108 bytes .../c39f87156cfc35ed4440508caa05c4c3f956bc59 | Bin 0 -> 69 bytes .../c3cca12bb9769a8a49bda58e3f111a7061fedb3c | Bin 0 -> 180 bytes .../c3f12d7f35d7d17a1c105547ed8800ff4a769490 | Bin 0 -> 1138 bytes .../c406d3bb7e6b5ad45ea5ecf4dadfec39b6ab83db | Bin 0 -> 1147 bytes .../c4968ca50dce7eafd827b705c86a3c8c243c31d9 | Bin 0 -> 132 bytes .../c4a194108fb7ab614960baa527ee628537d95c9c | Bin 0 -> 69 bytes .../c4b037bf36b8a8e329e1076545f13ccc01f26cce | Bin 0 -> 144 bytes .../c4c6a62291252abcd228ce97cbe438eea026ea4c | Bin 0 -> 190 bytes .../c4c9912ea6b2374c13c0ace6976f2f5f699ffc43 | Bin 0 -> 50 bytes .../c4cc17ce9208d1f2d50d74e06fc26da26c948a80 | Bin 0 -> 100 bytes .../c4e3b28572a3afa7a379f3267cdab64561948efc | Bin 0 -> 70 bytes .../c4f4c8c8a72b8786f036463efbea8cf93362402a | Bin 0 -> 106 bytes .../c56253ae481518c118362e32bacb8e589583ed45 | Bin 0 -> 579 bytes .../c5664724fffb21fe4aaedcc2f4cccb7c734baf74 | Bin 0 -> 69 bytes .../c56be33619e05333c72cd6a96122f506495baa3a | Bin 0 -> 154 bytes .../c5be0bd184229bcdc209d38b7717c203d540b609 | Bin 0 -> 136 bytes .../c5c5c5329c41fc7d9e10875ae471e95a1d25000b | Bin 0 -> 39 bytes .../c5dadfb7466af003759276ad3a4db2a31bd3a1f8 | Bin 0 -> 136 bytes .../c5e792503fa363e620df0ff1d53c1047a89a7854 | Bin 0 -> 41 bytes .../c6092d37ed02088b0cf87d5a056aeff5f73afe60 | Bin 0 -> 300 bytes .../c612595448af7cbec999dea23dfc8027c85f5a24 | Bin 0 -> 252 bytes .../c624a46979fc72671616c7a7a3b0af43a85b2d81 | Bin 0 -> 39 bytes .../c6274846e4c681ba7c78592e01ce0491d486f286 | Bin 0 -> 252 bytes .../c654b0d1ff308db5f6fbac10f1dbeb4a8b07ae8c | Bin 0 -> 106 bytes .../c65b95b4755c50f2cada1929690bece4316280e8 | Bin 0 -> 736 bytes .../c65d8988d02b26bc78043e664687663fbd060f7d | Bin 0 -> 138 bytes .../c6711df234f649cdf74052665e6ab184f3bbe151 | Bin 0 -> 484 bytes .../c67285c5c3b640ae2064eb61661049d8b178660b | Bin 0 -> 106 bytes .../c691cddd4168a6eb89aa72a640dac1458970518e | Bin 0 -> 482 bytes .../c6996110092ddf633c57a9da68804f1fb0253ba7 | Bin 0 -> 108 bytes .../c69be3fa3872e7cc34ea0cb72fc18c88a811a9c1 | Bin 0 -> 115 bytes .../c6a571ce5c35b68b82a4c6767fc11a9d49154a2d | Bin 0 -> 144 bytes .../c6b069d2342f2357cc7f61532e8a3560a6723204 | Bin 0 -> 136 bytes .../c6c9c1f975551eeaab2ff3e5519f723a75494078 | Bin 0 -> 165 bytes .../c6e510c7b2921decc4755387eb6ca4fcfdaf07f8 | Bin 0 -> 235 bytes .../c706d9f94f4e3d4b1c1e9c98962ed77d6537c54d | Bin 0 -> 259 bytes .../c70a79cd3fdc7fee7c7b2d96b65a4678e29fa657 | Bin 0 -> 284 bytes .../c72a2338bf5493bf10a0047f00aea94d7a10dcd0 | Bin 0 -> 106 bytes .../c72abe9f4196721dcb62adf662bb7df1b99023a3 | Bin 0 -> 48 bytes .../c7416348fec1d098c05d0c807753cb378433d70d | Bin 0 -> 208 bytes .../c74fce558990731d1b6c4bc112d124e4b4be76b4 | Bin 0 -> 102 bytes .../c758ec9fa65a245017a4cbb6e0b81b05d62920cc | Bin 0 -> 294 bytes .../c7706f33b8ea531644b84641cc9f830572b4df89 | Bin 0 -> 738 bytes .../c778f53511dcd17e8bf0d4d445a399301e33de92 | Bin 0 -> 411 bytes .../c78cfaf4ce942c3806ee9e47c1ba3b36b978560a | Bin 0 -> 137 bytes .../c79e9bc3125722cf4f5de6e03f8ab1f46644e9cc | Bin 0 -> 456 bytes .../c79fcc7f3f545c0943c2817b6b11110d61c79a27 | Bin 0 -> 1997 bytes .../c7aae761a287af4a79aa68e660f69f433879e0f3 | Bin 0 -> 112 bytes .../c7e54dcee056c6deaf8fa3ba0e1ef7bafffb680f | Bin 0 -> 1023 bytes .../c7fd8a6586fbe6e3e5127700514262d5289d2e0a | Bin 0 -> 458 bytes .../c87fffd6bce59326050af06433afdeb5f56640b7 | Bin 0 -> 1529 bytes .../c885d4e934ded27b595be49adcb64a2ee930e1f6 | Bin 0 -> 102 bytes .../c89fc8bec2aacd1960d1dcfb4f0af442f9031759 | Bin 0 -> 69 bytes .../c8a324c6f9e6acda5e9869e5346176cdd0ab146f | 1 + .../c8c49640b501d957bce4df15bb613b69da71e96d | Bin 0 -> 224 bytes .../c8f6333fbf8e772ee2fc2831ef7286199320c315 | Bin 0 -> 69 bytes .../c8fc63056d32b214eeae41550e7c1e92532720ca | Bin 0 -> 104 bytes .../c92e26e8feb8075f32d63c887fccf53f801ae9db | Bin 0 -> 66 bytes .../c96741ea1192395e90d2a86d5537ed6f20914df5 | Bin 0 -> 69 bytes .../c982bed40242835ad29a8311f65792f5e27468b3 | Bin 0 -> 431 bytes .../c9e3994dd8c9fc3633edd9058ba0e891428b8fed | Bin 0 -> 233 bytes .../c9e5ef211a0d346179b4c57ea68a60bab5f055c4 | Bin 0 -> 138 bytes .../ca11304a8c71477b12b246deebedb8e7a4377478 | Bin 0 -> 132 bytes .../ca1cd287450cf47cd3a5a32e1ec545d40b0f5222 | Bin 0 -> 244 bytes .../ca37a2f08915bd7a9ac1988b29887b10cb98cadb | Bin 0 -> 102 bytes .../ca54415b2181663aa978355ec72cf9435c4ccd8c | Bin 0 -> 144 bytes .../ca9ba8fb49867faa4c26829869d2cf0b2d00a651 | Bin 0 -> 2335 bytes .../caa1a16a87c8cbf3931d8a34f84c3381635ed56f | Bin 0 -> 256 bytes .../caa5305ca2de94339ed73515b7d3f75dd6847414 | Bin 0 -> 235 bytes .../caa7a34683fa73ce233b6b4969bcd0c414a2f764 | Bin 0 -> 108 bytes .../cac0084ef7e39a66daf848b7e96e02f95524b40a | Bin 0 -> 115 bytes .../caed6aa4f3955e947b45532b8aa7a81e6c17a4d5 | Bin 0 -> 3117 bytes .../cb7a32fd05f4bc7254396a23aa29cbfda662181f | Bin 0 -> 251 bytes .../cbd0717c174942743197b51f7013f4fddf04df6b | Bin 0 -> 69 bytes .../cbe6344d0391e969f5cdb73426cb5b8752077068 | Bin 0 -> 163 bytes .../cc0fea9c65c25e831ca3f76bd867ece650c01e28 | Bin 0 -> 102 bytes .../cc27c11056cf4590bbfa72b498e2b350710c03d9 | Bin 0 -> 143 bytes .../cc38cb68a800702ebe89fdb081416f955ad55f0c | Bin 0 -> 2495 bytes .../ccbbd4d4c034a0d57e04471466b739f2e146fa3d | Bin 0 -> 116 bytes .../ccbef69d827dda8e68a70ac42670785e65366c1e | Bin 0 -> 216 bytes .../cce4e6135b059ac313a5befed1dfd0b79f27324f | Bin 0 -> 206 bytes .../cd1f25c66282ecd98e8e6d3dea033c382522c7ad | Bin 0 -> 325 bytes .../cd296a7d2baa3daf5d983f2cb30ad6ca3ce74df4 | Bin 0 -> 458 bytes .../cd54a4b235bdc936ab4471bc34a2b74c7f782184 | Bin 0 -> 61 bytes .../cd5ca368cd0a670971a45082c71f142700346747 | Bin 0 -> 105 bytes .../cd892915f092cfde339cf5ca9bd411b2b9497e1a | Bin 0 -> 2000 bytes .../cd9d7abb0418ac92ae0f529c4d9e7d420da14b50 | Bin 0 -> 143 bytes .../cdb0f7126374d95a4155cbec6f1740a727aff666 | Bin 0 -> 40 bytes .../cdbccfd8ea91e5f44c13e7aebc6498b424145121 | Bin 0 -> 108 bytes .../cdcc248525d2c629b83f5a815d7daa05105e44a2 | Bin 0 -> 102 bytes .../cdcef0781a108edea5523dff574b7d2257c36b81 | Bin 0 -> 85 bytes .../ce10b19d79358c860d8a11f639a7bbfb56abd171 | Bin 0 -> 209 bytes .../ce2d5784dd0cb116a7903977da51dcd9bd669128 | Bin 0 -> 139 bytes .../ce445157963acf16cfb95c1894742140002b5204 | Bin 0 -> 491 bytes .../ce5339e0496213c0e19c3296ac96f0591ac50289 | Bin 0 -> 102 bytes .../ce5fcc6f69e4cdbc9f563d5b06fec3c220db2a62 | Bin 0 -> 148 bytes .../ce9b9c4d5094a874ded6caa3e0b3bea2c66a672c | Bin 0 -> 225 bytes .../ceb3f7aa23f8a22fae7a939752d3c4664b483df3 | Bin 0 -> 368 bytes .../cec2152fdffa5cd17459775824378dfc369773c7 | Bin 0 -> 733 bytes .../cefc3942c377bad56e45cc3730f8f9242621f751 | Bin 0 -> 547 bytes .../cf0e0ead7aa41476b072cefe7c9ead66ec31c562 | Bin 0 -> 41 bytes .../cf2786796b3d0611819e69d00c3b2785c5daa987 | Bin 0 -> 179 bytes .../cf426b8b6ce33c44a221c704820191efde0fb226 | Bin 0 -> 1486 bytes .../cf4465ad351e6129ecda2126c8078a49d882ad9f | Bin 0 -> 183 bytes .../cf563882ac7eeb71f0fde1dd36f22f9bd1a5a2ef | Bin 0 -> 102 bytes .../cf94a895f1a8090736e9b61874a82fbda3b6c300 | Bin 0 -> 103 bytes .../cfa56ebde00a1fab5173e0eff7a0f1f4bd1af77c | Bin 0 -> 106 bytes .../cfc516d23c2dfb0ae85094323b8b14d4f222bec3 | Bin 0 -> 577 bytes .../cfd0d6bc1f78e03fbaa6990e751ccae66f674640 | Bin 0 -> 70 bytes .../cfd5256cebc5ddbf045a099af9c2aed984a06b22 | Bin 0 -> 179 bytes .../d0286867a9a40eefe46c98727c9fd06a2cf1df59 | Bin 0 -> 81 bytes .../d02d8d90d95b71a88b634f8ee4e8b3a94409e92c | Bin 0 -> 587 bytes .../d02ffe597db3e53bd478ce0f799845834fb37758 | Bin 0 -> 270 bytes .../d031d343ba645a52ab822b8c5aeff2c1adf78271 | Bin 0 -> 466 bytes .../d04353d0b588f28ae24e9a8070517733cecea63d | Bin 0 -> 196 bytes .../d057f87ceab445641eca2b2410f0cf777780466e | Bin 0 -> 206 bytes .../d079ec49f52a1bb718f3bddbe4e20daa450ac010 | Bin 0 -> 632 bytes .../d07bda374e7e88e4ca026fa4c00443be8cbd3169 | Bin 0 -> 40 bytes .../d0b0a301657dcf4805c6dcd3f4fc144705e07389 | Bin 0 -> 1348 bytes .../d0b93f8e00e90d36c66068393ae0fb0c6a95dbe1 | Bin 0 -> 451 bytes .../d0ce1f5e5efca547b3768aa02735f279d7c3e03b | Bin 0 -> 723 bytes .../d0d46e2d7d7af4d4d2854b3e702874e9adc36f0d | Bin 0 -> 69 bytes .../d0f5075f11df42aba75cc94b58de6ee9224ce2dd | Bin 0 -> 120 bytes .../d1141e2f1eff32caeb93c2e86424f9b32ecab656 | Bin 0 -> 416 bytes .../d11aaa3f763944e66460c5c95c9940bd57036406 | Bin 0 -> 345 bytes .../d1d82f2754ff02073bc989023db179df7fd797f7 | Bin 0 -> 73 bytes .../d1e3035c943cf57e9965a3a30a2a5abb787e8dd8 | Bin 0 -> 106 bytes .../d1ed8b7bf002647ed552c115f2acc0490a828f36 | Bin 0 -> 408 bytes .../d1f13863e3eb0a7a85c12dba44ab16c666cca019 | Bin 0 -> 196 bytes .../d20a44d80ee2ba2c4d97352e9f0fe7f950b70687 | Bin 0 -> 1452 bytes .../d248267c8185eaea4425691b96efc36028273a9d | Bin 0 -> 2040 bytes .../d24d9eff7fcdf6f4a40f0d6f1e1808a33f79e237 | Bin 0 -> 466 bytes .../d26c0fcd2637abb33b75d0307e3f50b02a7f5b8a | Bin 0 -> 157 bytes .../d270291d131d6b8ecbbcfc1942894db9be5b74e2 | Bin 0 -> 103 bytes .../d2830a6f96665cebb8b8389dc4400ec1921e828c | Bin 0 -> 100 bytes .../d2a114f6d6e7209dbbe15a603164fb0dd0f8357f | Bin 0 -> 100 bytes .../d2a7edbe25a7611ae1fa19ed0200e67d20f30869 | Bin 0 -> 102 bytes .../d2b1ef6c8944f2e881d8467ac8bd99ddd83a945a | Bin 0 -> 1095 bytes .../d30e49357fa2da4ffdf45aec13968a1bf028ef3d | Bin 0 -> 174 bytes .../d31c01b5d791844e563bf59d88beb46adc59499f | Bin 0 -> 863 bytes .../d3255f6dcf44ff3fce3832e68b05df7ed2e2c096 | Bin 0 -> 430 bytes .../d3260713b8603b337c776e95be380df4e3bf51d6 | Bin 0 -> 233 bytes .../d33fda0247b0269d223a45817f6a5fdfef2e8380 | Bin 0 -> 69 bytes .../d34fd332d61e28636723070912e873d6f086c179 | Bin 0 -> 239 bytes .../d35e97781b13cede28c2c8a2df96b2ca29959905 | Bin 0 -> 967 bytes .../d3945a1047680d560a57b83792e52838f4c77e23 | Bin 0 -> 2095 bytes .../d3a2751c86b28596c5c8d5d9c57213f2aadd2f24 | Bin 0 -> 174 bytes .../d3ab149e5c1cb609842f55b565cb516145678caf | Bin 0 -> 103 bytes .../d3c9aa0f7eca577aa41e5ce7d118890bfb33abf7 | Bin 0 -> 347 bytes .../d3d9c64378addec6052b3e22d3bfe2cdb59822ef | Bin 0 -> 231 bytes .../d4048366b2561abfe2fed3cb0e4b6248606e59fb | Bin 0 -> 73 bytes .../d40beafba088aaa47eeee2e125983f253104a3a4 | Bin 0 -> 1117 bytes .../d414ccf23759eedeaa2d42db29b215158ee23764 | Bin 0 -> 493 bytes .../d456cec2575aa27e5d4b85fb70f8afa971db3330 | Bin 0 -> 364 bytes .../d49bb7f3855d7f9878c9864b916558a439e53cf6 | Bin 0 -> 255 bytes .../d4e6203130344061ecbbeeba56d501e46e9f0c02 | Bin 0 -> 228 bytes .../d4eb367a3608d272e1bc1053300c8f5e0045862f | Bin 0 -> 1708 bytes .../d4eeba4d10d0df6b37df70d13b346d6e63c53802 | Bin 0 -> 59 bytes .../d4ef2d723c263dd1faf63de6f6cef5b680c70435 | Bin 0 -> 69 bytes .../d538ed38a6021ee134d512906058f692a1f7b409 | Bin 0 -> 147 bytes .../d53f8b80b76651c0a71fc786d598ab60589ca31e | Bin 0 -> 66 bytes .../d564e03d6b83fa5ade5fee4496fc6cbd4bcdc503 | Bin 0 -> 237 bytes .../d584a0d2694f58abe1c29316720319cb32a3745b | Bin 0 -> 213 bytes .../d5924106fc83b0da01dfc76eab3ca1a7f69368c1 | Bin 0 -> 161 bytes .../d5a04e30f6d0b4c8b93aba48c03128d490c93299 | Bin 0 -> 223 bytes .../d5b63bba975637e9a05dc0775b2a25262721a013 | Bin 0 -> 69 bytes .../d617c156f8add1aca9f9ed9ecf6f178434844c1d | Bin 0 -> 130 bytes .../d627a5bfa8031a15f91b4c1e53584d912f48ea41 | Bin 0 -> 140 bytes .../d6299d106713090e7e031f799118be78f1b97d9c | Bin 0 -> 1843 bytes .../d66d8ba52072490550f35f22a83488c7c242f304 | Bin 0 -> 1400 bytes .../d67ee847e6170f63a71190335d274b1caf1d2948 | Bin 0 -> 355 bytes .../d68087b453669cce4195fba0b972038d7fc58b08 | Bin 0 -> 362 bytes .../d6b53d53a88b7942aaa96e140929b0009f907db2 | Bin 0 -> 120 bytes .../d6ce92c0ceaca8522ef64653103f3d8a16b50bb7 | Bin 0 -> 161 bytes .../d6dd23b471088f8889d8504f153011b67dcd6de2 | Bin 0 -> 584 bytes .../d6eb0ca72bebd0db0d43439885ad172ab2c9b5b8 | Bin 0 -> 102 bytes .../d6f4a9abc74ccb8cd87f1e59204f7df3a2530fcf | Bin 0 -> 332 bytes .../d6fd0be7a56f267c6c1bb3f00551d068e75dce31 | Bin 0 -> 286 bytes .../d71496a6c97e10574c0a6378334237c26917b3e6 | Bin 0 -> 307 bytes .../d71ac84919378e263e7f8de363f06e01a73ad614 | Bin 0 -> 106 bytes .../d71ed070dfa1a23451fccc45bd286a642d2d0f25 | Bin 0 -> 79 bytes .../d7265e3f69d695ce1fefc893078f666516667418 | Bin 0 -> 218 bytes .../d72888039e173fb59116b0bafe9e5af6ab46dbb2 | Bin 0 -> 305 bytes .../d75b92734161809e82ea62e0bed26b2481f303f8 | Bin 0 -> 2294 bytes .../d75e24076c7217f29c9fb8fc9169dfc95a119ede | Bin 0 -> 198 bytes .../d781fceea762f5c716dae52eb94f9dfb67514e62 | Bin 0 -> 292 bytes .../d789e4ff7d0561d47354313ad534778b3ad832e3 | Bin 0 -> 40 bytes .../d79a4b9626b363119a990cc25932860c8f97a7d6 | Bin 0 -> 108 bytes .../d7b4bde787daaca7cfebd860e3579404bcfe0207 | Bin 0 -> 196 bytes .../d7c5d185ba98a1f76dbd97de50ea281877ecbf4a | Bin 0 -> 97 bytes .../d809314cef9c3264868ba63183d8180bd12c93df | Bin 0 -> 408 bytes .../d848fa1ccf89d98df57a2e2c6a40869f81b9971d | Bin 0 -> 116 bytes .../d85617cf6726d45c5b9a4c46f1bb7e252acea4b1 | Bin 0 -> 191 bytes .../d85d0dbc6d67ee1b69bb8f11fffea1344495c3fa | Bin 0 -> 209 bytes .../d864846a65c1be4a0b06984516b29685eb907070 | Bin 0 -> 142 bytes .../d875368bcdd75d662c93d2c537bffbdb72804a9a | Bin 0 -> 108 bytes .../d888a39eec6a74844416f80fe9668322a2a8a0f8 | Bin 0 -> 99 bytes .../d8a5e06f53da63007f410198d8700d6f3b15c75f | Bin 0 -> 67 bytes .../d8ae193f4f67eb2cdde635220cfcacab0ae8d0b4 | Bin 0 -> 410 bytes .../d8e44ed28873a3a02c9261988940227a3c8f5584 | Bin 0 -> 72 bytes .../d93fd9291ee9aac39f3e0aa9a0df6bbedc80f69f | Bin 0 -> 408 bytes .../d960c0eab8fe08c08ff247c19ad0cd8bd2635ca3 | Bin 0 -> 773 bytes .../d9854c46ebc5b99048ac9fd9b0aa810f416dd43d | Bin 0 -> 214 bytes .../d9a48b14aa054ecfde4b93c433cd84b58538725e | Bin 0 -> 106 bytes .../d9cae8d7f17912fa57ec6c5218424f50f0f83304 | Bin 0 -> 388 bytes .../d9da15e86526870a5de3d3596c857070dd1a6a78 | Bin 0 -> 2958 bytes .../d9f5164820147fa6e1b7cf28b949053a82095107 | Bin 0 -> 244 bytes .../d9fe9965084aad0081d5fb1bb858e85e2ad6cb16 | Bin 0 -> 500 bytes .../da07a113b6b3cf701919895ed621d2093228505a | Bin 0 -> 878 bytes .../da0da68a82c7bd3a0f097260704aea9f63041f09 | Bin 0 -> 95 bytes .../da1002d28c0f1a51565f64a79e6231549089222d | Bin 0 -> 219 bytes .../da1bfd406502ee8361aceca8926c68f681f72fcc | Bin 0 -> 115 bytes .../da2f13f5261c8d49e338e9edee8bda0853b1acc9 | Bin 0 -> 92 bytes .../da7efb8ab79b6782d364ff2ab03b55944d11460c | Bin 0 -> 108 bytes .../da950c304829b8c0b5f89cebd3dc17a600d1e36b | Bin 0 -> 320 bytes .../da99db29fd53d20ca815d4dd60822ac52a702cda | Bin 0 -> 106 bytes .../daa4fa2885909ad7ffc983c60643a44ac90ca4cc | Bin 0 -> 116 bytes .../daa92ea4600a8737e9fd37f83a9c852f545537c2 | Bin 0 -> 1356 bytes .../dacc18e91c81a6bfcba0340ecb58bba6556e57eb | Bin 0 -> 100 bytes .../db1d12798a20e9035b9a5abf805394c855059313 | Bin 0 -> 230 bytes .../db7c8b0d344767d301a3b076919f6c36fa53193d | Bin 0 -> 352 bytes .../db903aaf171f26afaa2f67bb24c000d7bec621d8 | Bin 0 -> 467 bytes .../dbadd3f18ba2c307ca91180fe4aeb1b4580bcca7 | Bin 0 -> 192 bytes .../dbb4f3bc0bb09722267e7d0969d2ec0d9b1e085a | Bin 0 -> 139 bytes .../dbc2b27e3cbb9fed8d92c7c60b25fd2a64bdc9ee | Bin 0 -> 1118 bytes .../dbeefe004d68f9ffa8e45b64362c6737b22e3de5 | Bin 0 -> 50 bytes .../dbf50cbbad010e57d112f069929e50a8e6800b27 | Bin 0 -> 466 bytes .../dc0ce718c3648df982b66a8d17ba07554dad528b | Bin 0 -> 280 bytes .../dc48283fd7e9ac4b61c740457f288a6e7e4b9f35 | Bin 0 -> 250 bytes .../dc68425075dfef8c3146f582479ea22a7a5723ab | Bin 0 -> 139 bytes .../dc6c395aa0dea86ac6ba8b3ff4a076e99d528f32 | Bin 0 -> 92 bytes .../dc7287b83a08942f085ff81b5e6e155a9327e749 | Bin 0 -> 132 bytes .../dc89fb2b8158788bca28632748593e14c1f10587 | Bin 0 -> 108 bytes .../dc8cfe2221ad910e170cedf09671c9292a09bbf0 | Bin 0 -> 795 bytes .../dc907469f9e0fc79c4a0eecfa8cebf5e3eeb8534 | Bin 0 -> 99 bytes .../dca6505d695c2a0e7247ff2dee70ffaea4bc7c0d | Bin 0 -> 491 bytes .../dcb501fbbb94c31e2be960dc4898b3aa252310a7 | Bin 0 -> 144 bytes .../dcff5752df020ec00d95f49f463d66f9dc49d7d5 | Bin 0 -> 86 bytes .../dd04c9200f6068173671eeec932444f83efd80ac | Bin 0 -> 115 bytes .../dd0e12e170d32c6f7aa8c5729d258ed2e02acf6a | Bin 0 -> 140 bytes .../dd655371b3af77e124d99d4c34e545b0355a0f02 | Bin 0 -> 97 bytes .../dd6b6aa89f2f1c46e60e86ea705720bc5f44fcc7 | Bin 0 -> 112 bytes .../dda0cdaab12c354534d015fcd77d7c0f0f8a9fe3 | Bin 0 -> 81 bytes .../ddb0b04c9ceafdc0295f8489665a32ab0ea10f25 | Bin 0 -> 80 bytes .../ddb8b2d424ece63cf6467b9a0f616749bf091469 | Bin 0 -> 106 bytes .../ddcfa3fe1e0c57792fc3bb8dae41142a8a1ca29f | Bin 0 -> 48 bytes .../de12ea7a0a4d6eca893b8b990a4a4f9342decc0e | Bin 0 -> 72 bytes .../de20009e5dd442964c04154d85910e7059e084b9 | Bin 0 -> 266 bytes .../de5eb0d67c436883a0089b189ddaa11df92c965c | Bin 0 -> 99 bytes .../de84d2616593dddce2f28615e28c0c72f746de9d | Bin 0 -> 161 bytes .../de9259b73a79b875b3e20ce9fda7647a45d6ba26 | Bin 0 -> 2537 bytes .../ded0e3fce4f5a1c5572ce632a29adcf37897881f | Bin 0 -> 144 bytes .../dee7c3e7cac3ebd62b0de576789c0ed0129e5d2c | Bin 0 -> 97 bytes .../def4bb0f286f7c45281a035b558581b327e505f7 | Bin 0 -> 323 bytes .../df2cff3e2d1845b09e31e2e99b50fe3aef5da229 | Bin 0 -> 73 bytes .../df2fa8b9efa11a9511dfeb146446f597bd82b6dd | Bin 0 -> 549 bytes .../df4c7b880af9427c854b76c0d11f60c340a0a922 | Bin 0 -> 609 bytes .../df74057846da618e308c75b9389616d125845bba | Bin 0 -> 133 bytes .../df8087a243ae78d551a128d812ea8336a3042f75 | Bin 0 -> 755 bytes .../df9f04b41873b05b7485b379b40f126e9915d9f0 | Bin 0 -> 3126 bytes .../dfac03fb3798072a55d8ccf0f28ef4f81c3ca355 | Bin 0 -> 636 bytes .../dfbca3b91615e12cbdfdf2d302c2411137eaec86 | Bin 0 -> 102 bytes .../dfbff6b133d07b84b48b20402c1dfa295735f144 | Bin 0 -> 106 bytes .../dfc459b99d0e933191615817e735395cc2f8b6c1 | Bin 0 -> 119 bytes .../dfca552d0a2f6b45984b31d8644eed7aa205af71 | Bin 0 -> 458 bytes .../dffea25836343414ddf96e76d8853c21819b5fee | Bin 0 -> 430 bytes .../e02da98090daa0d3e750cc83581cbe8843d25acd | Bin 0 -> 69 bytes .../e0347261cfbdee5566c1188b107b40329039cd8f | Bin 0 -> 203 bytes .../e05959e65d29bd2833ff854b5421d8d7d802a49a | Bin 0 -> 97 bytes .../e06bf2dfcf2fa17f033f9cc3f763107b9e07c715 | Bin 0 -> 305 bytes .../e06d264feb90a182320761ca936fc35887dba84a | Bin 0 -> 108 bytes .../e09c5721b6c55681eee5481a476f4d1ffe8f56c3 | Bin 0 -> 108 bytes .../e0ba21767e10ff2bffafb1fe90ebd6ffdd8bc6b8 | Bin 0 -> 912 bytes .../e1263d4e0e1ed6868a4e4168a620e6f893358213 | Bin 0 -> 392 bytes .../e1724c8cb267c6efd73dddea9cf6facd5c561e68 | Bin 0 -> 485 bytes .../e187531dae9a9095709353882ed7d298b43f8551 | Bin 0 -> 108 bytes .../e1bb1e140c9c63c1c36cf54a3a62da93c14fbafb | Bin 0 -> 544 bytes .../e1cf89658b836d3f662012d3d2a288d5da975993 | Bin 0 -> 80 bytes .../e1d7d8013afbdab4d3989b86d781dbf513bf5839 | Bin 0 -> 263 bytes .../e227f418bbc10b012cab197e463e8dae45853356 | Bin 0 -> 476 bytes .../e2554b800d5d37c9e508155ebcbceec3793fe6d0 | Bin 0 -> 324 bytes .../e263798e59a5d270abf73edaa624be0700242a53 | Bin 0 -> 106 bytes .../e26a332fc58db1c372fcb67697bcad0ec6b2664f | Bin 0 -> 140 bytes .../e27b58f72661df12161b25eb208a2dd380e00058 | Bin 0 -> 139 bytes .../e2e9d9a7e4578a32921a8704d6352067a2a1cf14 | Bin 0 -> 513 bytes .../e2ff946658b253ef36ea36da4b4c869b46e0308d | Bin 0 -> 566 bytes .../e3062519c6b0bfe605e4247d493c8efaddee6b97 | Bin 0 -> 249 bytes .../e30d49ee6f7ead7b4f24b8fcb88792b4c521d4a1 | Bin 0 -> 2407 bytes .../e313b472b8e3780b2d77b1394ea1cb191f028896 | Bin 0 -> 157 bytes .../e315fca490e48b2e33f0ff395fd359f9befc2132 | Bin 0 -> 994 bytes .../e3261856e55ec4324076b259314dce283739c4d4 | Bin 0 -> 856 bytes .../e33c7989843428aa27bea82df1d7144112034a1d | Bin 0 -> 69 bytes .../e342a3e59590671c6d6437c42cb537751085d03d | Bin 0 -> 102 bytes .../e3692bc33b8a25a54b8cf31d374056bb958d6f9c | Bin 0 -> 180 bytes .../e3837c6d2e4cf4041061e1c10f1f873fc3e162f7 | Bin 0 -> 292 bytes .../e4189007af713f980b50c47f1e4794725c57a1de | Bin 0 -> 102 bytes .../e4309d4eefa74c5f1e318e17707d30ca56cd1e7b | Bin 0 -> 40 bytes .../e4582704c43bd71deca14d631423da232abd51d5 | Bin 0 -> 109 bytes .../e459f0c472dc20b4d0b01f3b63e95ba9cc8e7512 | Bin 0 -> 102 bytes .../e462823402b1be1965b492d9da008a2ec8b9d8ba | Bin 0 -> 271 bytes .../e482b35af1c67890c17ddf534f579dc2e1940557 | Bin 0 -> 166 bytes .../e4ab5ceeed7e78124c0b1b13da7af7ce2acac25d | Bin 0 -> 170 bytes .../e4ebe578013e5a5230eb290e27c224ba2fb7f3d1 | Bin 0 -> 246 bytes .../e4f22162b2dd655dca074bf2679ebe8b039b2cf0 | Bin 0 -> 143 bytes .../e4f7f398637af48001261e0131d2f560601a1a41 | Bin 0 -> 112 bytes .../e50b6b4f412137b8d28f6cc2f3074cc4e4ca474f | Bin 0 -> 733 bytes .../e52c04168e8e4103462c2bb9d0bc993fe53ba13b | Bin 0 -> 167 bytes .../e5651106cd93be0ac68f7c2f81d6f274a727ebb3 | Bin 0 -> 128 bytes .../e59b3a4b2d0b6bdd8c2558ee32ed0af04dffdad2 | Bin 0 -> 192 bytes .../e5b37fb5b8be337ca0f01fe30334ed3d4d5c684a | Bin 0 -> 108 bytes .../e5c3461cf7cfff32ac4fd52307207deeff46262e | Bin 0 -> 112 bytes .../e5dc0ee26c8cb6fd079b751cf0ac3d3232035749 | Bin 0 -> 69 bytes .../e6090fd057eabf660f91e3d2341ec3c5849ee324 | Bin 0 -> 108 bytes .../e62e395eba8efd5026e743540fa0657aac71b795 | Bin 0 -> 129 bytes .../e62fe5b7e839ab0058f01e0809bb492813f73691 | Bin 0 -> 714 bytes .../e673b0bce870c3ae72b554b013fda36cfe5bf241 | Bin 0 -> 100 bytes .../e690ab4aa1902585c1f03163fa2fd44b5e55309c | Bin 0 -> 220 bytes .../e69b72d2e1c1047ff3130814a4451666d6ea7e22 | Bin 0 -> 112 bytes .../e6e23396fdef4750a3833247bc63fe5774488c46 | Bin 0 -> 2083 bytes .../e6f59822479477dd4f7802628b8590472948621b | Bin 0 -> 102 bytes .../e70149bf42394a6061e2d00095f581739dd44818 | Bin 0 -> 71 bytes .../e7195da10d3844dd8b0d9aa3d34ffb28c9dbfaa6 | Bin 0 -> 102 bytes .../e7254f572fa927cecd700e22d42a327e5ec9e777 | Bin 0 -> 290 bytes .../e72d9f2f5c822a13c99798ee0fb80b6521b61d3f | Bin 0 -> 91 bytes .../e72e14359deaf76577b6368b4ca05102daae538d | Bin 0 -> 144 bytes .../e7441f5521f1b9ad33caaa8cce88161e5bdd8275 | Bin 0 -> 108 bytes .../e76ab8e03532cd5d2bf0c63432e2993bcd7467ba | Bin 0 -> 3107 bytes .../e76cd955107fbb3a5e66ed566f83ac0fd8c6a19a | Bin 0 -> 469 bytes .../e76fbdddd517f74f4c231fb5ac936df72c47ccff | Bin 0 -> 104 bytes .../e7879d078f5484de76394ba51fac6e5a7fe3aad2 | Bin 0 -> 210 bytes .../e7a9bddd61c41a3182fe299dc246a1c129edbcd2 | Bin 0 -> 69 bytes .../e822c7b78743a719c5c6d4e5288dc6b3fcc4651c | Bin 0 -> 180 bytes .../e8666037f5297d357bd557495b64ad02d1551d09 | Bin 0 -> 492 bytes .../e86d59d7b45d680cff3132d6ea38341dc73b5364 | Bin 0 -> 40 bytes .../e89451aa8f9b3de5f529ca316a0d0f330a86f93b | Bin 0 -> 1152 bytes .../e89c4cb982aa29baa96b250fe51ed043a942e89d | Bin 0 -> 51 bytes .../e8abc42b656993e3049332d239bc1b6e398a7920 | Bin 0 -> 69 bytes .../e8c54feaec75dc91dd44c7ea1177c83333f475b3 | Bin 0 -> 102 bytes .../e8ec0e7be7457ca689de76a45cd47f5344d46888 | Bin 0 -> 137 bytes .../e90f234d63465e33c341241ca9d2b2570f1f564a | Bin 0 -> 271 bytes .../e937e740fce6a4659d70d14580c6dadd3884a566 | Bin 0 -> 2647 bytes .../e93c87eb3e91c5d0fab981d2e26b5ab5d868dbe0 | Bin 0 -> 175 bytes .../e94c4f6c4edf12fbbf58e701099d97ea9a328818 | Bin 0 -> 428 bytes .../e992e28d6c2ac26bc01507faf7ef6ba10807d5de | Bin 0 -> 170 bytes .../e996fb9b53c28053deb15b5dd1edea0d1bd0c5da | Bin 0 -> 801 bytes .../e9c3016cb8e841d277b7acda4b101aacb5ca66fe | Bin 0 -> 104 bytes .../e9cf294779ba84c956e4d86f71dd75625d0762f9 | Bin 0 -> 1555 bytes .../e9df0bb499dcd3c192868387b60387520f28cc08 | Bin 0 -> 237 bytes .../e9ff11b3eb0c7ee2fbca38b7405d083b6736ecfe | Bin 0 -> 181 bytes .../ea06e03d06e62bbee4909e1f8938e03a57370afa | Bin 0 -> 106 bytes .../ea14569f45a4153b18c1caa48b698835d67d831a | Bin 0 -> 150 bytes .../ea155a9c3398ca9a8adb38a8e80ca22a7ffab7a4 | Bin 0 -> 543 bytes .../ea48b945cbc74956549e731a90991474b8bd102a | Bin 0 -> 742 bytes .../ea9342e01ca8641af66988b4ba4c60619932a0a5 | Bin 0 -> 69 bytes .../ea946153f6ef41b7f5c97ef5024d82ec0e26403a | Bin 0 -> 135 bytes .../eac6f88668703168aa31b255e7e58142da0a9136 | Bin 0 -> 115 bytes .../eb4666946169dad175a572771d2d1592308b2ff0 | Bin 0 -> 102 bytes .../eb5a3da6e5351d9fbb8a67c81cb59532c5f200c8 | Bin 0 -> 106 bytes .../eb7fbf41c750f2592692482d7a0683f55a9c2c80 | Bin 0 -> 331 bytes .../eb86052af19123140592f4b21ff095395e5c8578 | Bin 0 -> 103 bytes .../eb88e0ff6771ec04dfae3a964ff6399958e3cb70 | Bin 0 -> 153 bytes .../eba7da018882ad9b2e31df6fcf493d15de3fbf7e | Bin 0 -> 102 bytes .../ebf9ae2db9db98e7973100483990f9f7eb6252f7 | Bin 0 -> 143 bytes .../ec2445c037618464c2202c67ef6a98a7943e2bc8 | Bin 0 -> 74 bytes .../ec3370b62ad722d3f5df2d3e1f14cdc6676ffaf6 | Bin 0 -> 69 bytes .../ecc6ac62b9ee137f2dbdacfa17a3fe691c214c30 | Bin 0 -> 156 bytes .../ece102d726cea0f485cb30f3b0b68ee13b87a1cf | Bin 0 -> 108 bytes .../eceabe1a94cd4261d53be1612b7bc91d7c8386cc | Bin 0 -> 1528 bytes .../ed1064ddcb3c11b7f3ade049846882ff8cc6de11 | Bin 0 -> 100 bytes .../ed2ff0a9923c4ffed9bd3270fb573ee12842f06c | Bin 0 -> 2318 bytes .../ed3f24599af798db6367c33c728ca8a298430c90 | Bin 0 -> 103 bytes .../ed7e68111214223cf0ac50fb85ded5eb8791c775 | Bin 0 -> 79 bytes .../ed88758b1713b053d5bbae3906680bc00939cc4c | Bin 0 -> 102 bytes .../eda2b4c3485fcf5fc8e42bd6cd713ec9137bb99f | Bin 0 -> 36 bytes .../edc13238e8ebab8da3ef26e599993aacddc70bfa | Bin 0 -> 458 bytes .../ede187b22dc3c4dcdefe28b51b2679e8a47ddc0b | Bin 0 -> 135 bytes .../edf84125f3683938326c73a7acb1c27a87da8a51 | Bin 0 -> 135 bytes .../edf95e3d9fa56fd280f99e211e13715f9415d708 | Bin 0 -> 108 bytes .../ee23b2e0e0981ba0768c0af7be21256ad1c31ab0 | Bin 0 -> 27 bytes .../ee4143cba56a62392cfa98fcd0198887fd360b33 | Bin 0 -> 877 bytes .../ee59b9d2d302cdf3b5768c78d6438da6543eb3ee | Bin 0 -> 114 bytes .../ee61ff2e7e4c8640e4451e780a264b3171088569 | Bin 0 -> 81 bytes .../ee629945ac1d7129ea5cb4514c9385ac38a8423d | Bin 0 -> 432 bytes .../ee7613b93209394eea757ba614a0b9277f792d9b | Bin 0 -> 134 bytes .../eeb1ad989122ab36a0ae2c3182b9f54e62051927 | Bin 0 -> 220 bytes .../eeb2d99d630e9990996b4b4b23c1dbf97fd75747 | Bin 0 -> 592 bytes .../eef72ee9c4c35ef707acc959c7294d5ced10fe68 | Bin 0 -> 109 bytes .../ef45313934c87273348fe3949e49050dbbf213e0 | Bin 0 -> 172 bytes .../ef682b9f5a22ad759caa4b598d67c9320278f488 | Bin 0 -> 145 bytes .../ef79e7c334518bfdd1265db7480f0cae019360b1 | Bin 0 -> 779 bytes .../ef876ed45ad7c879018480241dd5ba5f7778f462 | Bin 0 -> 121 bytes .../efbd22c13892a1ea4752b6cfee6b3159c3d5ac9d | Bin 0 -> 174 bytes .../efda9a2eab8bbb01e62ac01625b8cf4909a1198d | Bin 0 -> 69 bytes .../eff1b9d15d4bd60e4842fde37d048c90661d6121 | Bin 0 -> 102 bytes .../f003ebe145288bc911d8840d4780a0d4ddc55373 | Bin 0 -> 115 bytes .../f0052c8d2126b9b7ba5c26369b78b36ef25fe0f7 | Bin 0 -> 193 bytes .../f008b22f42c5f61ed903270d859bcff244c389cc | Bin 0 -> 230 bytes .../f06191d918adb094a1463bc1d3203cec72aaa384 | Bin 0 -> 105 bytes .../f08e173307472c01ab182293fcd7d5bb9c9d305a | Bin 0 -> 441 bytes .../f090460188c02c587bdfa1063474c824d9894dcc | Bin 0 -> 107 bytes .../f09b1112d054e3b2aae1a7964279716bbeca47b4 | Bin 0 -> 210 bytes .../f0a0ffc1468ea117395a807dfebda2452d16c499 | Bin 0 -> 255 bytes .../f0b8ef27c8ee16b81872b1157ee461b96c8b7f45 | Bin 0 -> 284 bytes .../f0ccba58f670dc2fd99df17c149496c0649707fa | Bin 0 -> 135 bytes .../f0d303aa6beb3c3f4c55158bdaeabdfa635c27f1 | Bin 0 -> 139 bytes .../f12678cf2e168188494f2e7aab6b070eb439d2c2 | Bin 0 -> 75 bytes .../f12c261d98893669a7215333f8923b0d2ea1a81f | Bin 0 -> 102 bytes .../f1610db081c181b291201ff4cde6fdc1893952cc | Bin 0 -> 99 bytes .../f1a4b29cfff5569fb9b9daa65b0e3440b039615d | Bin 0 -> 99 bytes .../f1a631ef4173d800f78500a86921102ff19ec5f4 | Bin 0 -> 422 bytes .../f23ca8c2db08c83d86b7aa9a7bc044d0d5368629 | Bin 0 -> 108 bytes .../f24000f05837427008fc2903033e3aa91bd24e4b | Bin 0 -> 106 bytes .../f274eda5fd5ad1ee69b55fbdfbf40dcc532b0842 | Bin 0 -> 141 bytes .../f2a8a2e95b355b99543d2c166d3371eb64b65d72 | Bin 0 -> 1003 bytes .../f2ac90d7e62eac0fa3ac34fc4439f63b01333f4f | Bin 0 -> 108 bytes .../f2c1f02048e8ecbfca4799527fcdc2497b8b7aed | Bin 0 -> 102 bytes .../f2c774553dde8a7d49a9ede22e745a3d65d6494a | Bin 0 -> 80 bytes .../f2e7b8bcdf840a826ecfffb21ed558e67ddb2102 | Bin 0 -> 104 bytes .../f2e810e500e5137a530f663b285ce84db75430f9 | Bin 0 -> 348 bytes .../f2f0737ea6641610a694ddbec3209073963601d8 | Bin 0 -> 132 bytes .../f2f210d434056dce3861223e3b7024dd6584526a | Bin 0 -> 84 bytes .../f3a82e8b38f954c0be2247de3b6eb3910839f63d | Bin 0 -> 162 bytes .../f3bcae440cb075f0afc3e3b40cd493d7af5a31ca | Bin 0 -> 69 bytes .../f409da789abb07a47457bfd12537acdd27b4d2fb | Bin 0 -> 255 bytes .../f40e3a584166733e7c1f702690fc18a9b6d8bddf | Bin 0 -> 144 bytes .../f4108aeafd06233e7a3f4fe63d557368c8ceb528 | Bin 0 -> 120 bytes .../f42560134cb6af8dfdfb8a9570c93eead6b7ac31 | Bin 0 -> 72 bytes .../f429817dc2960e7da1db52681ccdd784ad1dab1c | Bin 0 -> 73 bytes .../f441070d3702c9dfd3745c6b2187104333103504 | Bin 0 -> 164 bytes .../f444c8a3e366fcbcc5cdbc0511dc3c3d3f3b5089 | Bin 0 -> 252 bytes .../f459917db3554315251ee96735392fbf89713064 | Bin 0 -> 75 bytes .../f471537f0f8cf6e4b73e737f3b18ea5fd6eab702 | Bin 0 -> 1576 bytes .../f47cb523f7a32f4306a1b9f78486018299f518f5 | Bin 0 -> 102 bytes .../f48bca386983cd42be106864d164cfcab53aceb7 | Bin 0 -> 3486 bytes .../f496134873c83f1aaa70cf1c31759d03bbe9c495 | Bin 0 -> 356 bytes .../f49a32dd866a767b9ca2c06451f49d926d958d95 | Bin 0 -> 137 bytes .../f4a8fb7ec792c5e016d1b1756d9e62cc25c4e1a6 | Bin 0 -> 138 bytes .../f4c3ae6c1b149fece719a25b64f0ffcfa0ef4f70 | Bin 0 -> 146 bytes .../f4d4b58bdca492a6ed003c2b49a26f3f4ea683fe | Bin 0 -> 119 bytes .../f4d850a491224739a870c57d7ccd32e22f2ecb23 | Bin 0 -> 4091 bytes .../f522843f0e11b6c483a57c8e52ec0d97eda68175 | Bin 0 -> 48 bytes .../f5a854f1bad59930b2e80e5f6f6350989ff442f8 | Bin 0 -> 907 bytes .../f5c39076cd888160da91d78058137a409fed02e2 | Bin 0 -> 106 bytes .../f5e91076d0dca3b53d4f85dd565f346ce7dba322 | Bin 0 -> 146 bytes .../f5f9014f5d4a8e28d939e313aaee1445720046e0 | Bin 0 -> 108 bytes .../f63987ba8506c3fadc251e002eab9bd18aacf83f | Bin 0 -> 106 bytes .../f65819da779e1a0f50a0349ede6d6a3491c3e2ad | Bin 0 -> 3249 bytes .../f6a64c4d5720bb5c6d1dbbbb2be77a7db7655168 | Bin 0 -> 626 bytes .../f6c0228a7564ad9da25b7f8ae4842103391eb320 | Bin 0 -> 180 bytes .../f75716a052feb47e47958491f6631cddd7418dce | Bin 0 -> 2149 bytes .../f760e7458959d1d4e64e12a7fe42552531972bc9 | Bin 0 -> 193 bytes .../f791d55d9d4b2462fa15af44cd00122f7c79de36 | Bin 0 -> 1141 bytes .../f7bbb2eb13e2ed81078bac10f3d05fdc3f05a6dd | Bin 0 -> 522 bytes .../f80664228f35f70394d0563a1eefaf3ada8bf013 | Bin 0 -> 972 bytes .../f806c722b19ae6f4fecec4a46b19fdbb14068333 | Bin 0 -> 108 bytes .../f8119ba7ca78c66051715f981c97e0513d9c3827 | Bin 0 -> 245 bytes .../f82a03f4cfaf60f998c09fc3e65d6849eb15672f | Bin 0 -> 36 bytes .../f846135da0396f61035a2ae12d0b71319f5da4f0 | Bin 0 -> 148 bytes .../f8551d2355baacbc81a177b68a09257d003a1d63 | Bin 0 -> 827 bytes .../f892a5308895f5d40d0ed79af766e4165589c197 | Bin 0 -> 165 bytes .../f8b655a75c4437875b27560ba941e232dc793934 | Bin 0 -> 1319 bytes .../f8c0c300df603d18373e8a710c98cfa027910bba | Bin 0 -> 2490 bytes .../f8c50fa227f6b1dde618168d159caebb91cae54d | Bin 0 -> 2431 bytes .../f8d354179c10d219127b53273ff471644e782176 | Bin 0 -> 224 bytes .../f8f7a802aa67780f3d70b686b01498462a015329 | Bin 0 -> 156 bytes .../f8fbf0f30aa1f2081c158a5e5d027bb540e344ab | Bin 0 -> 504 bytes .../f8fc30c4cce63d22fb41139e708b4f98d7f38ece | Bin 0 -> 180 bytes .../f90d5451a12269e8741ca300409625a4777a1154 | Bin 0 -> 659 bytes .../f947a74b759dd42139105ae61530e963ef820a73 | Bin 0 -> 1110 bytes .../f94e071cda73362ae8c284c132b05f4c32b2f12a | Bin 0 -> 76 bytes .../f9959c016e9fbfffb053f7e7903e91b1abf6a158 | Bin 0 -> 2407 bytes .../f9f58b28c95cab0f2dacdf70e2f05f64850feeba | Bin 0 -> 350 bytes .../fa62977bddda089217691293964db3bd5ca6bec8 | Bin 0 -> 667 bytes .../fa681fedd2c6fa734ce1bd9d7d8fef7138fea1da | Bin 0 -> 1010 bytes .../fa8c4015a7c03bd2b1af712b148fb6a46976ac30 | Bin 0 -> 139 bytes .../fabb1d677b8be9d34302f327370d1a069d5cd732 | Bin 0 -> 102 bytes .../faf91d41b88e0ebfdbe16c133f8aec4f54643867 | Bin 0 -> 458 bytes .../fb05ad8533dbea37b825c735a8f275747d3c3d65 | Bin 0 -> 2201 bytes .../fb265cb36d03f402dd09a1d8743bfcfb52948b1b | Bin 0 -> 117 bytes .../fb3e9f119af88a194e4cc46a07d0980e0d08472d | Bin 0 -> 1119 bytes .../fb70ffd57de084a797500e21986f07f185aa56a2 | Bin 0 -> 69 bytes .../fba421b338b3eb9f7752d8cc1eeda8c7b28f8eb8 | Bin 0 -> 266 bytes .../fbb77700114cb0c0bb6584fdb3c6b90525fb3c69 | Bin 0 -> 228 bytes .../fbbb4a8e282ecccbb507e979c4d5b25a1474a432 | Bin 0 -> 139 bytes .../fbc0ed074c7a4e9701c7dd5fb3f22faae83b72dc | Bin 0 -> 152 bytes .../fbd727f72b075dfd8b65a063d25616d88bc55a58 | Bin 0 -> 1439 bytes .../fbd744c74addd2446bc3421ee255782745944912 | Bin 0 -> 309 bytes .../fbe7d2fe74ec76c7315b1436a8eb1ef2bd71790d | Bin 0 -> 122 bytes .../fc0784659f2f2db14675c08091a72748e8bf0653 | Bin 0 -> 108 bytes .../fc72627e1e118b27d857ecc821d7230a4a3e19ea | Bin 0 -> 142 bytes .../fcbaa80ef465b04a9b23aed5fdeeb9bbae8a2be3 | Bin 0 -> 2082 bytes .../fcbfcc14b7ce95f3d4c79d3f0d013e26fbb3f90e | Bin 0 -> 69 bytes .../fcdec31a3bcb5e05058749746edf9ec860b54a85 | Bin 0 -> 187 bytes .../fcf94887dc792d14601a0b1edf7bf2bc29ef8725 | Bin 0 -> 144 bytes .../fd567783b8f89ff8fff4b368e827cbc1ce4718db | Bin 0 -> 283 bytes .../fd59c04966e702e69c1d1590444fc12cf512dac1 | Bin 0 -> 965 bytes .../fd657ccaaca06d0a4ac30d7965c41cc2bee6978e | Bin 0 -> 493 bytes .../fd7695c4e2aed317cb86e9c1074aeb8a989fda29 | Bin 0 -> 110 bytes .../fd95d937d82debbb85ad308e34c0b1756cab756b | Bin 0 -> 501 bytes .../fdd6a808066a675e9984542ba69ed74a95f478eb | Bin 0 -> 96 bytes .../fe15945925e89be8249db3b968ef6b8bcfd762f4 | Bin 0 -> 75 bytes .../fe1f98b8e9556ab3ed1d1a43c981b52f6dfa6bb4 | Bin 0 -> 112 bytes .../fe63f261780d7277153370152ead17700d939b68 | Bin 0 -> 97 bytes .../fe73188af7332dbd41e13f0d6eb68813cfe666dd | Bin 0 -> 775 bytes .../fe9fb4a8ee8df6455e2f58dd5e0fa18d258c8767 | Bin 0 -> 402 bytes .../fef53990a9dfa6829c236f68a51dd273054184fd | Bin 0 -> 173 bytes .../ff2df20321ac2b49b512ef4736fffd5e3d68ac1c | Bin 0 -> 458 bytes .../ff58579901a8a58274becfa93bc44365a321d22b | Bin 0 -> 180 bytes .../ffd4a31dc7415d314324661df7153aa31640af99 | Bin 0 -> 178 bytes .../ffedcc07b024a76f6e6b859d61c87cc035012201 | Bin 0 -> 144 bytes .../ffef8bebf9bb707a5cb7d9bb55eb1b3d8f54d702 | Bin 0 -> 122 bytes .../fff73fea62e77e16da2a1773de25945f4860a991 | Bin 0 -> 931 bytes .../fffa69b8781b3df9711059a17d365670c037b419 | Bin 0 -> 291 bytes src/libs/libsrtp/fuzzer/fuzzer.c | 835 ++ src/libs/libsrtp/fuzzer/fuzzer.h | 127 + src/libs/libsrtp/fuzzer/meson.build | 31 + src/libs/libsrtp/fuzzer/mt19937.cpp | 17 + src/libs/libsrtp/fuzzer/mt19937.h | 4 + src/libs/libsrtp/fuzzer/testmem.c | 25 + src/libs/libsrtp/fuzzer/testmem.h | 3 + src/libs/libsrtp/include/srtp.h | 1499 ++++ src/libs/libsrtp/include/srtp3/meson.build | 7 + src/libs/libsrtp/include/srtp_priv.h | 254 + src/libs/libsrtp/include/stream_list_priv.h | 121 + src/libs/libsrtp/install-sh | 501 ++ src/libs/libsrtp/libsrtp3.pc.in | 12 + src/libs/libsrtp/meson.build | 348 + src/libs/libsrtp/meson_options.txt | 18 + src/libs/libsrtp/srtp.def | 69 + src/libs/libsrtp/srtp/srtp.c | 5330 +++++++++++ src/libs/libsrtp/test/cutest.h | 726 ++ src/libs/libsrtp/test/getopt_s.c | 111 + src/libs/libsrtp/test/getopt_s.h | 67 + src/libs/libsrtp/test/meson.build | 77 + src/libs/libsrtp/test/rdbx_driver.c | 362 + src/libs/libsrtp/test/replay_driver.c | 280 + src/libs/libsrtp/test/roc_driver.c | 175 + src/libs/libsrtp/test/rtp.c | 237 + src/libs/libsrtp/test/rtp.h | 139 + src/libs/libsrtp/test/rtp_decoder.c | 825 ++ src/libs/libsrtp/test/rtp_decoder.h | 118 + src/libs/libsrtp/test/rtpw.c | 717 ++ src/libs/libsrtp/test/rtpw_test.sh | 183 + src/libs/libsrtp/test/rtpw_test_gcm.sh | 267 + src/libs/libsrtp/test/srtp_driver.c | 6367 +++++++++++++ src/libs/libsrtp/test/test_srtp.c | 184 + src/libs/libsrtp/test/ut_sim.c | 112 + src/libs/libsrtp/test/ut_sim.h | 83 + src/libs/libsrtp/test/util.c | 344 + src/libs/libsrtp/test/util.h | 89 + src/libs/libsrtp/test/words.txt | 250 + src/libs/libsrtp/timing | 1 + src/libs/libsrtp/update.sh | 15 + src/libs/libsrtp/valgrind.supp | 9 + 2383 files changed, 55949 insertions(+) create mode 100644 src/libs/libsrtp/.clang-format create mode 100644 src/libs/libsrtp/.github/workflows/android.yml create mode 100644 src/libs/libsrtp/.github/workflows/autotools.yml create mode 100644 src/libs/libsrtp/.github/workflows/cifuzz.yml create mode 100644 src/libs/libsrtp/.github/workflows/cmake.yml create mode 100644 src/libs/libsrtp/.github/workflows/coverity_scan.yml create mode 100644 src/libs/libsrtp/.github/workflows/format_check.yml create mode 100644 src/libs/libsrtp/.github/workflows/fuzzer_build.yml create mode 100644 src/libs/libsrtp/.github/workflows/meson.yml create mode 100644 src/libs/libsrtp/.github/workflows/stream_list.yml create mode 100644 src/libs/libsrtp/.gitignore create mode 100644 src/libs/libsrtp/CHANGES create mode 100644 src/libs/libsrtp/CMakeLists.txt create mode 100644 src/libs/libsrtp/CODEOWNERS create mode 100644 src/libs/libsrtp/Config.cmake.in create mode 100644 src/libs/libsrtp/LICENSE create mode 100644 src/libs/libsrtp/Makefile.in create mode 100644 src/libs/libsrtp/README.md create mode 100755 src/libs/libsrtp/config.guess create mode 100644 src/libs/libsrtp/config.h create mode 100755 src/libs/libsrtp/config.sub create mode 100644 src/libs/libsrtp/config_in.h create mode 100644 src/libs/libsrtp/config_in_cmake.h create mode 100755 src/libs/libsrtp/configure create mode 100644 src/libs/libsrtp/configure.ac create mode 100644 src/libs/libsrtp/crypto/Makefile.in create mode 100644 src/libs/libsrtp/crypto/cipher/aes.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_gcm_mbedtls.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_gcm_nss.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_gcm_ossl.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_gcm_wssl.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_icm.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_icm_mbedtls.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_icm_nss.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_icm_ossl.c create mode 100644 src/libs/libsrtp/crypto/cipher/aes_icm_wssl.c create mode 100644 src/libs/libsrtp/crypto/cipher/cipher.c create mode 100644 src/libs/libsrtp/crypto/cipher/cipher_test_cases.c create mode 100644 src/libs/libsrtp/crypto/cipher/cipher_test_cases.h create mode 100644 src/libs/libsrtp/crypto/cipher/null_cipher.c create mode 100644 src/libs/libsrtp/crypto/hash/auth.c create mode 100644 src/libs/libsrtp/crypto/hash/auth_test_cases.c create mode 100644 src/libs/libsrtp/crypto/hash/auth_test_cases.h create mode 100644 src/libs/libsrtp/crypto/hash/hmac.c create mode 100644 src/libs/libsrtp/crypto/hash/hmac_mbedtls.c create mode 100644 src/libs/libsrtp/crypto/hash/hmac_nss.c create mode 100644 src/libs/libsrtp/crypto/hash/hmac_ossl.c create mode 100644 src/libs/libsrtp/crypto/hash/hmac_wssl.c create mode 100644 src/libs/libsrtp/crypto/hash/null_auth.c create mode 100644 src/libs/libsrtp/crypto/hash/sha1.c create mode 100644 src/libs/libsrtp/crypto/include/aes.h create mode 100644 src/libs/libsrtp/crypto/include/aes_gcm.h create mode 100644 src/libs/libsrtp/crypto/include/aes_icm.h create mode 100644 src/libs/libsrtp/crypto/include/aes_icm_ext.h create mode 100644 src/libs/libsrtp/crypto/include/alloc.h create mode 100644 src/libs/libsrtp/crypto/include/auth.h create mode 100644 src/libs/libsrtp/crypto/include/cipher.h create mode 100644 src/libs/libsrtp/crypto/include/cipher_priv.h create mode 100644 src/libs/libsrtp/crypto/include/cipher_types.h create mode 100644 src/libs/libsrtp/crypto/include/crypto_kernel.h create mode 100644 src/libs/libsrtp/crypto/include/crypto_types.h create mode 100644 src/libs/libsrtp/crypto/include/datatypes.h create mode 100644 src/libs/libsrtp/crypto/include/err.h create mode 100644 src/libs/libsrtp/crypto/include/hmac.h create mode 100644 src/libs/libsrtp/crypto/include/key.h create mode 100644 src/libs/libsrtp/crypto/include/null_auth.h create mode 100644 src/libs/libsrtp/crypto/include/null_cipher.h create mode 100644 src/libs/libsrtp/crypto/include/rdb.h create mode 100644 src/libs/libsrtp/crypto/include/rdbx.h create mode 100644 src/libs/libsrtp/crypto/include/sha1.h create mode 100644 src/libs/libsrtp/crypto/kernel/alloc.c create mode 100644 src/libs/libsrtp/crypto/kernel/crypto_kernel.c create mode 100644 src/libs/libsrtp/crypto/kernel/err.c create mode 100644 src/libs/libsrtp/crypto/kernel/key.c create mode 100644 src/libs/libsrtp/crypto/math/datatypes.c create mode 100644 src/libs/libsrtp/crypto/replay/rdb.c create mode 100644 src/libs/libsrtp/crypto/replay/rdbx.c create mode 100644 src/libs/libsrtp/crypto/test/aes_calc.c create mode 100644 src/libs/libsrtp/crypto/test/cipher_driver.c create mode 100644 src/libs/libsrtp/crypto/test/datatypes_driver.c create mode 100644 src/libs/libsrtp/crypto/test/env.c create mode 100644 src/libs/libsrtp/crypto/test/kernel_driver.c create mode 100644 src/libs/libsrtp/crypto/test/meson.build create mode 100644 src/libs/libsrtp/crypto/test/sha1_driver.c create mode 100644 src/libs/libsrtp/doc/Doxyfile.in create mode 100644 src/libs/libsrtp/doc/Makefile.in create mode 100644 src/libs/libsrtp/doc/crypto_kernel.txt create mode 100644 src/libs/libsrtp/doc/docs.css create mode 100644 src/libs/libsrtp/doc/meson.build create mode 100755 src/libs/libsrtp/format.sh create mode 100644 src/libs/libsrtp/fuzzer/Makefile.in create mode 100644 src/libs/libsrtp/fuzzer/README.md create mode 100644 src/libs/libsrtp/fuzzer/corpus/002478e8528b7057018106308a03382f9c60dd62 create mode 100644 src/libs/libsrtp/fuzzer/corpus/003573bfa48939dd1c2b3e875f1906b082662ea7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0063584d99e559d95f7574303efaaa7d66aa1043 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0068209ec44b5bcc76df5fd390bee3451a931f75 create mode 100644 src/libs/libsrtp/fuzzer/corpus/00aba68e0b49a70a5d9bd4ee363eacf106519586 create mode 100644 src/libs/libsrtp/fuzzer/corpus/00f65461899db1e20bcfbc27a9f6a0c2e563a70f create mode 100644 src/libs/libsrtp/fuzzer/corpus/01093511ce21ba2143348f1eb6cdc390b9d900ce create mode 100644 src/libs/libsrtp/fuzzer/corpus/0191a956146c2b6eea8b009efb0f16589d44a856 create mode 100644 src/libs/libsrtp/fuzzer/corpus/01980dea5a010187f31ea505fdf1b3f7e3e2c559 create mode 100644 src/libs/libsrtp/fuzzer/corpus/01b951775bc6cd4f54461597e65b84e44c292402 create mode 100644 src/libs/libsrtp/fuzzer/corpus/01cf3f39acd95472695e7a92b27b69e7cf1aff88 create mode 100644 src/libs/libsrtp/fuzzer/corpus/02137ddc6d4c8a03cce587f0f295f8a14dc0e960 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0225aedaaba06224630e8c7b641f9f987d38c29d create mode 100644 src/libs/libsrtp/fuzzer/corpus/02274d492863405f178860185520e380b9253dd1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/02329129eb1b3647fcc65b670413e36fa6ffacd9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0242c184029780608bd52c49883a188f333b90f5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/029c1bc38ee3a6a9e6d1cf95b421f06e868a8cc0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/02bed7d1b482d7b62be531eed715763b0872d6a5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/02c705f93c1f075b5e473909f35b652a1fe5bf80 create mode 100644 src/libs/libsrtp/fuzzer/corpus/02e43835c3874d724b186b0d024add681b1f9219 create mode 100644 src/libs/libsrtp/fuzzer/corpus/02fb62ce864b7637f14818c411348cae30392a9e create mode 100644 src/libs/libsrtp/fuzzer/corpus/030481afcfe047f8584391dc64b9307273590b6f create mode 100644 src/libs/libsrtp/fuzzer/corpus/031e311800ff4e60382f18f854418870fd4aef13 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0320551674956cf13d9827f99490b0339d59e672 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0339be7ee6c0a259d62bd533cc6bc1d94612d5ae create mode 100644 src/libs/libsrtp/fuzzer/corpus/034276781b173338c670d819af0ab4321d6aa50d create mode 100644 src/libs/libsrtp/fuzzer/corpus/03454e15dbc51d7de1126d1dfbaba101b483309c create mode 100644 src/libs/libsrtp/fuzzer/corpus/0385a3ffe2e5c799e479400669be2c29d6276531 create mode 100644 src/libs/libsrtp/fuzzer/corpus/039d62fcc18ecd8a91e8ba631c179911a8db340e create mode 100644 src/libs/libsrtp/fuzzer/corpus/03b310f8e1c16c57e8f263c3d20448a9c0a1d00e create mode 100644 src/libs/libsrtp/fuzzer/corpus/03b7bc0ef864657df7756e2f38fc9c108f4edfa0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/04dfe903049df3eb0701a4785f5617a7a2d4735c create mode 100644 src/libs/libsrtp/fuzzer/corpus/04e6dd5a888667bc225e7d9eac4e58b65045b42b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0500cd32ae315af1bf538eecd4572cc74ab94905 create mode 100644 src/libs/libsrtp/fuzzer/corpus/050e91306cebc8f11b032eb9e9d662e862e92a3c create mode 100644 src/libs/libsrtp/fuzzer/corpus/051781418c3b4c91c3e84fe1c262d2a7e5aedf1b create mode 100644 src/libs/libsrtp/fuzzer/corpus/051df98d56e1664ca2179b51485bcb49728cd3be create mode 100644 src/libs/libsrtp/fuzzer/corpus/051f2e54bc804cc50fe9c2262e9d5ec67061ae65 create mode 100644 src/libs/libsrtp/fuzzer/corpus/05539d721692acd0db015698981d31b923485a3d create mode 100644 src/libs/libsrtp/fuzzer/corpus/055a309f795cc0d18fa936a70dc3fbdb20f16a0a create mode 100644 src/libs/libsrtp/fuzzer/corpus/056fe9accc18d702f74947a041dfa3528595a28e create mode 100644 src/libs/libsrtp/fuzzer/corpus/058d2ffb707aa9a256f8a27b482c351dc59d9562 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0592773c7693fcb746fcccae36e018c816d72548 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0593930c933a73b0ae747d1c57f3e8ce1990d66c create mode 100644 src/libs/libsrtp/fuzzer/corpus/059c4168c4567d8ddace90563ae3d4faad8c5aad create mode 100644 src/libs/libsrtp/fuzzer/corpus/05a53ea6556822ee0ba50cf11477cdc82bca042b create mode 100644 src/libs/libsrtp/fuzzer/corpus/05ac2b295f457e6d82af70e03197058e243330a5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/05ba6eed3aaf1e11881f108e363705ea6684b5ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/05de42787114bd230c00bc28974c2e0abc5276cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/05e4184169408bddef4e3ed9395b25b3307c0dc4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/05fd25c9e7186a048e4b048316725d7d8e2957f2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/063561babc7dd125c0199ce988b2d9e3ecf5b166 create mode 100644 src/libs/libsrtp/fuzzer/corpus/065e940fa5cec8b3198461acf8f5284ec45f588b create mode 100644 src/libs/libsrtp/fuzzer/corpus/06766094522762e8f4c17953a7a437e5ff0ce2f5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/067cc48411aaea493a14052eb1974ca2b3477846 create mode 100644 src/libs/libsrtp/fuzzer/corpus/069e356aeb44c3384ac22309d6601d75337ce2d0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/06a8e02d0a2fa29cee49b44b1ae9a4c3fb4e2405 create mode 100644 src/libs/libsrtp/fuzzer/corpus/06b8aeed1879d286b3e4234132fdd2169c693ae2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/06b9a8464c56257b2f7d51211da84cead2a5e171 create mode 100644 src/libs/libsrtp/fuzzer/corpus/06c8e757034bdac3525e1155089b4dfc01386bb2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/07060875482510021e7e723e03d15b58b89d23ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/070ebaae52ef308f39d3b6d2aec9d4987645dbfe create mode 100644 src/libs/libsrtp/fuzzer/corpus/0713046ee5b8569f6d68e44892a284cb8d07f1e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/072d3e69419fae30bb4d06f5b3b682998b413df3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0745fbf2076dd36e71d517486c51fbb29275fb99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/077bfe79b6b8e2f07e5142cb0ff7f2af106c981d create mode 100644 src/libs/libsrtp/fuzzer/corpus/07814cbcb24e0b5546e9aa864e7f7aa9a168c564 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0798cf7167b61ed2cfb1800011801bc68c65214d create mode 100644 src/libs/libsrtp/fuzzer/corpus/07f6c6929eff77bd0d56e82ea4736ec28f7aea3a create mode 100644 src/libs/libsrtp/fuzzer/corpus/081ea4232ae7fdecc019ec13088c224a73b0b451 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0840e6087046fc23e86e2c331aedfa68123108e2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0842d7d0c5f51d75658a8d060ce8b69dc5df61d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/088764c1162b27b87d049bd2b4121aaa8f49d6e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/08898301ab36474b3dfb6462a699b1900b7fe6a3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/08902272daf08e6bf1b54733ff959b2d6a15ba79 create mode 100644 src/libs/libsrtp/fuzzer/corpus/089e1387a8ea73afd87f01bfa75af9327ddfe3c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/08ba205bc389ee3a7e42a47a80489a6fc68b5922 create mode 100644 src/libs/libsrtp/fuzzer/corpus/08c4b15079e0c5a2eed4604535299d145a23c16c create mode 100644 src/libs/libsrtp/fuzzer/corpus/08c4f6f4abfa6fbdf044775fc91dea997eca8da1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/08f15fc50d84dc626a87437e3b6833d7b04d73e2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/08f7011dda2e8df54ed4a4c7932648f067d74b88 create mode 100644 src/libs/libsrtp/fuzzer/corpus/092d5acd482e169f1a35215856f8fbd5a1ebc358 create mode 100644 src/libs/libsrtp/fuzzer/corpus/09348a438f44b9bbd2a9432bf8878d98ac2dd9ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/093c49bb9bccdac898ffb2d59c6a68b2e89f2f96 create mode 100644 src/libs/libsrtp/fuzzer/corpus/09408a322bedf519a3c5d821133d722d88b21c58 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0941531e215dca2d25d3206ae458ac4f4d2d8d88 create mode 100644 src/libs/libsrtp/fuzzer/corpus/094aefe210ab041f01d93f25e77480ec1107843f create mode 100644 src/libs/libsrtp/fuzzer/corpus/096ede5656818a9b33329aeb1a6bf7265627b640 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0982c7135c8ad390b4f89c160825b6d98ab803a6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/098c766ed84871e1fe0d55e342176141b88c6e18 create mode 100644 src/libs/libsrtp/fuzzer/corpus/099a19243cad226b84fed1b8db1bfc3e5113c45f create mode 100644 src/libs/libsrtp/fuzzer/corpus/09ff328b37e723d6a52d6c5cad15e328a46d67cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a08bdde597d95bef31b3f2f679ddcb1b816f11b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a1f21f7bcee5a153c2bb0e5f9c194a997a90426 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a23315ff62c0ec8a48c8e45de2e6409321e4ff5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a485c09b9b7116c12b0c09d76f34c43aae136aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a5f6124c715f94dd5834b7f0117c8a367176117 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a83be702790967e92a681ae521e34f9dcb7032e create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a9cafa9df7a5f6edb1823e7d854ac46a9b244d2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0a9cf33434e23f6f4db4e45df315c4ec73c2a260 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ab40fbf2b76dca836fa4fa121ca393663cc2e7b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b0a7d16784aebbd05cf5a7b2af92f3657004d8b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b0e0fa9cfdd30cae7823d1dcf622a2f504884f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b45eaf9ca6d929c409d344b55e91f5e6e36942f create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b47f78707cf005058384cd1e7e034845b332fd7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b53d780e946f28d827e35ac7778d17f8bb130ff create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b6878d289eead16e8ff787fb0bb630f834c9acc create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b71974af915b2f0c6fd38bd27082c99262e7b8e create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b73ad5e360a55bedc8bd3f908692aa19082f163 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0b95252916e3788b4e49600d3646e069fad8e392 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ba4cfd67c08eab21f1a4ef02e966b7d8a9eab25 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0bb532b810a0b0f13d473838d4f7676b206bfcf0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0bcd6e7d3c5e1ce3d3184bc64fb37ead8de43a16 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0be07a86c0df5258ebd70442c46bbba5009927dc create mode 100644 src/libs/libsrtp/fuzzer/corpus/0c2e96c40ae7c243fffc9825a44b00d206444b56 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0c3b829efd6c1df47d4cf903c7ea96f1e8b54cee create mode 100644 src/libs/libsrtp/fuzzer/corpus/0c78f857acec16092cf998d8c44894eb1ddce77c create mode 100644 src/libs/libsrtp/fuzzer/corpus/0c9cd9b8d3dbf3d31be28725f635a4ef59901c99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0cb30cc8bb29e9ecb263f86c8fb65b3462274d99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0cc45599f2bdce269a425cea96f7873ffba96439 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ce33b085f7fd07e35a255014258c43ed6aeac5e create mode 100644 src/libs/libsrtp/fuzzer/corpus/0cf2c747728fff29b1f5f58c6c0e05e07e21cae7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0d04ce1a2c20bcb54992f345f4257155d0e0719d create mode 100644 src/libs/libsrtp/fuzzer/corpus/0d57949067883dc35477e6ec810947ef44450e64 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0d6a5e25c11d7f569ef579d3a4d0f3de7bc21bf7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0d6cf32fc6ee3cec7b0807f3316c6ca2f5e9e0cb create mode 100644 src/libs/libsrtp/fuzzer/corpus/0d813bc002fa52de02deebe0bb0fa428a1ee4cad create mode 100644 src/libs/libsrtp/fuzzer/corpus/0da5f1e1de1727cd7555dcb9ca1a0c725ee62e3f create mode 100644 src/libs/libsrtp/fuzzer/corpus/0df58d320f751d2dcf559f8fafedb42994035dd8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0df9354cb689e53770b13c7b31219bcf34d0163b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e151d71bcf4df62790cc196096eb6d0e1601688 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e16367eceb4f5b5526e06bc7a5b55d1b53fca73 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e1f38d2f6c55064c22525d6d143f42fa174bc19 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e24e772929f8f6356686d362a5c6d81000a5b2f create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e27505ded1b13af4c9a60452ea1e5c8689a3a68 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e2d32b4b3026107dfbf6271b4c29eda5ddc8225 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e8fe4feacfe262b2e81eccb028e26f30a0ae9a9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0e903098663ddeaa0a8cffb4cb0794687d443387 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ea94a4329b77ac55425accc3f45e00835cabcab create mode 100644 src/libs/libsrtp/fuzzer/corpus/0eadc19736f781636c50a9a0ac6b25bd4414c96e create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ed5d3e2df87df961cd2deb341b8e9a67209c6e1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ef196119127905d092568e2f4dff4ca9819f994 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0f0297462fb6410ce428cc75cb3ff96f1c3ed0b8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0f12faf5d8fbedafbe01aac0b4bbc8f356751e2b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0f15f407a1ac27a9b189cb1985227022d227f01f create mode 100644 src/libs/libsrtp/fuzzer/corpus/0f457ddfd42fd5dd20fc59eae9c1371d9f274c70 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0f897cf0f5f6312eb24bdd6f702987843df0b5fc create mode 100644 src/libs/libsrtp/fuzzer/corpus/0faec3c7bbe27664d58ffdb654dd5650e56a010b create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ff2e806b8e0557f336dfcd9a2c3f11af71d20c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/0ffed8703f6db0aaf1fbdee67426f19868359873 create mode 100644 src/libs/libsrtp/fuzzer/corpus/10020fdcdb69d0b4b5600c1e476d3c7dee0a497c create mode 100644 src/libs/libsrtp/fuzzer/corpus/10353359261f90d378d885e136c8822da559e277 create mode 100644 src/libs/libsrtp/fuzzer/corpus/106899ffb306c8414a01763d3641ea3d49f15f69 create mode 100644 src/libs/libsrtp/fuzzer/corpus/106d937a6e03980521f5cb5ca1da09f668361e45 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1086fbbfd6b30c19b6dc5416b7e90242e95ffb59 create mode 100644 src/libs/libsrtp/fuzzer/corpus/108b064b51c763b4ad0746b36dc371ced2a1df53 create mode 100644 src/libs/libsrtp/fuzzer/corpus/10c2c1a37537b0a61065d730ea05d8012da701aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/10f85c3d2ee49a5314f754d2f36b1b9bb10c639c create mode 100644 src/libs/libsrtp/fuzzer/corpus/112bf82f42f7565c078c10cbacd857ce7719390c create mode 100644 src/libs/libsrtp/fuzzer/corpus/113cc39dbe4e96e681d052a79747ad2927aa6730 create mode 100644 src/libs/libsrtp/fuzzer/corpus/11610fedcbba0e344e28e157e9aef567f5d16345 create mode 100644 src/libs/libsrtp/fuzzer/corpus/118f06bdbeb591043148d4e5d1ce27b0a9c9f8f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/11a49d50bc766e99bf0dcec52086f469a2f5f103 create mode 100644 src/libs/libsrtp/fuzzer/corpus/11bc680cc678bb6bbb5e680a990265e615dc4bfb create mode 100644 src/libs/libsrtp/fuzzer/corpus/11c2513261f7802865fa2c2d050b46b3928b2ad2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/11ce8e0171a1f053a92450f2618e202e33c0e07d create mode 100644 src/libs/libsrtp/fuzzer/corpus/11d3d01f2c2e8294a7d1baff76819cf558b57500 create mode 100644 src/libs/libsrtp/fuzzer/corpus/11d784f1929d0a45649bb5be9d007e3770a67b75 create mode 100644 src/libs/libsrtp/fuzzer/corpus/11f711de1fea529eda028d72bec4fbaf52142955 create mode 100644 src/libs/libsrtp/fuzzer/corpus/125ec7476de02df91a1b7fffcae7af02535b4a7e create mode 100644 src/libs/libsrtp/fuzzer/corpus/129713ffde375e2a70a33c335ef12123815a6f08 create mode 100644 src/libs/libsrtp/fuzzer/corpus/12b841b6938f6bc4ad6f9280414dc059e36e4628 create mode 100644 src/libs/libsrtp/fuzzer/corpus/12c4887d4f77ce1f88da51c42373c1677f5fb2ce create mode 100644 src/libs/libsrtp/fuzzer/corpus/12cb907b48884f4aee44a0d1bab61d27556659fc create mode 100644 src/libs/libsrtp/fuzzer/corpus/1332d4bedb9482a958e4a9ee88f0b2824ef4ac4c create mode 100644 src/libs/libsrtp/fuzzer/corpus/1347b7e3c16ba49ecd523c6405d33fee8e9102d3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/137786a5add9ae16566d363c74a98339bf95069c create mode 100644 src/libs/libsrtp/fuzzer/corpus/139d5e002579f5937f218cf10a73d89e8edf9411 create mode 100644 src/libs/libsrtp/fuzzer/corpus/13cb2e6d4f20030a7dfe97256da1fbb6f06aec43 create mode 100644 src/libs/libsrtp/fuzzer/corpus/13d2c7efc608333c80ad377f00854cc1eb477ac8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/13f2ccae0436f4625fbbea1b467afa94708cf677 create mode 100644 src/libs/libsrtp/fuzzer/corpus/13f9cec1aabcd60730a792ee79d43cd13040721a create mode 100644 src/libs/libsrtp/fuzzer/corpus/1411668b05f1ebea15b894317aa013ee23e0db81 create mode 100644 src/libs/libsrtp/fuzzer/corpus/14250df0dce407c9ca1762d042f3c223bf47bea2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/14ada392455cce4e078ac9011d65a1a0511e6023 create mode 100644 src/libs/libsrtp/fuzzer/corpus/14fb2f67765a562023bd18e4d264088cd9a5a4ec create mode 100644 src/libs/libsrtp/fuzzer/corpus/152d339594b5af9a0a28e045cf9b5eb845017c99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1530fd7edbeec7869c725a18ed679e41c624ae3d create mode 100644 src/libs/libsrtp/fuzzer/corpus/153fccc706e5c47b7436ea81499c8a6f986b31f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/15509174166c9a924a5e48e12154074775b5fc37 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1568ae57a7f12f568f76b8f0057473a9b4b7519b create mode 100644 src/libs/libsrtp/fuzzer/corpus/158e9583be2f79abf80f7282f24c723a76fde845 create mode 100644 src/libs/libsrtp/fuzzer/corpus/15b3290f4811f52095f53b8dbe5bfda07280c656 create mode 100644 src/libs/libsrtp/fuzzer/corpus/15bf86750a9593c30ad1bc6c0de027c022b48d1f create mode 100644 src/libs/libsrtp/fuzzer/corpus/15d35184a67502a0cbc45b8de19c05570aa99a7d create mode 100644 src/libs/libsrtp/fuzzer/corpus/15d7a8f78b14422e1a79d5bdd936f78d48101cfd create mode 100644 src/libs/libsrtp/fuzzer/corpus/15eefbe9fcc1fcf48d544816d4fe517b63363a06 create mode 100644 src/libs/libsrtp/fuzzer/corpus/15ef439075a2c3e589aa7aa527ae9f5697304c88 create mode 100644 src/libs/libsrtp/fuzzer/corpus/162f7fdaa63159281641a0f529b86598ececcba1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/164fb77e922240a2dd91a53d9e4dbaeebefaba74 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1655d4709eb28ee3f4d0475c8de90a0cd9331191 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1690d12228908395a0dbee2057af9c10f338957f create mode 100644 src/libs/libsrtp/fuzzer/corpus/16b8bcc4d8ec930505532403d9ef82ac4cddc756 create mode 100644 src/libs/libsrtp/fuzzer/corpus/16c0e62840c363d445403c8c384a968df4ab6129 create mode 100644 src/libs/libsrtp/fuzzer/corpus/16c7b668a461b4918816139a9ad3cce469a4e347 create mode 100644 src/libs/libsrtp/fuzzer/corpus/16ca5cde1e50ad6b0909b5bbe7b69d8880141000 create mode 100644 src/libs/libsrtp/fuzzer/corpus/16d758b26c9a90f85223cc5e0235304716088283 create mode 100644 src/libs/libsrtp/fuzzer/corpus/16e2f1c0d0db630d92a7aacc679c082f804d22bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/16ea25a019063bb1ccf7b806c5c9f5e1893fc710 create mode 100644 src/libs/libsrtp/fuzzer/corpus/16ef185c5da3d10634abdd0d2b37fc5765e58cbf create mode 100644 src/libs/libsrtp/fuzzer/corpus/17289773390a998809f87df4c0ad828b304b17a2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1748e19ed1d71535cc11e7d4d3e2b95601daa152 create mode 100644 src/libs/libsrtp/fuzzer/corpus/180b5d8e467eaa17c97f8354c9764297d5fd2c69 create mode 100644 src/libs/libsrtp/fuzzer/corpus/180cbb1659b9d13634580714afeb51d64712e180 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1833e1700d98ffa165ec05491e1d51e451ceb1b9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/183420e4a244ec70f35b35f5beb47d09225ebfb6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/185edb2648ee2955e8be0092b5cfe3538a79a409 create mode 100644 src/libs/libsrtp/fuzzer/corpus/189034da51d05386e0428ff97433aef413764026 create mode 100644 src/libs/libsrtp/fuzzer/corpus/18b1e77bd0b37d14731aaaafc5b33d108d680a16 create mode 100644 src/libs/libsrtp/fuzzer/corpus/18bafde5a80020975ac51fc61ce4308b843caf81 create mode 100644 src/libs/libsrtp/fuzzer/corpus/18bb987b2b56d2a842893b69482a81d593a83bda create mode 100644 src/libs/libsrtp/fuzzer/corpus/18c1fc9726579bcb19df251b41a35c9934f1cb45 create mode 100644 src/libs/libsrtp/fuzzer/corpus/18ee580f0036635e86777fcae1898413cb85b5f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/190dd7833b267c8d92d3479266e3213d51bfcb54 create mode 100644 src/libs/libsrtp/fuzzer/corpus/190f6cb999f13a8ba278b005a33fc9809347633b create mode 100644 src/libs/libsrtp/fuzzer/corpus/191048251f2c2e09b17745ab719f6e2bd838f26e create mode 100644 src/libs/libsrtp/fuzzer/corpus/19181dcd992e1a7d1d33ab591d21ba60a693b8ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/192a17d52a83eaa270acf582e9e61cb6af690541 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19389f74563061d1b6157f1f89ab4d16093de5e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/193ab2d67563efbe350f17ce9cf473a0e0c7dc88 create mode 100644 src/libs/libsrtp/fuzzer/corpus/194dab4253a4300ca7776e1309f931529d1d5ff9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1952f847e548db1d422ad9ab80f1a9ff529c7a0f create mode 100644 src/libs/libsrtp/fuzzer/corpus/195b412f8c979a39c5a20fa6e38f6064e4c135c8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/199f12346c862ac534d33cdfa126e2449f2fb304 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19a685aac9dc4f6480eeb04ee8cfa17d3862ce60 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19b18f85e4c13b1c2c4aff0e77007a9f960776ab create mode 100644 src/libs/libsrtp/fuzzer/corpus/19b95f88c6bc9aee7c73ad2cb314df5076eb93f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19bb3720429208bbf3b0f810df1c2e66f02beb26 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19be43ff2713b92a328b043d3cd4dbe4bc296416 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19c83bb9287208ac96ce3aba044791697a56a792 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19e7cfda3dad7f03203852b5b3eba69dd7a7288b create mode 100644 src/libs/libsrtp/fuzzer/corpus/19e8fdf7cde60aaad5adfbde80ddd63dc420e7f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/19eab4f5e394806e573c01c8bac367fdffee6975 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1a1b82f5bc63cc1726632aabd342001a6e3a9f99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1a2b4d487f5ce01dd47f34f6ff9c5a39e68010e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1a4e264291647ba9af8e65803c03c74f2f411a32 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1ac596ee837462a1cb97c505ae116430a83ffe3c create mode 100644 src/libs/libsrtp/fuzzer/corpus/1ad20d4c38e26a0b9e4672c2e4d1aebe39e9f3d3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1ae963370d665e48a6961d9e88424998c0fb88c3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1b0b7ceabc1a5fd6a4236b578742f5de7aa49ebb create mode 100644 src/libs/libsrtp/fuzzer/corpus/1b3d48cff56a0335891bb4b61621c3d70e7a7d51 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1b5481b66dde6ee35c80bce903d630cc3c2b5851 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1b65df661cfe121d546ba9362253e10b2696632b create mode 100644 src/libs/libsrtp/fuzzer/corpus/1b76fd0ad1366043a1f56b75f6c87ff4f51d46dc create mode 100644 src/libs/libsrtp/fuzzer/corpus/1b7d36ac56b808296ad4bcf1fa65eef7b8d256f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1bc9b6c41825ac42ce21717ad4afbc53683465bc create mode 100644 src/libs/libsrtp/fuzzer/corpus/1be1b517d92b4d495ecd47c887d0d7c268c6db49 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1c596a3a0b033b20de20f8deba4ad83c8d84a6f6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1c726e5ff7b037b201648e2dd403327597b5a375 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1c7928b22e737ea5fd9720c636fe8c3a06f1e118 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1c82db6ba0cd64689a2f4daa3128908529253a31 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1cab314ed40788602a9abbb0f3180e704c679d02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1cb5781376248984e1028512c5cdb5777d4fc6a4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1cde4c21d886ccec58748c0d7df993a6e8c701da create mode 100644 src/libs/libsrtp/fuzzer/corpus/1ce211f0e78de79878c1c2f26744aa9460e81d35 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1d20720b200177fd0af56cf36d492509a761abf4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1d3b79b6b0040c3eb529d0819b55b0c8b8914dda create mode 100644 src/libs/libsrtp/fuzzer/corpus/1d4bcefe39a815a4f323a5e5df3009acc2c3e1b3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1d8acc57eea6870ad737ded85d4e0774b961557c create mode 100644 src/libs/libsrtp/fuzzer/corpus/1d92a1890b0aac435aa0eb63697cdc4aaff77181 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1dca16d2e29e2bfb2476d153401ded8a0f50b9c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1de28f1e1b6d8f703c99a2846712d9e63a1e6155 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1df08a552acca9caab5ef72c1b39184c26981a50 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1df6482dbec92e60541dbb58d6819cf519c00cda create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e001b058cbf8a551961951384d42da41971fb72 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e1de04d68b75e3a1415ccef3371e9bb72b99f9a create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e257a9aca2ce3439a6e83188e56c9c6416f969b create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e3ba081980c7474a300b5608fd0c5abf9d45db0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e5bdda85a505648439ff41ac23c33d5cf6b0ef7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e5e4774fba88bf5d28f2a6e08b11ad2ebde47f5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1e75f08c8fdfdd5ec4bb70eec4f236e77b3f3c49 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f09cdb2f36a27faa3215a482922d0ddd171fb30 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f243de603023706b356a1c202396c890b931d5a create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f47ab0e8c89c4505faf634959468b81e58107d3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f491b62170a646d98a0d5747939b46f2772fe71 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f4e8530da7437fae1266020f6fe48febf0007cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f7217e98aff28adbc22ae15da519b468806d9ce create mode 100644 src/libs/libsrtp/fuzzer/corpus/1f9065e1fa9ec98fe4ba0b3f48c4936687a69e4f create mode 100644 src/libs/libsrtp/fuzzer/corpus/1fa57f9f404b031475b678adb8d5b58ac93beffc create mode 100644 src/libs/libsrtp/fuzzer/corpus/1fb4aa3a057a008d92b9a42de0b081e009f7dcab create mode 100644 src/libs/libsrtp/fuzzer/corpus/1fc76076c283821acd06cb51d2bec0cb40841775 create mode 100644 src/libs/libsrtp/fuzzer/corpus/1fe52b716c5d1f12064976beafb3f4c70fefcccf create mode 100644 src/libs/libsrtp/fuzzer/corpus/2024efffb9c49434d8893ba644d45dd77931363e create mode 100644 src/libs/libsrtp/fuzzer/corpus/203167cf6a0ab546f9376abe90aab7843600ee22 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2057a70c4bb533699c469d33ab4953200bf39183 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2064fa04451a270836ce84717b7560d9b46191e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/20a6a5b02f865bcbcf9917bd84384c18cb6370c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/20b298482c5928c3de0d9ee2cc045eec2fc98810 create mode 100644 src/libs/libsrtp/fuzzer/corpus/20b34f745ae491df455949031b534e4af7a8fa3c create mode 100644 src/libs/libsrtp/fuzzer/corpus/20d484f3139ac254c92b40b6f3375b3a5452ead4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/20db24304c5de28bb68109c0365d7c690d0da989 create mode 100644 src/libs/libsrtp/fuzzer/corpus/21318c1a2b8c7365b1bf7649c9ec0f3b79e50a27 create mode 100644 src/libs/libsrtp/fuzzer/corpus/21550a35b9b0025fdb52e878f389d79caacae33e create mode 100644 src/libs/libsrtp/fuzzer/corpus/21684e5e2d68246e4e674db92544a31c778a63cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/21716e33b4ee3ab55154b72e1cfa0e2145e3c561 create mode 100644 src/libs/libsrtp/fuzzer/corpus/220e94d92ff849bab5ce93b251e34a2377b503e1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22319cd6f55d76f5bd2ad557d53c38a181185510 create mode 100644 src/libs/libsrtp/fuzzer/corpus/223edd321605b2a814a42ef7bcfddbdc7d6de6b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22820aaac73f83bbd2e51a446677a68210cd2abe create mode 100644 src/libs/libsrtp/fuzzer/corpus/22964ffcca595066641ec08ca797ba4fb61b2626 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22ba06644742205b84c5edb64a828c6c2ff9fe53 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22cf9894602eda1a399027e2c36986aa5f37f541 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22d276898acc2ef6fe03f8e92d3970d8c5a9c0fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/22d88f38377f5a29624de95ad24187d0b7f2f822 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22e706b61599b63012daf28576fbbf951c06fb2f create mode 100644 src/libs/libsrtp/fuzzer/corpus/22e8328ac63816abed85d1c30e12999cfbf0b2a9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/22eb4071735ba26425b0ed9e7e9ecd9c3b6b36ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/22f3d21f1de355398fb28e60af305eaa0d3def1c create mode 100644 src/libs/libsrtp/fuzzer/corpus/2313e4928dde8c50a69f5e98c91dd82f62679354 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2348a7177c749a58c82c40db51fee5dcfc9b2bfd create mode 100644 src/libs/libsrtp/fuzzer/corpus/239a453aa1df476a83b8b34480ba8a741f0bb6ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/23af973f0a19010fe3e341052c6c6958ebc788d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/23b5ba1837a9e8033bbfae75a9f0035cdd3005b8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/23bf4e0b5d758f920fd11106e5543639bbf865e4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/23d7f6cf0e85ea06af8b3914c8dd2ff41bb38b24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/23eb335737546cbcfbb12d0bad97af4abc31d4a4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/23f0dc1a2d2e9531bdf2b50b8e3f4cc6564ff11f create mode 100644 src/libs/libsrtp/fuzzer/corpus/24066e9de96bd46630d07606ac12b8acc3a5a050 create mode 100644 src/libs/libsrtp/fuzzer/corpus/241be221f09d0a69e929da58cc1198dc7f7d8446 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2423e0cee389b740112a04a935a28b5da664dc66 create mode 100644 src/libs/libsrtp/fuzzer/corpus/244fa9f5c80e78a3b3b2b2f4259dfc838abd803f create mode 100644 src/libs/libsrtp/fuzzer/corpus/246698c04d8849dc19e8a103928a53f5006a044f create mode 100644 src/libs/libsrtp/fuzzer/corpus/246daf04584b1b3a3b3069215f2e3b386eed7630 create mode 100644 src/libs/libsrtp/fuzzer/corpus/247c682f37063541eebd05e45f8b590f0d2d8442 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2485ab2cdd6337d7e3157ed5a4780dd7630464fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/24e5e89131727595bba3ad7abd10a735f0791683 create mode 100644 src/libs/libsrtp/fuzzer/corpus/25055f92a8aaaa223150ab4eda6754ead23fec6f create mode 100644 src/libs/libsrtp/fuzzer/corpus/25297ce21678042b03d55b3162326f3409903ee9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2596b607e7f3e2c35331a6bae16ccbf436d8eb9d create mode 100644 src/libs/libsrtp/fuzzer/corpus/259c4e5e079300b8b3a059c4ea5a9c3e8a6f5513 create mode 100644 src/libs/libsrtp/fuzzer/corpus/25b0c0b4ae8dbca7e3455401be9f534e0afd8717 create mode 100644 src/libs/libsrtp/fuzzer/corpus/25c3d2aafdaf53d5cfe45a36bf927c58f7986a69 create mode 100644 src/libs/libsrtp/fuzzer/corpus/25c5862d2d7fc0ae1fe4704613b9f6e0ac8d1b0e create mode 100644 src/libs/libsrtp/fuzzer/corpus/25cb6d57cfe58d83ef4bcc4d5327f185d5c50971 create mode 100644 src/libs/libsrtp/fuzzer/corpus/25f63d41f5aa30bea23374d2f98bd2fb5bc6e330 create mode 100644 src/libs/libsrtp/fuzzer/corpus/25f71c075445f2ca32f378d9b73a99043fb7299c create mode 100644 src/libs/libsrtp/fuzzer/corpus/261abd3920c9848bb7e27d132f56396ac71e81eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/266d4d8456fbe6e9492ef131edc18f08e92ad969 create mode 100644 src/libs/libsrtp/fuzzer/corpus/26bd241443c6ca63fb02587e96e7f56821f616be create mode 100644 src/libs/libsrtp/fuzzer/corpus/26e5d99c26ce43fc432883c50ff75fcdd8f0e9ab create mode 100644 src/libs/libsrtp/fuzzer/corpus/276c148ce886ab053d55dc7a45b1ba2089608488 create mode 100644 src/libs/libsrtp/fuzzer/corpus/276cd356df9685144bc41ed78d813e6421fd96a4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/278880f708e854f9b7669ae76dfa4221f98ee9cb create mode 100644 src/libs/libsrtp/fuzzer/corpus/27b247b75feab9765414a16e7e94de7bbf7397c3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/27e9eb505ac8401904ee7ff4d9a34eb3f873afe5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2812717d79d66037931c0d8b3092a892842ddaa7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/28485ae79b2ff5ca3dbd31e514a0ced95e8045ff create mode 100644 src/libs/libsrtp/fuzzer/corpus/284f3000a725d125cf1d65db2d15cc2d92860f14 create mode 100644 src/libs/libsrtp/fuzzer/corpus/285ccc5acf8c016da64fd33ed910c2320d385050 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2870bb659278b0907ea62fd38dd1fff5df58069c create mode 100644 src/libs/libsrtp/fuzzer/corpus/287934ac53e229708f5caa467cf905ae6dcfff76 create mode 100644 src/libs/libsrtp/fuzzer/corpus/288011eea6ae35fe9017fada0d235a66120adb35 create mode 100644 src/libs/libsrtp/fuzzer/corpus/28a6865768a7b43ec593b1d8ee4933c78e0562e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/28aa8de4a01317db99d4baf57e41f582424e9a90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/28b080f54b1d4323e2bcb2d4d64dbe68c74bf840 create mode 100644 src/libs/libsrtp/fuzzer/corpus/28b4b75d0fba962051d25e9ca6db1a2c870e39da create mode 100644 src/libs/libsrtp/fuzzer/corpus/28c304f04cc35c1d67d97210fc65fa99c6b0c3ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/28d63e980c334119aefe2ea928b3e4bab4834ec1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/291e958f82465146816cfe86d7964796893911a3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/296f1aaf63c1ed2099da363e718be68a2d67f1d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/29704b3d9b9c0645c1320d852ab1beea871a1ca3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2985d508c0f8f374504ddfc6786eb21934aae32b create mode 100644 src/libs/libsrtp/fuzzer/corpus/298f69b74788cf92817b9f2395f5383a18b148d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/299218026c0e3f24bb8f7ee7a3e5bbab4013a438 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2998e292991fc5c2abd7dfccb2f497b6f2aca0bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/29a13021ac5be7f0923f25b1fffc37a5d33e1cbf create mode 100644 src/libs/libsrtp/fuzzer/corpus/29a62d158c6ba4f9736219bffcb7d103019406cb create mode 100644 src/libs/libsrtp/fuzzer/corpus/29c9b1c37e16b9fab789366a57efaea4b694a3da create mode 100644 src/libs/libsrtp/fuzzer/corpus/29fd5570888006939e71a86bbc0201742783adca create mode 100644 src/libs/libsrtp/fuzzer/corpus/2a0979e8d583541d1437ff3f6f10334606a24588 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2a57659db0b59c22251257abc75e07f3ad71b746 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2a9137d8bbd841e49c09cf835c3725f44465fa6a create mode 100644 src/libs/libsrtp/fuzzer/corpus/2aa08ae64041b0afe24a0722f9b9053ed2a5cdc0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2acb3dfc6d7857429d3a277ae413af55afefdee9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2af0dab1f33551f7022e6da7af7970cf73c2a2b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2af1c5d0d5347c8d540f726d402816153ccc9981 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2b0eeaba194b803783b311c0ad77403162c39d51 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2b3444a8e868a2d2264a075e9dea23c42db723be create mode 100644 src/libs/libsrtp/fuzzer/corpus/2b703c0e974c7eed7640d4abc70f40d935591a33 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ba839bf04327768140748b8bfcccf9c72100ebf create mode 100644 src/libs/libsrtp/fuzzer/corpus/2bb298d1f0223998820582ec7b67fbfd0f6040c6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2bb3697dc1c419b5e940eb5acf2951f49006fad4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2be7c75fa6ef71a1d75907e4c68dbdc8b9c98501 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2bee35c47df46ea0217d0c6011ad24e8fca4e124 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2c118bf269688e7562987e20964d5861de9bb517 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2c22aa93fd640cfa4ed55e48f93af608f978691b create mode 100644 src/libs/libsrtp/fuzzer/corpus/2c2a4bcd3ca4db18b35c8608a74a4b02c2476c27 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ca5b5ea23724a9aae48dcf587bbdb93f5647bd8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ca79063c49122e0f47e397c3d9e79c993d666c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ced2f6093d5e4331730cbf9d88d766229f9cd3b create mode 100644 src/libs/libsrtp/fuzzer/corpus/2d1a23f3862d9280ff671fba2070923ad6e1947a create mode 100644 src/libs/libsrtp/fuzzer/corpus/2d4242afa49b93a6225225692ca154c3e45724d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2d581bb7c0a36182032532922f7e5699793337ca create mode 100644 src/libs/libsrtp/fuzzer/corpus/2d66ac9504561c6a0f844138e2b4d52418c67f80 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2d71aaa244448b9f4cc5d055953855d0d85fae3f create mode 100644 src/libs/libsrtp/fuzzer/corpus/2d843e83cfefd6a8a7ba872d4062f974239cafee create mode 100644 src/libs/libsrtp/fuzzer/corpus/2da6fe9966c981144a9dd5d39e5bfc7f300476ed create mode 100644 src/libs/libsrtp/fuzzer/corpus/2dae7e025ff6cdb13331958ec792bcc85e00f2e5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2db9dc6a54e6a1129d9092eb324401741b9d24eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/2dc75a74bf59fd36e1d17f4eab639b4118365114 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2de31f9b6d02c301449a79e5384b485d9d225223 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2e32dee727385859cb50fd99e8f5352c8016c2c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2e4dd57095e0aab0b275de64702c69a40db96c50 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2e50d0db4befbd9dcc3fbc8d1cf208e6cc2033ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/2e5e64528591a41347878d9925d1fd241aaa4139 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2e6088c241d4a37f5a95f5b9d6065c60e44900ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/2e750f93090aee0bd4f31bfc34e39f500de73443 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ea26a0c95bb875c408aa17e0f53b7c88c2b27fe create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ed032b963bb50e8a84a8820339b445392d08d46 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2ed038f5938825b41af5e044b4a49d176ed1f49f create mode 100644 src/libs/libsrtp/fuzzer/corpus/2eda5d98220fbce3961573534a46f62ba02c7a47 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f1995d1e57bf1c3247bcfe75e58b6cc4ca4a78d create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f1d370325c03f3d4ab53b75ae6e67516e6f987a create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f24d59e4afa404d79970b52e52530615b081c4b create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f3c8381e242e9b5f8a240ab4f3dd4f301f68363 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f7a4bdd939fd227395e8b2e8a719fc835c08093 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f7d3e7ca82d9c31fa362970c73f061067711165 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f895aecf72f4c9227ecfb7451d6f2959c056a23 create mode 100644 src/libs/libsrtp/fuzzer/corpus/2f9e9e3f2a74aaef978b51fa50b2b38af0d78da2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/300c545f97f160d32ac5c3c17b2cba0b75942c0b create mode 100644 src/libs/libsrtp/fuzzer/corpus/301c5d6629e0a595690f459eeaaf37260e8d9499 create mode 100644 src/libs/libsrtp/fuzzer/corpus/307a33742ee217ffe6c44351d1df18a910553cd4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/30e489610e3e71cb4534b9ed62a3375c203e9478 create mode 100644 src/libs/libsrtp/fuzzer/corpus/30e9ee869066f7a79dc0fbefcf0fc18c37423813 create mode 100644 src/libs/libsrtp/fuzzer/corpus/30f41ac83e042820e3738a44464f82d2fd7dfb48 create mode 100644 src/libs/libsrtp/fuzzer/corpus/30f9024418bf8fc9d03a330a1ffa271cd57842c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/31159657c8497099fdb8de9c3464691faaabcc2e create mode 100644 src/libs/libsrtp/fuzzer/corpus/311eb84e6e831a361c7bd6fc2c683d6fefb3e7d9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/31639931451c559a9f8b5fa5a06869b0efc9fabb create mode 100644 src/libs/libsrtp/fuzzer/corpus/31687b4405707ccd151394799ad0ce56ecdee2f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/316ec5aeebb16f90f3b3eca41fea3073d100c588 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3195e8a4f141a82ff4ba3c534d022e15d3899799 create mode 100644 src/libs/libsrtp/fuzzer/corpus/31cd11b914233dc41e2a8f094b77806d3886a898 create mode 100644 src/libs/libsrtp/fuzzer/corpus/31fbf723caa4b5ab8c13eef1ab28a5af9a11b252 create mode 100644 src/libs/libsrtp/fuzzer/corpus/321d0e9ffda61ba4e7f602b55ce88bcaad4bfe4c create mode 100644 src/libs/libsrtp/fuzzer/corpus/322bab4ee1290c088af091695f09dda8f4a9c9f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/323a81ff8759bce599717f6c66abd08ec47fb862 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3263949e1fae15f5ce342db9a78686ddf15151c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/326728a546ac69adadd16535fa502a868c73e697 create mode 100644 src/libs/libsrtp/fuzzer/corpus/328cf115bcb5e0abbaa5ff19e0f3f7664675d9cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/3296e4620adf468afa30b02ab06f8b85e4c4ba7c create mode 100644 src/libs/libsrtp/fuzzer/corpus/32e5dfb5b0c33918722f7387b6f07175bd94a2a8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/33024c2d4c3b16db6ba069f497c20d1fe4c91fbc create mode 100644 src/libs/libsrtp/fuzzer/corpus/334027b721576a743b67e98448ce3c5baa28897e create mode 100644 src/libs/libsrtp/fuzzer/corpus/33547a3ec1c8c2a903c017f5e606badb1c7096d9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/335ddddde8eb1d243e9ab8df35ede4f8f834532a create mode 100644 src/libs/libsrtp/fuzzer/corpus/33675e431250a58dc5880fbd65959d539808b81c create mode 100644 src/libs/libsrtp/fuzzer/corpus/3392d5b4715288bdbb8f7979934beb4666c5032d create mode 100644 src/libs/libsrtp/fuzzer/corpus/3395595affc65d089707d441e2e25bd59cd6094f create mode 100644 src/libs/libsrtp/fuzzer/corpus/339807e232d08bc40283c3b86378ee2cc139572f create mode 100644 src/libs/libsrtp/fuzzer/corpus/33aa508cde4c11f0e4b71ef0cfabe8ecea0bc96e create mode 100644 src/libs/libsrtp/fuzzer/corpus/33fe01ec2404d54d0bac1b2fb226221e94565b67 create mode 100644 src/libs/libsrtp/fuzzer/corpus/34548ccb26e68f61c5bbaad4828304fdbcb972c9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3457d577bc46c48886ebc1d8991c66591852d5eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/3459c86c8ade3b5dc7e52d3777da32360aa73d86 create mode 100644 src/libs/libsrtp/fuzzer/corpus/34dd104366c79eaa63ef86c655e4d99360701637 create mode 100644 src/libs/libsrtp/fuzzer/corpus/34e2e4748a7aaf8d10f8537525a06b0cbcf0f273 create mode 100644 src/libs/libsrtp/fuzzer/corpus/34f6cc92ad5ad78d8ea36663ef08c760d080ac9a create mode 100644 src/libs/libsrtp/fuzzer/corpus/354f8cbe60938f87c8c6990673eacb81836ed667 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3582246ca057c6a5c7737eec0715377eac1e14d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/35924cb6ba0dbe20ed96f6159f9496c6054a86be create mode 100644 src/libs/libsrtp/fuzzer/corpus/35c34ab216412ea97c89a8d5618248601a8fb5c9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/35d2502327c6844ba4b9626b29a42dab1ca263fb create mode 100644 src/libs/libsrtp/fuzzer/corpus/35dfb1e8ccb3aed1355b3cf3a88c960007b34bbd create mode 100644 src/libs/libsrtp/fuzzer/corpus/363a17ee0ea87ed4a68a1bff23a5c170bb6bc0d7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3642bff3fbfd91d0e756b44adb772f641de00d8a create mode 100644 src/libs/libsrtp/fuzzer/corpus/366864e1c74b6641d235e313f817a85c10c31579 create mode 100644 src/libs/libsrtp/fuzzer/corpus/36e81f478101cc90267ce6cd3bbd98dbd01e8420 create mode 100644 src/libs/libsrtp/fuzzer/corpus/36e946a964dd86881ad9b5f65edcb36dd9d9621e create mode 100644 src/libs/libsrtp/fuzzer/corpus/36ecd5e6c48d02d9d78a933b76d1cc9bad0e55b0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/36f2c2f608b4e348b61afaa2eb33671688549d6b create mode 100644 src/libs/libsrtp/fuzzer/corpus/36f3fa3ef9e7914420c4971c63acc00a28e61c7b create mode 100644 src/libs/libsrtp/fuzzer/corpus/36f98e764fb70a30aa6fe7e449190f9933a9ef6f create mode 100644 src/libs/libsrtp/fuzzer/corpus/36ff0852525ec8f7a8d3ac182bd72d6b14dcb8d3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3731399a2b00a9362fa9395dcaafba38db8d1a11 create mode 100644 src/libs/libsrtp/fuzzer/corpus/376fe3d3319a81e450cc836a8ecf226b6fc89813 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3777ffa7f5f6d0a6214f0c4914f48d16f3d1fafc create mode 100644 src/libs/libsrtp/fuzzer/corpus/379ecc803c96c01cd666d5ae011d680a40689022 create mode 100644 src/libs/libsrtp/fuzzer/corpus/37c9f12b0dacae45dd089c567b83d81083533da9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/37ccc956fc98abc2bdfd1c898917c7d1bd126d6f create mode 100644 src/libs/libsrtp/fuzzer/corpus/37dc70c7835a687490af81c9b7ac65aaaa69ea79 create mode 100644 src/libs/libsrtp/fuzzer/corpus/37df83e8c6105d9e19f7670a731e89d1b8926730 create mode 100644 src/libs/libsrtp/fuzzer/corpus/37f46006e3bdb78933beb43857eb91b6b2f822c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/384722b39d0cbc498257d71accd00bf3771987bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/38474d73c748bf8a3e6b7c4942715bbe2ac0cfd5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3851ecc2228386a9f2397ce4a6b1062f7e968012 create mode 100644 src/libs/libsrtp/fuzzer/corpus/388a3d4a14ab2988100ebebc55b9fa01f25eaef8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/389e74ba8d33356e11bc156fdcfb78e8ab87425c create mode 100644 src/libs/libsrtp/fuzzer/corpus/38a2be07779a39ebaa16b676a9dd075c1ac4be35 create mode 100644 src/libs/libsrtp/fuzzer/corpus/38b8cc94e5b7b0579db60ab32fc379d960ed9c93 create mode 100644 src/libs/libsrtp/fuzzer/corpus/38e495437b0489074df62ac0e9c80fb8ae20b902 create mode 100644 src/libs/libsrtp/fuzzer/corpus/38f9ab23eafa3172f5d997c0709115a9819f30d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3915ba54ef9cb376c3de9c3a6643b104ddbdac51 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3942771f68f432f704d3b57171809a4a16373b1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/395deb37b57ba0bf27e65a4706d9ae912f887984 create mode 100644 src/libs/libsrtp/fuzzer/corpus/39708ed68d0d9b8021f7fb329e5e8481fc425b1f create mode 100644 src/libs/libsrtp/fuzzer/corpus/39722794ff193e45909718eb2a478ac3e3274898 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3998ed85c4361a20be1a98d07b072223194bddb6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/39a5dc856caeb933e18fcee23b89c2c6949287c3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/39ac63bbc3262157ee25140961de3d027dfd460b create mode 100644 src/libs/libsrtp/fuzzer/corpus/39cd4184fe91b6e094078cc42f6251cc2b01e097 create mode 100644 src/libs/libsrtp/fuzzer/corpus/39df87ce18a963080e1ff6a19dfa5306c8e7c251 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a13bc0c12d1f5e485e0ddca176e3a587e2a1fab create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a3c08bd4e1bb5107a4ac4ec6458f876699fdfd5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a4ac91d10b7258c53c547a53d00211d55078059 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a78363ff2e86b505afe11f8e66433afa06b7f40 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a9433d99a985eac8383a83fea07cb5b64257070 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a95e6d99099003652330f3e02bce38016224beb create mode 100644 src/libs/libsrtp/fuzzer/corpus/3a970316106f6c1b35d8f9d5f3e146c2112f14a5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3abe683987a7d385ed4976d5c2733f50bca8d5a2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3af86afa0cea1dc18159b6a3090d15b1787914f6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3b10e09d3fd23deea69b0ad02423772b41a7eea0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3b3ec9193d98ddc5b68f9080e4644a57cdc3434b create mode 100644 src/libs/libsrtp/fuzzer/corpus/3b40fa26ef8d2efd89c7485a7169f8caa153cb81 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3ba6ebc2d5753118c4e8623aa7138470ffccf7f2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3bc1ee34a43f22d79553624be0198b945020db01 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3bd120c9c543c838739a7a11e7203be29cd5f6d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3bdd0b395cf4e85b9f9126ac449c8019d2ed05b2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3c110c2ada493eaa4a3aa4be5c66f9e3f98aee5a create mode 100644 src/libs/libsrtp/fuzzer/corpus/3c4bca2dcb7ec37c795be89744956dc098424e2b create mode 100644 src/libs/libsrtp/fuzzer/corpus/3c53ca7f1515bfa6ac4da2758342f01943d85dc1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3c66c6cc5aada6e33563fc14af3a52e1862462bc create mode 100644 src/libs/libsrtp/fuzzer/corpus/3ccbf6fc3cbc8a832320011b1d6615faf6c2b832 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3cdaad14bf1228cd114e78fd4c8d9abdb1b0b8a3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d0b741123a9c155718ad238791e177b3e734456 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d18decfdd2aa7c608969f3b117c0ddb3a516cfa create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d223cb01f3463cd3e3ed7b422b1da522a17b29d create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d275cbc3a9d8483c5a3c9344ee92ad6624f258a create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d73a879a78a074c651609b8eeed69133c351bf1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d7615c2c1d058eaec88b26db15c6a6400b8e12d create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d82ce853b6cc3ea62e2edbb69bb8af3340a18ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d9e73f99911b53a65ccc0af00699a9c1a60b103 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3d9f8c75e3aa2a79f9b56aed46ec3c4eb695bcd3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3dac9c7e9d9df3e3df60a2a045f7629e7ea19bd9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3dc64a53c5888217ce40fdf659cf4d3925dc91f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3dda8a68d3fff33d141a7ebfd5101e2fd7f19489 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3e1a394fa18fe58a522b874cacf9afa093345879 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3e334e58f7c0a6193122088cfc3d45d87f481d64 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3e44ff8f35e193f7b7fa0e1831dc37cefaa4de02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3e8b1c5a3088257149e28a9e485e0ba82ab628db create mode 100644 src/libs/libsrtp/fuzzer/corpus/3e9e8ec251dc7ba7c255e8d23c99c0643468233d create mode 100644 src/libs/libsrtp/fuzzer/corpus/3eb0759adda77c53acce357222fdcf2053313094 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3f0d4db6e8f1b652dfc87aaa7adef1982655ccc0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3f1349df4a14cc4d102b2583fecdd9082ce76081 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3f687d2e945375117d0a2b1caecd4f8c6e6d83ca create mode 100644 src/libs/libsrtp/fuzzer/corpus/3f6ddc51c3619404b9e75f72fd112ec5a76fc64d create mode 100644 src/libs/libsrtp/fuzzer/corpus/3f9ac80a27a5cdc533592f2435384f11feca27b7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3f9f73ce36478867a4605a96694ad1ac58568b8d create mode 100644 src/libs/libsrtp/fuzzer/corpus/3fb546812bd87b53fe9c8bd2fb8d4fe5f55b088c create mode 100644 src/libs/libsrtp/fuzzer/corpus/3fc0df015ffc9d645d8e8a217a0b97e0670cba21 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3fd5193a7187cb18463bf8da4f4c842f314d5995 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3fd78ce33b5b209035ba45ca19e86442bf50ecf6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3ff19c57ca1f3cc01876498b0a953273906dbbdc create mode 100644 src/libs/libsrtp/fuzzer/corpus/3ff51948d3d4d45f4ebd06f358edabbc5b7b9591 create mode 100644 src/libs/libsrtp/fuzzer/corpus/3ffbc29ca6b05a807f47e3fe8b801f024af6baa7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/40329c2dfd0b5557ddad1426bb978a1f6ac5d3d4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4044f02ae152b5586847f90572fd0213a0e02273 create mode 100644 src/libs/libsrtp/fuzzer/corpus/40458548157c8bd0cf6f4373d3e084a9b6e4fd5e create mode 100644 src/libs/libsrtp/fuzzer/corpus/4055d4180d2b5209e04a111dfbe6206c6b327797 create mode 100644 src/libs/libsrtp/fuzzer/corpus/405ed43ddaaf49f883d26ffc462dbc7429ce8b00 create mode 100644 src/libs/libsrtp/fuzzer/corpus/408d40b64b3c54d7d1ab7c510b5577007ea49b1b create mode 100644 src/libs/libsrtp/fuzzer/corpus/4091f2765b6198e354d89934aa10a5a0123639e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/40aecdc88b99221f72b23e9e2eb43bdc717e45d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/40c960d7a807e01bac5411dc8584842e50aca3be create mode 100644 src/libs/libsrtp/fuzzer/corpus/40ca56e9bbba92657a7bd8084de43e29bff2ea37 create mode 100644 src/libs/libsrtp/fuzzer/corpus/40dfbf10224d335a28026e0eef1656d4a40505ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/40f286c2fbf58efd5466f2db430fbf7494614be9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/412720548a693cdd970c50d2a44e5ccc7602db9c create mode 100644 src/libs/libsrtp/fuzzer/corpus/413106b9dc73ca31bdfecd23057e468e374c2f31 create mode 100644 src/libs/libsrtp/fuzzer/corpus/41335e0c82bb96a952b1bbfa0c1f00df10fda809 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4134fcf90e7cf994669dc6acea4ecc1bd503d2cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/41584e3427ac6221f95e05d0a4a4d7e3055a240d create mode 100644 src/libs/libsrtp/fuzzer/corpus/4186b85c4506bba256807c212d3e182743c93181 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4194d4f0bf534533aaa17f26b09cdf7f12553fb6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4196c508d14fe694df32f8204e3d2999f665da6a create mode 100644 src/libs/libsrtp/fuzzer/corpus/41a107ed47ca1cf0fccd6be4290d840d6ff56684 create mode 100644 src/libs/libsrtp/fuzzer/corpus/41bba768406de331145bc73184616283a6c21435 create mode 100644 src/libs/libsrtp/fuzzer/corpus/41eb38f14e8b574a8843608940ad38a261f05168 create mode 100644 src/libs/libsrtp/fuzzer/corpus/41ec92787063926df8944fdecefaf53fe1a7b5e5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/41eefbb789679b53a64f6626494d219f1430f879 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4206806f2d00c457ea5de97e66e55c6de6ffb89e create mode 100644 src/libs/libsrtp/fuzzer/corpus/422488058b968a30cf7764d28d0ded8c1bf8449a create mode 100644 src/libs/libsrtp/fuzzer/corpus/424b964fb6a4d92e4437d3110ae7698a7c9688fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/4256e705a385c38f2784695a200d16c542ac4a4f create mode 100644 src/libs/libsrtp/fuzzer/corpus/426f5a6d1afbe4ce58a91cafa0529025ccbd075e create mode 100644 src/libs/libsrtp/fuzzer/corpus/42914883e1e41c0835e439cbec407a8c81153fec create mode 100644 src/libs/libsrtp/fuzzer/corpus/42ba9f5cdfb4bac5fbc46b9290c4d379ddbebfda create mode 100644 src/libs/libsrtp/fuzzer/corpus/42c04f4949f6accdb425e809024b0fa34f91f32c create mode 100644 src/libs/libsrtp/fuzzer/corpus/42cc9a350b9d030354e8f34b217062cb7d6a12b5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/42f8549e216d4fc4fb83ec37f4ef82e8d1804270 create mode 100644 src/libs/libsrtp/fuzzer/corpus/42ff558e612d32805292e10e0d5588aff9ebfdb4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4311d53ab583253003762d5c6df248d9ad0b960d create mode 100644 src/libs/libsrtp/fuzzer/corpus/431f6692d5d3b59cd7a4abf3f85e516309faaf23 create mode 100644 src/libs/libsrtp/fuzzer/corpus/434b3aba4fb23b0a1dde7253ba6ce2e5b941280b create mode 100644 src/libs/libsrtp/fuzzer/corpus/43620b48bdc38c25d3301b1ee5f42aaa9fa22458 create mode 100644 src/libs/libsrtp/fuzzer/corpus/438a00f2bd6fe62fd7ecaf1d01add57dd249b5d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/43a04de428dc347375915abd1f32c95b14e07b9c create mode 100644 src/libs/libsrtp/fuzzer/corpus/43a7dac2f22ed58d151d379f1a69492d15c4e4ec create mode 100644 src/libs/libsrtp/fuzzer/corpus/43ab74cc4f5ecacf3a38572f954ed0388ecfd83c create mode 100644 src/libs/libsrtp/fuzzer/corpus/43b16532811ba3ce84bd06113126a8e6230bc4e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/43c65bc15f4c93adbb6bc2186d02d6d96946ae4b create mode 100644 src/libs/libsrtp/fuzzer/corpus/43ccd4b004b8eba10b7981b649f41c212c7aef14 create mode 100644 src/libs/libsrtp/fuzzer/corpus/43d0462689d206942c50b10018c5f2667afcaf9b create mode 100644 src/libs/libsrtp/fuzzer/corpus/44268627072b273b31866855e3d89a46db4c5993 create mode 100644 src/libs/libsrtp/fuzzer/corpus/442e7ba06aed4a44c6c60743ed6263a4c154dcc8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/446fbac27ea656dec4a21c616db79a6c45487ee3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4484889954c72cdccaea7a64af2a633d6efd9e82 create mode 100644 src/libs/libsrtp/fuzzer/corpus/44be8f2ae55fde174ac024caa7ab85037c4c6700 create mode 100644 src/libs/libsrtp/fuzzer/corpus/44ef353cd648470e438ce3405416d834dd75eece create mode 100644 src/libs/libsrtp/fuzzer/corpus/44f08b3d0f7edb74975426e4cd064027a885c576 create mode 100644 src/libs/libsrtp/fuzzer/corpus/452f898e13f1b1a7096f7b7356ba805fd44e0a16 create mode 100644 src/libs/libsrtp/fuzzer/corpus/456a4b84afd1e87dd2949a80e6b7de5532369daa create mode 100644 src/libs/libsrtp/fuzzer/corpus/456e5aba481e9494480dfe0e30103d7a371c36f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4573539cd102309a639d6efa7fb372db109f1c47 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4580abd8e820990bcb6c9ba78bfca0aa3a0319ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/4580e371e8fbd69e47e02fa19e675785c501c989 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4596b3e125384fd6616fe9a21c2d84a9e9146b02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/45ad3957454b75c5ffd4b38e42f830a3ce2ddb58 create mode 100644 src/libs/libsrtp/fuzzer/corpus/45b1bb3f7e17a0449d0632c3014196ce57acdf4b create mode 100644 src/libs/libsrtp/fuzzer/corpus/45d30863d34d0525446a92da17db464e08f14742 create mode 100644 src/libs/libsrtp/fuzzer/corpus/45e5313feec6e4f72bbb7115729571402922d931 create mode 100644 src/libs/libsrtp/fuzzer/corpus/45fa6f391ca41c78ce36d4626c6b1ac7016e3c13 create mode 100644 src/libs/libsrtp/fuzzer/corpus/45fb88e3f3545891f75e3ef9c16e3ce4e1de331d create mode 100644 src/libs/libsrtp/fuzzer/corpus/46058ec8608adad0ecd5495eb19e52ccbf96058e create mode 100644 src/libs/libsrtp/fuzzer/corpus/462629b211c9a20ad7d076b9fe1c8f223c02b980 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4639b78e734ba41929677b69493804b8bbc7d2e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/464840724f0b6c8590dbc07ec6c5591248351ec2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/465301866d547cf0c589fcb3e75703ce5913de47 create mode 100644 src/libs/libsrtp/fuzzer/corpus/46a911b5776c3eb28cdff0d6cd72df92387528b0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4702789fc04046636f32d326f926dc29b7d407f6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4704a9ae384ff7aa7883898660e6504ae1dceabe create mode 100644 src/libs/libsrtp/fuzzer/corpus/472b029f7805fc89e06be91239b3fadd74603e52 create mode 100644 src/libs/libsrtp/fuzzer/corpus/474aa41a3d0eab350d75f7a6b112f0c78c0d0d21 create mode 100644 src/libs/libsrtp/fuzzer/corpus/475e9680116fad7e0b31d31ffae25bace7d0c5c2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4761baf77c06ed60f43ce3742ba3eca60cd3bb7b create mode 100644 src/libs/libsrtp/fuzzer/corpus/4766e711be17c18a4c6d8398d2c8337c270a90a4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/47a1282ecb3d35237e7c7fd8dc1429698af11b39 create mode 100644 src/libs/libsrtp/fuzzer/corpus/47caed181903c894531eb2e19c44c2d2b76fd6fd create mode 100644 src/libs/libsrtp/fuzzer/corpus/47d8da30683459a8a20f3bef9ab28bee627eeac1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/481fe58bfa684ed3e01059d2f6b613ab0edf7c17 create mode 100644 src/libs/libsrtp/fuzzer/corpus/48936ec5fdcca6e2d54051d2b5e2943e2894f2ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/4895768f927ac10572d9ede5d3bdd301ffdc8ff4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/48ec9ee1da218d48c07791145a7082d619a8e91e create mode 100644 src/libs/libsrtp/fuzzer/corpus/492c4cc59923d3323c34d620755f49db08a1287b create mode 100644 src/libs/libsrtp/fuzzer/corpus/492db680886a5f6596808da294e4f55793c3d78b create mode 100644 src/libs/libsrtp/fuzzer/corpus/494f88aaf4b5b8af268d6544b453ed46bd656e7d create mode 100644 src/libs/libsrtp/fuzzer/corpus/4966309a70277b9c5588b56c0cd160039a17b3f2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/49808e0f614be22eea31e052f23741e0d28fe1e4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/49a59eea737e131cb4d706b30843d8e8a025d2d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/49ad6606238e6a58ad8d79088492aaead6c32e6b create mode 100644 src/libs/libsrtp/fuzzer/corpus/49b49874138ada8be9f6ce4be49ef37e4fc2c50a create mode 100644 src/libs/libsrtp/fuzzer/corpus/4a0b5ed9b9184687f0350584abb89ba3cd3b6260 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4a3c9992ceb5151e25867043cff3b70b0615975a create mode 100644 src/libs/libsrtp/fuzzer/corpus/4a5d59b9bbf454e26e5b8da35934fbe5e56cd5e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4a6bf78cf8487aaf4dc9504f580290c58cd3865d create mode 100644 src/libs/libsrtp/fuzzer/corpus/4a8b6c80b64fa974b7a5f514ea78291aff7267c9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4ace626cc3e3115df77d85a5c313b24e3a2d2695 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4b108731bb41e672ad5c98713f0250e026616d2c create mode 100644 src/libs/libsrtp/fuzzer/corpus/4b1e095f3fec59b21d71f93800e6b57e3f70cf35 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4b6d6914f78e22b64597583a9226be7526e73397 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4b8afa2b5592ef534919776fb45430967d939775 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4b8e8b45144512387e4c6a3fa6b131170564ca57 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4b9f834b48b7fc4252cbf27c7a86e7438b11fe98 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4bb28aaf30e244c6270e338f040d5f0328680be6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4bc35a79dc6599fc0cfbcd77712d7c98c253222c create mode 100644 src/libs/libsrtp/fuzzer/corpus/4bf138f9eb681100aea715ea17431f737857743c create mode 100644 src/libs/libsrtp/fuzzer/corpus/4bf43cac903b57260989e5fa2fe06812eabbc932 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4bfc7f56dcd681c4cb0ac7564c9202ecb957c411 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c2efcd1ba3a6c5b4363ccbf8ef4b5b9b1703a9a create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c4b0bc074912f4c7b56b8e410e182f2337061d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c5426c031fcd5aebd60c559cca78d725222b4d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c63c52327e53cb7ec69e322c3e5e4d16d127c13 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c6e73b844b72584d3fd49553db60e9a8c8af22f create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c8426e1c7917411b91516c601b15c344c5adbf6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c8c516495d0ebf82ba2e9cf13e50bf1870dad2a create mode 100644 src/libs/libsrtp/fuzzer/corpus/4c91acd8996e220bd56bd35f88fe8552c233ddcf create mode 100644 src/libs/libsrtp/fuzzer/corpus/4caf611587e949b11d2873a26ed09b9482b3f893 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4cd6f1e44b814d74bc5628a097736295f7db45b2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4cee4f3d2d5cdca267340f62aba696d2e2b8fbc4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4cee5e4e9f91bbb7378f83da87e3cbcdc198a790 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4ceeb92459a82ce4a6045dd52f7a9523f38aea80 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4d054e710f51b8c97c7a22cd1aac848aa2006612 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4d1c477534c42641c9b0b9a49f6c057e1cde7db4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4d49541f67c134d92a2703fc1e3637a35be8135b create mode 100644 src/libs/libsrtp/fuzzer/corpus/4dae34734a9e1f19378b8344110b583ee40f4e83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4dc314104fbcdd1e05b81d8a76db145121b1b464 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4e192a34709c41ec0ff89952d29d77143563f3f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4e87292c228f8738cbba6e08e7309aa7be7903e5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4e91084a57241b0a79a1e1017e469635285c8fd6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4eb13aab6d110ba031cf58579a3aa65d196a177d create mode 100644 src/libs/libsrtp/fuzzer/corpus/4f0d2ded2ea1fb09399d5baf8d0426fef5ee932a create mode 100644 src/libs/libsrtp/fuzzer/corpus/4f0e3f83c981ba7b753340d23f7f5543ddb36ee5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4f31000f5101f0168e01a3c0f98d5bcb12300e66 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4f5021168e063c367a32ba82304c09fd8144065e create mode 100644 src/libs/libsrtp/fuzzer/corpus/4f516f048cf57bc27abda74d5ed7ed85ea43806d create mode 100644 src/libs/libsrtp/fuzzer/corpus/4f6c0d8cc12b50e35b0007d6d24a7320c22c92e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4fa8b27a309641f206e149b137988ef92b57af15 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4fb887ac3b5beb5ceb252e42134f064fbc645234 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4fb8accd2d976661f63fd26140a3f6b82934a253 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4fba302e5ab0006c79bc187f414c1f2508c21bcc create mode 100644 src/libs/libsrtp/fuzzer/corpus/4fc051a19cebce0a9fa46fd3086d296d1ce4f768 create mode 100644 src/libs/libsrtp/fuzzer/corpus/4fc0c97126d20173535a93372152b8ccc353923b create mode 100644 src/libs/libsrtp/fuzzer/corpus/4ffa879630136e59cc52c1bdf983dc82627a6ab5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/503fa851d5bfe40f5a30ad59c26118790cad5e01 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5066166ab1196da51226b9c132a6f0c7c1cbe22b create mode 100644 src/libs/libsrtp/fuzzer/corpus/507021a3175cadd66970ba070a29878ed6520f23 create mode 100644 src/libs/libsrtp/fuzzer/corpus/50bd31f8a41c5c705594112b9329b6ec3eab6f10 create mode 100644 src/libs/libsrtp/fuzzer/corpus/50c152827e67573a02deb9d9a30329e2d55fb74d create mode 100644 src/libs/libsrtp/fuzzer/corpus/50f397d584965ccdf5ab70a6bd75bf740f7a358e create mode 100644 src/libs/libsrtp/fuzzer/corpus/518e2b27db6127d24d2c06636b9fb145db4452eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/5191a0357a3358dd3290f61cddcd563021505012 create mode 100644 src/libs/libsrtp/fuzzer/corpus/51c4b7732852c0709b0438a0f37717cd7499b24d create mode 100644 src/libs/libsrtp/fuzzer/corpus/51ca2d31463c473b3abac0e275e3fdbcfa32bc85 create mode 100644 src/libs/libsrtp/fuzzer/corpus/51e52a805dcf6774afe3c4876f54034f32aae495 create mode 100644 src/libs/libsrtp/fuzzer/corpus/51e5aefb13840b34db2a876123f56f3d2810cc8d create mode 100644 src/libs/libsrtp/fuzzer/corpus/520b82ffdce9643af41fb4113ae76a121f6a33a1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/52228d0291c8ba4a0f9749dd9a803362d6ad0efa create mode 100644 src/libs/libsrtp/fuzzer/corpus/523985886f09a66395616f0fc28f68e6cea0e38f create mode 100644 src/libs/libsrtp/fuzzer/corpus/526f1564cc0ea0a19ca78d9324c8638ff72477e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/532c36b979af8b1003ffbe124f4f1e1dca212516 create mode 100644 src/libs/libsrtp/fuzzer/corpus/53b62164ae11fd3c45e2062d9806c6bb51a9bbee create mode 100644 src/libs/libsrtp/fuzzer/corpus/53ffeb0791f8111cbf6c1280a2f8815b66d37a96 create mode 100644 src/libs/libsrtp/fuzzer/corpus/54286dc58e34b136b358bf3593882ed78a1b99e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/54553aed9bc6f2427aecf1b7fc547898cc21230b create mode 100644 src/libs/libsrtp/fuzzer/corpus/5456e481d33928590f6151e34693cb1cc497c2d2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/547dc3ebdd8776281f996bfcb3e9f69ad97974d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/549f9773b9bc7ecc0b0ba7f26c0bdd8d3b0abf54 create mode 100644 src/libs/libsrtp/fuzzer/corpus/54b6695b808e5bf6565b2939b3ba6b2123234a6d create mode 100644 src/libs/libsrtp/fuzzer/corpus/54b813a24e01e8357c43f5275aa8f5b9bd8b06d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/54c6b0ff97fdf452114f9359b4d8a07cee10a0f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/54c767f752d5b845f29062012dd30c58f90eb170 create mode 100644 src/libs/libsrtp/fuzzer/corpus/54eabcdf24bad3d8029203a754988def9d2f4d8f create mode 100644 src/libs/libsrtp/fuzzer/corpus/55022bdea04bef0d4770f2496c9dbb0c0c8d92c8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5520e0231a9026268e73739f5006c3a7a3605701 create mode 100644 src/libs/libsrtp/fuzzer/corpus/553402a2a319ba6c83bf602f993b7728b5b00273 create mode 100644 src/libs/libsrtp/fuzzer/corpus/554884ce961a82608cc14679fa8f93dfa3707bca create mode 100644 src/libs/libsrtp/fuzzer/corpus/558d59eba1bee63332fa787ad31a66030ac890bc create mode 100644 src/libs/libsrtp/fuzzer/corpus/55d105dace85e02cb95ecb9e1c8dc78b3ace8bb5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/55dc1e38a4fdb1b1aef71b65a08523376171d8eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/55f5592b8c6806a1ef9f8c438ca06e3f30b5e1f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5603da87ba03b13667501638a1d9788036c4634c create mode 100644 src/libs/libsrtp/fuzzer/corpus/562ebbe8126d4344da90d35c7249294b52d4a6ae create mode 100644 src/libs/libsrtp/fuzzer/corpus/563a9475b5b449fd62634f1df5bb3e00907be925 create mode 100644 src/libs/libsrtp/fuzzer/corpus/566cb4d31a6fcc30c90f98c08afd1dce884649cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/56d8fb3d29f055ddae16b829cb094bb0ed754a18 create mode 100644 src/libs/libsrtp/fuzzer/corpus/574195f4c56357d6e3ab2c688ace9f7c5526872d create mode 100644 src/libs/libsrtp/fuzzer/corpus/574754a107554e54128a886ae4ee46e8df527827 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5754d14d803f9268f6cbb6cf305d0e8dcc2bf4e0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/57de5380db49002b5f581b318ca337f7c6ba7b0d create mode 100644 src/libs/libsrtp/fuzzer/corpus/57e00ddcd6236f2c282b1b57d8d67b3fd4a28eb1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/57e57debf4de3850f747f985bed9784124047c0d create mode 100644 src/libs/libsrtp/fuzzer/corpus/583b5f47f4aaf0611fb0d3c51036a539e2e4a629 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5877ed503eb8389c81bc0692e2362f979c1eb075 create mode 100644 src/libs/libsrtp/fuzzer/corpus/589e034121a252d445e72104dacc057c387c7d4e create mode 100644 src/libs/libsrtp/fuzzer/corpus/58a3195b9dad3b35b48f68b9ee2bd5f8a4d187a8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/58a3dc918b9fd6004263929c54b81b880d2069d7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/58a966b45ac74ebf015a47770686ca4d61f372d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/58c34f65a8fc98e52e2039dded3f230c3bfdf099 create mode 100644 src/libs/libsrtp/fuzzer/corpus/58c440c190619330a10ea3a88c453abee1956bfd create mode 100644 src/libs/libsrtp/fuzzer/corpus/58c61f6124427c2e45eb0ad6761e702618f969c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/58f7d611e702da8140ea3cfba8ff69abfe6d2d46 create mode 100644 src/libs/libsrtp/fuzzer/corpus/58f9e0111a6833627938e0dfbaad4c901d107df8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/590e3b30215b7d037913d0c26b8ae24c0843a452 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5934c811fcae83db8a8a576efc1a2472c08eea1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/5951b46082cb84e45c8bebf9d5ea3f6a1018733f create mode 100644 src/libs/libsrtp/fuzzer/corpus/5977f8d34f45745f63ff61e271623427d41da0c2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/59983fa03a6675fdd23b40b1cfd51debc20726ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/599a6b95c82ebc7b9f00050ecebb14392abe51c3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/59b4a9f480a1c995f5d9c5fca19d1eac5c367017 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5a0667e778e29501120b35a61c79eb6d6766acf1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5a0adbb9d45f626e8fb08e03d1fac37b33bf6ada create mode 100644 src/libs/libsrtp/fuzzer/corpus/5a3ec3051c1e08289c821a3ba9de31c94cc07787 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5a7930a948550d09baa6ee015b329e072581fade create mode 100644 src/libs/libsrtp/fuzzer/corpus/5aa9b976c14d72f436487381eff2b555371cc2f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5aaafe06a140849cbc6e14647b219241b85cd867 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5ab4f4c621236226bf559041e869257f28131ecb create mode 100644 src/libs/libsrtp/fuzzer/corpus/5add5469d7e867fe432d6958178e6863be5af6c9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5b010a8b7dcaa3e995f9032893010eb4d0e4ebe9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5b35017750540a5b1cdd4008558347708b568a84 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5b53d0a4e6ee6bc73a29391ad5f4cd6fa2d3017e create mode 100644 src/libs/libsrtp/fuzzer/corpus/5b7ea3bba13d17d8fa4176ffa5cea0bc7a7f6c44 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5b9d48b61c7c6c9abc2669ad417cb1487b9934aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/5ba0b298eb42875f33ba8e5e0471faafa7b49e7d create mode 100644 src/libs/libsrtp/fuzzer/corpus/5bd352048873f6d2ac8fbc0356ea7e7d05918ddd create mode 100644 src/libs/libsrtp/fuzzer/corpus/5bf83221f44d32022c5c3adf4241f715f0794461 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5bffd900d1d343c268a7cdfa08c8faf000319974 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5c1ab7ce9dfefe55249e883d3359ade7e76e5ce0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5c50457a8a183a1b286327c78b52a83a8c5e4c60 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5c65a7b3d7df8b9a962fc82df75b0d7b930a81b0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5c7b86ea4762bf763c3134ec0aa3580f82cc70f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5c818e280c90078b385ac1cd9316bd4465144508 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5caeea41da4372ca05b0e28a15c4533d7517b203 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5cbd957537442bcf267687c9e3fae175a93da3a9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5cf363baadf037f6b2d9ba6bc43274685aebf7bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/5cfd0e042d6237d0436a3ca12d8c1dfb536f8be3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5d01f5a9544ad63f156ec2b9e9a30326e35d67b0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5d0a2b8e5ab4c6220f70b408d5d82bf08a723732 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5d7a38cb9399eeda448bc84e1449e7a5bab0f5e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5d813c4465a4269409085a072f39cdf4234ef6fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/5d9c2ba3bf785afa9339494d24e0c36fbea03ff6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5d9e462a5151e631a1389f52fd7f220fd8c6a3d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5dd124861b5618cade180cb240caf3678b42c591 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e065bc6b58574b3c83484e7dc6e1faf3fa5d161 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e1a550e7021865bfcc959952a844d3b6a6bda24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e1a5b7ad4d785ddcb1849465ada15d4d3beaf83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e1f0fb312d887f114c0faf847c95ee3219a757f create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e47a25d23087289945f9226c0a37f9668dc1942 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e625071f529dad68777f7a1f675743a528d366c create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e739c9eb9d9e4cbd0ecbaef1bdeb999d28a2d48 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5e8a84ddf667f21a9b423ae1c08fc8feb7e5ce8f create mode 100644 src/libs/libsrtp/fuzzer/corpus/5eae25a49caeb548e54a3ef3c984fab8d9902622 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5eb71bd7ad624545905508d552b6dc10a2f847bb create mode 100644 src/libs/libsrtp/fuzzer/corpus/5ebcffacdabd75a178673efcbdeefb1f79ed394b create mode 100644 src/libs/libsrtp/fuzzer/corpus/5ec15755d11256b26300505f389936752ffe31c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5ee63fec474fb8683ba8926218ae3de284e07282 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5f140446c99237df25e408d21c553069f5c891ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/5f41358a7ecee7c3300274553aa6c2b8761e45ec create mode 100644 src/libs/libsrtp/fuzzer/corpus/5f456be4a8881ef761297b4ee2b2396be9cd06f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5f4a78fae92e6d4e3cdc99e83ad125a2f7818c8f create mode 100644 src/libs/libsrtp/fuzzer/corpus/5fb6f5c740bc17d3b279ab715fd08fa81686d5b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5fcbf48d19223180ace1731b23b2c23e386d576b create mode 100644 src/libs/libsrtp/fuzzer/corpus/5fe2d782d294f56e1391600e414ee2eeff844f08 create mode 100644 src/libs/libsrtp/fuzzer/corpus/5ffd8ca2bda62b93f05301fc0a06c7e73a416bc8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/603367d28ab8b9045648cb64bbc5030d1d15e5d9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6042bfb5a12f07ee9eb070e5e2dff8697cad3908 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6043853a809a2e832897ad614133f55e14e2455a create mode 100644 src/libs/libsrtp/fuzzer/corpus/6073e7130e4f96a16e97395e06e222a81366cc3a create mode 100644 src/libs/libsrtp/fuzzer/corpus/609a69b86e5efde2de102c337a161b03e9c8876e create mode 100644 src/libs/libsrtp/fuzzer/corpus/60b0c36b3f192b5f6316e5e0b9a417df091b37d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/60b765c94aed815e0f753d1afbde5ee97bfb72ff create mode 100644 src/libs/libsrtp/fuzzer/corpus/60c6babf6298dbab7c90c76280d5a94c88ea9222 create mode 100644 src/libs/libsrtp/fuzzer/corpus/60c9128e76153d16fe8e7ba2adbb9ab7bbb220cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/60d0b929af1da32a0e54a72d27ee4407284a10f2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/60e4e9b585c7e41a5becab1dcbc0225e68d563d0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/60e7223c4b5304a98587b2478afdead8125c22aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/60f3638d7c58e1d52e2638cf50e68fa0cf3491db create mode 100644 src/libs/libsrtp/fuzzer/corpus/61177a0f4a0c9ee089cb9388d13ef562be8831bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/613413787bc761296f663cb8d45a447118b001cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/6138aa043c89611152dcdf360c687f014ca2a219 create mode 100644 src/libs/libsrtp/fuzzer/corpus/614e63bb137505589f4486d646ad255bf62d39da create mode 100644 src/libs/libsrtp/fuzzer/corpus/617962216ea9a3e7d6b293fab5df70773c10c552 create mode 100644 src/libs/libsrtp/fuzzer/corpus/618221ce08ce7422808dc657b7aedeb762b31b09 create mode 100644 src/libs/libsrtp/fuzzer/corpus/61a0f4708cac4433f56b999985950ffbf610dc92 create mode 100644 src/libs/libsrtp/fuzzer/corpus/61ab084dc7aa99e837e0309fcd63f2e199cf0aae create mode 100644 src/libs/libsrtp/fuzzer/corpus/61f39c557fde0b40d5e2fe7fbb3747d5c8b822a7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/622482024bba090a3fdcf1683e6e82f3382d8086 create mode 100644 src/libs/libsrtp/fuzzer/corpus/623a1074c0969b1c02dc5f11fc7efc12fea52d24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6240592d3790fdf15fbd60321b06dd507cf22831 create mode 100644 src/libs/libsrtp/fuzzer/corpus/626b74498e05ec6bc5d445f60f4dc60dba76336a create mode 100644 src/libs/libsrtp/fuzzer/corpus/627d90fcc60f0bf1f70d75c9a31d84139216e488 create mode 100644 src/libs/libsrtp/fuzzer/corpus/629382ca7562123161a091d5f0d795a235b5ca95 create mode 100644 src/libs/libsrtp/fuzzer/corpus/62959435635107ddca7d9e4126a6f5d0c76fb1fd create mode 100644 src/libs/libsrtp/fuzzer/corpus/62aa7143e0e3298c6876a5f4dd7246847f6af3c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/62b23c4cd05662a84d93389e973a6da6a2b8b410 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6300716f023e6c5963aae1d4a456de340e099717 create mode 100644 src/libs/libsrtp/fuzzer/corpus/630d4de33f784094077355d0d707a77a258d7848 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6314c3808ec7e85751b4d7b742cdefdb1d6e5856 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6317f6a493095cac0ca169a694f660d878919b01 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6364e84f407080cfe95722fe371595fce30ede1e create mode 100644 src/libs/libsrtp/fuzzer/corpus/6374541bb9f70f78ffa594342ea59578337b8b18 create mode 100644 src/libs/libsrtp/fuzzer/corpus/63961e70de1b626a269c1da07b22e12d1bdbc080 create mode 100644 src/libs/libsrtp/fuzzer/corpus/63bf338dc5d47dffab0f003a1c5a7c5621cca9ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/63ca389b82b7722d6a57d17ccf887e94dc378f68 create mode 100644 src/libs/libsrtp/fuzzer/corpus/63e4e38559bec6e6f834d2ef344929d0cad600ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/63e69871719679ce08615d1de566a614371cb4e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/640580c9fd14ff70774f93394b5ca76cd2e83529 create mode 100644 src/libs/libsrtp/fuzzer/corpus/642a6b1533f4e765b30b75b115672a85d01e4365 create mode 100644 src/libs/libsrtp/fuzzer/corpus/64777b1e4c8a4527989efb144e2226f2fda89c78 create mode 100644 src/libs/libsrtp/fuzzer/corpus/648e42a480516eb541712b5431709d711167b633 create mode 100644 src/libs/libsrtp/fuzzer/corpus/64913d4d83f772e4fe0423803e2852b30d0fefb0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/649666a82a6e54135c69c0570d39af075c72b74d create mode 100644 src/libs/libsrtp/fuzzer/corpus/64a0471018b066406886ee21802fc46eac77c8b4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/64b49b5bd2d20ba64bea48d0d7766ad2c79408a6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/64b549f9658ff3b1d1ab5649b705f77f72120898 create mode 100644 src/libs/libsrtp/fuzzer/corpus/64bc29377bd012c7df1b8a7bdc7f5475a4f0643d create mode 100644 src/libs/libsrtp/fuzzer/corpus/64c4a66da785d46d25a68f571261e07d669019a3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/64dc6434cd5154dbca58a499214a180c006662ce create mode 100644 src/libs/libsrtp/fuzzer/corpus/65169785c05132f61cb0fe7a4cac4d83eccfc261 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6519b017ccf082ce0b1a7670929e1e73547c16f5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/654041ce1022141719a977cf50e702d2686afb2d create mode 100644 src/libs/libsrtp/fuzzer/corpus/654638b7d49e574401a253175531490edc4bd788 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65505a2237073f73dbf9cf827e743adef46e97c0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6552662b273f17b5c04d28e15daa334e7dd1e283 create mode 100644 src/libs/libsrtp/fuzzer/corpus/655e5fa01790ddc5c121f3c41e0a06c6d3dfb41a create mode 100644 src/libs/libsrtp/fuzzer/corpus/656817d0384adc45c1846f58001d4a2817d6dfe8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65686a887886829e0edc41d9d34cafecea09eb11 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65690bee1d02b8c2a2c5b7b02b0e4d5e79d25934 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65a24581d01b510d102c9b5a29b48dd081f9fbf8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65ba55f8e41894702c8d2e9df35b8b17197345d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65dda6438e7d606cc149433add5df57db4e2dc62 create mode 100644 src/libs/libsrtp/fuzzer/corpus/65fda704bb8e39446ad2aa103004305ad1eafabf create mode 100644 src/libs/libsrtp/fuzzer/corpus/661f78aeacd3ba77d84959e5824fb5842d375da8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6622b04b6c6539d170a6c203f7c8047a2627ef1a create mode 100644 src/libs/libsrtp/fuzzer/corpus/666c2f6d446832815b4142f23c41f946c744a506 create mode 100644 src/libs/libsrtp/fuzzer/corpus/66701a843b5dffba78ad7e1e6c44cfc806ab31ff create mode 100644 src/libs/libsrtp/fuzzer/corpus/668d1a8784fc7de20c2eb87f613a517cbf42d080 create mode 100644 src/libs/libsrtp/fuzzer/corpus/66b27b57d4d7de1c90d7ee89bbd43c5468f21f52 create mode 100644 src/libs/libsrtp/fuzzer/corpus/66b586f381f61302f2e7058a5b53361e7b8135f2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/66b87b59b7233b0c628c1061b6058336157f50cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/66ba0612397b891e0d5ec9a985b824650ba536c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/66e5621c43fc9403d3e093d20018379455932343 create mode 100644 src/libs/libsrtp/fuzzer/corpus/67278b928ece08b649bb41dd10a477f20f965570 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6745bbeb17c4281b97cee9be2f04b25f9b0bffe8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6756444b0a6fed74818a7ee4e7f56c23577ca520 create mode 100644 src/libs/libsrtp/fuzzer/corpus/67630f5a980563718164a404ee8e24148c120bb8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/680ac624889085a04c01325b19dca2ebddb9beda create mode 100644 src/libs/libsrtp/fuzzer/corpus/6852c0ab304a4b0503da5ab3c4c3bb2cb47fb964 create mode 100644 src/libs/libsrtp/fuzzer/corpus/68655185e37a948f14d5e22748576cb4d8ab7cc5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/687375f623183b3f91d4dbbc6d811d3772a94fe4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6883b75c90df30d660e6d7b966c1ec516df0171e create mode 100644 src/libs/libsrtp/fuzzer/corpus/6896f40df04bf1bdfcfa03df222b6e99bbb7aadd create mode 100644 src/libs/libsrtp/fuzzer/corpus/689b5a59a782b95c72f11da560c6e6a13259eea0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/68afd8113b1f5dc78c6e363fa7b3235bb9f3e998 create mode 100644 src/libs/libsrtp/fuzzer/corpus/68cd0772f3b8b697bf0883a6b3324ecceb820962 create mode 100644 src/libs/libsrtp/fuzzer/corpus/68f7d41620a0c7ddec132492611badf720f6b5cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/691f85fd1300bd2e5746fdc9bef75768040ece0b create mode 100644 src/libs/libsrtp/fuzzer/corpus/69217d1e52829e915878d9886d2219317400a4fb create mode 100644 src/libs/libsrtp/fuzzer/corpus/6967d470ff997b6398be723dc3d3ce9364a56885 create mode 100644 src/libs/libsrtp/fuzzer/corpus/69c251669ae44e3eced748d2199b1dc431196b6c create mode 100644 src/libs/libsrtp/fuzzer/corpus/69c3e05de7d033aefde7f8044c9ee29988c2046d create mode 100644 src/libs/libsrtp/fuzzer/corpus/69c3fde5efff19e925d9ddd1d3ea12111a603aac create mode 100644 src/libs/libsrtp/fuzzer/corpus/69cae98d93cf1a78af05aec89b343ff693445378 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6a0592a9b603e91657d7ef842fe0343287577d83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6a237c7db7dd04afb407ebb379f5cec036c6f6ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/6a2e403401c57d45174788ef50b720afdd9b9d4b create mode 100644 src/libs/libsrtp/fuzzer/corpus/6a716e6e19ded33bf8a122c334d86e4b24be29fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/6a7460d2afcb28811279ace5576a11f8b308b7ec create mode 100644 src/libs/libsrtp/fuzzer/corpus/6a9b91a7baaaf95e8f33593d92a08fbfe955d256 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6abba7f854ad692202a9cd2f470a548f41c7c587 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6ac1f2adf0a276b930ac333f30e61009d3932ba0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6afe5384c398e825595d124e174f5e403153e1b8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6b1393f61366e6ab27d618e095db5652dd640853 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6b285d460e5309ad9d2e141c37ee6e50432f06a1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6b296b18dc6f859767385a7a1afb4e873b758285 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6b4e197ca4238a48008c54faa8e6a44a3447cd74 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6b5f61a47bbe9c1058e2d7b6248f2c4a532ae0c2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6ba5f404e1f4c1a61205ca8819686c19b8a7e72d create mode 100644 src/libs/libsrtp/fuzzer/corpus/6bc23a666a9a3964a045462b36d4ac19f0355323 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6bc8f0d768c1b81bd2280da42902103f8feb64c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6bdde9f513ee4f442b4a3b1eea8b3cc47d812e5e create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c165f1717d532249cdf43720fd746883396d020 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c1cc0329fd20f56a8d91897348cf5faa5f953c3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c232a2066785dafb0b517009ee1c90380c5fe24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c464ff758fc5da32f56415ea4d312ea0787fe52 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c506ead05f651d80e1ae8bd0d4510ea68174972 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c5328b0c624f44f8ccf49ea0c819e94d4afebfd create mode 100644 src/libs/libsrtp/fuzzer/corpus/6c61eeb721779feda1ea0e9c706ac4cb858e5d6d create mode 100644 src/libs/libsrtp/fuzzer/corpus/6cabfbf82683b2378758215959a71fa0afa7bb2b create mode 100644 src/libs/libsrtp/fuzzer/corpus/6cf49e1edbe3662a9f9c3eda6c221edfc1ae1de3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6d63a35f78c5150ceb4ce1ca98ec8ff95f4684e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6d6c93b5582cdc7fdad3d1dd778c61c6e1990b9a create mode 100644 src/libs/libsrtp/fuzzer/corpus/6d8e0536752ddbb305adfd65f1be91358ff7aa99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6d8e5a6ba49e6fb393694bc7fdcdf4034aa59583 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6d9bcef0193d298b54d7d03635f2a5d755e3ad2c create mode 100644 src/libs/libsrtp/fuzzer/corpus/6da3f86619934a68744f1f90bd569cc8d53e97d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6da74210deac7eeed903ca6c059d2b0adb942a8e create mode 100644 src/libs/libsrtp/fuzzer/corpus/6dc013b62c35f729a9eb71008215d4c64457a0f6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6dddd2c93c97ec6b7dfc6e73dd7602bd4099f384 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6dee58677ab1dda486feaa2d72dd789605a4d7e8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e22495ba490e0ee875284788badb9c14eaa0e69 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e23c1f30efe0d956cb742e503ea7658e07cfa02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e38f2a1804a36b5667b60f6a1731aed2549873f create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e39726dcdcfe6bb695fd902a5028f4fb8a6fb9a create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e42d7365c2f21d5bc4eb1f73135670519597f20 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e5e3e737a9fb09147a771b5290bfd8cd1f76aa3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e5fa073de61a515f4fdd0117c509fc1ba8edab3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6e89c0bd2c624eaf3aa5669c2660ecaa499be4ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/6ebb0862deb584ba9219dbdfdc4b4d74109843dd create mode 100644 src/libs/libsrtp/fuzzer/corpus/6ebb3b2e935646d3e2f02eec8f13219db747732d create mode 100644 src/libs/libsrtp/fuzzer/corpus/6edde592b588d9013667a98ca56af9cd19af386b create mode 100644 src/libs/libsrtp/fuzzer/corpus/6ee0ea0911fe6ce73316255b0b5b2bb3bd103e6c create mode 100644 src/libs/libsrtp/fuzzer/corpus/6f15d9f4f8330bee8bc89e4b45c8645fe94dc02a create mode 100644 src/libs/libsrtp/fuzzer/corpus/6f162cea130c89a0059ee343501343de3d01855a create mode 100644 src/libs/libsrtp/fuzzer/corpus/6f2d29720f689464424daee284b20b078c2c2948 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6f72524ca639aa946a6fbf266661c60fa9a12a12 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6f99aed6a2d7debe2cf490f4cea897b250a57398 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6f9f35de55db285af5758d2ababf322255ac4be4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6fa722fc9c87d3928d8ef6026b0251a22b9e755d create mode 100644 src/libs/libsrtp/fuzzer/corpus/6fa7c05cb238ec372624a1626cb9d012f1639491 create mode 100644 src/libs/libsrtp/fuzzer/corpus/6fb5c7b62731e01283505b7467e5e76e1f74d0fd create mode 100644 src/libs/libsrtp/fuzzer/corpus/6fb69b5f0565450159d46ee596b9ec9232a0b797 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7033ed258d94c307bfbea0a744b17e170ab55770 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7049f5d714d906f4b91b6158edad152aeec36afb create mode 100644 src/libs/libsrtp/fuzzer/corpus/706e99b5200a33d92fe18770621f8affdc6a418c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7075b3ea0b6a92bf0a84d76fbd52d526ec0b55e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/70a772af87ee494dc824e44162f95f5f83113e1a create mode 100644 src/libs/libsrtp/fuzzer/corpus/70ace6ab4c748bac8cd6f0d153ebb8dabeb24d20 create mode 100644 src/libs/libsrtp/fuzzer/corpus/70b2ad450966a79ee222fafce5d7608f72672bf2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/70b68da82d72f9d9f56c8f563ea751bbc7a08713 create mode 100644 src/libs/libsrtp/fuzzer/corpus/70bfe0c45d94a9c0fb11584127e1c3718a215392 create mode 100644 src/libs/libsrtp/fuzzer/corpus/70d5c52f63225e602835946dcb386d1aa700078b create mode 100644 src/libs/libsrtp/fuzzer/corpus/710b4648ba54b121f44898006b76b69bd8b66cbd create mode 100644 src/libs/libsrtp/fuzzer/corpus/7124f8dec00a51babc1db2595c27e2bf098c02f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/712e306cce235fd7c07acc4f9542e3e8d176b4f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/717743fb883b330706bbea0e9a49afbe3dc907aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/717c5019bfa5d9d92e954c407084ee36a07f1d48 create mode 100644 src/libs/libsrtp/fuzzer/corpus/719f9b36bafc225926b18d5b31ea111c0d20571e create mode 100644 src/libs/libsrtp/fuzzer/corpus/71cd1c25e8b6affaf2286d31730f641b4d1203d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/71ec5ab0e76d1b30deeefd5304b3733a4597ebe7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/720990112fdf8cd26c132d3aace3e5653f0c4756 create mode 100644 src/libs/libsrtp/fuzzer/corpus/721fd414791e3f0e8509752ce857e5743e11016d create mode 100644 src/libs/libsrtp/fuzzer/corpus/724d34b3d32e78744b9757c8e7282e26389ddd4e create mode 100644 src/libs/libsrtp/fuzzer/corpus/7256851ae102c901118178247d0608dd2bede61c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7258166ffb827db0f294ad3f169a72c23f2195b7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/725f1f53fb6c5be7ab5815edc4ad728801c8f9af create mode 100644 src/libs/libsrtp/fuzzer/corpus/72a41f35244bd47df22cff8cb97d7a0c1cbb0c83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/72baa8a47cb281f053c39fb483d4af8f45b48ee1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/72c83d7c35ffb01b9daa045a9a5b5b76bd80657b create mode 100644 src/libs/libsrtp/fuzzer/corpus/72e12abdb30b4051d58c2336d12455da88bc74bf create mode 100644 src/libs/libsrtp/fuzzer/corpus/72f6619412fb7889db222ac3afccf525864b5755 create mode 100644 src/libs/libsrtp/fuzzer/corpus/72f69427262628bc7b55884ca42782885ce749bc create mode 100644 src/libs/libsrtp/fuzzer/corpus/7300d5491974cf7008bb306f6ce0f28294c3f4ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/7309d83b1f178d7ac52771891d0f87921cd2f282 create mode 100644 src/libs/libsrtp/fuzzer/corpus/734c48b7b6f5c2e412aa8036c6bccd849c76dfca create mode 100644 src/libs/libsrtp/fuzzer/corpus/7350c3788104634e2be77eaf02556badd86f13de create mode 100644 src/libs/libsrtp/fuzzer/corpus/735add7f4b427ce83da42ae0b564095f4cea3dce create mode 100644 src/libs/libsrtp/fuzzer/corpus/735b475e744643a1e493e9a89ac3a6c41e8e05a6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7377effcd188d737f5235d4693db795b9d153167 create mode 100644 src/libs/libsrtp/fuzzer/corpus/737d1a08227e4ce4424999f7c884f18607a0a3a8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7399da9b1d75f2d484579109e92912ad332539c2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/73b2f62c4cc2dbdef1e4fa54ac8295b898862d62 create mode 100644 src/libs/libsrtp/fuzzer/corpus/73e0eea6754e70efff92e2dfee68999220a9f6ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/73fa14e72a41c83f9a884f055b91e0d573add7b5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7400ab608ee8af900cb7263b444387d62b213722 create mode 100644 src/libs/libsrtp/fuzzer/corpus/740733262b0594c2fdb0c044a2645a6a958d89d0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7408f6d49d112aee38c9fe3d7bada867c97f43c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7418b4823963f002f17f45004f69e28a548260c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/741ac6075767d7cd8a080cf54ecde55c3d287e93 create mode 100644 src/libs/libsrtp/fuzzer/corpus/742f841e65a01b5f484eac4a95c4b8b30814358c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7437a96fab759f43e25826c80da66186fdcddd3d create mode 100644 src/libs/libsrtp/fuzzer/corpus/744542b36afbf140eb5e868bba0a56ec55a13fd3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/74578fad6a1e649a527682134507ac1188c4427d create mode 100644 src/libs/libsrtp/fuzzer/corpus/74737f3ba6fec08624c0adab88eb827a40abdd4a create mode 100644 src/libs/libsrtp/fuzzer/corpus/747841eb33d25b135b6473f3d38d57da4c82b4fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/748ae3bc9858646fa7ff250aae3d42c80453786d create mode 100644 src/libs/libsrtp/fuzzer/corpus/74a4199d9a46e774a9be78a793a1796554311c26 create mode 100644 src/libs/libsrtp/fuzzer/corpus/74b67a22359f591b61329d8783b312cc359f8aa5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/74df8a5ae0458398c81f0be2a0c53d3b20df722f create mode 100644 src/libs/libsrtp/fuzzer/corpus/7504de0f47a357b3a5dbd3edd09cd792c5d84ed7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7506432336562377cfed58373d1e46e6a1f6f2d4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/752d4ae7a84e10fc41d07919fad52db415214535 create mode 100644 src/libs/libsrtp/fuzzer/corpus/753513327efc6ddee8f2815b143748dc0f88b7e8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/755ec363058b3d5326029c35fafb59fd13bdafcf create mode 100644 src/libs/libsrtp/fuzzer/corpus/75615998f9dad6af47a16b949e0f5999afc6ec2c create mode 100644 src/libs/libsrtp/fuzzer/corpus/757f4aac1cb731b1db1aa933e1b8f4695a239550 create mode 100644 src/libs/libsrtp/fuzzer/corpus/75ad40df9fb13569165c4587a686b8624f4f902e create mode 100644 src/libs/libsrtp/fuzzer/corpus/75b96fe8745b1f80dbe3a909c8b87d0780279fe5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/75d45b9d9d3e7a5a6002b0300ca160d2da6f465a create mode 100644 src/libs/libsrtp/fuzzer/corpus/76148cce4f02e4e8f1d5ced7e32e93293f22b631 create mode 100644 src/libs/libsrtp/fuzzer/corpus/76567b98296bfd1a9e043a8e7acf8cfca5a6de90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/767297ace089d3ea2baeec77b980188359549401 create mode 100644 src/libs/libsrtp/fuzzer/corpus/76a452ce995b841d441c1aacc1d31beb1571fd11 create mode 100644 src/libs/libsrtp/fuzzer/corpus/76c051330fe32f41b2b6cd58178d35d7b92c7596 create mode 100644 src/libs/libsrtp/fuzzer/corpus/76ca0885b51d330c14e6b8e9188b064b881b13b5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/76ce253bab0df4024f59b4fb3b0fdf193285d994 create mode 100644 src/libs/libsrtp/fuzzer/corpus/76fe24e81d0e53ac5d96c74603050609b04e2f4d create mode 100644 src/libs/libsrtp/fuzzer/corpus/76ffdbfcb856f1c0e670aca18e7f6a17c26486ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/770b4547f11111b3dc124d0fbbba277545378ffa create mode 100644 src/libs/libsrtp/fuzzer/corpus/773eb63c3671453a04db73568a269b214d983b1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/7753101d9b2454fc727f599e4c16de29490a5da0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/777969909bb16e74240c6ca2ca2dea2170cba15c create mode 100644 src/libs/libsrtp/fuzzer/corpus/778654fc820b1dfa4e45c2738e7762fbc6a33a55 create mode 100644 src/libs/libsrtp/fuzzer/corpus/778817d1a44c3fbfbf636b99f43b1c38ee4fe0ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/77a8e297472ad2804d69d0ea1f8c19038e2f7c03 create mode 100644 src/libs/libsrtp/fuzzer/corpus/77db4cb82f68f1fb6204cf7f61a79e92a532b753 create mode 100644 src/libs/libsrtp/fuzzer/corpus/77fb00488655fb39f813b70219866d584997a957 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7839ef01eccd990cce7ac41dc1e17d2a53fe5b55 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7851267a92236d4b8a56ff38e4947e43e53005ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/78e5573d0226b65966df449ec5a586c2680856e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/78ef41bd1903fb3df3f29bc6e64f3ab68e8d0c0b create mode 100644 src/libs/libsrtp/fuzzer/corpus/7911c8def6c53751e90ef022b5e8261044366c97 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7921671356a6afb0fd81d4fa8555f2a0e499af08 create mode 100644 src/libs/libsrtp/fuzzer/corpus/79613aa16aea067c77e179ec4c83022027090bdc create mode 100644 src/libs/libsrtp/fuzzer/corpus/79695c079906ae4e31b451ddab525161a2586380 create mode 100644 src/libs/libsrtp/fuzzer/corpus/797e06e44156ed117975201408ca6146d2004405 create mode 100644 src/libs/libsrtp/fuzzer/corpus/79a337880062772b2e9506af7b16ad596b748492 create mode 100644 src/libs/libsrtp/fuzzer/corpus/79ad937dc63af3a8662dc4d66c6b18a1c3b842e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/79c9bcb1d0cc57012537070a9380189eb61d6a7a create mode 100644 src/libs/libsrtp/fuzzer/corpus/79d1c3c982af023ec901e48bf5fcceeffc5249db create mode 100644 src/libs/libsrtp/fuzzer/corpus/79d5d8e98d9e37778e200f5ce3443dddf5d1e04d create mode 100644 src/libs/libsrtp/fuzzer/corpus/79eefdef46f2001822160fab2b33307ce2451eb2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/79f89cdf048387b37c2c10ceb9885f63f8304889 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a0456f56ad054d9bfec79c63516b38fb28229e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a14e8dd5a57e3e1c3b18b6f2cc7ca46aab0a1eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a16d2290d87efa23a0d5007dbada204f16ac844 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a3212a3cc93b425e6c60d3024e319206b65bce4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a525c80f2606967be6063d0318a823dfed9fe56 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a84c8813991ce79074eb9b3a0645f575bc6f60c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7a8768f48668207ea5fb42fd647d3ff767a95737 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7aa399e22cb80e5f28f473243c9548a8f325e98e create mode 100644 src/libs/libsrtp/fuzzer/corpus/7aa4a10fa9118f949b9495f36b5c7026633b27c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ac5ceb4aeda387b0a7cc3d10d196a1b38e04189 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b0173b94d1ae43e291ef41258ad5be33a94658a create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b092f55055ec30d6410db03348db394de41df33 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b151731c7616f4e39723ff6a4f73388409fa5ed create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b17286a1a5a6aaaa22b7baa5f14470e25275259 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b3b5288678d4dc968f4ff182767222379fca94d create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b3bc04aaa1fbab06b8780b23009eb9134385b55 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b82af1637d9bf085bf4691a4c2f6935109d7060 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b90c46fa920fb6e34f38d280f8a814d5f7552d3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7b9368ad86f03fa961b749e2a2c4a49488ee800f create mode 100644 src/libs/libsrtp/fuzzer/corpus/7be86da7b09883e958b4325169bd6a468172581a create mode 100644 src/libs/libsrtp/fuzzer/corpus/7c559c7a0a72338b642176e045a69a3e14bcf2b0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7c6ed8364d243b4150cc551b59fda5913ba459b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7c78a1a959ee5939c74a4b724ef120b566e1d9f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7c9f31688f3aab10d5ee2520112ae4c643e9a8f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ca3bf567198f63f7feaeb6e6f9cf35a66b260cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/7cb3ccde9e7c69c613f6bc03904fb2742fefd85d create mode 100644 src/libs/libsrtp/fuzzer/corpus/7cf3e801b1ebba0e4eb6fca00efcfcaff610ecbd create mode 100644 src/libs/libsrtp/fuzzer/corpus/7d18ed36f5b3162c15cfb3564a2f1b96dad2131e create mode 100644 src/libs/libsrtp/fuzzer/corpus/7d70387c8179573c0f1043460320e8e84c45640e create mode 100644 src/libs/libsrtp/fuzzer/corpus/7d7da6cb9102c0ed89ff8ec9d595ed3b2601eb05 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7d9bfcaada2b170255bcd0ef2e4b8921abb41779 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7db4f5591801a48c9b8a1575ae0cda54eaaeeb47 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7dbff32be3d3dfdf4cc6893c63969a6c31587d6c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7dc44283cf9cd2fab208ee4a2d853d451ba34c96 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7dd37c3acd5a930bc551075f36f17f73c4a0c58a create mode 100644 src/libs/libsrtp/fuzzer/corpus/7dda43e86a2cc6ec3ad573803685b6f699f68e58 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7de45e20cd384ad3c999f012ab690d190b4b99c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ded496fd531287d3aae5dbb5372e7008809aeff create mode 100644 src/libs/libsrtp/fuzzer/corpus/7dfc1b2c5c9c6395a72d6f332273e1998d324dc8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e0c26ffa090b8c1f6b7b54d0691f20cf3120065 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e1d8c9ceab68693700ed87c766d82bef1629d9d create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e421fc80234232df6152662a076cab09aeec677 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e4abdd11becb33a0de5bf8b3541f06232528dc2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e4e8fd08e84fe858f4b4285850e9759261a68cb create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e626c5828bf87790da19c322bb8492ce45ce8e0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7e8fecf5af2e8c00c79f14c136a91214b4406ba3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ea2f73225fbbccd29b5f6bae4b793d73f74021e create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ec74e5bcd1e83890ca96a4d0a465910fc8875c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ed2e85d653993c06abd46cea79dbf58c1ed7c92 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ee74e1d27ad82d986a87c0b0e18b3a62d8cb7cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f1b44970724cfb5e013b5de190ad898069447ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f21d792b84feb969a588ab8701c3c446025639c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f364438e2867951dc144639564bac988e21092f create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f4b7b042a57169cd1ae1b289d8c2be8c0e18b91 create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f5e9cff3c70bb74434b9a6de050e320da341abc create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f65151263c21b92829afbc48720b396735c625c create mode 100644 src/libs/libsrtp/fuzzer/corpus/7f94db37978e3d1cba15f6b340849c815ae12f7a create mode 100644 src/libs/libsrtp/fuzzer/corpus/7fe5b833a6002dcc0a33f9ae66a8b4c74f87eeaf create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ff692f4166d9dbf92e3830324ee54b52dba2cfd create mode 100644 src/libs/libsrtp/fuzzer/corpus/7ff77956a3160d1ad80a039dd981553a82e09e6b create mode 100644 src/libs/libsrtp/fuzzer/corpus/801e9ccd13573640ccdc8f0b36b75b51019fb950 create mode 100644 src/libs/libsrtp/fuzzer/corpus/80212c71e8c6f8efe86c4393414aaeb677c7dca2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8045c1c468387f52dfbc9bcf24be5692627cdd5b create mode 100644 src/libs/libsrtp/fuzzer/corpus/806f296a2c91af5ba074714eecf21e6d850b1afc create mode 100644 src/libs/libsrtp/fuzzer/corpus/808cf56bd306ff3c1e886a5950f953eda3514777 create mode 100644 src/libs/libsrtp/fuzzer/corpus/813c78fcd5c38bc6f770616a33e76f7ef08d3231 create mode 100644 src/libs/libsrtp/fuzzer/corpus/815656d073ddeaed4b951541ab59e054a248aa04 create mode 100644 src/libs/libsrtp/fuzzer/corpus/81737015d0a8c3794cb59c21478145c97648cbc7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/817a8ca197fdb664759d1f27d2001875926f682b create mode 100644 src/libs/libsrtp/fuzzer/corpus/81a2292134efba059d371e783a777d1be421c638 create mode 100644 src/libs/libsrtp/fuzzer/corpus/81a5601ccda21f25bab65ca370ab6cad3267060e create mode 100644 src/libs/libsrtp/fuzzer/corpus/81c14769b1687e311ca6817e0e884fb5e7aa4f00 create mode 100644 src/libs/libsrtp/fuzzer/corpus/81d264f99ba15235fb41af077433ee0e5cbcfce9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/81d2a20eae4d639dd5ba25e52e6da04e85da2416 create mode 100644 src/libs/libsrtp/fuzzer/corpus/81d74e228936cabbc6c47467e4640c77c5d4906f create mode 100644 src/libs/libsrtp/fuzzer/corpus/822f001dc348d448ee53ae991b94fc9c4b4570fb create mode 100644 src/libs/libsrtp/fuzzer/corpus/823dc6449bb0e35a9cbe57f4fddde5f150e0431c create mode 100644 src/libs/libsrtp/fuzzer/corpus/827264583bc9d8cbbe4459306f2955a8924a1b16 create mode 100644 src/libs/libsrtp/fuzzer/corpus/829194fd1fe674b4ef21af7c2de69dbbc5419e2b create mode 100644 src/libs/libsrtp/fuzzer/corpus/83295e9beb965d51bca434999f90b4dd3088ea90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/832ce48d3ac1c9d187e9376e203e2abf3c2bfe83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8343f308867a510c80663a1cc5d6d9f5faaa2e4f create mode 100644 src/libs/libsrtp/fuzzer/corpus/8357c65dfa723f993a7adc4435dab2e869fb6385 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8368128be7299499d47fd820a33e22ba03f0f346 create mode 100644 src/libs/libsrtp/fuzzer/corpus/836e8a86b74d983f2ebdf44ccf89aafb43be6728 create mode 100644 src/libs/libsrtp/fuzzer/corpus/838fb7515c42cc990117fc4cd9aee4e5e5902901 create mode 100644 src/libs/libsrtp/fuzzer/corpus/839bd7f3087b6ef97eb403ad8f9c50dde6113033 create mode 100644 src/libs/libsrtp/fuzzer/corpus/83aaf656c9cec31abf1df18e5901a4c1ec514d1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/83ac3bf8271f06e6990d9712e32c62c014c91aad create mode 100644 src/libs/libsrtp/fuzzer/corpus/83c2c8e8d2dab3587107b564be2bfdf77239439e create mode 100644 src/libs/libsrtp/fuzzer/corpus/83ceb37e0911c1ea340cfe06aae96c9792c0ee2d create mode 100644 src/libs/libsrtp/fuzzer/corpus/83ff6a97a76379dbc705cb2a649dcafd3ec5800e create mode 100644 src/libs/libsrtp/fuzzer/corpus/84169541dea42a9ead48a05467c87e476da5a423 create mode 100644 src/libs/libsrtp/fuzzer/corpus/84269ef122300aff914d44e874fd289d71952537 create mode 100644 src/libs/libsrtp/fuzzer/corpus/843ad218f56b25a9a65e912c5ae5087c051820ec create mode 100644 src/libs/libsrtp/fuzzer/corpus/843c395d632a4a7d2ef57d3cdd2f56d26f7e4f99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/84697aacc5b9d17211b3209c1d2a1ffccf66104d create mode 100644 src/libs/libsrtp/fuzzer/corpus/84aa29d9f1c07ed0fce2749b0d6c3ad91d091d72 create mode 100644 src/libs/libsrtp/fuzzer/corpus/84c3b7c1bed5e7bec706d1bc9491ec333cdc14cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/84d9ee97e80792f722cf3752a050e357a2c73fd9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/84e0972b0da768a23fd43d01322ec552c1635ad4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/84e1fe67392229f6c566803ba88cd65c05315735 create mode 100644 src/libs/libsrtp/fuzzer/corpus/84f8b5f5b9c5a7c34a40f4eabb333f2d908ee678 create mode 100644 src/libs/libsrtp/fuzzer/corpus/850557e4b78c6bb31c67e51bfae6235bfcc9b2f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/851beeb3295d1997cadcd226d8ae05c9294df9f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/852612e944281ec8139573813dab235aeb6a6cc9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/85330683dc886c9529e975e47ce499ca5ea93d04 create mode 100644 src/libs/libsrtp/fuzzer/corpus/853bee8034cdaf5508442392fd1ddba978ce277a create mode 100644 src/libs/libsrtp/fuzzer/corpus/856f290a4e613976f50b0c1ae9449cdf60964110 create mode 100644 src/libs/libsrtp/fuzzer/corpus/85c2117ab7b9c18f6e21eb42bb2d5ab936fa5c3e create mode 100644 src/libs/libsrtp/fuzzer/corpus/85c6633f1c4be30a33c84fba0a4d974478968950 create mode 100644 src/libs/libsrtp/fuzzer/corpus/85cd491db9b3e30f8de137fe417210e443c7ed8a create mode 100644 src/libs/libsrtp/fuzzer/corpus/85e378555ca5b283f7d2e9472dc330d98ad3cd52 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8600f7f2793a98d56e3d0329772f462d9aaa810e create mode 100644 src/libs/libsrtp/fuzzer/corpus/8602854c2537d10d71f0a1feed9a49976d0a17bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/8602c8f5c2f3e050d9825b2661ebeb90aca5520b create mode 100644 src/libs/libsrtp/fuzzer/corpus/8621400cde2f424219d1db947833e6d78b96a750 create mode 100644 src/libs/libsrtp/fuzzer/corpus/863d5803a1d1672d1a49af867acac045599e2a57 create mode 100644 src/libs/libsrtp/fuzzer/corpus/86809a69ff6837e8ed7a777aa8712f6ce4814cc4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8693ddb1919f7d855269474d7dd4d6c2d62f2c6d create mode 100644 src/libs/libsrtp/fuzzer/corpus/869c67e392cec89e4385c74586f2745ac73227d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/86c231d06de82c7b9323381c890c08781cffc920 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8709e064a75e666341bd138cf01ea00c2baa8838 create mode 100644 src/libs/libsrtp/fuzzer/corpus/870ab117cdacd7c533576194ec83ae4c4f021361 create mode 100644 src/libs/libsrtp/fuzzer/corpus/871a393a6a16621389065074177176ebe605e38d create mode 100644 src/libs/libsrtp/fuzzer/corpus/871e89cad3d9428e4f9b434ee977fd6115bff4be create mode 100644 src/libs/libsrtp/fuzzer/corpus/87312761190a6d7c95d9ca38bda0312334b0be9b create mode 100644 src/libs/libsrtp/fuzzer/corpus/875acf905688e648da8ef9cd69730dbbd54e86b7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/876a402c981413c92b7a2b69cec555405f31d5f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/876a8dc97ae0d995214c8c724e3f4938a6fe084f create mode 100644 src/libs/libsrtp/fuzzer/corpus/87776d60387b3ce817199d4cd87f77e30bc9a0ce create mode 100644 src/libs/libsrtp/fuzzer/corpus/879f9560171860c1ebae7be6cebfc308ca8e1c17 create mode 100644 src/libs/libsrtp/fuzzer/corpus/87a0d7637479e620efe963d2dec085916fa810fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/8836f451454ff9741877b0f856c42e2dabb0ee0e create mode 100644 src/libs/libsrtp/fuzzer/corpus/8871564ba0add28be21ffe008f11ce91fd38147a create mode 100644 src/libs/libsrtp/fuzzer/corpus/887fd53302917e27b02fa2cc85ec35b9b5d43041 create mode 100644 src/libs/libsrtp/fuzzer/corpus/889d9c11977466f0952cf51d726930eaf880f2c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/88e331430bbae0eea37b9686b20fb37be874217d create mode 100644 src/libs/libsrtp/fuzzer/corpus/88f97414425e6fb2ea409a72141e68bca93fd56d create mode 100644 src/libs/libsrtp/fuzzer/corpus/890c7d9b9112b86ea26820718f2f8540f14c4132 create mode 100644 src/libs/libsrtp/fuzzer/corpus/892c436a5218d714f0b772ba6011cfcd0b77706d create mode 100644 src/libs/libsrtp/fuzzer/corpus/8939a893b12c5a792930d7d8c353408314182391 create mode 100644 src/libs/libsrtp/fuzzer/corpus/89431df7a1e1f0b7a8f584f0384bdc2a7a511cc4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/898aac0c810f2e2c74f78936540260561fe8b3e4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/89b094c57c741e7b84cb15e900085165b6a54201 create mode 100644 src/libs/libsrtp/fuzzer/corpus/89e3d570a222c18bc945408b71bd3f08e143c063 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a0b3eccb0767fabc3f46ba7bf63e31ccce3b02b create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a0f401f798207db6c8b01913220e4ff4049cc5e create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a22188c29211f7e6906e37f43c4460e2812a832 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a33417e455ee41b684d90e2d32cf8806e629fa5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a5b85c717c89c65dc63fac75b01781c118c7c12 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a71421daf13eacddcb0d8cfd490703916557780 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a7364f68bda9f6fa37d7cd945f89308f2220c6c create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a7bfff5d38f3462e876e712d0818e4f009e0d53 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8a8e8718644eaec23c0c27e2a7737fde55df8b1b create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ac69ec669a6cd0f8d68c441915970591f1c8939 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8acfcf0fe8b00098ddb6a27a2e096b0e06b47e51 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ad02a0ed4b7ba475c9ab4ec3e763dd476060fc8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ad93fd0d1962574b6c11eabbd2f10926f8fe761 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ae43351f05a1f4f7c780ba1b20efba0f094923c create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ae8aaf59850fb7d967e8eba8e3eb0e5d4acbc2b create mode 100644 src/libs/libsrtp/fuzzer/corpus/8af7b82ad27d65e0cde8609e40578070b3e29982 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8b226f84c1593a323c1a1387b5f76ce2d27053df create mode 100644 src/libs/libsrtp/fuzzer/corpus/8b2e0dda68c540ab2670f0a4a03265b8e5789902 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8b46dc3a74c1f00ec2d797d4725bf77bb26b8618 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8b9dc8086e6803264f339153d8d501cf0b304fd9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ba0b96015902ac14f3a2066f517302fe28c6edf create mode 100644 src/libs/libsrtp/fuzzer/corpus/8bb5913391d907b3829e475a0d982e98217230fe create mode 100644 src/libs/libsrtp/fuzzer/corpus/8bda61d0d497216bde6d2865b7f8c26df0702954 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8bed6f305898ddcfaf14ac4c4d3febb1b69e56dc create mode 100644 src/libs/libsrtp/fuzzer/corpus/8c4753a130f6268258ac1cc39108b843a4210df4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8c84bd43c113b9f1fa988796307fe5ed77b923c8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8c89e29dd1d57d7e5616a3b68d39678267df60d2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8cb003b20ad361f711a61634a1e280dcf7ca4910 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8cbe50e5868507dbfa64360ab8935689ac005f42 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ced8f7fc42421ce6d4920c62688b621fabbbf60 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8d09b8839f60d7289c31fc73a47767def27110ab create mode 100644 src/libs/libsrtp/fuzzer/corpus/8d2a81f2b79778b61e84b96ce111083b918d12b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8d37cfc4bc1b0d607e967a774712de0cfdc1d0d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8d45ad1dc43b87bd5e87ac210a13222135ee8e2f create mode 100644 src/libs/libsrtp/fuzzer/corpus/8d585e33080801d329007cdd945a1cf95e9dd1ea create mode 100644 src/libs/libsrtp/fuzzer/corpus/8d9ac5f667371272cd3044f321c02c28a42c25dc create mode 100644 src/libs/libsrtp/fuzzer/corpus/8dca3fa748a2eceaad67d32e4ec211fdb68550fc create mode 100644 src/libs/libsrtp/fuzzer/corpus/8e2d519f3841c8d5220778e40913b1a462c97b12 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8e5362552348074c79a58a7705bc8734ad7fe373 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8e640d948e1dff48c4f488d42917d957835c7795 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8e698937b5ebe1bf7aad256d8340b7ad013f2adb create mode 100644 src/libs/libsrtp/fuzzer/corpus/8e73653222f4bc524d3b5fa96221daad0ac941e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8ed44f9d26529e79c5f1ec78381d33f732e8ef17 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8edf800c03a8aad4523c3d8de48bf4599a42e6fd create mode 100644 src/libs/libsrtp/fuzzer/corpus/8efa9187d6a0e27a24408e91b68606fa6b459f0e create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f01b61dcb5c337b995dcf0e5764f34e5de119aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f1a55d99de3071ae0f6e59100450ec5b692a447 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f331152d08cc196dec4a1d056788d4de085eaee create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f36ff88bf4b338ab4947e4c0239f9eb3575fcf9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f39339cc14bd9193514c410014081bfa344c808 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f40d833d26571fd8c25a30163093c71b8ec14e1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f4a7f193fdcb4e8d9304a74317a9fa6921c3ffb create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f52a3721d402c54d4f3604bc1df28a1796d3f32 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f57c6744d49926eb8d6c0a36b80991c50996344 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8f8748ad3794c703d767666b91847b9747eb38c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8fbc8b089aa011ffef0a708cdc7b1d9b968e7ac4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/8fc1fc6eb61142f1f8db3972b8355b8d2351af17 create mode 100644 src/libs/libsrtp/fuzzer/corpus/902e9545496f4bd52675923b09256bdb3d285e40 create mode 100644 src/libs/libsrtp/fuzzer/corpus/904219e4f56c8e679d64389a9f16a87f876cb9cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/907c814ebe5a217c57b1532198428d001cff0bf8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90839e2f2bc032d0e688d04d06e00da1e5b6769b create mode 100644 src/libs/libsrtp/fuzzer/corpus/909df934174cd3496294e668eca5b1ba6dd22e60 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90bb6fc426b1324848a639c7bb414e5d14356550 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90c7cb30b59b02b23cff45739cbc964fdff4b3f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90d4c2d95d25aa1e67ab78f1553148de43f42ceb create mode 100644 src/libs/libsrtp/fuzzer/corpus/90dfac881acb62787fd9479f8c2c90aca0979866 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90f2d8c6a973a3044bb3d9f7b2b505fe8b735467 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90fd5c59f63f6404bdeec3571a7c22dd471f2a76 create mode 100644 src/libs/libsrtp/fuzzer/corpus/90ffd04a9547fd44b574e2346764605436b494dd create mode 100644 src/libs/libsrtp/fuzzer/corpus/910bb3ca72a76508a0a036830f0b0678d1ce8cf6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9113dc61fd586fcacaae9ed3cf37ea084ece8990 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9114620e87fa084243157b4f03684e2abb72ea0b create mode 100644 src/libs/libsrtp/fuzzer/corpus/91267d27e463ef628be63cad43b38a6243eebe90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/913d43ae64592c8b4c55bccbfcaf1e34d9b6c78c create mode 100644 src/libs/libsrtp/fuzzer/corpus/9148b45122d0ecadf51458de33998ff27ce96e55 create mode 100644 src/libs/libsrtp/fuzzer/corpus/914ff5d72f2c35c5dd5246f56ceb26f135043ca7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9166dd5c71910bc2a5c88c6b610c822518f47b49 create mode 100644 src/libs/libsrtp/fuzzer/corpus/91923f189c6813b46baa52a30f72bea9dab4cec3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/91a8e37b3a1f44bda6ac409980e6a2d4a9156a11 create mode 100644 src/libs/libsrtp/fuzzer/corpus/91f7985c3e6d3d8a17580a9d293d643e52d5c534 create mode 100644 src/libs/libsrtp/fuzzer/corpus/92148259f949540128b36486bcb9e6d3ab8ec124 create mode 100644 src/libs/libsrtp/fuzzer/corpus/923ceaee40c82c9fa5491ba85b4972b8582a2c69 create mode 100644 src/libs/libsrtp/fuzzer/corpus/927caaad37be4c7c3ff69eaf3fccea4a0a2c3c6e create mode 100644 src/libs/libsrtp/fuzzer/corpus/928aed4be9c6335cfdec4e04a3644d36b162e59f create mode 100644 src/libs/libsrtp/fuzzer/corpus/928e5ea8a82bd17015cb1b2b828dccbae05ed81c create mode 100644 src/libs/libsrtp/fuzzer/corpus/92d49fa60a0535d9a2993d81e71bcd893b96744d create mode 100644 src/libs/libsrtp/fuzzer/corpus/92e4b808ccd7718fa4494efe2803822b377596ea create mode 100644 src/libs/libsrtp/fuzzer/corpus/92e6fca9bb5223fecf157bc2fda2a3b02181b3e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/932359778a7ddaf719fc878a4e23093e142948c6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/933b97f21c81d68e32857ca64df28cd97a04077a create mode 100644 src/libs/libsrtp/fuzzer/corpus/93608c9cd306ea0818dedb1e1fd86a39952123ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/938900bbaf4a1a1eec75d16ec3e4bc45256de6cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/93d56d539af6ac5a69e695ad565ea6d02da157cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/93fa04a15a203225ace622afffd955ef2c50d46c create mode 100644 src/libs/libsrtp/fuzzer/corpus/94296913d11ce753fe6ed95171410cf5f8d01c36 create mode 100644 src/libs/libsrtp/fuzzer/corpus/94368c9131dd1ed8dd79e8ff7ca98aa40b30d7db create mode 100644 src/libs/libsrtp/fuzzer/corpus/943e790a9ef18ecae5661080ded421c3da4e967a create mode 100644 src/libs/libsrtp/fuzzer/corpus/945b9a12a1b293ecd3af0b4bc4ad11a81183d2e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9468850301ce9170aa86986ba4f10461b711349e create mode 100644 src/libs/libsrtp/fuzzer/corpus/94b34427be5d7c62ee764559406a0c561184b660 create mode 100644 src/libs/libsrtp/fuzzer/corpus/94c526d076b812e768ba933ef1e373c4ec0912d7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/94d124dbb6c5c418fd5edd09927de3fd3952c448 create mode 100644 src/libs/libsrtp/fuzzer/corpus/94e3f46d03542cb08030511441a7b0e1502c9336 create mode 100644 src/libs/libsrtp/fuzzer/corpus/94ff9bd5bb4dfb4d074c115e0201367247e6f40f create mode 100644 src/libs/libsrtp/fuzzer/corpus/952418b86b69c6c5955480dbf4932965c0edaf21 create mode 100644 src/libs/libsrtp/fuzzer/corpus/954da74a4362ac8b00ea38a1cbb5d0c84e92e64a create mode 100644 src/libs/libsrtp/fuzzer/corpus/958931c0af4fde12af91b2b4b2cf33dd3ea37061 create mode 100644 src/libs/libsrtp/fuzzer/corpus/95a1f4c7cc112c88aac967b6feba84d9d8ce8013 create mode 100644 src/libs/libsrtp/fuzzer/corpus/95cba40a6ad0d1f046081552fb1ba7561580de24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/95eca34f27a6a51ef5ddbd45e2181c4646033e35 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9650a9885e2b5ff63e106e33d261979961ddbdce create mode 100644 src/libs/libsrtp/fuzzer/corpus/9650fd22b68938e9c792ce6db89ec95724183c1f create mode 100644 src/libs/libsrtp/fuzzer/corpus/96530dca593097b70c65d339e3eec7de1579307c create mode 100644 src/libs/libsrtp/fuzzer/corpus/9660c0988d5dd571f139b60462e2c3b6b8a99201 create mode 100644 src/libs/libsrtp/fuzzer/corpus/967e23f677b127242edf6e398318c7b0be5d2e1c create mode 100644 src/libs/libsrtp/fuzzer/corpus/96918754c1d8476b006388739968dce90720c2c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/96b406c9132c08286fba4002d7d26142171f44cb create mode 100644 src/libs/libsrtp/fuzzer/corpus/96d5767c72ec78d6fa16c097d95559b0b449e135 create mode 100644 src/libs/libsrtp/fuzzer/corpus/96dac3f664df069f373a5f02afeed805f8d00918 create mode 100644 src/libs/libsrtp/fuzzer/corpus/96e16ca69c68c6812c34b3f7d87381b4f5589361 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9701eac27e38b4d198e26228113ffdc76fdea589 create mode 100644 src/libs/libsrtp/fuzzer/corpus/971b1560ab92e7840aff0034b89833ce4e62d8ca create mode 100644 src/libs/libsrtp/fuzzer/corpus/971ec195d5011a172ec57c10863ecec6d036628f create mode 100644 src/libs/libsrtp/fuzzer/corpus/97218a0b259b20d3e0777ec5193146c0f20c150e create mode 100644 src/libs/libsrtp/fuzzer/corpus/972bfb71e17aab591a53713624b9d38513800f2e create mode 100644 src/libs/libsrtp/fuzzer/corpus/97641203c7593c4baffb35a61f7054a9b0049a4f create mode 100644 src/libs/libsrtp/fuzzer/corpus/977ee7319f66d5d4da2d9a37845a9d366fd752be create mode 100644 src/libs/libsrtp/fuzzer/corpus/977fd46f27620198fe8eeb07ae07d6fb805e3129 create mode 100644 src/libs/libsrtp/fuzzer/corpus/977ff6e02707adeff86521e71edb8ff32a76e30d create mode 100644 src/libs/libsrtp/fuzzer/corpus/97fb5b3c5b5867374bf6f4200aaf675b1f053e54 create mode 100644 src/libs/libsrtp/fuzzer/corpus/980b39be6d42e294ab54a02cd96b8325ffc4f982 create mode 100644 src/libs/libsrtp/fuzzer/corpus/981057bbd4eeb0d24e7562feaf61e625c6dc88bd create mode 100644 src/libs/libsrtp/fuzzer/corpus/981a6a5600069bdf40665c67bdec186b2df55a83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/982f865b15e081a25649c841cb03e95a1e49b09b create mode 100644 src/libs/libsrtp/fuzzer/corpus/985593bc6f792360ce8b8a4b5a16346ec29c6a38 create mode 100644 src/libs/libsrtp/fuzzer/corpus/985cfb783ed2c8a6a3e385d2669d7bab4201e2b4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/98693d04569d34ebca27f95425a38bbe1088eca7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/986fc5a28a4867a4dcb6bd2911228e087f53b391 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9872c895dbfff515d9dcc12a6815f0b7a57f9bd9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/98b5ce00c98db04f0c25ba401ce1c3473665c3d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/98f8bf5a578768c9687ac66ced2222ce989c575a create mode 100644 src/libs/libsrtp/fuzzer/corpus/9913741d1fc0599e9bc040e743b49d0910962b0e create mode 100644 src/libs/libsrtp/fuzzer/corpus/99528249973de765e4650895580d15355443e67f create mode 100644 src/libs/libsrtp/fuzzer/corpus/996f90eef9fbe51b578675b3907b3793d0ca64f6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/998b724972d21f411214771394c08a09a8e7bb79 create mode 100644 src/libs/libsrtp/fuzzer/corpus/99ad7dcb5a371cf8285e48d7cdf6749027fea3d4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/99c020478bb68808a6c4d3757bfdddbefafd20ae create mode 100644 src/libs/libsrtp/fuzzer/corpus/99f3870ed7b619a95946157e6ff86c3d466e3935 create mode 100644 src/libs/libsrtp/fuzzer/corpus/99f6ef0fa50cfb4f1642f758c52820a68c964496 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9a6ed1be0606889e3124faf77f9f26821a308056 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9a93158cd5cdaf8d19cbf54ef8fb451a53967339 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9aaacdd034a4b6720322545ce68672a4ca32061c create mode 100644 src/libs/libsrtp/fuzzer/corpus/9aad5607940370f7224c7aac753a22495984a9d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9abbd6f61f12dac2f0daaca291a329b8a2991d82 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9aeac0b89be9a5d0175b3b7abc6bd80d3c4f1412 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b0be960b1129fcf72d2ce3e1da0fe7796e0dbd3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b17ba5112ead18f32c69d680cf1b4c686003586 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b28b7ceef627b9310f0cc35f61d78e461415797 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b30d4296c272fdd48876e4d517d8cd48e7e23c8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b4be303509d04ccded139062d1c86949f13a749 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b54cf3a3e5abac1f1798e62cf557eb53785cd71 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9b7c95b2ee72ab6347484a6679548b7671fec40d create mode 100644 src/libs/libsrtp/fuzzer/corpus/9ba8be5f01e6c59523360e246bf321707195c64e create mode 100644 src/libs/libsrtp/fuzzer/corpus/9c1e071cd40ef456c80db14ab6279191908804e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9c241260e18673e5a907fb110c8ab7578bbe82e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9c47e0548e795d9932d138becfeab778c0180a1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/9c60d94673a78e97b868eabdb3d20beafad86b7d create mode 100644 src/libs/libsrtp/fuzzer/corpus/9c78b9075fba3c55fe322becd2c14de15357ab5e create mode 100644 src/libs/libsrtp/fuzzer/corpus/9cd6dbd06c4d168f9f91f3ea3aada68e3bdcd3ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/9cec130b4190e0064c6654fdfc72e4c846f06ab3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9cfe6596628788f5442c7b6d32dddd46b2e9322f create mode 100644 src/libs/libsrtp/fuzzer/corpus/9d3f8c4341dc52765ae5568821439d79b2ff4486 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9d7bab66e6a5c032289b5bf8f41318432689f691 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9d94d57d2a876d3c974280a054f6b861e8b8ee8f create mode 100644 src/libs/libsrtp/fuzzer/corpus/9da016e1836bf58d9e01bd78b407234e8a63d5b6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9de256302dde57124d6e1a589384b22cbb6744d4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9dedc2eb341a398320cfc085a594038b9059ea06 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9e2ae70380ac19788fc7895b341bdbab163a87e8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9e30979bb21ddfdaa17bed28f606f472dff0f19e create mode 100644 src/libs/libsrtp/fuzzer/corpus/9e3ca060f2f65039dcd9e16d1ad3985ab44382b2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9e449baa1048738d81380e1c891c07dd43e1a9b2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9e5b8aa4c45e3619d85a1473229e1d66f4ad48e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9e803f57defd8e912dc797b9dbfd3aac27b9ace9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9ec2ede23b6c73d00cb2f6018b64f493dbcd8efa create mode 100644 src/libs/libsrtp/fuzzer/corpus/9ecf66a3ebd3a67fd436993d4bdb3f847daa3697 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9eee3d01b6f15e1dd4f63931031019468b3555a0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9ef41e08dee8a1199d0a13a0386c67b71667ad6b create mode 100644 src/libs/libsrtp/fuzzer/corpus/9f330d1c0863135fee70bd56c9f716d3a9bbefba create mode 100644 src/libs/libsrtp/fuzzer/corpus/9f4f5cc25f7e9f4ae4c55a52c1b1f01c70350d94 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9f52f113cf6b07f8fa43582f7a651e3b1a24082e create mode 100644 src/libs/libsrtp/fuzzer/corpus/9f59ae1a679d0db7b98247533bbdbac5025eb28a create mode 100644 src/libs/libsrtp/fuzzer/corpus/9f6ecea8ab081020ee29b0f69970cfcb1b470b23 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9f85bca93890d4ab652e0f78921590b71ad39922 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9fa9198d7ec1a0e0f29bf8e3843b4e331b2be8f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/9fb7a6049b631b7a9b00dc8156ba10c76dc234a1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a00ce6721f4e3b6c8bbde0357aa9b6ed3dcd2653 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a0402e7a7b9602d44e1da267a785de5b57a09668 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a04ec9682a046248e400ac66a09c69c968da8009 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a05f44b7ae3fe252ae56e532595ff032f2ece62e create mode 100644 src/libs/libsrtp/fuzzer/corpus/a06e5d87f23c6dabba262a6b301a425636b434ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/a0724ef9d2a467d743f996937ba3ef72225860e2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a07bec09199f97fbe68679d9ef1b3f8180084336 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a07de385038f371937bbdc041d1698a3eeeb0e3a create mode 100644 src/libs/libsrtp/fuzzer/corpus/a0a5e60ad7c50a8adce5d9a706d1990194816322 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a0b74f15cc136779c3036836d74c7f833ae9655f create mode 100644 src/libs/libsrtp/fuzzer/corpus/a124a6aea6603776b3a71cd813903d4191ec82c0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a131ab9d440a60d6eb3f77ac366d91a4589744b6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a140f3a860b94995c124e3ebe261598a20b2a390 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a17c51b2fa9f23ff210d0e89917b26fb14daf8a1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a197d714b9b79700a96df7028af09116f360ba72 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a19e0848b6ae37a8334f174eb35725df1882dc62 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a1c6ff56ff1f880f79350ecbc7612e7f69023a6c create mode 100644 src/libs/libsrtp/fuzzer/corpus/a23b0f4d2553440e151ce9cf8a24fffc6efad9c0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a252e70476c0635ccafb278f4a35fb48e8818c30 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a25e19710fcd419d19f54f0a572449a0056f9d20 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a2778495452f89e265644e0fc66964af0f7d9e60 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a2a6b6cbc125c6b928182cc5ea8aae7a20425e0d create mode 100644 src/libs/libsrtp/fuzzer/corpus/a2bdbdd72978f996e9d09afe3268c68b53b78783 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a2ec72c9750f0709b192400745be046d3da77685 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a30075c591196ff0ac86376af28a7be74de77ad1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a31e589e6dea656fd22d7d01e46d98e5ef8b28d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a34e28b15e51ee0fbc40f0386395d98fa2ad339c create mode 100644 src/libs/libsrtp/fuzzer/corpus/a3936fbf2a00ca8477e83d2a0cbb6c4e162f629e create mode 100644 src/libs/libsrtp/fuzzer/corpus/a39828749775b26453a2d58c5a786922403dafc4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a3ca6f82d249c0ab8f79ab4b58edc0b9d055d142 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a40db43a6195cce6df5ff0077c7fca1fbe016fb3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a41c29b344f7a32203f4c6fbb3341d66a76e0f8d create mode 100644 src/libs/libsrtp/fuzzer/corpus/a4431c62fb8ef0665686a78cd818282946ba9aaa create mode 100644 src/libs/libsrtp/fuzzer/corpus/a448a9d7e6765afd6d1028dec3cfca58e17b581b create mode 100644 src/libs/libsrtp/fuzzer/corpus/a46ffe0e19429417ab070f2c3ce34a6fac2c582c create mode 100644 src/libs/libsrtp/fuzzer/corpus/a472e7c34f650bfa9b6642c14d493a32c10d5492 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a4b78ac6b2d9cbb4aac5db15a808236c47c81648 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a4de7cbc3d38d08ba145a1ea7cab672a5e7839c0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a4eb99045b43365c0c07d08573ce80293e662f5b create mode 100644 src/libs/libsrtp/fuzzer/corpus/a4f64bc10c0d08f3be022aabad141a68414ff5e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a555234f5da3adddce2137190718450dba377e56 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a568ae849db9ba3c316c7c3ddb48c5f88b6b1c25 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a57bdbc6ea4669a17704ca5de70aa2b1d1b09bd4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a58164328a9db030f36a8fc7f11dccddfa1ca050 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a5a1a9ec9db8510374b7d62883154c95e13afdc1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a5b715881b7e41246bb34205acf8a99cf6ad5b15 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a5db49eeea0edb757b08e378ded563004d33fb71 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a5e72b3b078d1d8f9b12007aaaeb57bffcff2684 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a60b2c853a9e3b3be9f31a3b19d94e6dcb957e83 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a62085e1420f6bc8587fa150147d892568930aeb create mode 100644 src/libs/libsrtp/fuzzer/corpus/a63b134d68fcd412a837d7a684da1da24d3faebe create mode 100644 src/libs/libsrtp/fuzzer/corpus/a648ffd089006c76755202162341974dfa085f0b create mode 100644 src/libs/libsrtp/fuzzer/corpus/a64f2befea21affc7215b7710c8f698eff46f6f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a66e6843fa98cffdc1a61d3827b0a5e7d467e399 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a671a8bce0d19da27a479f63d662d109321d7c1c create mode 100644 src/libs/libsrtp/fuzzer/corpus/a68cfa9b49941181d0536cbe57c0ff875682be5f create mode 100644 src/libs/libsrtp/fuzzer/corpus/a68f939e75f3107545f434142bea3f77de5af2aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6af47c9d1aa96128faf909754769812a92ea2cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6b3e6680654fdbc7f8aa50dc1e200bbdacd1b86 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6b7dcfe93de48aa50ab692f9dde48659cf8bb51 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6bb1a9b10959fe53936a1fac7eb0bde4be444aa create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6e1ce7cc857d744fd47a08b8a659a0ac0a4d466 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6e33f3db52b71566c50f6eae9ccabea13071b05 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a6fca0cc59ddb4e67de9a60338c3c045f1bfaafe create mode 100644 src/libs/libsrtp/fuzzer/corpus/a72ca9cb40b29c1264df92aeae418e3172042018 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a755472a71ea22d4f9f3b0645c4da32283838008 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a7757cd87759689bd919a5da5cbafc6d7ae55753 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a7b8b53d1b04ddd9c057aca5207626def04f20f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a7bfd49bdef2d481abe0b672994dbfb5091e5043 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a7c18a6bfc5b1d6d5c2912e0925f2a604335d558 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a7cf4e1481bbc25d69cde1223d0ca1f564f804a1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a7e583fff5800704446327afa38bd746689bfbe9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a80466a2b191afca2d8a60dcbb61fd7b8b390b37 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a807bf50577e8c5083ded8e5c4d225dc05f47f6b create mode 100644 src/libs/libsrtp/fuzzer/corpus/a80b911f1542d09573307e9c8577860fa9816285 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a82e293ea52cf8fc548427fa24dd7a55c81aed0c create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8610f7c50e75bfc1ca37b56db39c3b2f9025004 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8621e272ae40c121e7fa695ed6668f237cd7892 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8762aad35c5b45be111309e719165ff48773a2a create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8790d98d8a107d592eebb5f99dee7b017fdff3b create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8aed5fafaef98a6b997478b7ed68bbbf666fba4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8c1c193e7efd801f9e0a1d910da70ee9d584437 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a8f6bfc3f182aa200bc53909b9e4764efad16802 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9085a24fb1d7300da30a5300f954e3671a52d01 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a926de9ddb04cdfb33ff1683b88f623ec67b584d create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9273ea543537deaf8dfd24f6b6f6201206b9abd create mode 100644 src/libs/libsrtp/fuzzer/corpus/a964dd60aca3045d39dbdc0c98a037593c67d8c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9980999939802d49268136d3f0a6629686b723a create mode 100644 src/libs/libsrtp/fuzzer/corpus/a99d22b39d4c8d341f3ed3ddcb6cfa6d82ff6e8c create mode 100644 src/libs/libsrtp/fuzzer/corpus/a99e5cc0ab33e44eaeab04bf5de5bfb533a4e23b create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9d704cf90f8a7ca642deb9d6a433341e0ca88cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9da33b40b2fa6670ba0e4dff941846eaf3663c0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9e37ec3b9565533fcf017f8b16736fd59b61d99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/a9f8447603bfc124119e9cdea2d8c879114e2171 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aa26685e89708e893feb311f566d4b40d18dad64 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aa3b95aac3c7d1ed8530c6683279b1831ae8a146 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aa3e480fea9bac83b7a634bbf7248d33c771cedc create mode 100644 src/libs/libsrtp/fuzzer/corpus/aa5c4d5a591e8b9252992ce55ae8d4a41405fa28 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aa7a28bb2d469bf02cdfabe01275a62b44c499f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aaa1f07d9414ea9fe7be47cd6503e8e11b30bc10 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab0f35f174d1d5ee36f7c8503ff01b29e90b62c6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab179e4cea023bd1811d3abfebeb0e15df9734a9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab44a7c3df0a5f904290ed70aa12dcb06d7f6cbc create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab77f104aa790021b9820064a863915a2b428ff8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab95629542ccb25866fa532ec2cc211c5755acb3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab95f7b5ac2973fd98c5f05485649704e3b3238b create mode 100644 src/libs/libsrtp/fuzzer/corpus/ab99877141b7d2af9892f88dd2aee0e20cd107e9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/abafd0bf8000a84106e3aaf1d5dbcc99584a939e create mode 100644 src/libs/libsrtp/fuzzer/corpus/abc9a933d36067f16a6e15a7cec665f7e3a4afa8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/abcd351e2c4acca2d217d822faf119d76df34cd5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ac1b044cdad246e47a4bea9734b7cc8a5e8b1411 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ac52ae7784ff5e407122bd10c1382ea3dc72adb3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ac573f59d8cbc7628dc70fbe607273f7b4a90e14 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ac66b21b0d6e8f86ef3e4e0acb57f277ba596b02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/acb32e7192b794c926b90d06963f95e1c0b66e72 create mode 100644 src/libs/libsrtp/fuzzer/corpus/acb606851bdac198612ac62801f7a1c73b82be27 create mode 100644 src/libs/libsrtp/fuzzer/corpus/acc711730e20e150881af343a1ab56b416056398 create mode 100644 src/libs/libsrtp/fuzzer/corpus/acf53b89ce2f08f052602c438ee2aa52b461f3a0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ad0dbd1e1da9a5830c00cddc9b803e98b423538e create mode 100644 src/libs/libsrtp/fuzzer/corpus/ad37b6ad4541ba1e70e8ed071dcf87bcdddfe80a create mode 100644 src/libs/libsrtp/fuzzer/corpus/ad4b1a1e5b1d101d805ebb7701aedde8a77b2e95 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ad576ac9cf0b654830eb06800ad44c23877ccb20 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ad83a49bd0873471b1ca7be8b42c6304c5a17c48 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ae004a2b950aa5f3a7c35c1fabbfb27f3ebacaa2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ae122e655e7f051e8bf61282ed984c9d9c9ab615 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ae9865a8b03a07140310e5b3b4ae839ec194f35f create mode 100644 src/libs/libsrtp/fuzzer/corpus/aea36ae4121c712f1492013c8abc8c2a14ba2488 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aeb959af83d479c18a5df10be115f641d739a14d create mode 100644 src/libs/libsrtp/fuzzer/corpus/aed457ce90a7906073f591e1a90899c47e40c877 create mode 100644 src/libs/libsrtp/fuzzer/corpus/aefabca803961bd5f8c8da0fe93629450c474fab create mode 100644 src/libs/libsrtp/fuzzer/corpus/af04023d6c0b94605931eb6c898a5decd4095d41 create mode 100644 src/libs/libsrtp/fuzzer/corpus/af13d6384d400e9ea79d5180be68bdab81b28006 create mode 100644 src/libs/libsrtp/fuzzer/corpus/af14df49d0daf61bfb099627cc0e03c0198afb97 create mode 100644 src/libs/libsrtp/fuzzer/corpus/af160ab09726a432f0cd0b26bbd35d7668a5d2be create mode 100644 src/libs/libsrtp/fuzzer/corpus/af5cedd5aee77a244f0bfd53e11e16de96916525 create mode 100644 src/libs/libsrtp/fuzzer/corpus/af620437941a7d0844db040b95e9d96ef23236cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/af8d61c41eb03f751c7a4cdf854472dae2f1d144 create mode 100644 src/libs/libsrtp/fuzzer/corpus/affac4eaed8393429b7f04d63842aa37490e87fe create mode 100644 src/libs/libsrtp/fuzzer/corpus/affe9b29aa183c3225409684ae7af7593fba56c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b022290019b3aed4b21d1788d75eb3ed38d8642e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b028acef0ec9253f6642ade799b41cd55e1a39bc create mode 100644 src/libs/libsrtp/fuzzer/corpus/b02e208540bcf9a8d2c32ae51640c9adf645e284 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b038fbb7453c449f1c944d66f7d4ec4481c9b645 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b0542cd481de90f8dccab5ee9ac3bb38b8c237e7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b0a3c32657f342f9d89ab03aac57517202b71a0f create mode 100644 src/libs/libsrtp/fuzzer/corpus/b0a70264a9c59cbca4f87ce3938def92b0434763 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b0fa5d53ba8dd1aaf3b86c52c46eb4e8690aa5df create mode 100644 src/libs/libsrtp/fuzzer/corpus/b10f95e1644851b913a60078c8cb34a3b0b8e27f create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1125b0a2c6face1f55a14a2cb75d2e8f188ba4f create mode 100644 src/libs/libsrtp/fuzzer/corpus/b12e52a882f814bfe59003345091e01753cf5ee2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1652b614cf0beaa3e36f67925b430c8dd15b49c create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1b72da7f573b84560265a560b936d2064774bb9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1c2915aec9478032a8bc6563a575ede43894f61 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1f12b4bd20fab90bae94bebb056697ca05a5b6c create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1f1b196ad277248bd22e963655405cfeffd5952 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b1f58f240f4a90d9c1f2c6da77e4368358fa226a create mode 100644 src/libs/libsrtp/fuzzer/corpus/b23e509660302582884606a0bc8be9a4768f804e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b291c888b73545b92980e02a535be54e949e389d create mode 100644 src/libs/libsrtp/fuzzer/corpus/b327968a2a9ee61ecfe4e1db00c2ae77e9bfd6c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b33fd53eaa2d1a2352f898f378fe364f621b5baf create mode 100644 src/libs/libsrtp/fuzzer/corpus/b3625fa9028a46535dd1a49acd1b70e752b0780e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b36336d1d29dd3ff1cef4b6784e3631a5f555b8d create mode 100644 src/libs/libsrtp/fuzzer/corpus/b36abefba8e582309e15b81222eec2444aa5f969 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b3c38cdc5412279d62511330e04a00ad95dc1a93 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b3cba0ac0c13bf7ee873e11343bb0c9920d9615b create mode 100644 src/libs/libsrtp/fuzzer/corpus/b3e1785e7dca08bf2757feebb9a2648f29a3a1da create mode 100644 src/libs/libsrtp/fuzzer/corpus/b40035ce3c4a82585110a0e4773a275495c560d0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b41513e38a40c11ae772fb7a1dc46849306fa929 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b440c4a8e9536d283137d567fc89cdb3920dc209 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b447fd8e1f131f7cd3f82e8703a5ad3dddccf205 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b475e35ef68932ef1a70e67488b576714fc073ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/b47b8724900dd415fa9201a7b3b2720147a0ba5b create mode 100644 src/libs/libsrtp/fuzzer/corpus/b48701709424c09e9c262b0367a66718df647b80 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b498d0f6ce383ab6aa52d7b786419dd839747bd9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b4bbf596493692f306c888391e41aaeb59d3e417 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b4d490f1f29780eee91544d7451a5c977e0acb90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b4eb663685b5a179cffe6a121849b1f06d102f3e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b4ed8fb5213913d7dcf0e5a72a3c1e2ab0f635f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b58033dc578bbf699bbf4c0dfc07678b08c76783 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b581d89809a1ebaedc42ab614a61d3cbd40c5aaa create mode 100644 src/libs/libsrtp/fuzzer/corpus/b583162b28fa627f80ed2d06cfd4eb1acef39541 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b598725c815f06686e3c8690697f0ff201d0b57c create mode 100644 src/libs/libsrtp/fuzzer/corpus/b6039be1a02771294eb95a5982883ae855433a2a create mode 100644 src/libs/libsrtp/fuzzer/corpus/b641d3fcf623bdd676f97a8833e82992a4743778 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b66b945d4a1b8d6dc719ed083e4f95754d83c31a create mode 100644 src/libs/libsrtp/fuzzer/corpus/b6b6ebbb24ef7c3ecd1cd4f706c1cafbe710c9b3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b6cb886ee698fcd534ab3da6654ef579547b8c11 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b6d8a56fc5e82c823b9d53b45f08787134d67dc7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b6e96fb3fcc73bf1a984f147a3fd7082ee62d5de create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7001265e0587a7acc0278f748a87b5912021a63 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b72fbdd680d25a8f3a19798abc0348698d0cd3c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b745983a72ce95060aa62d8e5209a4681f3e127c create mode 100644 src/libs/libsrtp/fuzzer/corpus/b74cbd5188f5dba946b826ce65c36119fae3f266 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b74f3d88c2ba867d41dd6f3f36529933eb2dc0b9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b75b3aa437555a7e6f6ece21981361287fc666bb create mode 100644 src/libs/libsrtp/fuzzer/corpus/b75bcc4549e2de797d41bcb716295e20f2dc4caf create mode 100644 src/libs/libsrtp/fuzzer/corpus/b771cc23ceac245c40b5e7dc3c63f7dc1b350739 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7866740d2712c92b722e0f3cfa74300c48c5b5e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7960b8fe4c1db84b2e0c86cb95c93c1e414b6c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7b591c4c581bacff52f9fd9bf7304eac4d1f748 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7b7c408a7166f903e9cc756f4920f79b426381e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7bc2764cebdf51b913de3bc221f9c08373f5966 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b7f9e12ba48198f6312c7789e493c41c0be299c9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b850ba1387ac36eb58c4a42135157b46d1529d9d create mode 100644 src/libs/libsrtp/fuzzer/corpus/b88f6fb5473a09c4d7fa4657b606131e8dd21715 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b8942cdf264fcfbb26c059e194bad0ee81ba32da create mode 100644 src/libs/libsrtp/fuzzer/corpus/b8eeb4cce737fd22fd8a6fadd6d0b085d3a6b941 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b9050443cf8610e1ed7f893bdfd81a22eed05e6a create mode 100644 src/libs/libsrtp/fuzzer/corpus/b932bb2aa2598878de6786c90bd1f9199290a148 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b93694a168b6db389856a8569a80629242d56b95 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b941c8a8a0296a082a8c2c33c3c93735d486fdb4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b950473dc074b0a1d5e041ef84298cead70f06f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b95ae04faa88926bbce91e0a0d6475125e7f884e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b98b9e3109fd96e1a933fc185b47555b162f6b44 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b995acb3754bfd20497513ef1b190331ea73e224 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b99f45d03362f3fd9a8f54f6bbdbd0d5730dfc1c create mode 100644 src/libs/libsrtp/fuzzer/corpus/b99fbcf533ec1a09f6e3134adb59c101e8351c93 create mode 100644 src/libs/libsrtp/fuzzer/corpus/b9aee39de19dc1039a82aeebb5ba0813a01f4c9e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b9caaa394e159a3b3bb10e17a1dd43430d01b97e create mode 100644 src/libs/libsrtp/fuzzer/corpus/b9db8acd5cb7aab7e5abe50fc881cc8aaacf37ec create mode 100644 src/libs/libsrtp/fuzzer/corpus/b9e69922a79d61b300e659da5d2e2e1a14f4cedd create mode 100644 src/libs/libsrtp/fuzzer/corpus/b9ee4302c1793f9e890da1206f9a3be32a961588 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ba2d203e7be4e0c06ded8538ebe05a2733d53a46 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ba3a8325a6ba14ad6fae61f78f368e627cdcaafe create mode 100644 src/libs/libsrtp/fuzzer/corpus/ba5715e84f3f2f69474df91f82a182e964797a06 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ba81531b7f4f7e40b5da85eaa0e5562d3e8022c5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ba9a7f3948610b9eb91b70b69ac393854580dfa5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/baa3c3de1e52d0af2e5d0a48875732b189c63698 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bacce5ae9090baa05828db5575c8e133fe7fb8b5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/badf603f73835f42dfcebf1746493e20f5873b90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bae520b513fd18dd19647b877cc04cc5ca3cbbe6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/baf43a9588c00adc1f4ff20422836f123a82aad5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bb12542fbbcba0a6f45bd83fb468eb67f5c3a068 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bb5421891c0fe63fc68cc0c5b10b38964b648621 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bb8d8660035858ac33272a3ebca5ec75d1ce4152 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bb94b690309f0e51f458dd695f6a8860e9df379a create mode 100644 src/libs/libsrtp/fuzzer/corpus/bb97088074b584944d0c9acced60172d4adfc4e5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bb9ce42c48c7bc07fb00585fb7a4e93827b0c561 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bbbd45af44d2e41cd220e37483aefef6b2f52960 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bbd426d0bccdb69e46a7483e5615cb4ab94d650d create mode 100644 src/libs/libsrtp/fuzzer/corpus/bc0ebc36e28b0f0c688902040f8e1ed8b2abd811 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bc39a920a38aa8b64e7a685f27b79506ad0d23f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bc4952d872662fbc291a277ba13ae22d4ace930d create mode 100644 src/libs/libsrtp/fuzzer/corpus/bc7826d580d440283dff429ac9c9905718bf75d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bc9426282e32313a9cd0a3ece6cc715a5ffd06ff create mode 100644 src/libs/libsrtp/fuzzer/corpus/bc9cd7287ae59ba22c63b51218a0a91ae908838a create mode 100644 src/libs/libsrtp/fuzzer/corpus/bd5ab3828cbac216f5d83280d9789cf4769ad8ff create mode 100644 src/libs/libsrtp/fuzzer/corpus/bd5e1582204b02899c6d0dc7cf0826d0bb724b3c create mode 100644 src/libs/libsrtp/fuzzer/corpus/bd635e6d7c9ebc629376a62e6af1aa0148afc566 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bd72c459d5a0efe7e82bfe4f1d32aca6687f2fe5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bd9e7f46e6c5b1142ec9c009e5a83b523215e22d create mode 100644 src/libs/libsrtp/fuzzer/corpus/bdea3acc726e3bd6d974fefb878197d5bd7a5485 create mode 100644 src/libs/libsrtp/fuzzer/corpus/be09590cc41daae7ef0277a76c20bc4fd8b36a54 create mode 100644 src/libs/libsrtp/fuzzer/corpus/be23a59a45fe126b642362c68298fc63aaf13bf9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/be2699f198d68a817d9b05fa1db35cac7714a5ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/be2d7751cc20fec3f4e6ae46fc83ab4e32638298 create mode 100644 src/libs/libsrtp/fuzzer/corpus/be5f64f7cf49e8529d9dfbdb32bc4b8a54c11ee5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bead7fdb23ee992cf34ec618b7056d1be31eaddb create mode 100644 src/libs/libsrtp/fuzzer/corpus/beaf8e60ed55818f340fde040a81c00334546ff9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bee09d5ddacce66a5d55c99d6dcd7166649391c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf25eda33a2717edffe85232d873613e4142aa64 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf28d3c66562b717b60601e68e7fd8b4f266e528 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf4ca10ebc1e9daac0585d49f16c632d5dadb515 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf5c0891eaa757f14ffcd5977168d814e9e18c06 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf6a832403a22548ac588dbf7cd340455f26b4cd create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf9a9a089dc3155f5bd73ecb3842a8c5a4e89628 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bf9bdc5e37e1191c1006cc17edb9c2491e136797 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bfba791d6de2cb64a2fa5f88adc0b929f943747a create mode 100644 src/libs/libsrtp/fuzzer/corpus/bfcd9d6c1d8af57796c496e7474d230683d57aa0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/bfe684ae2803f6dbfabf51657fb81687ec0af29e create mode 100644 src/libs/libsrtp/fuzzer/corpus/bfe71e8415c95c9697989f224bc1f7ab94f4316a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c036de3b12eebd08719e83ba015d7fc81e6c956a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c07f0071eb62d96cd63402853d07efb5b655fd0a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c09d173f9ae068a42da028e60732bf0a70fe0fbd create mode 100644 src/libs/libsrtp/fuzzer/corpus/c0f465088ec83d7c198850e7fe238beff5758588 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1069a65f457437affe1cd0900ca119211db2feb create mode 100644 src/libs/libsrtp/fuzzer/corpus/c11237425901fcc25154dedff96ffed3192ceadf create mode 100644 src/libs/libsrtp/fuzzer/corpus/c12b91ee3a68f8296535c561809d067cc09527e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1411b630bd7e3aa596b3a40e4e946abc4af88c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c16d3c8afbc3ca83624683d8c7e1492b5c907a31 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1e3907ee03b769749f19ab00cb28bf33e99ab09 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1e89aa3e73fe909f61617bdbf43763597ad6fc3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1eb459cd03d0a4d03e31106551c69ca97124b55 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1f3859559112f6c32c58d32232fddfdb526b922 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c1f52c21de300b53a2e0c8d9d6545e0905698fa1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c203db055a500681a923313c2b92bc79e575526f create mode 100644 src/libs/libsrtp/fuzzer/corpus/c22794f9f42f6280db779bc63a9ebe9c43bbce05 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2759a503427d4ffd8e1723afe56d2bdba100dc4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c278dfba9bfd8a3e0495a5f72e350174e1192888 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c285127a1a0b809aa3102e31a09c62c42c0d7631 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c28e7cd1d2bb18d686da20b8f435c76a2e673a26 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c28f4fed438bfafe7306966c35cb77a6bab3f91b create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2992980283a52be70113fb7f1277f9e2737f7d2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2a3722505d7fc1e1743e3b8c3da664b9e4ffdfa create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2b7aa8e50612547e24dae560cb4cfc8653e64e8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2cea58f238f9bf8c11a992a370998bd463e00b6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2daed9a16520ef15a7fea26a5281386fac26c09 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c2eeeecf81dc9b7041495009b1211f6a3cf63300 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c320ebce64164499243bcadf7d3fbdc048658e37 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c3502c0c149c2d815caeb5887b505a00bd8cc3e1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c35db0e03cf5ceb983298ecf8e7f43f651b4b058 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c373e20971c91af94c6ad258f0261fc21037a3af create mode 100644 src/libs/libsrtp/fuzzer/corpus/c37fdda0a01bc6bdb2850a750eee373338e5c40c create mode 100644 src/libs/libsrtp/fuzzer/corpus/c39d08faf1a141c5c7a3cb2aefa623339b2579b8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c39f87156cfc35ed4440508caa05c4c3f956bc59 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c3cca12bb9769a8a49bda58e3f111a7061fedb3c create mode 100644 src/libs/libsrtp/fuzzer/corpus/c3f12d7f35d7d17a1c105547ed8800ff4a769490 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c406d3bb7e6b5ad45ea5ecf4dadfec39b6ab83db create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4968ca50dce7eafd827b705c86a3c8c243c31d9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4a194108fb7ab614960baa527ee628537d95c9c create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4b037bf36b8a8e329e1076545f13ccc01f26cce create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4c6a62291252abcd228ce97cbe438eea026ea4c create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4c9912ea6b2374c13c0ace6976f2f5f699ffc43 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4cc17ce9208d1f2d50d74e06fc26da26c948a80 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4e3b28572a3afa7a379f3267cdab64561948efc create mode 100644 src/libs/libsrtp/fuzzer/corpus/c4f4c8c8a72b8786f036463efbea8cf93362402a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c56253ae481518c118362e32bacb8e589583ed45 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c5664724fffb21fe4aaedcc2f4cccb7c734baf74 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c56be33619e05333c72cd6a96122f506495baa3a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c5be0bd184229bcdc209d38b7717c203d540b609 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c5c5c5329c41fc7d9e10875ae471e95a1d25000b create mode 100644 src/libs/libsrtp/fuzzer/corpus/c5dadfb7466af003759276ad3a4db2a31bd3a1f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c5e792503fa363e620df0ff1d53c1047a89a7854 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6092d37ed02088b0cf87d5a056aeff5f73afe60 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c612595448af7cbec999dea23dfc8027c85f5a24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c624a46979fc72671616c7a7a3b0af43a85b2d81 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6274846e4c681ba7c78592e01ce0491d486f286 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c654b0d1ff308db5f6fbac10f1dbeb4a8b07ae8c create mode 100644 src/libs/libsrtp/fuzzer/corpus/c65b95b4755c50f2cada1929690bece4316280e8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c65d8988d02b26bc78043e664687663fbd060f7d create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6711df234f649cdf74052665e6ab184f3bbe151 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c67285c5c3b640ae2064eb61661049d8b178660b create mode 100644 src/libs/libsrtp/fuzzer/corpus/c691cddd4168a6eb89aa72a640dac1458970518e create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6996110092ddf633c57a9da68804f1fb0253ba7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c69be3fa3872e7cc34ea0cb72fc18c88a811a9c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6a571ce5c35b68b82a4c6767fc11a9d49154a2d create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6b069d2342f2357cc7f61532e8a3560a6723204 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6c9c1f975551eeaab2ff3e5519f723a75494078 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c6e510c7b2921decc4755387eb6ca4fcfdaf07f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c706d9f94f4e3d4b1c1e9c98962ed77d6537c54d create mode 100644 src/libs/libsrtp/fuzzer/corpus/c70a79cd3fdc7fee7c7b2d96b65a4678e29fa657 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c72a2338bf5493bf10a0047f00aea94d7a10dcd0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c72abe9f4196721dcb62adf662bb7df1b99023a3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c7416348fec1d098c05d0c807753cb378433d70d create mode 100644 src/libs/libsrtp/fuzzer/corpus/c74fce558990731d1b6c4bc112d124e4b4be76b4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c758ec9fa65a245017a4cbb6e0b81b05d62920cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/c7706f33b8ea531644b84641cc9f830572b4df89 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c778f53511dcd17e8bf0d4d445a399301e33de92 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c78cfaf4ce942c3806ee9e47c1ba3b36b978560a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c79e9bc3125722cf4f5de6e03f8ab1f46644e9cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/c79fcc7f3f545c0943c2817b6b11110d61c79a27 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c7aae761a287af4a79aa68e660f69f433879e0f3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c7e54dcee056c6deaf8fa3ba0e1ef7bafffb680f create mode 100644 src/libs/libsrtp/fuzzer/corpus/c7fd8a6586fbe6e3e5127700514262d5289d2e0a create mode 100644 src/libs/libsrtp/fuzzer/corpus/c87fffd6bce59326050af06433afdeb5f56640b7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c885d4e934ded27b595be49adcb64a2ee930e1f6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c89fc8bec2aacd1960d1dcfb4f0af442f9031759 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c8a324c6f9e6acda5e9869e5346176cdd0ab146f create mode 100644 src/libs/libsrtp/fuzzer/corpus/c8c49640b501d957bce4df15bb613b69da71e96d create mode 100644 src/libs/libsrtp/fuzzer/corpus/c8f6333fbf8e772ee2fc2831ef7286199320c315 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c8fc63056d32b214eeae41550e7c1e92532720ca create mode 100644 src/libs/libsrtp/fuzzer/corpus/c92e26e8feb8075f32d63c887fccf53f801ae9db create mode 100644 src/libs/libsrtp/fuzzer/corpus/c96741ea1192395e90d2a86d5537ed6f20914df5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c982bed40242835ad29a8311f65792f5e27468b3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/c9e3994dd8c9fc3633edd9058ba0e891428b8fed create mode 100644 src/libs/libsrtp/fuzzer/corpus/c9e5ef211a0d346179b4c57ea68a60bab5f055c4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ca11304a8c71477b12b246deebedb8e7a4377478 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ca1cd287450cf47cd3a5a32e1ec545d40b0f5222 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ca37a2f08915bd7a9ac1988b29887b10cb98cadb create mode 100644 src/libs/libsrtp/fuzzer/corpus/ca54415b2181663aa978355ec72cf9435c4ccd8c create mode 100644 src/libs/libsrtp/fuzzer/corpus/ca9ba8fb49867faa4c26829869d2cf0b2d00a651 create mode 100644 src/libs/libsrtp/fuzzer/corpus/caa1a16a87c8cbf3931d8a34f84c3381635ed56f create mode 100644 src/libs/libsrtp/fuzzer/corpus/caa5305ca2de94339ed73515b7d3f75dd6847414 create mode 100644 src/libs/libsrtp/fuzzer/corpus/caa7a34683fa73ce233b6b4969bcd0c414a2f764 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cac0084ef7e39a66daf848b7e96e02f95524b40a create mode 100644 src/libs/libsrtp/fuzzer/corpus/caed6aa4f3955e947b45532b8aa7a81e6c17a4d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cb7a32fd05f4bc7254396a23aa29cbfda662181f create mode 100644 src/libs/libsrtp/fuzzer/corpus/cbd0717c174942743197b51f7013f4fddf04df6b create mode 100644 src/libs/libsrtp/fuzzer/corpus/cbe6344d0391e969f5cdb73426cb5b8752077068 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cc0fea9c65c25e831ca3f76bd867ece650c01e28 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cc27c11056cf4590bbfa72b498e2b350710c03d9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cc38cb68a800702ebe89fdb081416f955ad55f0c create mode 100644 src/libs/libsrtp/fuzzer/corpus/ccbbd4d4c034a0d57e04471466b739f2e146fa3d create mode 100644 src/libs/libsrtp/fuzzer/corpus/ccbef69d827dda8e68a70ac42670785e65366c1e create mode 100644 src/libs/libsrtp/fuzzer/corpus/cce4e6135b059ac313a5befed1dfd0b79f27324f create mode 100644 src/libs/libsrtp/fuzzer/corpus/cd1f25c66282ecd98e8e6d3dea033c382522c7ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/cd296a7d2baa3daf5d983f2cb30ad6ca3ce74df4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cd54a4b235bdc936ab4471bc34a2b74c7f782184 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cd5ca368cd0a670971a45082c71f142700346747 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cd892915f092cfde339cf5ca9bd411b2b9497e1a create mode 100644 src/libs/libsrtp/fuzzer/corpus/cd9d7abb0418ac92ae0f529c4d9e7d420da14b50 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cdb0f7126374d95a4155cbec6f1740a727aff666 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cdbccfd8ea91e5f44c13e7aebc6498b424145121 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cdcc248525d2c629b83f5a815d7daa05105e44a2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cdcef0781a108edea5523dff574b7d2257c36b81 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ce10b19d79358c860d8a11f639a7bbfb56abd171 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ce2d5784dd0cb116a7903977da51dcd9bd669128 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ce445157963acf16cfb95c1894742140002b5204 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ce5339e0496213c0e19c3296ac96f0591ac50289 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ce5fcc6f69e4cdbc9f563d5b06fec3c220db2a62 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ce9b9c4d5094a874ded6caa3e0b3bea2c66a672c create mode 100644 src/libs/libsrtp/fuzzer/corpus/ceb3f7aa23f8a22fae7a939752d3c4664b483df3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cec2152fdffa5cd17459775824378dfc369773c7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cefc3942c377bad56e45cc3730f8f9242621f751 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cf0e0ead7aa41476b072cefe7c9ead66ec31c562 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cf2786796b3d0611819e69d00c3b2785c5daa987 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cf426b8b6ce33c44a221c704820191efde0fb226 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cf4465ad351e6129ecda2126c8078a49d882ad9f create mode 100644 src/libs/libsrtp/fuzzer/corpus/cf563882ac7eeb71f0fde1dd36f22f9bd1a5a2ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/cf94a895f1a8090736e9b61874a82fbda3b6c300 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cfa56ebde00a1fab5173e0eff7a0f1f4bd1af77c create mode 100644 src/libs/libsrtp/fuzzer/corpus/cfc516d23c2dfb0ae85094323b8b14d4f222bec3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cfd0d6bc1f78e03fbaa6990e751ccae66f674640 create mode 100644 src/libs/libsrtp/fuzzer/corpus/cfd5256cebc5ddbf045a099af9c2aed984a06b22 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d0286867a9a40eefe46c98727c9fd06a2cf1df59 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d02d8d90d95b71a88b634f8ee4e8b3a94409e92c create mode 100644 src/libs/libsrtp/fuzzer/corpus/d02ffe597db3e53bd478ce0f799845834fb37758 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d031d343ba645a52ab822b8c5aeff2c1adf78271 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d04353d0b588f28ae24e9a8070517733cecea63d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d057f87ceab445641eca2b2410f0cf777780466e create mode 100644 src/libs/libsrtp/fuzzer/corpus/d079ec49f52a1bb718f3bddbe4e20daa450ac010 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d07bda374e7e88e4ca026fa4c00443be8cbd3169 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d0b0a301657dcf4805c6dcd3f4fc144705e07389 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d0b93f8e00e90d36c66068393ae0fb0c6a95dbe1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d0ce1f5e5efca547b3768aa02735f279d7c3e03b create mode 100644 src/libs/libsrtp/fuzzer/corpus/d0d46e2d7d7af4d4d2854b3e702874e9adc36f0d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d0f5075f11df42aba75cc94b58de6ee9224ce2dd create mode 100644 src/libs/libsrtp/fuzzer/corpus/d1141e2f1eff32caeb93c2e86424f9b32ecab656 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d11aaa3f763944e66460c5c95c9940bd57036406 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d1d82f2754ff02073bc989023db179df7fd797f7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d1e3035c943cf57e9965a3a30a2a5abb787e8dd8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d1ed8b7bf002647ed552c115f2acc0490a828f36 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d1f13863e3eb0a7a85c12dba44ab16c666cca019 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d20a44d80ee2ba2c4d97352e9f0fe7f950b70687 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d248267c8185eaea4425691b96efc36028273a9d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d24d9eff7fcdf6f4a40f0d6f1e1808a33f79e237 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d26c0fcd2637abb33b75d0307e3f50b02a7f5b8a create mode 100644 src/libs/libsrtp/fuzzer/corpus/d270291d131d6b8ecbbcfc1942894db9be5b74e2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d2830a6f96665cebb8b8389dc4400ec1921e828c create mode 100644 src/libs/libsrtp/fuzzer/corpus/d2a114f6d6e7209dbbe15a603164fb0dd0f8357f create mode 100644 src/libs/libsrtp/fuzzer/corpus/d2a7edbe25a7611ae1fa19ed0200e67d20f30869 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d2b1ef6c8944f2e881d8467ac8bd99ddd83a945a create mode 100644 src/libs/libsrtp/fuzzer/corpus/d30e49357fa2da4ffdf45aec13968a1bf028ef3d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d31c01b5d791844e563bf59d88beb46adc59499f create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3255f6dcf44ff3fce3832e68b05df7ed2e2c096 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3260713b8603b337c776e95be380df4e3bf51d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d33fda0247b0269d223a45817f6a5fdfef2e8380 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d34fd332d61e28636723070912e873d6f086c179 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d35e97781b13cede28c2c8a2df96b2ca29959905 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3945a1047680d560a57b83792e52838f4c77e23 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3a2751c86b28596c5c8d5d9c57213f2aadd2f24 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3ab149e5c1cb609842f55b565cb516145678caf create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3c9aa0f7eca577aa41e5ce7d118890bfb33abf7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d3d9c64378addec6052b3e22d3bfe2cdb59822ef create mode 100644 src/libs/libsrtp/fuzzer/corpus/d4048366b2561abfe2fed3cb0e4b6248606e59fb create mode 100644 src/libs/libsrtp/fuzzer/corpus/d40beafba088aaa47eeee2e125983f253104a3a4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d414ccf23759eedeaa2d42db29b215158ee23764 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d456cec2575aa27e5d4b85fb70f8afa971db3330 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d49bb7f3855d7f9878c9864b916558a439e53cf6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d4e6203130344061ecbbeeba56d501e46e9f0c02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d4eb367a3608d272e1bc1053300c8f5e0045862f create mode 100644 src/libs/libsrtp/fuzzer/corpus/d4eeba4d10d0df6b37df70d13b346d6e63c53802 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d4ef2d723c263dd1faf63de6f6cef5b680c70435 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d538ed38a6021ee134d512906058f692a1f7b409 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d53f8b80b76651c0a71fc786d598ab60589ca31e create mode 100644 src/libs/libsrtp/fuzzer/corpus/d564e03d6b83fa5ade5fee4496fc6cbd4bcdc503 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d584a0d2694f58abe1c29316720319cb32a3745b create mode 100644 src/libs/libsrtp/fuzzer/corpus/d5924106fc83b0da01dfc76eab3ca1a7f69368c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d5a04e30f6d0b4c8b93aba48c03128d490c93299 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d5b63bba975637e9a05dc0775b2a25262721a013 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d617c156f8add1aca9f9ed9ecf6f178434844c1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d627a5bfa8031a15f91b4c1e53584d912f48ea41 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6299d106713090e7e031f799118be78f1b97d9c create mode 100644 src/libs/libsrtp/fuzzer/corpus/d66d8ba52072490550f35f22a83488c7c242f304 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d67ee847e6170f63a71190335d274b1caf1d2948 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d68087b453669cce4195fba0b972038d7fc58b08 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6b53d53a88b7942aaa96e140929b0009f907db2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6ce92c0ceaca8522ef64653103f3d8a16b50bb7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6dd23b471088f8889d8504f153011b67dcd6de2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6eb0ca72bebd0db0d43439885ad172ab2c9b5b8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6f4a9abc74ccb8cd87f1e59204f7df3a2530fcf create mode 100644 src/libs/libsrtp/fuzzer/corpus/d6fd0be7a56f267c6c1bb3f00551d068e75dce31 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d71496a6c97e10574c0a6378334237c26917b3e6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d71ac84919378e263e7f8de363f06e01a73ad614 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d71ed070dfa1a23451fccc45bd286a642d2d0f25 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d7265e3f69d695ce1fefc893078f666516667418 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d72888039e173fb59116b0bafe9e5af6ab46dbb2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d75b92734161809e82ea62e0bed26b2481f303f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d75e24076c7217f29c9fb8fc9169dfc95a119ede create mode 100644 src/libs/libsrtp/fuzzer/corpus/d781fceea762f5c716dae52eb94f9dfb67514e62 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d789e4ff7d0561d47354313ad534778b3ad832e3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d79a4b9626b363119a990cc25932860c8f97a7d6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d7b4bde787daaca7cfebd860e3579404bcfe0207 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d7c5d185ba98a1f76dbd97de50ea281877ecbf4a create mode 100644 src/libs/libsrtp/fuzzer/corpus/d809314cef9c3264868ba63183d8180bd12c93df create mode 100644 src/libs/libsrtp/fuzzer/corpus/d848fa1ccf89d98df57a2e2c6a40869f81b9971d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d85617cf6726d45c5b9a4c46f1bb7e252acea4b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d85d0dbc6d67ee1b69bb8f11fffea1344495c3fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/d864846a65c1be4a0b06984516b29685eb907070 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d875368bcdd75d662c93d2c537bffbdb72804a9a create mode 100644 src/libs/libsrtp/fuzzer/corpus/d888a39eec6a74844416f80fe9668322a2a8a0f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d8a5e06f53da63007f410198d8700d6f3b15c75f create mode 100644 src/libs/libsrtp/fuzzer/corpus/d8ae193f4f67eb2cdde635220cfcacab0ae8d0b4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d8e44ed28873a3a02c9261988940227a3c8f5584 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d93fd9291ee9aac39f3e0aa9a0df6bbedc80f69f create mode 100644 src/libs/libsrtp/fuzzer/corpus/d960c0eab8fe08c08ff247c19ad0cd8bd2635ca3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d9854c46ebc5b99048ac9fd9b0aa810f416dd43d create mode 100644 src/libs/libsrtp/fuzzer/corpus/d9a48b14aa054ecfde4b93c433cd84b58538725e create mode 100644 src/libs/libsrtp/fuzzer/corpus/d9cae8d7f17912fa57ec6c5218424f50f0f83304 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d9da15e86526870a5de3d3596c857070dd1a6a78 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d9f5164820147fa6e1b7cf28b949053a82095107 create mode 100644 src/libs/libsrtp/fuzzer/corpus/d9fe9965084aad0081d5fb1bb858e85e2ad6cb16 create mode 100644 src/libs/libsrtp/fuzzer/corpus/da07a113b6b3cf701919895ed621d2093228505a create mode 100644 src/libs/libsrtp/fuzzer/corpus/da0da68a82c7bd3a0f097260704aea9f63041f09 create mode 100644 src/libs/libsrtp/fuzzer/corpus/da1002d28c0f1a51565f64a79e6231549089222d create mode 100644 src/libs/libsrtp/fuzzer/corpus/da1bfd406502ee8361aceca8926c68f681f72fcc create mode 100644 src/libs/libsrtp/fuzzer/corpus/da2f13f5261c8d49e338e9edee8bda0853b1acc9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/da7efb8ab79b6782d364ff2ab03b55944d11460c create mode 100644 src/libs/libsrtp/fuzzer/corpus/da950c304829b8c0b5f89cebd3dc17a600d1e36b create mode 100644 src/libs/libsrtp/fuzzer/corpus/da99db29fd53d20ca815d4dd60822ac52a702cda create mode 100644 src/libs/libsrtp/fuzzer/corpus/daa4fa2885909ad7ffc983c60643a44ac90ca4cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/daa92ea4600a8737e9fd37f83a9c852f545537c2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dacc18e91c81a6bfcba0340ecb58bba6556e57eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/db1d12798a20e9035b9a5abf805394c855059313 create mode 100644 src/libs/libsrtp/fuzzer/corpus/db7c8b0d344767d301a3b076919f6c36fa53193d create mode 100644 src/libs/libsrtp/fuzzer/corpus/db903aaf171f26afaa2f67bb24c000d7bec621d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dbadd3f18ba2c307ca91180fe4aeb1b4580bcca7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dbb4f3bc0bb09722267e7d0969d2ec0d9b1e085a create mode 100644 src/libs/libsrtp/fuzzer/corpus/dbc2b27e3cbb9fed8d92c7c60b25fd2a64bdc9ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/dbeefe004d68f9ffa8e45b64362c6737b22e3de5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dbf50cbbad010e57d112f069929e50a8e6800b27 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc0ce718c3648df982b66a8d17ba07554dad528b create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc48283fd7e9ac4b61c740457f288a6e7e4b9f35 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc68425075dfef8c3146f582479ea22a7a5723ab create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc6c395aa0dea86ac6ba8b3ff4a076e99d528f32 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc7287b83a08942f085ff81b5e6e155a9327e749 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc89fb2b8158788bca28632748593e14c1f10587 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc8cfe2221ad910e170cedf09671c9292a09bbf0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dc907469f9e0fc79c4a0eecfa8cebf5e3eeb8534 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dca6505d695c2a0e7247ff2dee70ffaea4bc7c0d create mode 100644 src/libs/libsrtp/fuzzer/corpus/dcb501fbbb94c31e2be960dc4898b3aa252310a7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dcff5752df020ec00d95f49f463d66f9dc49d7d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dd04c9200f6068173671eeec932444f83efd80ac create mode 100644 src/libs/libsrtp/fuzzer/corpus/dd0e12e170d32c6f7aa8c5729d258ed2e02acf6a create mode 100644 src/libs/libsrtp/fuzzer/corpus/dd655371b3af77e124d99d4c34e545b0355a0f02 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dd6b6aa89f2f1c46e60e86ea705720bc5f44fcc7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dda0cdaab12c354534d015fcd77d7c0f0f8a9fe3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ddb0b04c9ceafdc0295f8489665a32ab0ea10f25 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ddb8b2d424ece63cf6467b9a0f616749bf091469 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ddcfa3fe1e0c57792fc3bb8dae41142a8a1ca29f create mode 100644 src/libs/libsrtp/fuzzer/corpus/de12ea7a0a4d6eca893b8b990a4a4f9342decc0e create mode 100644 src/libs/libsrtp/fuzzer/corpus/de20009e5dd442964c04154d85910e7059e084b9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/de5eb0d67c436883a0089b189ddaa11df92c965c create mode 100644 src/libs/libsrtp/fuzzer/corpus/de84d2616593dddce2f28615e28c0c72f746de9d create mode 100644 src/libs/libsrtp/fuzzer/corpus/de9259b73a79b875b3e20ce9fda7647a45d6ba26 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ded0e3fce4f5a1c5572ce632a29adcf37897881f create mode 100644 src/libs/libsrtp/fuzzer/corpus/dee7c3e7cac3ebd62b0de576789c0ed0129e5d2c create mode 100644 src/libs/libsrtp/fuzzer/corpus/def4bb0f286f7c45281a035b558581b327e505f7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/df2cff3e2d1845b09e31e2e99b50fe3aef5da229 create mode 100644 src/libs/libsrtp/fuzzer/corpus/df2fa8b9efa11a9511dfeb146446f597bd82b6dd create mode 100644 src/libs/libsrtp/fuzzer/corpus/df4c7b880af9427c854b76c0d11f60c340a0a922 create mode 100644 src/libs/libsrtp/fuzzer/corpus/df74057846da618e308c75b9389616d125845bba create mode 100644 src/libs/libsrtp/fuzzer/corpus/df8087a243ae78d551a128d812ea8336a3042f75 create mode 100644 src/libs/libsrtp/fuzzer/corpus/df9f04b41873b05b7485b379b40f126e9915d9f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dfac03fb3798072a55d8ccf0f28ef4f81c3ca355 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dfbca3b91615e12cbdfdf2d302c2411137eaec86 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dfbff6b133d07b84b48b20402c1dfa295735f144 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dfc459b99d0e933191615817e735395cc2f8b6c1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dfca552d0a2f6b45984b31d8644eed7aa205af71 create mode 100644 src/libs/libsrtp/fuzzer/corpus/dffea25836343414ddf96e76d8853c21819b5fee create mode 100644 src/libs/libsrtp/fuzzer/corpus/e02da98090daa0d3e750cc83581cbe8843d25acd create mode 100644 src/libs/libsrtp/fuzzer/corpus/e0347261cfbdee5566c1188b107b40329039cd8f create mode 100644 src/libs/libsrtp/fuzzer/corpus/e05959e65d29bd2833ff854b5421d8d7d802a49a create mode 100644 src/libs/libsrtp/fuzzer/corpus/e06bf2dfcf2fa17f033f9cc3f763107b9e07c715 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e06d264feb90a182320761ca936fc35887dba84a create mode 100644 src/libs/libsrtp/fuzzer/corpus/e09c5721b6c55681eee5481a476f4d1ffe8f56c3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e0ba21767e10ff2bffafb1fe90ebd6ffdd8bc6b8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e1263d4e0e1ed6868a4e4168a620e6f893358213 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e1724c8cb267c6efd73dddea9cf6facd5c561e68 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e187531dae9a9095709353882ed7d298b43f8551 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e1bb1e140c9c63c1c36cf54a3a62da93c14fbafb create mode 100644 src/libs/libsrtp/fuzzer/corpus/e1cf89658b836d3f662012d3d2a288d5da975993 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e1d7d8013afbdab4d3989b86d781dbf513bf5839 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e227f418bbc10b012cab197e463e8dae45853356 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e2554b800d5d37c9e508155ebcbceec3793fe6d0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e263798e59a5d270abf73edaa624be0700242a53 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e26a332fc58db1c372fcb67697bcad0ec6b2664f create mode 100644 src/libs/libsrtp/fuzzer/corpus/e27b58f72661df12161b25eb208a2dd380e00058 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e2e9d9a7e4578a32921a8704d6352067a2a1cf14 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e2ff946658b253ef36ea36da4b4c869b46e0308d create mode 100644 src/libs/libsrtp/fuzzer/corpus/e3062519c6b0bfe605e4247d493c8efaddee6b97 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e30d49ee6f7ead7b4f24b8fcb88792b4c521d4a1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e313b472b8e3780b2d77b1394ea1cb191f028896 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e315fca490e48b2e33f0ff395fd359f9befc2132 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e3261856e55ec4324076b259314dce283739c4d4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e33c7989843428aa27bea82df1d7144112034a1d create mode 100644 src/libs/libsrtp/fuzzer/corpus/e342a3e59590671c6d6437c42cb537751085d03d create mode 100644 src/libs/libsrtp/fuzzer/corpus/e3692bc33b8a25a54b8cf31d374056bb958d6f9c create mode 100644 src/libs/libsrtp/fuzzer/corpus/e3837c6d2e4cf4041061e1c10f1f873fc3e162f7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4189007af713f980b50c47f1e4794725c57a1de create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4309d4eefa74c5f1e318e17707d30ca56cd1e7b create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4582704c43bd71deca14d631423da232abd51d5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e459f0c472dc20b4d0b01f3b63e95ba9cc8e7512 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e462823402b1be1965b492d9da008a2ec8b9d8ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/e482b35af1c67890c17ddf534f579dc2e1940557 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4ab5ceeed7e78124c0b1b13da7af7ce2acac25d create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4ebe578013e5a5230eb290e27c224ba2fb7f3d1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4f22162b2dd655dca074bf2679ebe8b039b2cf0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e4f7f398637af48001261e0131d2f560601a1a41 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e50b6b4f412137b8d28f6cc2f3074cc4e4ca474f create mode 100644 src/libs/libsrtp/fuzzer/corpus/e52c04168e8e4103462c2bb9d0bc993fe53ba13b create mode 100644 src/libs/libsrtp/fuzzer/corpus/e5651106cd93be0ac68f7c2f81d6f274a727ebb3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e59b3a4b2d0b6bdd8c2558ee32ed0af04dffdad2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e5b37fb5b8be337ca0f01fe30334ed3d4d5c684a create mode 100644 src/libs/libsrtp/fuzzer/corpus/e5c3461cf7cfff32ac4fd52307207deeff46262e create mode 100644 src/libs/libsrtp/fuzzer/corpus/e5dc0ee26c8cb6fd079b751cf0ac3d3232035749 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e6090fd057eabf660f91e3d2341ec3c5849ee324 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e62e395eba8efd5026e743540fa0657aac71b795 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e62fe5b7e839ab0058f01e0809bb492813f73691 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e673b0bce870c3ae72b554b013fda36cfe5bf241 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e690ab4aa1902585c1f03163fa2fd44b5e55309c create mode 100644 src/libs/libsrtp/fuzzer/corpus/e69b72d2e1c1047ff3130814a4451666d6ea7e22 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e6e23396fdef4750a3833247bc63fe5774488c46 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e6f59822479477dd4f7802628b8590472948621b create mode 100644 src/libs/libsrtp/fuzzer/corpus/e70149bf42394a6061e2d00095f581739dd44818 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e7195da10d3844dd8b0d9aa3d34ffb28c9dbfaa6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e7254f572fa927cecd700e22d42a327e5ec9e777 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e72d9f2f5c822a13c99798ee0fb80b6521b61d3f create mode 100644 src/libs/libsrtp/fuzzer/corpus/e72e14359deaf76577b6368b4ca05102daae538d create mode 100644 src/libs/libsrtp/fuzzer/corpus/e7441f5521f1b9ad33caaa8cce88161e5bdd8275 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e76ab8e03532cd5d2bf0c63432e2993bcd7467ba create mode 100644 src/libs/libsrtp/fuzzer/corpus/e76cd955107fbb3a5e66ed566f83ac0fd8c6a19a create mode 100644 src/libs/libsrtp/fuzzer/corpus/e76fbdddd517f74f4c231fb5ac936df72c47ccff create mode 100644 src/libs/libsrtp/fuzzer/corpus/e7879d078f5484de76394ba51fac6e5a7fe3aad2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e7a9bddd61c41a3182fe299dc246a1c129edbcd2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e822c7b78743a719c5c6d4e5288dc6b3fcc4651c create mode 100644 src/libs/libsrtp/fuzzer/corpus/e8666037f5297d357bd557495b64ad02d1551d09 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e86d59d7b45d680cff3132d6ea38341dc73b5364 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e89451aa8f9b3de5f529ca316a0d0f330a86f93b create mode 100644 src/libs/libsrtp/fuzzer/corpus/e89c4cb982aa29baa96b250fe51ed043a942e89d create mode 100644 src/libs/libsrtp/fuzzer/corpus/e8abc42b656993e3049332d239bc1b6e398a7920 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e8c54feaec75dc91dd44c7ea1177c83333f475b3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e8ec0e7be7457ca689de76a45cd47f5344d46888 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e90f234d63465e33c341241ca9d2b2570f1f564a create mode 100644 src/libs/libsrtp/fuzzer/corpus/e937e740fce6a4659d70d14580c6dadd3884a566 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e93c87eb3e91c5d0fab981d2e26b5ab5d868dbe0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e94c4f6c4edf12fbbf58e701099d97ea9a328818 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e992e28d6c2ac26bc01507faf7ef6ba10807d5de create mode 100644 src/libs/libsrtp/fuzzer/corpus/e996fb9b53c28053deb15b5dd1edea0d1bd0c5da create mode 100644 src/libs/libsrtp/fuzzer/corpus/e9c3016cb8e841d277b7acda4b101aacb5ca66fe create mode 100644 src/libs/libsrtp/fuzzer/corpus/e9cf294779ba84c956e4d86f71dd75625d0762f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e9df0bb499dcd3c192868387b60387520f28cc08 create mode 100644 src/libs/libsrtp/fuzzer/corpus/e9ff11b3eb0c7ee2fbca38b7405d083b6736ecfe create mode 100644 src/libs/libsrtp/fuzzer/corpus/ea06e03d06e62bbee4909e1f8938e03a57370afa create mode 100644 src/libs/libsrtp/fuzzer/corpus/ea14569f45a4153b18c1caa48b698835d67d831a create mode 100644 src/libs/libsrtp/fuzzer/corpus/ea155a9c3398ca9a8adb38a8e80ca22a7ffab7a4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ea48b945cbc74956549e731a90991474b8bd102a create mode 100644 src/libs/libsrtp/fuzzer/corpus/ea9342e01ca8641af66988b4ba4c60619932a0a5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ea946153f6ef41b7f5c97ef5024d82ec0e26403a create mode 100644 src/libs/libsrtp/fuzzer/corpus/eac6f88668703168aa31b255e7e58142da0a9136 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eb4666946169dad175a572771d2d1592308b2ff0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eb5a3da6e5351d9fbb8a67c81cb59532c5f200c8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eb7fbf41c750f2592692482d7a0683f55a9c2c80 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eb86052af19123140592f4b21ff095395e5c8578 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eb88e0ff6771ec04dfae3a964ff6399958e3cb70 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eba7da018882ad9b2e31df6fcf493d15de3fbf7e create mode 100644 src/libs/libsrtp/fuzzer/corpus/ebf9ae2db9db98e7973100483990f9f7eb6252f7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ec2445c037618464c2202c67ef6a98a7943e2bc8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ec3370b62ad722d3f5df2d3e1f14cdc6676ffaf6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ecc6ac62b9ee137f2dbdacfa17a3fe691c214c30 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ece102d726cea0f485cb30f3b0b68ee13b87a1cf create mode 100644 src/libs/libsrtp/fuzzer/corpus/eceabe1a94cd4261d53be1612b7bc91d7c8386cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/ed1064ddcb3c11b7f3ade049846882ff8cc6de11 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ed2ff0a9923c4ffed9bd3270fb573ee12842f06c create mode 100644 src/libs/libsrtp/fuzzer/corpus/ed3f24599af798db6367c33c728ca8a298430c90 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ed7e68111214223cf0ac50fb85ded5eb8791c775 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ed88758b1713b053d5bbae3906680bc00939cc4c create mode 100644 src/libs/libsrtp/fuzzer/corpus/eda2b4c3485fcf5fc8e42bd6cd713ec9137bb99f create mode 100644 src/libs/libsrtp/fuzzer/corpus/edc13238e8ebab8da3ef26e599993aacddc70bfa create mode 100644 src/libs/libsrtp/fuzzer/corpus/ede187b22dc3c4dcdefe28b51b2679e8a47ddc0b create mode 100644 src/libs/libsrtp/fuzzer/corpus/edf84125f3683938326c73a7acb1c27a87da8a51 create mode 100644 src/libs/libsrtp/fuzzer/corpus/edf95e3d9fa56fd280f99e211e13715f9415d708 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ee23b2e0e0981ba0768c0af7be21256ad1c31ab0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ee4143cba56a62392cfa98fcd0198887fd360b33 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ee59b9d2d302cdf3b5768c78d6438da6543eb3ee create mode 100644 src/libs/libsrtp/fuzzer/corpus/ee61ff2e7e4c8640e4451e780a264b3171088569 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ee629945ac1d7129ea5cb4514c9385ac38a8423d create mode 100644 src/libs/libsrtp/fuzzer/corpus/ee7613b93209394eea757ba614a0b9277f792d9b create mode 100644 src/libs/libsrtp/fuzzer/corpus/eeb1ad989122ab36a0ae2c3182b9f54e62051927 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eeb2d99d630e9990996b4b4b23c1dbf97fd75747 create mode 100644 src/libs/libsrtp/fuzzer/corpus/eef72ee9c4c35ef707acc959c7294d5ced10fe68 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ef45313934c87273348fe3949e49050dbbf213e0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ef682b9f5a22ad759caa4b598d67c9320278f488 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ef79e7c334518bfdd1265db7480f0cae019360b1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ef876ed45ad7c879018480241dd5ba5f7778f462 create mode 100644 src/libs/libsrtp/fuzzer/corpus/efbd22c13892a1ea4752b6cfee6b3159c3d5ac9d create mode 100644 src/libs/libsrtp/fuzzer/corpus/efda9a2eab8bbb01e62ac01625b8cf4909a1198d create mode 100644 src/libs/libsrtp/fuzzer/corpus/eff1b9d15d4bd60e4842fde37d048c90661d6121 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f003ebe145288bc911d8840d4780a0d4ddc55373 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f0052c8d2126b9b7ba5c26369b78b36ef25fe0f7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f008b22f42c5f61ed903270d859bcff244c389cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/f06191d918adb094a1463bc1d3203cec72aaa384 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f08e173307472c01ab182293fcd7d5bb9c9d305a create mode 100644 src/libs/libsrtp/fuzzer/corpus/f090460188c02c587bdfa1063474c824d9894dcc create mode 100644 src/libs/libsrtp/fuzzer/corpus/f09b1112d054e3b2aae1a7964279716bbeca47b4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f0a0ffc1468ea117395a807dfebda2452d16c499 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f0b8ef27c8ee16b81872b1157ee461b96c8b7f45 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f0ccba58f670dc2fd99df17c149496c0649707fa create mode 100644 src/libs/libsrtp/fuzzer/corpus/f0d303aa6beb3c3f4c55158bdaeabdfa635c27f1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f12678cf2e168188494f2e7aab6b070eb439d2c2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f12c261d98893669a7215333f8923b0d2ea1a81f create mode 100644 src/libs/libsrtp/fuzzer/corpus/f1610db081c181b291201ff4cde6fdc1893952cc create mode 100644 src/libs/libsrtp/fuzzer/corpus/f1a4b29cfff5569fb9b9daa65b0e3440b039615d create mode 100644 src/libs/libsrtp/fuzzer/corpus/f1a631ef4173d800f78500a86921102ff19ec5f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f23ca8c2db08c83d86b7aa9a7bc044d0d5368629 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f24000f05837427008fc2903033e3aa91bd24e4b create mode 100644 src/libs/libsrtp/fuzzer/corpus/f274eda5fd5ad1ee69b55fbdfbf40dcc532b0842 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2a8a2e95b355b99543d2c166d3371eb64b65d72 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2ac90d7e62eac0fa3ac34fc4439f63b01333f4f create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2c1f02048e8ecbfca4799527fcdc2497b8b7aed create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2c774553dde8a7d49a9ede22e745a3d65d6494a create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2e7b8bcdf840a826ecfffb21ed558e67ddb2102 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2e810e500e5137a530f663b285ce84db75430f9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2f0737ea6641610a694ddbec3209073963601d8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f2f210d434056dce3861223e3b7024dd6584526a create mode 100644 src/libs/libsrtp/fuzzer/corpus/f3a82e8b38f954c0be2247de3b6eb3910839f63d create mode 100644 src/libs/libsrtp/fuzzer/corpus/f3bcae440cb075f0afc3e3b40cd493d7af5a31ca create mode 100644 src/libs/libsrtp/fuzzer/corpus/f409da789abb07a47457bfd12537acdd27b4d2fb create mode 100644 src/libs/libsrtp/fuzzer/corpus/f40e3a584166733e7c1f702690fc18a9b6d8bddf create mode 100644 src/libs/libsrtp/fuzzer/corpus/f4108aeafd06233e7a3f4fe63d557368c8ceb528 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f42560134cb6af8dfdfb8a9570c93eead6b7ac31 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f429817dc2960e7da1db52681ccdd784ad1dab1c create mode 100644 src/libs/libsrtp/fuzzer/corpus/f441070d3702c9dfd3745c6b2187104333103504 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f444c8a3e366fcbcc5cdbc0511dc3c3d3f3b5089 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f459917db3554315251ee96735392fbf89713064 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f471537f0f8cf6e4b73e737f3b18ea5fd6eab702 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f47cb523f7a32f4306a1b9f78486018299f518f5 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f48bca386983cd42be106864d164cfcab53aceb7 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f496134873c83f1aaa70cf1c31759d03bbe9c495 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f49a32dd866a767b9ca2c06451f49d926d958d95 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f4a8fb7ec792c5e016d1b1756d9e62cc25c4e1a6 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f4c3ae6c1b149fece719a25b64f0ffcfa0ef4f70 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f4d4b58bdca492a6ed003c2b49a26f3f4ea683fe create mode 100644 src/libs/libsrtp/fuzzer/corpus/f4d850a491224739a870c57d7ccd32e22f2ecb23 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f522843f0e11b6c483a57c8e52ec0d97eda68175 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f5a854f1bad59930b2e80e5f6f6350989ff442f8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f5c39076cd888160da91d78058137a409fed02e2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f5e91076d0dca3b53d4f85dd565f346ce7dba322 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f5f9014f5d4a8e28d939e313aaee1445720046e0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f63987ba8506c3fadc251e002eab9bd18aacf83f create mode 100644 src/libs/libsrtp/fuzzer/corpus/f65819da779e1a0f50a0349ede6d6a3491c3e2ad create mode 100644 src/libs/libsrtp/fuzzer/corpus/f6a64c4d5720bb5c6d1dbbbb2be77a7db7655168 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f6c0228a7564ad9da25b7f8ae4842103391eb320 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f75716a052feb47e47958491f6631cddd7418dce create mode 100644 src/libs/libsrtp/fuzzer/corpus/f760e7458959d1d4e64e12a7fe42552531972bc9 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f791d55d9d4b2462fa15af44cd00122f7c79de36 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f7bbb2eb13e2ed81078bac10f3d05fdc3f05a6dd create mode 100644 src/libs/libsrtp/fuzzer/corpus/f80664228f35f70394d0563a1eefaf3ada8bf013 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f806c722b19ae6f4fecec4a46b19fdbb14068333 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8119ba7ca78c66051715f981c97e0513d9c3827 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f82a03f4cfaf60f998c09fc3e65d6849eb15672f create mode 100644 src/libs/libsrtp/fuzzer/corpus/f846135da0396f61035a2ae12d0b71319f5da4f0 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8551d2355baacbc81a177b68a09257d003a1d63 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f892a5308895f5d40d0ed79af766e4165589c197 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8b655a75c4437875b27560ba941e232dc793934 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8c0c300df603d18373e8a710c98cfa027910bba create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8c50fa227f6b1dde618168d159caebb91cae54d create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8d354179c10d219127b53273ff471644e782176 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8f7a802aa67780f3d70b686b01498462a015329 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8fbf0f30aa1f2081c158a5e5d027bb540e344ab create mode 100644 src/libs/libsrtp/fuzzer/corpus/f8fc30c4cce63d22fb41139e708b4f98d7f38ece create mode 100644 src/libs/libsrtp/fuzzer/corpus/f90d5451a12269e8741ca300409625a4777a1154 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f947a74b759dd42139105ae61530e963ef820a73 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f94e071cda73362ae8c284c132b05f4c32b2f12a create mode 100644 src/libs/libsrtp/fuzzer/corpus/f9959c016e9fbfffb053f7e7903e91b1abf6a158 create mode 100644 src/libs/libsrtp/fuzzer/corpus/f9f58b28c95cab0f2dacdf70e2f05f64850feeba create mode 100644 src/libs/libsrtp/fuzzer/corpus/fa62977bddda089217691293964db3bd5ca6bec8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fa681fedd2c6fa734ce1bd9d7d8fef7138fea1da create mode 100644 src/libs/libsrtp/fuzzer/corpus/fa8c4015a7c03bd2b1af712b148fb6a46976ac30 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fabb1d677b8be9d34302f327370d1a069d5cd732 create mode 100644 src/libs/libsrtp/fuzzer/corpus/faf91d41b88e0ebfdbe16c133f8aec4f54643867 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fb05ad8533dbea37b825c735a8f275747d3c3d65 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fb265cb36d03f402dd09a1d8743bfcfb52948b1b create mode 100644 src/libs/libsrtp/fuzzer/corpus/fb3e9f119af88a194e4cc46a07d0980e0d08472d create mode 100644 src/libs/libsrtp/fuzzer/corpus/fb70ffd57de084a797500e21986f07f185aa56a2 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fba421b338b3eb9f7752d8cc1eeda8c7b28f8eb8 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fbb77700114cb0c0bb6584fdb3c6b90525fb3c69 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fbbb4a8e282ecccbb507e979c4d5b25a1474a432 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fbc0ed074c7a4e9701c7dd5fb3f22faae83b72dc create mode 100644 src/libs/libsrtp/fuzzer/corpus/fbd727f72b075dfd8b65a063d25616d88bc55a58 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fbd744c74addd2446bc3421ee255782745944912 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fbe7d2fe74ec76c7315b1436a8eb1ef2bd71790d create mode 100644 src/libs/libsrtp/fuzzer/corpus/fc0784659f2f2db14675c08091a72748e8bf0653 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fc72627e1e118b27d857ecc821d7230a4a3e19ea create mode 100644 src/libs/libsrtp/fuzzer/corpus/fcbaa80ef465b04a9b23aed5fdeeb9bbae8a2be3 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fcbfcc14b7ce95f3d4c79d3f0d013e26fbb3f90e create mode 100644 src/libs/libsrtp/fuzzer/corpus/fcdec31a3bcb5e05058749746edf9ec860b54a85 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fcf94887dc792d14601a0b1edf7bf2bc29ef8725 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fd567783b8f89ff8fff4b368e827cbc1ce4718db create mode 100644 src/libs/libsrtp/fuzzer/corpus/fd59c04966e702e69c1d1590444fc12cf512dac1 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fd657ccaaca06d0a4ac30d7965c41cc2bee6978e create mode 100644 src/libs/libsrtp/fuzzer/corpus/fd7695c4e2aed317cb86e9c1074aeb8a989fda29 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fd95d937d82debbb85ad308e34c0b1756cab756b create mode 100644 src/libs/libsrtp/fuzzer/corpus/fdd6a808066a675e9984542ba69ed74a95f478eb create mode 100644 src/libs/libsrtp/fuzzer/corpus/fe15945925e89be8249db3b968ef6b8bcfd762f4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fe1f98b8e9556ab3ed1d1a43c981b52f6dfa6bb4 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fe63f261780d7277153370152ead17700d939b68 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fe73188af7332dbd41e13f0d6eb68813cfe666dd create mode 100644 src/libs/libsrtp/fuzzer/corpus/fe9fb4a8ee8df6455e2f58dd5e0fa18d258c8767 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fef53990a9dfa6829c236f68a51dd273054184fd create mode 100644 src/libs/libsrtp/fuzzer/corpus/ff2df20321ac2b49b512ef4736fffd5e3d68ac1c create mode 100644 src/libs/libsrtp/fuzzer/corpus/ff58579901a8a58274becfa93bc44365a321d22b create mode 100644 src/libs/libsrtp/fuzzer/corpus/ffd4a31dc7415d314324661df7153aa31640af99 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ffedcc07b024a76f6e6b859d61c87cc035012201 create mode 100644 src/libs/libsrtp/fuzzer/corpus/ffef8bebf9bb707a5cb7d9bb55eb1b3d8f54d702 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fff73fea62e77e16da2a1773de25945f4860a991 create mode 100644 src/libs/libsrtp/fuzzer/corpus/fffa69b8781b3df9711059a17d365670c037b419 create mode 100644 src/libs/libsrtp/fuzzer/fuzzer.c create mode 100644 src/libs/libsrtp/fuzzer/fuzzer.h create mode 100644 src/libs/libsrtp/fuzzer/meson.build create mode 100644 src/libs/libsrtp/fuzzer/mt19937.cpp create mode 100644 src/libs/libsrtp/fuzzer/mt19937.h create mode 100644 src/libs/libsrtp/fuzzer/testmem.c create mode 100644 src/libs/libsrtp/fuzzer/testmem.h create mode 100644 src/libs/libsrtp/include/srtp.h create mode 100644 src/libs/libsrtp/include/srtp3/meson.build create mode 100644 src/libs/libsrtp/include/srtp_priv.h create mode 100644 src/libs/libsrtp/include/stream_list_priv.h create mode 100755 src/libs/libsrtp/install-sh create mode 100644 src/libs/libsrtp/libsrtp3.pc.in create mode 100644 src/libs/libsrtp/meson.build create mode 100644 src/libs/libsrtp/meson_options.txt create mode 100644 src/libs/libsrtp/srtp.def create mode 100644 src/libs/libsrtp/srtp/srtp.c create mode 100644 src/libs/libsrtp/test/cutest.h create mode 100644 src/libs/libsrtp/test/getopt_s.c create mode 100644 src/libs/libsrtp/test/getopt_s.h create mode 100644 src/libs/libsrtp/test/meson.build create mode 100644 src/libs/libsrtp/test/rdbx_driver.c create mode 100644 src/libs/libsrtp/test/replay_driver.c create mode 100644 src/libs/libsrtp/test/roc_driver.c create mode 100644 src/libs/libsrtp/test/rtp.c create mode 100644 src/libs/libsrtp/test/rtp.h create mode 100644 src/libs/libsrtp/test/rtp_decoder.c create mode 100644 src/libs/libsrtp/test/rtp_decoder.h create mode 100644 src/libs/libsrtp/test/rtpw.c create mode 100755 src/libs/libsrtp/test/rtpw_test.sh create mode 100755 src/libs/libsrtp/test/rtpw_test_gcm.sh create mode 100644 src/libs/libsrtp/test/srtp_driver.c create mode 100644 src/libs/libsrtp/test/test_srtp.c create mode 100644 src/libs/libsrtp/test/ut_sim.c create mode 100644 src/libs/libsrtp/test/ut_sim.h create mode 100644 src/libs/libsrtp/test/util.c create mode 100644 src/libs/libsrtp/test/util.h create mode 100644 src/libs/libsrtp/test/words.txt create mode 100644 src/libs/libsrtp/timing create mode 100755 src/libs/libsrtp/update.sh create mode 100644 src/libs/libsrtp/valgrind.supp diff --git a/src/libs/libsrtp/.clang-format b/src/libs/libsrtp/.clang-format new file mode 100644 index 00000000..358e2227 --- /dev/null +++ b/src/libs/libsrtp/.clang-format @@ -0,0 +1,79 @@ +AccessModifierOffset: -4 + +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlinesLeft: false +AlignOperands: true +AlignTrailingComments: true + +AllowAllParametersOfDeclarationOnNextLine: false + +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false + +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false + +BinPackArguments: true +BinPackParameters: false +BraceWrapping: + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: true + +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +ContinuationIndentWidth: 4 +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false + +IndentCaseLabels: false +IndentWidth: 4 +IndentWrappedFunctionNames: false + +KeepEmptyLinesAtTheStartOfBlocks: false + +MaxEmptyLinesToKeep: 1 + +PenaltyBreakBeforeFirstCallParameter: 16 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000 +PenaltyReturnTypeOnItsOwnLine: 9000 + +Cpp11BracedListStyle: false + +PointerAlignment: Right + +ReflowComments: true + +SortIncludes: false + +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +TabWidth: 4 +UseTab: Never diff --git a/src/libs/libsrtp/.github/workflows/android.yml b/src/libs/libsrtp/.github/workflows/android.yml new file mode 100644 index 00000000..70cbaa01 --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/android.yml @@ -0,0 +1,44 @@ +name: Android CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + strategy: + fail-fast: false + + runs-on: ubuntu-latest + + steps: + + - uses: actions/checkout@v2 + + - name: Create Build Environment + run: cmake -E make_directory ${{github.workspace}}/build + + - name: Configure CMake + working-directory: ${{github.workspace}}/build + shell: bash + run: cmake $GITHUB_WORKSPACE -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a + + - name: Build + working-directory: ${{github.workspace}}/build + shell: bash + run: cmake --build . + + - name: Create Build Environment (Shared Library) + run: cmake -E make_directory ${{github.workspace}}/build_shared + + - name: Configure CMake (Shared Library) + working-directory: ${{github.workspace}}/build_shared + shell: bash + run: cmake $GITHUB_WORKSPACE -DBUILD_SHARED_LIBS=ON -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a + + - name: Build (Shared Library) + working-directory: ${{github.workspace}}/build_shared + shell: bash + run: cmake --build . diff --git a/src/libs/libsrtp/.github/workflows/autotools.yml b/src/libs/libsrtp/.github/workflows/autotools.yml new file mode 100644 index 00000000..0e294e0a --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/autotools.yml @@ -0,0 +1,92 @@ +name: AutoTools CI + +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] + crypto: [internal, openssl, wolfssl, nss] + include: + - crypto: internal + configure-crypto-enable: "" + - crypto: openssl + configure-crypto-enable: "--with-crypto-library=openssl" + - crypto: wolfssl + configure-crypto-enable: "--with-crypto-library=wolfssl" + - crypto: nss + configure-crypto-enable: "--with-crypto-library=nss" + + runs-on: ${{ matrix.os }} + + steps: + - name: Setup Ubuntu + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install valgrind + + - name: Setup Ubuntu wolfSSL + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'wolfssl' + run: | + git clone https://github.com/wolfSSL/wolfssl + cd wolfssl + git checkout v5.7.0-stable + ./autogen.sh + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' + make + sudo make install + sudo ldconfig + cd .. + + - name: Setup Ubuntu NSS + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'nss' + run: sudo apt-get install libnss3-dev + + - name: Setup macOS OpenSSL + if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl' + run: echo "configure-env=PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig" >> $GITHUB_ENV + + - name: Setup macOS wolfSSL + if: matrix.os == 'macos-latest' && matrix.crypto == 'wolfssl' + run: | + brew install autoconf automake libtool + git clone https://github.com/wolfSSL/wolfssl + cd wolfssl + git checkout v5.7.0-stable + ./autogen.sh + CPU=`sysctl -n machdep.cpu.brand_string` + if [[ "$CPU" =~ Intel ]]; then + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' + else + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-armasm' '--enable-aesgcm-stream' + fi + make + sudo make install + cd .. + + - name: Setup macOS NSS + if: matrix.os == 'macos-latest' && matrix.crypto == 'nss' + run: brew install nss + + - uses: actions/checkout@v2 + + - name: Configure + run: ${{env.configure-env}} EXTRA_CFLAGS=-Werror ./configure ${{ matrix.configure-crypto-enable}} + + - name: Build + run: make + + - name: Test + run: make runtest + + - name: Test Valgrind + if: matrix.os == 'ubuntu-latest' && matrix.crypto != 'nss' + run: make runtest-valgrind diff --git a/src/libs/libsrtp/.github/workflows/cifuzz.yml b/src/libs/libsrtp/.github/workflows/cifuzz.yml new file mode 100644 index 00000000..a275f7df --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/cifuzz.yml @@ -0,0 +1,30 @@ +name: CIFuzz + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + Fuzzing: + runs-on: ubuntu-latest + steps: + - name: Build Fuzzers + id: build + uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master + with: + oss-fuzz-project-name: 'libsrtp' + language: c++ + - name: Run Fuzzers + uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master + with: + oss-fuzz-project-name: 'libsrtp' + fuzz-seconds: 300 + language: c++ + - name: Upload Crash + uses: actions/upload-artifact@v4 + if: failure() && steps.build.outcome == 'success' + with: + name: artifacts + path: ./out/artifacts diff --git a/src/libs/libsrtp/.github/workflows/cmake.yml b/src/libs/libsrtp/.github/workflows/cmake.yml new file mode 100644 index 00000000..99c40f10 --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/cmake.yml @@ -0,0 +1,127 @@ +name: CMake CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + schedule: + - cron: '20 4 * * 1' + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + crypto: [internal, openssl, openssl3, wolfssl, nss, mbedtls] + exclude: + - os: windows-latest + crypto: openssl + - os: windows-latest + crypto: wolfssl + - os: windows-latest + crypto: openssl3 + - os: windows-latest + crypto: nss + - os: windows-latest + crypto: mbedtls + - os: ubuntu-latest + crypto: openssl3 + include: + - crypto: internal + cmake-crypto-enable: "" + - crypto: openssl + cmake-crypto-enable: "-DCRYPTO_LIBRARY=openssl" + - crypto: openssl3 + cmake-crypto-enable: "-DCRYPTO_LIBRARY=openssl" + - crypto: wolfssl + cmake-crypto-enable: "-DCRYPTO_LIBRARY=wolfssl" + - crypto: nss + cmake-crypto-enable: "-DCRYPTO_LIBRARY=nss" + - crypto: mbedtls + cmake-crypto-enable: "-DCRYPTO_LIBRARY=mbedtls" + + runs-on: ${{ matrix.os }} + + env: + CTEST_OUTPUT_ON_FAILURE: 1 + + steps: + - name: Setup Ubuntu wolfSSL + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'wolfssl' + run: | + git clone https://github.com/wolfSSL/wolfssl + cd wolfssl + git checkout v5.7.0-stable + ./autogen.sh + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' + make + sudo make install + cd .. + + - name: Setup Ubuntu NSS + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'nss' + run: | + sudo apt-get update + sudo apt-get install libnss3-dev + + - name: Setup Ubuntu MbedTLS + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'mbedtls' + run: sudo apt-get install libmbedtls-dev + + - name: Setup macOS OpenSSL + if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl' + run: echo "cmake-crypto-dir=-DOPENSSL_ROOT_DIR=$(brew --prefix openssl@1.1)" >> $GITHUB_ENV + + - name: Setup macOS OpenSSL3 + if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl3' + run: | + brew install openssl@3 + echo "cmake-crypto-dir=-DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV + + - name: Setup macOS wolfSSL + if: matrix.os == 'macos-latest' && matrix.crypto == 'wolfssl' + run: | + brew install autoconf automake libtool + git clone https://github.com/wolfSSL/wolfssl + cd wolfssl + git checkout v5.7.0-stable + ./autogen.sh + CPU=`sysctl -n machdep.cpu.brand_string` + if [[ "$CPU" =~ Intel ]]; then + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' + else + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-armasm' '--enable-aesgcm-stream' + fi + make + sudo make install + cd .. + + - name: Setup macOS NSS + if: matrix.os == 'macos-latest' && matrix.crypto == 'nss' + run: brew install nss + + - name: Setup macOS MbedTLS + if: matrix.os == 'macos-latest' && matrix.crypto == 'mbedtls' + run: brew install mbedtls + + - uses: actions/checkout@v2 + + - name: Create Build Environment + run: cmake -E make_directory ${{github.workspace}}/build + + - name: Configure CMake + working-directory: ${{github.workspace}}/build + shell: bash + run: cmake $GITHUB_WORKSPACE -DLIBSRTP_TEST_APPS=ON ${{ matrix.cmake-crypto-enable}} ${{env.cmake-crypto-dir}} + + - name: Build + working-directory: ${{github.workspace}}/build + shell: bash + run: cmake --build . + + - name: Test + working-directory: ${{github.workspace}}/build + shell: bash + run: ctest diff --git a/src/libs/libsrtp/.github/workflows/coverity_scan.yml b/src/libs/libsrtp/.github/workflows/coverity_scan.yml new file mode 100644 index 00000000..262ef336 --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/coverity_scan.yml @@ -0,0 +1,41 @@ +name: Start Coverity Scan +on: + push: + branches: [ main ] + workflow_dispatch: + +jobs: + coverity: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Download Coverity Build Tool + run: | + wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=cisco-libSRTP" -O cov-analysis-linux64.tar.gz + mkdir cov-analysis-linux64 + tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64 + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} + + - name: Configure + run: ./configure + + - name: Build with cov-build + run: | + export PATH=`pwd`/cov-analysis-linux64/bin:$PATH + cov-build --dir cov-int make + + - name: Submit the result to Coverity Scan + run: | + tar czvf libsrtp.tgz cov-int + curl \ + --form project=cisco-libSRTP \ + --form token=$TOKEN \ + --form email=pabuhler@cisco.com \ + --form file=@libsrtp.tgz \ + --form version=2 \ + --form description="libSRTP" \ + https://scan.coverity.com/builds?project=cisco-libSRTP + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} diff --git a/src/libs/libsrtp/.github/workflows/format_check.yml b/src/libs/libsrtp/.github/workflows/format_check.yml new file mode 100644 index 00000000..6210158c --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/format_check.yml @@ -0,0 +1,17 @@ +name: Code Formatting Check + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + format-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install Clang Format + run: sudo apt install clang-format-14 + - name: Run clang format + run: ./format.sh -d diff --git a/src/libs/libsrtp/.github/workflows/fuzzer_build.yml b/src/libs/libsrtp/.github/workflows/fuzzer_build.yml new file mode 100644 index 00000000..837af8df --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/fuzzer_build.yml @@ -0,0 +1,24 @@ +# This will verify that the fuzzer builds but will not run it +name: Fuzzer build check + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + +jobs: + fuzz: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Install clang + run: sudo apt install clang + + - name: Configure with fuzzing + run: CC=clang CXX=clang++ CXXFLAGS="-fsanitize=fuzzer-no-link,address,undefined -g -O3" CFLAGS="-fsanitize=fuzzer-no-link,address,undefined -g -O3" LDFLAGS="-fsanitize=fuzzer-no-link,address,undefined" ./configure + + - name: Build + run: LIBFUZZER="-fsanitize=fuzzer" make srtp-fuzzer diff --git a/src/libs/libsrtp/.github/workflows/meson.yml b/src/libs/libsrtp/.github/workflows/meson.yml new file mode 100644 index 00000000..6a3769bc --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/meson.yml @@ -0,0 +1,144 @@ +name: Meson CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + schedule: + - cron: '20 4 * * 1' + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + crypto: [internal, openssl, openssl3, wolfssl, nss, mbedtls] + exclude: + - os: windows-latest + crypto: openssl + - os: windows-latest + crypto: openssl3 + - os: windows-latest + crypto: wolfssl + - os: windows-latest + crypto: nss + - os: windows-latest + crypto: mbedtls + - os: ubuntu-latest + crypto: openssl3 + include: + - crypto: internal + meson-crypto-enable: "" + - crypto: openssl + meson-crypto-enable: "-Dcrypto-library=openssl" + - crypto: openssl3 + meson-crypto-enable: "-Dcrypto-library=openssl" + - crypto: wolfssl + meson-crypto-enable: "-Dcrypto-library=wolfssl" + - crypto: nss + meson-crypto-enable: "-Dcrypto-library=nss" + - crypto: mbedtls + meson-crypto-enable: "-Dcrypto-library=mbedtls" + + runs-on: ${{ matrix.os }} + + env: + CTEST_OUTPUT_ON_FAILURE: 1 + + steps: + - name: Setup Ubuntu Meson + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install meson + + - name: Setup macOS Meson + if: matrix.os == 'macos-latest' + run: | + brew install meson + + - name: Setup Windows Meson & Ninja + if: matrix.os == 'windows-latest' + run: | + choco install ninja + pip3 install meson + + - name: Setup Ubuntu wolfSSL + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'wolfssl' + run: | + git clone https://github.com/wolfSSL/wolfssl + cd wolfssl + git checkout v5.7.0-stable + ./autogen.sh + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' + make + sudo make install + cd .. + + - name: Setup Ubuntu NSS + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'nss' + run: | + sudo apt-get update + sudo apt-get install libnss3-dev + + - name: Setup Ubuntu MbedTLS + if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'mbedtls' + run: sudo apt-get install libmbedtls-dev + + - name: Setup macOS OpenSSL + if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl' + run: echo "pkgconfig-crypto-dir=PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig" >> $GITHUB_ENV + + - name: Setup macOS OpenSSL3 + if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl3' + run: | + brew install openssl@3 + echo "pkgconfig-crypto-dir=PKG_CONFIG_PATH=$(brew --prefix openssl@3)/lib/pkgconfig" >> $GITHUB_ENV + + - name: Setup macOS wolfSSL + if: matrix.os == 'macos-latest' && matrix.crypto == 'wolfssl' + run: | + brew install autoconf automake libtool + git clone https://github.com/wolfSSL/wolfssl + cd wolfssl + git checkout v5.7.0-stable + ./autogen.sh + CPU=`sysctl -n machdep.cpu.brand_string` + if [[ "$CPU" =~ Intel ]]; then + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' + else + ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-armasm' '--enable-aesgcm-stream' + fi + make + sudo make install + cd .. + + - name: Setup macOS NSS + if: matrix.os == 'macos-latest' && matrix.crypto == 'nss' + run: brew install nss + + - name: Setup macOS MbedTLS + if: matrix.os == 'macos-latest' && matrix.crypto == 'mbedtls' + run: brew install mbedtls + + - uses: actions/checkout@v2 + + - name: Create Build Environment + run: meson setup ${{github.workspace}}/build + + - name: Configure Meson + working-directory: ${{github.workspace}}/build + shell: bash + run: ${{ env.pkgconfig-crypto-dir }} meson configure ${{ matrix.meson-crypto-enable }} + + - name: Build + working-directory: ${{github.workspace}}/build + shell: bash + run: ninja + + - name: Test + working-directory: ${{github.workspace}}/build + shell: bash + run: meson test diff --git a/src/libs/libsrtp/.github/workflows/stream_list.yml b/src/libs/libsrtp/.github/workflows/stream_list.yml new file mode 100644 index 00000000..7af54060 --- /dev/null +++ b/src/libs/libsrtp/.github/workflows/stream_list.yml @@ -0,0 +1,41 @@ +name: Stream List CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + env: + CTEST_OUTPUT_ON_FAILURE: 1 + + steps: + + - uses: actions/checkout@v2 + + - name: Create Build Environment + run: cmake -E make_directory ${{github.workspace}}/build + + - name: Configure CMake + working-directory: ${{github.workspace}}/build + shell: bash + run: cmake $GITHUB_WORKSPACE -DLIBSRTP_TEST_APPS=ON -DCMAKE_C_FLAGS:STRING="-DSRTP_NO_STREAM_LIST -DSRTP_USE_TEST_STREAM_LIST" + + - name: Build + working-directory: ${{github.workspace}}/build + shell: bash + run: cmake --build . -t srtp_driver + + - name: Test + working-directory: ${{github.workspace}}/build + shell: bash + run: ctest -R srtp_driver diff --git a/src/libs/libsrtp/.gitignore b/src/libs/libsrtp/.gitignore new file mode 100644 index 00000000..38d3a8f8 --- /dev/null +++ b/src/libs/libsrtp/.gitignore @@ -0,0 +1,48 @@ +# Misc crap +*~ +old +old? +*.pc + +# Object files +*.o + +# Libraries +*.lib +*.a + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app + +# srtp things +build*/ +Debug +Makefile +Root +autom4te.cache +config.log +config.status +crypto/include/config.h +crypto/test/aes_calc +crypto/test/cipher_driver +crypto/test/datatypes_driver +crypto/test/env +crypto/test/kernel_driver +crypto/test/sha1_driver +crypto/test/stat_driver +tables/aes_tables +test/rdbx_driver +test/replay_driver +test/roc_driver +test/rtp_decoder +test/rtpw +test/srtp_driver +test/test_srtp diff --git a/src/libs/libsrtp/CHANGES b/src/libs/libsrtp/CHANGES new file mode 100644 index 00000000..81319a8f --- /dev/null +++ b/src/libs/libsrtp/CHANGES @@ -0,0 +1,377 @@ +Changelog + +2.6.0 + +#667 - remove use of pointers to 32bit values + +#666 - Cleaning up cmake and enabled more warnings. + +#665 - start using const on internal arguments + +#662 - Some srtp_driver fixes + +#661 - remove travis reference from README.md + +#660 - meson.build: implement mbedtls support + +#649 - iv length is constant so set only once + +#507 - Add x86 SIMD optimizations to crypto datatypes + +#643 - Add a missing typedef for stream list ctx + +#641 - cmake: Rename TEST_APPS as LIBSRTP_TEST_APPS option + +#640 - cmake: Support configuring as subproject + +2.5.0 + +#636 - Make mbedtls hmac less restrictive in line with RFC and library capabilities + +#612 - Allow overriding stream list implementation + +#629 - update min openssl version to 1.1.0 + +#602 - Openssl 3 support for EVP MAC + +#628 - Add android build to CI + +#616 - add CIFuzz Github action to workflows + +#621 - Add policy_set_aes_cm_192_xxx symbols to def file + +#617 - Use current directions in stream update test + +#614 - Call `set_aad` and `get_tag` in AEAD performance tests + +#611 - Create alias for srtp2 as libSRTP::srtp2 + +#593 - Remove compatibility code for legacy OpenSSL to fix LibreSSL build + +#573 - Export CMake Targets + +#586 - Avoid initializing local char table when converting nibble to hex + +#591 - EVP_CIPHER_CTX_cleanup() is deprecated in OpenSSL 1.1.0 + +#589 - Correct null cipher key sizes and be more defensive + +#570 - Include directory should point to 'include' not to 'include/srtp2' + +#551 - Count blocks instead of bytes in AES-ICM limit computation + +#561 - Rtp decoder support ssrc and roc + +#559 - Use a full-length key even with null ciphers + +#558 - Fix set ROC functionality with gcm + +2.4.0 + +Major changes + +#529 - Remove EKT files, this was never completed and the draft has since changed. + +#512 - Adds support for Mbedtls as a crypto backend. + +#503 - Support apple silicon build. + +#495 - Adds support for the Meson build system. This is an alternative to Cmake and auto tools. + +Other changes + +#546 - Improve OpenSSL KDF check. + +#542 - Add void to function declarations for EVP_EncryptInit check. + +#531 - Remove dead code. + +#524 - Support running against nss >= 3.52. + +#521 - Remove references to dtls from libsrtp. + +#520 - Use nss based hmac when nss enabled. + +#519 - Move selftest vectors form backends to common files. + +#515 - Extend cmake support. + +#514 - Fix gcc11 warning by defining output length. + +#502 - Remove visual studio build files. + +#501 - cmake: Set the VERSION property of the srtp2 library. + +#500 - Fixed issue #499 with buffer overflow. + +#498 - Feature/additional error checks. + +#496 - Rework check for OPENSSL_cleanse(). + +#492 - Avoid non-existing compiler flag -O4. + +#491 - Fix two-byte RTP header extension encryption. + +#478 - Modify cmake to install crypto_types.h instead of cipher_types.h + +2.3.0 + +Major changes + +A fuzzer was added to the project based on libFuzzer. This is run as part of Google oss-fuzz, the current status can be found at https://oss-fuzz-build-logs.storage.googleapis.com/index.html#libsrtp . Details available in PR #442 and issue #393. + +CMake support was added as an alternative build system. This was primarily added to replace the Visual Studio project files currently checked in but has been extend to support building on all platforms. Initial PR #449 and #455 but has been support has been continuously improved. + +NSS support for crypto backend was added. This is can be used as an alternative to openssl. Initial PR #413 but there has been numerous improvements. + +Other changes + +PR #474 - Add flag to disable pcap dependency when build test apps. + +PR #472 - Add ci builds for ios and android. + +PR #463 - problem on srtp_aes_icm_openssl_encrypt. + +PR #471 - Allow the pcap file to be read from a physical file. + +PR #457 - Fix docs crypto_policy_* -> srtp_crypto_policy_* . + +PR #452 - crypto/cipher: Reset the EVP_CIPHER_CTX structure before each test. + +PR #444 - Extend rtp_ecoder to support RTCP and multiplexed SSRC's. + +PR #443 - rtp_decoder avoid crash when no packets found. + +PR #429 - Rand for test only. + +PR #421 - Fix GCM IV logging. + +PR #415 - Fixes unaligned trailer access. + +PR #414 - Detect and handle broken "OPENSSL_cleanse". + +2.2.0 + +Major changes + +All code has been reformatted to be consistent. A .clang-format file and format.sh script has been added that can be use to verify and enforce consistent formatting. An automated check on code formatting is now part of travis build. + +Other changes + +PR #409 - Compatibilty with LibreSSL + +PR #406 - Fix unprotect when pktlen < (2*mki_size + tag_len) + +PR #405 - Prevent potential double free + +PR #404 - Add back extern to global variables + +PR #403 - Set gcm IV directly with EVP_CipherInit_ex + +PR #401 - Fix memory access issue in srtp_get_session_keys() + +PR #398 - Fix memory access fixes when invalid profiles where used + +PR #391 - Return NULL when allocating memory of size zero + +PR #390 - Bitvector of length zero is not valid + +PR #385 - Treat warnings as errors on travis builds + +PR #388 - Moved externs from crypto_kernel into its own header + +PR #379 - Fixed several compiler warnings from Firefox builds + +PR #377 - Removed variable init code in rdbx which never gets used + +PR #381 - Added error in case the platform is not detected + +PR #376 - Add coverity scan to travis builds + +PR #374 - Add a big endian build on travis + +PR #373 - Fixed buffer size issue in test/srtp_driver.c + +PR #372 - Make rtp_decoder compile on MinGW + +PR #367 - Rename configure.in to configure.ac + +PR #365 - Replace calls to free() with srtp_crypto_free() + +PR #364 - Add valgrind to travis and fix leaks in tests + +PR #363 - Change smtp_crypto_alloc to initialize memory to zero + +PR #354 - Fix potential leak if cloning of stream fails + +PR #340 - Fix potential leak in srtp_add_stream() + +PR #323 - Fix running test in out of source builds + +Issue #316 - Remove VERSION file + +2.1.0 + +Compatibility changes + + PR #253 - Cipher type cleanup for AES + When libSRTP is compiled with OpenSSL and the AES 256 ICM cipher is used + with RTCP an incorrect initialization vector is formed. + This change will break backwards compatibility with older versions (1.5, + 2.0) of libSRTP when using the AES 256 ICM cipher with OpenSSL for RTCP. + + PR #259 - Sequence number incorrectly masked for AES GCM IV + The initialization vector for AES GCM encryption was incorrectly formed on + little endian machines. + This change will break backwards compatibility with older versions (1.5, + 2.0) of libSRTP when using the AES GCM cipher for RTCP. + + PR #287 - Fix OOB read in key generation for encrypted headers with GCM ciphers + Adds padding of GCM salt to the corresponding ICM length used for header + encryption. + This change will break backwards compatibility with version 2.0 of libSRTP + when using the header encryption extension with the AES GCM cipher. + +Major changes + + PR #204 - OpenSSL performance improvements + Changed key expansion to occur once per key instead of once per packet. + + PR #209 - Restore AES-192 under BoringSSL + BoringSSL supports AES-192 and is now enabled in libSRTP. + + PR #224 - Master Key Identifiers (MKI) Support patch + Adds MKI support with up to 4 keys. + + PR #234 - Report SSRC instead of srtp_stream_t in srtp_event_data_t + srtp_stream_t is an opaque type making the event framework almost useless. + Now the SSRC is returned instead for use as a key in the public API. + + PR #238 - Configure changes and improvements + CFLAGS check more shell neutral, quotation fixes, always generate and + install pkg-config file, improved OpenSSL discovery and linking, remove + -fPIC flag on Windows, fix shared library generation under Cygwin, replace + hardcoded CFLAGS with compiler checks, and regenerate configure after + configure.in changes. + + PR #241 & PR #261 - Improved logging API to receive log messages from libSRTP + Provides a logging API and the ability to enable logging to stdout and a + file, as well as a switch to enable all internal debug modules. + + PR #289 - Added support for set and get the roll-over-counter + Adds an API to set and get the ROC in an (S)RTP session. + + PR #304 - Fix (S)RTP and (S)RTCP for big endian machines + The structures srtp_hdr_t, srtcp_hdr_t and srtcp_trailer_t were defined + incorrectly on big endian systems. + +Other changes + + PR #149 - Don't create a symlink if there is no $(SHAREDLIBVERSION) + + PR #151 - Make srtp_driver compile for MIPS + + PR #160 - Use PKG_PROG_PKG_CONFIG to find correct pkg-config + + PR #167 - Additional RTCP and SRTCP tests + + PR #169 - Identified merge conflict created by commit 6b71fb9 + + PR #173 - Avoid error 'possibly undefined macro: AM_PROG_AR' + + PR #174 - Avoid warning 'The macro AC_TRY_LINK is obsolete.' + + PR #175 - Remove 2nd -fPIC + + PR #182 - Add a length check before reading packet data + + PR #191 - On debug, output correct endianness of SSRC + + PR #192 - Replace octet_string_is_eq with a constant-time implementation + + PR #195 - Add missing __cplusplus header guards + + PR #198 - Update sha1_driver.c to avoid memory leaks + + PR #202 - Add an explicit cast to avoid a printf format warning on macOS + + PR #205 - Update Windows build files to Visual Studio 2015 + + PR #207 - Fix to install-win.bat syntax, and add installation of x64 libraries + + PR #208 - Make replace_cipher and replace_auth public again + + PR #211 - Changes for OpenSSL 1.1.0 compatibility + + PR #213 - Add cast to `unsigned int` in call to printf in test + + PR #214 - Avoid empty initializer braces + + PR #222 - Fix issue: No consistency when use some srtp_* functions + + PR #231 - Advance version on master in preparation for 2.1 release + + PR #232 - Update Travis, do not build with OpenSSL on OSX + + PR #233 - crypto/replay/rdbx.c: Return type of srtp_index_guess from int to + int32_t + + PR #236 - test/rtp_decoder.c: Removed superfluous conditional + + PR #237 - test/rtp_decoder.c: spring cleaning + + PR #239 - octet_string_set_to_zero() delegates to OPENSSL_cleanse() if + available, if not it will use srtp_cleanse() to zero memory + + PR #243 - EKT is not really supported yet, remove from install + + PR #244 - Add simple error checking in timing test to avoid false results + + PR #245 - Add missing srtp_cipher_dealloc calls when test fails + + PR #246 - test/rtp_decoder: Add missing conditional + + PR #248 - New README.md that integrates intro, credits and references from + /doc/ and is used to generate documentation + + PR #249 - Remove support for generic aesicm from configure.in + + PR #250 - Update README.md, incorrect tag for link + + PR #255 - Cleanup outdated comment related to MKI + + PR #258 - Add AES-GCM to DTLS-SRTP Protection Profiles + + PR #263 - Cleaning up and removing duplicated and outdated code + + PR #265 - Introduction of unit test framework: CUTest + + PR #267 - crypto/kernel/err.c: Include datatypes.h + + PR #272 - Reduce literal constants + + PR #273 - SRTP AEAD SRTCP initialization vector regression tests + + PR #274 - Update Travis build - add ccache + + PR #276 - Reference and docs updates + + PR #278 - Removed crypto/test/auth_driver.c and test/lfsr.c + + PR #279 - Bump copyright year + + PR #283 - Add missing docs in srtp.h + + PR #284 - Add strict-prototypes warning if supported + + PR #291 - Use const char * for srtp_set_debug_module() + + PR #294 - Fix incorrect result of rdb_increment on overflow + + PR #300 - Standalone tests + + PR #301 - Configure fixes + + PR #302 - Fix warning regarding unused variable + + PR #303 - Makefile.in: Add gnu as match for shared lib suffix diff --git a/src/libs/libsrtp/CMakeLists.txt b/src/libs/libsrtp/CMakeLists.txt new file mode 100644 index 00000000..b81dc997 --- /dev/null +++ b/src/libs/libsrtp/CMakeLists.txt @@ -0,0 +1,536 @@ +cmake_minimum_required(VERSION 3.21) + +project(libsrtp3 VERSION 3.0.0 LANGUAGES C) + +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +set(PACKAGE_VERSION ${PROJECT_VERSION}) +set(PACKAGE_STRING "${PROJECT_NAME} ${PROJECT_VERSION}") + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + + +option(ENABLE_WARNINGS "Enable to add warnings to a target." ON) +option(ENABLE_WARNINGS_AS_ERRORS "Enable to treat warnings as errors." ON) + +option(ENABLE_SANITIZE_ADDR "Enable address sanitize." OFF) +option(ENABLE_SANITIZE_UNDEF "Enable undefined sanitize." OFF) +option(ENABLE_SANITIZE_LEAK "Enable leak sanitize (Gcc/Clang only)." OFF) +option(ENABLE_SANITIZE_THREAD "Enable thread sanitize (Gcc/Clang only)." OFF) + +option(ENABLE_LTO "Enable to add Link Time Optimization." OFF) + +option(LIBSRTP_TEST_APPS "Build libSRTP test applications" ON) +option(BUILD_SHARED_LIBS "Build shared library" OFF) + +include(TestBigEndian) +include(CheckIncludeFile) +include(CheckFunctionExists) +include(CheckTypeSize) +include(CheckCSourceCompiles) +include(ConfigSafeGuards) + +if(NOT PROJECT_IS_TOP_LEVEL) + set(LIBSRTP_TEST_APPS OFF) +endif() + +if(ENABLE_WARNINGS) + include(Warnings) +endif() + + +test_big_endian(WORDS_BIGENDIAN) + +if (NOT APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") + set (HAVE_X86 TRUE) +else () + set (HAVE_X86 FALSE) +endif () + +check_include_file(arpa/inet.h HAVE_ARPA_INET_H) +check_include_file(byteswap.h HAVE_BYTESWAP_H) +check_include_file(inttypes.h HAVE_INTTYPES_H) +check_include_file(machine/types.h HAVE_MACHINE_TYPES_H) +check_include_file(netinet/in.h HAVE_NETINET_IN_H) +check_include_file(stdint.h HAVE_STDINT_H) +check_include_file(stdlib.h HAVE_STDLIB_H) +check_include_file(sys/int_types.h HAVE_SYS_INT_TYPES_H) +check_include_file(sys/socket.h HAVE_SYS_SOCKET_H) +check_include_file(sys/types.h HAVE_SYS_TYPES_H) +check_include_file(unistd.h HAVE_UNISTD_H) +check_include_file(windows.h HAVE_WINDOWS_H) +check_include_file(winsock2.h HAVE_WINSOCK2_H) + +check_function_exists(sigaction HAVE_SIGACTION) +check_function_exists(inet_aton HAVE_INET_ATON) +check_function_exists(inet_pton HAVE_INET_PTON) +check_function_exists(usleep HAVE_USLEEP) + +check_type_size(uint8_t UINT8_T) +check_type_size(uint16_t UINT16_T) +check_type_size(uint32_t UINT32_T) +check_type_size(uint64_t UINT64_T) +check_type_size(int32_t INT32_T) +check_type_size("unsigned long" SIZEOF_UNSIGNED_LONG) +check_type_size("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG) + +check_c_source_compiles("inline void func(); void func() { } int main() { func(); return 0; }" HAVE_INLINE) +if(NOT HAVE_INLINE) + check_c_source_compiles("__inline void func(); void func() { } int main() { func(); return 0; }" HAVE___INLINE) +endif() + +set(ENABLE_DEBUG_LOGGING OFF CACHE BOOL "Enable debug logging in all modules") +set(ERR_REPORTING_STDOUT OFF CACHE BOOL "Enable logging to stdout") +set(ERR_REPORTING_FILE "" CACHE FILEPATH "Use file for logging") + +set(CRYPTO_LIBRARY_VALUES "internal;openssl;wolfssl;mbedtls;nss") +set(CRYPTO_LIBRARY "internal" CACHE STRING + "Crypto library used by libSRTP, can be one of: ${CRYPTO_LIBRARY_VALUES}") +set_property(CACHE CRYPTO_LIBRARY PROPERTY STRINGS ${CRYPTO_LIBRARY_VALUES}) +if(NOT CRYPTO_LIBRARY IN_LIST CRYPTO_LIBRARY_VALUES) + message(FATAL_ERROR "Invalid value for CRYPTO_LIBRARY: ${CRYPTO_LIBRARY}. Allowed values are: ${CRYPTO_LIBRARY_VALUES}") +endif() +message(STATUS "Using crypto library: ${CRYPTO_LIBRARY}") + +set(USE_EXTERNAL_CRYPTO TRUE) +set(ENABLE_OPENSSL FALSE) +set(ENABLE_WOLFSSL FALSE) +set(ENABLE_MBEDTLS FALSE) +set(ENABLE_NSS FALSE) + +if(CRYPTO_LIBRARY STREQUAL "internal") + set(USE_EXTERNAL_CRYPTO FALSE) +elseif(CRYPTO_LIBRARY STREQUAL "openssl") + set(ENABLE_OPENSSL TRUE) + find_package(OpenSSL REQUIRED) + set(OPENSSL ${ENABLE_OPENSSL} CACHE BOOL INTERNAL) + set(GCM ${ENABLE_OPENSSL} CACHE BOOL INTERNAL) +elseif(CRYPTO_LIBRARY STREQUAL "wolfssl") + set(ENABLE_WOLFSSL TRUE) + find_package(wolfSSL REQUIRED) + set(WOLFSSL ${ENABLE_WOLFSSL} CACHE BOOL INTERNAL) + set(WOLFSSL_KDF ${ENABLE_WOLFSSL} CACHE BOOL INTERNAL) + set(GCM ${ENABLE_WOLFSSL} CACHE BOOL INTERNAL) +elseif(CRYPTO_LIBRARY STREQUAL "mbedtls") + set(ENABLE_MBEDTLS TRUE) + find_package(MbedTLS REQUIRED) + set(MBEDTLS ${ENABLE_MBEDTLS} CACHE BOOL INTERNAL) + set(GCM ${ENABLE_MBEDTLS} CACHE BOOL INTERNAL) +elseif(CRYPTO_LIBRARY STREQUAL "nss") + set(ENABLE_NSS TRUE) + find_package(NSS REQUIRED) + set(NSS ${ENABLE_NSS} CACHE BOOL INTERNAL) + set(GCM ${ENABLE_NSS} CACHE BOOL INTERNAL) +endif() + +set(CONFIG_FILE_DIR ${CMAKE_CURRENT_BINARY_DIR}) +include_directories(${CONFIG_FILE_DIR}) + +configure_file(config_in_cmake.h ${CONFIG_FILE_DIR}/config.h) +add_definitions(-DHAVE_CONFIG_H) + +if(ENABLE_SANITIZE_ADDR OR ENABLE_SANITIZE_UNDEF) + include(Sanitizer) + add_sanitizer_flags() +endif() + +if(ENABLE_LTO) + include(LTO) +endif() + +set(SOURCES_C + srtp/srtp.c +) + +set(CIPHERS_SOURCES_C + crypto/cipher/cipher.c + crypto/cipher/cipher_test_cases.c + crypto/cipher/cipher_test_cases.h + crypto/cipher/null_cipher.c +) + +if(ENABLE_OPENSSL) + list(APPEND CIPHERS_SOURCES_C + crypto/cipher/aes_icm_ossl.c + crypto/cipher/aes_gcm_ossl.c + ) +elseif(ENABLE_WOLFSSL) + list(APPEND CIPHERS_SOURCES_C + crypto/cipher/aes_icm_wssl.c + crypto/cipher/aes_gcm_wssl.c + ) +elseif(ENABLE_MBEDTLS) + list(APPEND CIPHERS_SOURCES_C + crypto/cipher/aes_icm_mbedtls.c + crypto/cipher/aes_gcm_mbedtls.c + ) +elseif(ENABLE_NSS) + list(APPEND CIPHERS_SOURCES_C + crypto/cipher/aes_icm_nss.c + crypto/cipher/aes_gcm_nss.c + ) +else() + list(APPEND CIPHERS_SOURCES_C + crypto/cipher/aes.c + crypto/cipher/aes_icm.c + ) +endif() + +set(HASHES_SOURCES_C + crypto/hash/auth.c + crypto/hash/auth_test_cases.c + crypto/hash/auth_test_cases.h + crypto/hash/null_auth.c +) + +if(ENABLE_OPENSSL) + list(APPEND HASHES_SOURCES_C + crypto/hash/hmac_ossl.c + ) +elseif(ENABLE_WOLFSSL) + list(APPEND HASHES_SOURCES_C + crypto/hash/hmac_wssl.c + ) +elseif(ENABLE_MBEDTLS) + list(APPEND HASHES_SOURCES_C + crypto/hash/hmac_mbedtls.c + ) +elseif(ENABLE_NSS) + list(APPEND HASHES_SOURCES_C + crypto/hash/hmac_nss.c + ) +else() + list(APPEND HASHES_SOURCES_C + crypto/hash/hmac.c + crypto/hash/sha1.c + ) +endif() + +set(KERNEL_SOURCES_C + crypto/kernel/alloc.c + crypto/kernel/crypto_kernel.c + crypto/kernel/err.c + crypto/kernel/key.c +) + +set(MATH_SOURCES_C + crypto/math/datatypes.c +) + +set(REPLAY_SOURCES_C + crypto/replay/rdb.c + crypto/replay/rdbx.c +) + +set(SOURCES_H + crypto/include/aes.h + crypto/include/aes_icm.h + crypto/include/alloc.h + crypto/include/auth.h + crypto/include/cipher.h + crypto/include/cipher_types.h + crypto/include/crypto_kernel.h + crypto/include/crypto_types.h + crypto/include/datatypes.h + crypto/include/err.h + crypto/include/hmac.h + crypto/include/key.h + crypto/include/null_auth.h + crypto/include/null_cipher.h + crypto/include/rdb.h + crypto/include/rdbx.h + crypto/include/sha1.h + include/srtp.h + include/srtp_priv.h + ${CONFIG_FILE_DIR}/config.h +) + +if(BUILD_SHARED_LIBS AND WIN32) + list(APPEND SOURCES_C + srtp.def + ) +endif() + +source_group("src" FILES ${SOURCES_C}) +source_group("src\\Ciphers" FILES ${CIPHERS_SOURCES_C}) +source_group("src\\Hashes" FILES ${HASHES_SOURCES_C}) +source_group("src\\Kernel" FILES ${KERNEL_SOURCES_C}) +source_group("src\\Math" FILES ${MATH_SOURCES_C}) +source_group("src\\Replay" FILES ${REPLAY_SOURCES_C}) +source_group("include" FILES ${SOURCES_H}) + +add_library(srtp3 + ${SOURCES_C} + ${CIPHERS_SOURCES_C} + ${HASHES_SOURCES_C} + ${KERNEL_SOURCES_C} + ${MATH_SOURCES_C} + ${REPLAY_SOURCES_C} + ${SOURCES_H} +) +add_library(libSRTP::srtp3 ALIAS srtp3) + +if (${ENABLE_WARNINGS}) + target_set_warnings( + TARGET + "srtp3" + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) +endif() + +if(${ENABLE_LTO}) + target_enable_lto( + TARGET + "srtp3" + ENABLE + ON) +endif() + + +set_target_properties(srtp3 PROPERTIES VERSION 1) + +target_include_directories(srtp3 PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + $ + $ + $ +) +if(ENABLE_OPENSSL) + target_include_directories(srtp3 PRIVATE ${OPENSSL_INCLUDE_DIR}) + target_link_libraries(srtp3 OpenSSL::Crypto) +elseif(ENABLE_WOLFSSL) + target_include_directories(srtp3 PRIVATE ${WOLFSSL_INCLUDE_DIR}) + target_link_libraries(srtp3 ${WOLFSSL_LIBRARY}) +elseif(ENABLE_MBEDTLS) + target_include_directories(srtp3 PRIVATE ${MBEDTLS_INCLUDE_DIRS}) + target_link_libraries(srtp3 ${MBEDTLS_LIBRARIES}) +elseif(ENABLE_NSS) + target_include_directories(srtp3 PRIVATE ${NSS_INCLUDE_DIRS}) + target_link_libraries(srtp3 ${NSS_LIBRARIES}) +endif() +if(WIN32) + target_link_libraries(srtp3 ws2_32) + target_compile_definitions(srtp3 PUBLIC _CRT_SECURE_NO_WARNINGS) +endif() + +install(TARGETS srtp3 DESTINATION lib + EXPORT libSRTPTargets +) + +install(FILES include/srtp.h crypto/include/auth.h + crypto/include/cipher.h + crypto/include/crypto_types.h + DESTINATION include/srtp3) + +if(LIBSRTP_TEST_APPS) + enable_testing() + + find_package(PCAP) + if (PCAP_FOUND) + add_executable(rtp_decoder test/rtp_decoder.c test/getopt_s.c test/util.c) + target_link_libraries(rtp_decoder srtp3 ${PCAP_LIBRARY}) + endif() + + if(NOT (BUILD_SHARED_LIBS AND WIN32)) + if(NOT USE_EXTERNAL_CRYPTO) + add_executable(aes_calc crypto/test/aes_calc.c test/getopt_s.c test/util.c) + target_include_directories(aes_calc PRIVATE test) + target_link_libraries(aes_calc srtp3) + target_set_warnings( + TARGET + aes_calc + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + add_test(aes_calc_128 aes_calc 000102030405060708090a0b0c0d0e0f + 00112233445566778899aabbccddeeff + 69c4e0d86a7b0430d8cdb78070b4c55a) + add_test(aes_calc_256 aes_calc 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00112233445566778899aabbccddeeff + 8ea2b7ca516745bfeafc49904b496089) + + add_executable(sha1_driver crypto/test/sha1_driver.c test/util.c) + target_set_warnings( + TARGET + sha1_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(sha1_driver PRIVATE test) + target_link_libraries(sha1_driver srtp3) + add_test(sha1_driver sha1_driver -v) + endif() + + add_executable(datatypes_driver crypto/test/datatypes_driver.c test/util.c) + target_set_warnings( + TARGET + datatypes_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(datatypes_driver PRIVATE test) + target_link_libraries(datatypes_driver srtp3) + add_test(datatypes_driver datatypes_driver -v) + + add_executable(cipher_driver crypto/test/cipher_driver.c test/getopt_s.c test/util.c) + target_set_warnings( + TARGET + cipher_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(cipher_driver PRIVATE test) + target_link_libraries(cipher_driver srtp3) + add_test(cipher_driver cipher_driver -v) + + add_executable(kernel_driver crypto/test/kernel_driver.c test/getopt_s.c) + target_set_warnings( + TARGET + kernel_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(kernel_driver PRIVATE test) + target_link_libraries(kernel_driver srtp3) + add_test(kernel_driver kernel_driver -v) + + add_executable(rdbx_driver test/rdbx_driver.c test/getopt_s.c test/ut_sim.c) + target_set_warnings( + TARGET + rdbx_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(rdbx_driver PRIVATE test) + target_link_libraries(rdbx_driver srtp3) + add_test(rdbx_driver rdbx_driver -v) + + add_executable(replay_driver test/replay_driver.c test/ut_sim.c) + target_set_warnings( + TARGET + replay_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(replay_driver PRIVATE test) + target_link_libraries(replay_driver srtp3) + add_test(replay_driver replay_driver -v) + + add_executable(roc_driver test/roc_driver.c test/ut_sim.c) + target_set_warnings( + TARGET + roc_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_include_directories(roc_driver PRIVATE test) + target_link_libraries(roc_driver srtp3) + add_test(roc_driver roc_driver -v) + endif() + + add_executable(srtp_driver test/srtp_driver.c + test/util.c test/getopt_s.c) + target_set_warnings( + TARGET + srtp_driver + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_link_libraries(srtp_driver srtp3) + add_test(srtp_driver srtp_driver -v) + add_test(srtp_driver_not_in_place_io srtp_driver -v -n) + + if(NOT (BUILD_SHARED_LIBS AND WIN32)) + add_executable(test_srtp test/test_srtp.c) + target_set_warnings( + TARGET + test_srtp + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + if(ENABLE_OPENSSL) + target_include_directories(test_srtp PRIVATE ${OPENSSL_INCLUDE_DIR}) + elseif(ENABLE_WOLFSSL) + target_include_directories(test_srtp PRIVATE ${WOLFSSL_INCLUDE_DIR}) + elseif(ENABLE_MBEDTLS) + target_include_directories(test_srtp PRIVATE ${MBEDTLS_INCLUDE_DIRS}) + elseif(ENABLE_NSS) + target_include_directories(test_srtp PRIVATE ${NSS_INCLUDE_DIRS}) + endif() + target_link_libraries(test_srtp srtp3) + add_test(test_srtp test_srtp) + endif() + + find_program(BASH_PROGRAM bash) + if(BASH_PROGRAM AND NOT WIN32) + add_executable(rtpw test/rtpw.c test/rtp.c test/util.c test/getopt_s.c) + target_set_warnings( + TARGET + rtpw + ENABLE + ${ENABLE_WARNINGS} + AS_ERRORS + ${ENABLE_WARNINGS_AS_ERRORS}) + target_link_libraries(rtpw srtp3) + add_test(NAME rtpw_test + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test/rtpw_test.sh -w ${CMAKE_CURRENT_SOURCE_DIR}/test/words.txt + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + if(GCM) + add_test(NAME rtpw_test_gcm + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test/rtpw_test_gcm.sh -w ${CMAKE_CURRENT_SOURCE_DIR}/test/words.txt + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif() + endif() +endif() + +# Export targets +install( + EXPORT libSRTPTargets + FILE libSRTPTargets.cmake + NAMESPACE libSRTP:: + DESTINATION lib/cmake/libSRTP +) + +#-------------------------------------------------------------------- +# Create generated files +#-------------------------------------------------------------------- +include(CMakePackageConfigHelpers) + +# Generate the config file that is includes the exports +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/libSRTPConfig.cmake" + INSTALL_DESTINATION "${CONFIG_FILE_DIR}" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +# Generate the version file for the config file +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/libSRTPConfigVersion.cmake" + VERSION "${PROJECT_VERSION}" + COMPATIBILITY AnyNewerVersion +) + +#-------------------------------------------------------------------- +# Install CMake config files +#-------------------------------------------------------------------- +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/libSRTPConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/libSRTPConfigVersion.cmake + DESTINATION lib/cmake/libSRTP +) diff --git a/src/libs/libsrtp/CODEOWNERS b/src/libs/libsrtp/CODEOWNERS new file mode 100644 index 00000000..79fbd2c8 --- /dev/null +++ b/src/libs/libsrtp/CODEOWNERS @@ -0,0 +1,3 @@ +# Meson build file maintainers +meson.build @nirbheek @tp-m @xhaakon +meson_options.txt @nirbheek @tp-m @xhaakon diff --git a/src/libs/libsrtp/Config.cmake.in b/src/libs/libsrtp/Config.cmake.in new file mode 100644 index 00000000..0ad9b177 --- /dev/null +++ b/src/libs/libsrtp/Config.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include ( "${CMAKE_CURRENT_LIST_DIR}/libSRTPTargets.cmake" ) diff --git a/src/libs/libsrtp/LICENSE b/src/libs/libsrtp/LICENSE new file mode 100644 index 00000000..af0a2ac3 --- /dev/null +++ b/src/libs/libsrtp/LICENSE @@ -0,0 +1,35 @@ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ diff --git a/src/libs/libsrtp/Makefile.in b/src/libs/libsrtp/Makefile.in new file mode 100644 index 00000000..7c7c5acc --- /dev/null +++ b/src/libs/libsrtp/Makefile.in @@ -0,0 +1,346 @@ +# Makefile for secure rtp +# +# David A. McGrew +# Cisco Systems, Inc. + +# targets: +# +# runtest runs test applications +# runtest-valgrind runs test applications with valgrind +# test builds test applications +# libsrtp3.a static library implementing srtp +# libsrtp3.so shared library implementing srtp +# clean removes objects, libs, and executables +# distribution cleans and builds a .tgz +# tags builds etags file from all .c and .h files + +DYNAMIC_PATH_VAR = @DYNAMIC_PATH_VAR@ +CRYPTO_LIBDIR = @CRYPTO_LIBDIR@ +USE_EXTERNAL_CRYPTO = @USE_EXTERNAL_CRYPTO@ +HAVE_PCAP = @HAVE_PCAP@ + +# Specify how tests should find shared libraries on macOS and Linux +# +# macOS purges DYLD_LIBRARY_PATH when spawning subprocesses, so it's +# not possible to pass this in from the outside; we have to specify +# it for any subprocesses we call. No support for dynamic linked +# tests on Windows. +ifneq ($(strip $(CRYPTO_LIBDIR)),) + ifneq ($(OS),Windows_NT) + UNAME_S = $(shell uname -s) + ifeq ($(UNAME_S),Linux) + FIND_LIBRARIES = LD_LIBRARY_PATH=$(CRYPTO_LIBDIR) + endif + ifeq ($(UNAME_S),Darwin) + FIND_LIBRARIES = DYLD_LIBRARY_PATH=$(CRYPTO_LIBDIR) + endif + CRYPTO_LIBDIR_FORWARD = CRYPTO_LIBDIR=$(CRYPTO_LIBDIR) + endif +endif + +.PHONY: all shared_library test + +all: test + +runtest: test + @echo "running libsrtp3 test applications..." + $(FIND_LIBRARIES) crypto/test/cipher_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) crypto/test/kernel_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) test/test_srtp$(EXE) >/dev/null + $(FIND_LIBRARIES) test/rdbx_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) test/srtp_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) test/roc_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) test/replay_driver$(EXE) -v >/dev/null + cd test; $(CRYPTO_LIBDIR_FORWARD) $(abspath $(srcdir))/test/rtpw_test.sh -w $(abspath $(srcdir))/test/words.txt >/dev/null +ifeq (1, $(USE_EXTERNAL_CRYPTO)) + cd test; $(CRYPTO_LIBDIR_FORWARD) $(abspath $(srcdir))/test/rtpw_test_gcm.sh -w $(abspath $(srcdir))/test/words.txt >/dev/null +endif + @echo "libsrtp3 test applications passed." + $(MAKE) -C crypto runtest + +runtest-valgrind: test + @echo "running libsrtp3 test applications... (valgrind)" + valgrind --error-exitcode=1 --leak-check=full --suppressions=./valgrind.supp test/test_srtp$(EXE) -v >/dev/null + valgrind --error-exitcode=1 --leak-check=full --suppressions=./valgrind.supp test/srtp_driver$(EXE) -v >/dev/null + @echo "libsrtp3 test applications passed. (valgrind)" + +# makefile variables + +CC = @CC@ +CXX = @CXX@ +INCDIR = -Icrypto/include -I$(srcdir)/include -I$(srcdir)/crypto/include +DEFS = @DEFS@ +CPPFLAGS= @CPPFLAGS@ +CFLAGS = @CFLAGS@ +CXXFLAGS= @CXXFLAGS@ +srtp-fuzzer: CFLAGS += -g +srtp-fuzzer: CXXFLAGS += -g +LIBS = @LIBS@ +LDFLAGS = -L. @LDFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCDIR) $(CPPFLAGS) $(CFLAGS) +SRTPLIB = -lsrtp3 +PCAP_LIB = @PCAP_LIB@ + +AR = @AR@ +RANLIB = @RANLIB@ +INSTALL = @INSTALL@ + +# EXE defines the suffix on executables - it's .exe for Windows, and +# null on linux, bsd, and OS X and other OSes. +EXE = @EXE@ + +HMAC_OBJS = @HMAC_OBJS@ +AES_ICM_OBJS = @AES_ICM_OBJS@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @top_builddir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +includedir = @includedir@ +libdir = @libdir@ +bindir = @bindir@ + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libsrtp3.pc + +SHAREDLIBVERSION = 1 +ifneq (,$(or $(findstring linux,@host@), $(findstring gnu,@host@))) +SHAREDLIB_DIR = $(libdir) +SHAREDLIB_LDFLAGS = -shared -Wl,-soname,$@ +SHAREDLIBSUFFIXNOVER = so +SHAREDLIBSUFFIX = $(SHAREDLIBSUFFIXNOVER).$(SHAREDLIBVERSION) +else ifneq (,$(or $(findstring cygwin,@host@), $(findstring mingw,@host@))) +SHAREDLIB_DIR = $(bindir) +SHAREDLIB_LDFLAGS = -shared -Wl,--out-implib,libsrtp3.dll.a +SHAREDLIBVERSION = +SHAREDLIBSUFFIXNOVER = dll +SHAREDLIBSUFFIX = $(SHAREDLIBSUFFIXNOVER) +else ifeq (darwin,$(findstring darwin,@host@)) +SHAREDLIB_DIR = $(libdir) +SHAREDLIB_LDFLAGS = -dynamiclib -twolevel_namespace \ + -fno-common -headerpad_max_install_names -install_name $(libdir)/$@ +SHAREDLIBSUFFIXNOVER = dylib +SHAREDLIBSUFFIX = $(SHAREDLIBVERSION).$(SHAREDLIBSUFFIXNOVER) +endif + +# implicit rules for object files and test apps + +%.o: %.c + $(COMPILE) -c $< -o $@ + +%$(EXE): %.c + $(COMPILE) $(LDFLAGS) $< -o $@ $(SRTPLIB) $(LIBS) + +ciphers = crypto/cipher/cipher.o crypto/cipher/null_cipher.o \ + crypto/cipher/cipher_test_cases.o \ + $(AES_ICM_OBJS) + +hashes = crypto/hash/null_auth.o crypto/hash/auth.o \ + crypto/hash/auth_test_cases.o \ + $(HMAC_OBJS) + +replay = crypto/replay/rdb.o crypto/replay/rdbx.o + +math = crypto/math/datatypes.o + +ust = crypto/ust/ust.o + +err = crypto/kernel/err.o + +kernel = crypto/kernel/crypto_kernel.o crypto/kernel/alloc.o \ + crypto/kernel/key.o $(err) # $(ust) + +cryptobj = $(ciphers) $(hashes) $(math) $(kernel) $(replay) + +# libsrtp3.a (implements srtp processing) + +srtpobj = srtp/srtp.o + +libsrtp3.a: $(srtpobj) $(cryptobj) $(gdoi) + $(AR) cr libsrtp3.a $^ + $(RANLIB) libsrtp3.a + +libsrtp3.$(SHAREDLIBSUFFIX): $(srtpobj) $(cryptobj) $(gdoi) + $(CC) -shared -o $@ $(SHAREDLIB_LDFLAGS) \ + $^ $(LDFLAGS) $(LIBS) + if [ -n "$(SHAREDLIBVERSION)" ]; then \ + ln -sfn $@ libsrtp3.$(SHAREDLIBSUFFIXNOVER); \ + fi + +shared_library: libsrtp3.$(SHAREDLIBSUFFIX) + +libsrtp3.so: $(srtpobj) $(cryptobj) + $(CC) -shared -Wl,-soname,libsrtp3.so \ + -o libsrtp3.so $^ $(LDFLAGS) + +# test applications +ifneq (1, $(USE_EXTERNAL_CRYPTO)) +AES_CALC = crypto/test/aes_calc$(EXE) +SHA1_DRIVER = crypto/test/sha1_driver$(EXE) +endif + +crypto_testapp = $(AES_CALC) crypto/test/cipher_driver$(EXE) \ + crypto/test/datatypes_driver$(EXE) crypto/test/kernel_driver$(EXE) \ + $(SHA1_DRIVER) crypto/test/env$(EXE) + +testapp = $(crypto_testapp) test/srtp_driver$(EXE) test/replay_driver$(EXE) \ + test/roc_driver$(EXE) test/rdbx_driver$(EXE) test/rtpw$(EXE) \ + test/test_srtp$(EXE) + +ifeq (1, $(HAVE_PCAP)) +testapp += test/rtp_decoder$(EXE) +endif + +$(testapp): libsrtp3.a + +test/rtpw$(EXE): test/rtpw.c test/rtp.c test/util.c test/getopt_s.c \ + crypto/math/datatypes.c + $(COMPILE) $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +ifeq (1, $(HAVE_PCAP)) +test/rtp_decoder$(EXE): test/rtp_decoder.c test/rtp.c test/util.c test/getopt_s.c \ + crypto/math/datatypes.c + $(COMPILE) $(LDFLAGS) -o $@ $^ $(PCAP_LIB) $(LIBS) $(SRTPLIB) +endif + +crypto/test/aes_calc$(EXE): crypto/test/aes_calc.c test/util.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +test/test_srtp$(EXE): test/test_srtp.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +crypto/test/datatypes_driver$(EXE): crypto/test/datatypes_driver.c test/util.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +crypto/test/sha1_driver$(EXE): crypto/test/sha1_driver.c test/util.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +test/srtp_driver$(EXE): test/srtp_driver.c test/util.c test/getopt_s.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +test/rdbx_driver$(EXE): test/rdbx_driver.c test/getopt_s.c test/ut_sim.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +test/roc_driver$(EXE): test/roc_driver.c test/ut_sim.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +test/replay_driver$(EXE): test/replay_driver.c test/ut_sim.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +crypto/test/cipher_driver$(EXE): crypto/test/cipher_driver.c test/getopt_s.c test/util.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +crypto/test/kernel_driver$(EXE): crypto/test/kernel_driver.c test/getopt_s.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +crypto/test/env$(EXE): crypto/test/env.c test/getopt_s.c + $(COMPILE) -I$(srcdir)/test $(LDFLAGS) -o $@ $^ $(LIBS) $(SRTPLIB) + +test: $(testapp) + @echo "Build done. Please run '$(MAKE) runtest' to run self tests." + +memtest: test/srtp_driver + @test/srtp_driver -v -d "alloc" > tmp + @grep freed tmp | wc -l > freed + @grep allocated tmp | wc -l > allocated + @echo "checking for memory leaks (only works with --enable-stdout)" + cmp -s allocated freed + @echo "passed (same number of alloc() and dealloc() calls found)" + @rm freed allocated tmp + +# the target 'plot' runs the timing test (test/srtp_driver -t) then +# uses gnuplot to produce plots of the results - see the script file +# 'timing' + +plot: test/srtp_driver + test/srtp_driver -t > timing.dat + + +# bookkeeping: tags, clean, and distribution + +tags: + etags */*.[ch] */*/*.[ch] + + +# documentation - the target libsrtp3doc builds html documentation + +libsrtp3doc: + $(MAKE) -C doc + +# fuzzer + +srtp-fuzzer: libsrtp3.a + $(MAKE) -C fuzzer + +.PHONY: clean superclean distclean install + +install: + $(INSTALL) -d $(DESTDIR)$(includedir)/srtp3 + $(INSTALL) -d $(DESTDIR)$(libdir) + cp $(srcdir)/include/srtp.h $(DESTDIR)$(includedir)/srtp3 + cp $(srcdir)/crypto/include/cipher.h $(DESTDIR)$(includedir)/srtp3 + cp $(srcdir)/crypto/include/auth.h $(DESTDIR)$(includedir)/srtp3 + cp $(srcdir)/crypto/include/crypto_types.h $(DESTDIR)$(includedir)/srtp3 + if [ -f libsrtp3.a ]; then cp libsrtp3.a $(DESTDIR)$(libdir)/; fi + if [ -f libsrtp3.dll.a ]; then cp libsrtp3.dll.a $(DESTDIR)$(libdir)/; fi + if [ -f libsrtp3.$(SHAREDLIBSUFFIX) ]; then \ + $(INSTALL) -d $(DESTDIR)$(SHAREDLIB_DIR); \ + cp libsrtp3.$(SHAREDLIBSUFFIX) $(DESTDIR)$(SHAREDLIB_DIR)/; \ + cp libsrtp3.$(SHAREDLIBSUFFIXNOVER) $(DESTDIR)$(SHAREDLIB_DIR)/; \ + if [ -n "$(SHAREDLIBVERSION)" ]; then \ + ln -sfn libsrtp3.$(SHAREDLIBSUFFIX) $(DESTDIR)$(SHAREDLIB_DIR)/libsrtp3.$(SHAREDLIBSUFFIXNOVER); \ + fi; \ + fi + $(INSTALL) -d $(DESTDIR)$(pkgconfigdir) + cp $(top_builddir)/$(pkgconfig_DATA) $(DESTDIR)$(pkgconfigdir)/ + +uninstall: + rm -f $(DESTDIR)$(includedir)/srtp3/*.h + rm -f $(DESTDIR)$(libdir)/libsrtp3.* + -rmdir $(DESTDIR)$(includedir)/srtp3 + rm -f $(DESTDIR)$(pkgconfigdir)/$(pkgconfig_DATA) + +clean: + rm -rf $(cryptobj) $(srtpobj) TAGS \ + libsrtp3.a libsrtp3.so libsrtp3.dll.a core *.core test/core + for a in * */* */*/*; do \ + if [ -f "$$a~" ] ; then rm -f $$a~; fi; \ + done; + for a in $(testapp); do rm -rf $$a$(EXE); done + rm -rf *.pict *.jpg *.dat + rm -rf freed allocated tmp + $(MAKE) -C doc clean + $(MAKE) -C fuzzer clean + +superclean: clean + rm -rf crypto/include/config.h config.log config.cache config.status \ + Makefile crypto/Makefile doc/Makefile \ + .gdb_history test/.gdb_history .DS_Store + rm -rf autom4te.cache + +distclean: superclean + +distversion = $(shell cat VERSION) +distname = libsrtp-$(distversion) + +mesonprojver = $(shell sed -n -e "s/project.*version\s*:\s'\([0-9.]\+\)'.*/\1/p" meson.build) + +distribution: runtest superclean + if ! [ -f VERSION ]; then exit 1; fi + @# Check that the project version set in meson matches the release version + @if [ $(distversion) != $(mesonprojver) ]; then \ + echo "==================================================="; \ + echo "Meson project version is $(mesonprojver) which is incorrect."; \ + echo "Please edit meson.build and change the 'version:'"; \ + echo "field in the project() call to $(distversion)"; \ + echo "==================================================="; \ + exit 1; \ + fi + if [ -f ../$(distname).tgz ]; then \ + mv ../$(distname).tgz ../$(distname).tgz.bak; \ + fi + cd ..; tar cvzf $(distname).tgz libsrtp + +# EOF diff --git a/src/libs/libsrtp/README.md b/src/libs/libsrtp/README.md new file mode 100644 index 00000000..0b2b8dc7 --- /dev/null +++ b/src/libs/libsrtp/README.md @@ -0,0 +1,556 @@ +[![CMake Build](https://github.com/cisco/libsrtp/actions/workflows/cmake.yml/badge.svg)](https://github.com/cisco/libsrtp/actions/workflows/cmake.yml) +[![Autotools Build](https://github.com/cisco/libsrtp/actions/workflows/autotools.yml/badge.svg)](https://github.com/cisco/libsrtp/actions/workflows/autotools.yml) +[![Autotools Build](https://github.com/cisco/libsrtp/actions/workflows/meson.yml/badge.svg)](https://github.com/cisco/libsrtp/actions/workflows/meson.yml) +[![Coverity Scan Build Status](https://scan.coverity.com/projects/14274/badge.svg)](https://scan.coverity.com/projects/cisco-libsrtp) +[![OSS-Fuzz Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/systemd.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html#libsrtp) + + +# Introduction to libSRTP + +This package provides an implementation of the Secure Real-time +Transport Protocol (SRTP), the Universal Security Transform (UST), and +a supporting cryptographic kernel. The SRTP API is documented in include/srtp.h, +and the library is in libsrtp2.a (after compilation). + +This document describes libSRTP, the Open Source Secure RTP library +from Cisco Systems, Inc. RTP is the Real-time Transport Protocol, an +IETF standard for the transport of real-time data such as telephony, +audio, and video, defined by [RFC 3550](https://tools.ietf.org/html/rfc3550). +Secure RTP (SRTP) is an RTP profile for providing confidentiality to RTP data +and authentication to the RTP header and payload. SRTP is an IETF Standard, +defined in [RFC 3711](https://tools.ietf.org/html/rfc3711), and was developed +in the IETF Audio/Video Transport (AVT) Working Group. This library supports +all of the mandatory features of SRTP, but not all of the optional features. See +the [Supported Features](#supported-features) section for more detailed information. + +This document is also used to generate the documentation files in the /doc/ +folder where a more detailed reference to the libSRTP API and related functions +can be created (requires installing doxygen.). The reference material is created +automatically from comments embedded in some of the C header files. The +documentation is organized into modules in order to improve its clarity. These +modules do not directly correspond to files. An underlying cryptographic kernel +provides much of the basic functionality of libSRTP but is mostly undocumented +because it does its work behind the scenes. + +-------------------------------------------------------------------------------- + + +# Contact Us + +- [libsrtp@lists.packetizer.com](mailto:libsrtp@lists.packetizer.com) general mailing list for news / announcements / discussions. This is an open list, see +[https://lists.packetizer.com/mailman/listinfo/libsrtp](https://lists.packetizer.com/mailman/listinfo/libsrtp) for singing up. + +- [libsrtp-security@lists.packetizer.com](mailto:libsrtp-security@lists.packetizer.com) for disclosing security issues to the libsrtp maintenance team. This is a closed list but anyone can send to it. + + +-------------------------------------------------------------------------------- + + +## Contents + +- [Introduction to libSRTP](#introduction-to-libsrtp) +- [Contact Us](#contact-us) + - [Contents](#contents) +- [License and Disclaimer](#license-and-disclaimer) +- [libSRTP Overview](#libsrtp-overview) + - [Secure RTP Background](#secure-rtp-background) + - [Supported Features](#supported-features) + - [Implementation Notes](#implementation-notes) +- [Installing and Building libSRTP](#installing-and-building-libsrtp) + - [Changing Build Configuration](#changing-build-configuration) + - [Using Visual Studio](#using-visual-studio) +- [Applications](#applications) + - [Example Code](#example-code) +- [Credits](#credits) +- [References](#references) + +-------------------------------------------------------------------------------- + + +# License and Disclaimer + +libSRTP is distributed under the following license, which is included +in the source code distribution. It is reproduced in the manual in +case you got the library from another source. + +> Copyright (c) 2001-2017 Cisco Systems, Inc. All rights reserved. +> +> Redistribution and use in source and binary forms, with or without +> modification, are permitted provided that the following conditions +> are met: +> +> - Redistributions of source code must retain the above copyright +> notice, this list of conditions and the following disclaimer. +> - Redistributions in binary form must reproduce the above copyright +> notice, this list of conditions and the following disclaimer in +> the documentation and/or other materials provided with the distribution. +> - Neither the name of the Cisco Systems, Inc. nor the names of its +> contributors may be used to endorse or promote products derived +> from this software without specific prior written permission. +> +> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +> "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +> FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +> COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +> INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +> (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +> STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +> ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +> OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------- + + +# libSRTP Overview + +libSRTP provides functions for protecting RTP and RTCP. RTP packets +can be encrypted and authenticated (using the `srtp_protect()` +function), turning them into SRTP packets. Similarly, SRTP packets +can be decrypted and have their authentication verified (using the +`srtp_unprotect()` function), turning them into RTP packets. Similar +functions apply security to RTCP packets. + +The typedef `srtp_stream_t` points to a structure holding all of the +state associated with an SRTP stream, including the keys and +parameters for cipher and message authentication functions and the +anti-replay data. A particular `srtp_stream_t` holds the information +needed to protect a particular RTP and RTCP stream. This datatype +is intentionally opaque in order to better seperate the libSRTP +API from its implementation. + +Within an SRTP session, there can be multiple streams, each +originating from a particular sender. Each source uses a distinct +stream context to protect the RTP and RTCP stream that it is +originating. The typedef `srtp_t` points to a structure holding all of +the state associated with an SRTP session. There can be multiple +stream contexts associated with a single `srtp_t`. A stream context +cannot exist indepent from an `srtp_t`, though of course an `srtp_t` can +be created that contains only a single stream context. A device +participating in an SRTP session must have a stream context for each +source in that session, so that it can process the data that it +receives from each sender. + +In libSRTP, a session is created using the function `srtp_create()`. +The policy to be implemented in the session is passed into this +function as an `srtp_policy_t` structure. A single one of these +structures describes the policy of a single stream. These structures +can also be linked together to form an entire session policy. A linked +list of `srtp_policy_t` structures is equivalent to a session policy. +In such a policy, we refer to a single `srtp_policy_t` as an *element*. + +An `srtp_policy_t` structure contains two `srtp_crypto_policy_t` structures +that describe the cryptograhic policies for RTP and RTCP, as well as +the SRTP master key and the SSRC value. The SSRC describes what to +protect (e.g. which stream), and the `srtp_crypto_policy_t` structures +describe how to protect it. The key is contained in a policy element +because it simplifies the interface to the library. In many cases, it +is desirable to use the same cryptographic policies across all of the +streams in a session, but to use a distinct key for each stream. A +`srtp_crypto_policy_t` structure can be initialized by using either the +`srtp_crypto_policy_set_rtp_default()` or `srtp_crypto_policy_set_rtcp_default()` +functions, which set a crypto policy structure to the default policies +for RTP and RTCP protection, respectively. + +-------------------------------------------------------------------------------- + + +## Secure RTP Background + +In this section we review SRTP and introduce some terms that are used +in libSRTP. An RTP session is defined by a pair of destination +transport addresses, that is, a network address plus a pair of UDP +ports for RTP and RTCP. RTCP, the RTP control protocol, is used to +coordinate between the participants in an RTP session, e.g. to provide +feedback from receivers to senders. An *SRTP session* is +similarly defined; it is just an RTP session for which the SRTP +profile is being used. An SRTP session consists of the traffic sent +to the SRTP or SRTCP destination transport addresses. Each +participant in a session is identified by a synchronization source +(SSRC) identifier. Some participants may not send any SRTP traffic; +they are called receivers, even though they send out SRTCP traffic, +such as receiver reports. + +RTP allows multiple sources to send RTP and RTCP traffic during the +same session. The synchronization source identifier (SSRC) is used to +distinguish these sources. In libSRTP, we call the SRTP and SRTCP +traffic from a particular source a *stream*. Each stream has its own +SSRC, sequence number, rollover counter, and other data. A particular +choice of options, cryptographic mechanisms, and keys is called a +*policy*. Each stream within a session can have a distinct policy +applied to it. A session policy is a collection of stream policies. + +A single policy can be used for all of the streams in a given session, +though the case in which a single *key* is shared across multiple +streams requires care. When key sharing is used, the SSRC values that +identify the streams **must** be distinct. This requirement can be +enforced by using the convention that each SRTP and SRTCP key is used +for encryption by only a single sender. In other words, the key is +shared only across streams that originate from a particular device (of +course, other SRTP participants will need to use the key for +decryption). libSRTP supports this enforcement by detecting the case +in which a key is used for both inbound and outbound data. + +-------------------------------------------------------------------------------- + + +## Supported Features + +This library supports all of the mandatory-to-implement features of +SRTP (as defined in [RFC 3711](https://tools.ietf.org/html/rfc3711)). Some of these +features can be selected (or de-selected) at run time by setting an +appropriate policy; this is done using the structure `srtp_policy_t`. +Some other behaviors of the protocol can be adapted by defining an +approriate event handler for the exceptional events; see the SRTPevents +section in the generated documentation. + +Some options that are described in the SRTP specification are not +supported. This includes + +- key derivation rates other than zero, +- the cipher F8, +- the use of the packet index to select between master keys. + +The user should be aware that it is possible to misuse this library, +and that the result may be that the security level it provides is +inadequate. If you are implementing a feature using this library, you +will want to read the Security Considerations section of [RFC 3711](https://tools.ietf.org/html/rfc3711#section-9). +In addition, it is important that you read and understand the +terms outlined in the [License and Disclaimer](#license-and-disclaimer) section. + +This library also supports the AES-GCM Authenticated Encryption methods +described in [RFC 7714](https://tools.ietf.org/html/rfc7714) + +-------------------------------------------------------------------------------- + + +## Implementation Notes + + * It is possible to configure which 3rd party (ie openssl/nss/etc) crypto backend + libSRTP will be built with. If no 3rd party backend is set then libSRTP provides + an internal implementation of AES and Sha1. The internal implementation only + supports AES-128 & AES-256, so to use AES-192 or the AES-GCM group of ciphers a + 3rd party crypto backend must be configured. For this and performance reasons it + is highly recommended to use a 3rd party crypto backend. + + * The `srtp_protect()` function assumes that the buffer holding the + rtp packet has enough storage allocated that the authentication + tag can be written to the end of that packet. If this assumption + is not valid, memory corruption will ensue. + + * Automated tests for the crypto functions are provided through + the `cipher_type_self_test()` and `auth_type_self_test()` functions. + These functions should be used to test each port of this code + to a new platform. + + * Replay protection is contained in the crypto engine, and + tests for it are provided. + + * This implementation provides calls to initialize, protect, and + unprotect RTP packets, and makes as few as possible assumptions + about how these functions will be called. For example, the + caller is not expected to provide packets in order (though if + they're called more than 65k out of sequence, synchronization + will be lost). + + * The sequence number in the rtp packet is used as the low 16 bits + of the sender's local packet index. Note that RTP will start its + sequence number in a random place, and the SRTP layer just jumps + forward to that number at its first invocation. An earlier + version of this library used initial sequence numbers that are + less than 32,768; this trick is no longer required as the + `rdbx_estimate_index(...)` function has been made smarter as of + version 1.0.1. + + * The replay window for (S)RTCP is hardcoded to 128 bits in length. + +-------------------------------------------------------------------------------- + + +# Installing and Building libSRTP + +To install libSRTP, download the latest release of the distribution +from [https://github.com/cisco/libsrtp/releases](https://github.com/cisco/libsrtp/releases). +You probably want to get the most recent release. Unpack the distribution and +extract the source files; the directory into which the source files +will go is named `libsrtp-A-B-C` where `A` is the version number, `B` is the +major release number and `C` is the minor release number. + +libSRTP uses the GNU `autoconf` and `make` utilities (BSD make will not work; if +both versions of make are on your platform, you can invoke GNU make as +`gmake`.). In the `libsrtp` directory, run the configure script and then +make: + +~~~.txt +./configure [ options ] +make +~~~ + +The configure script accepts the following options: + +Option | Description +-------------------------------|-------------------- +\-\-help \-h | Display help +\-\-enable-debug-logging | Enable debug logging in all modules +\-\-enable-openssl | Enable OpenSSL crypto engine +\-\-enable-nss | Enable NSS crypto engine +\-\-enable-openssl-kdf | Enable OpenSSL KDF algorithm +\-\-enable-log-stdout | Enable logging to stdout +\-\-with-openssl-dir | Location of OpenSSL installation +\-\-with-nss-dir | Location of NSS installation +\-\-with-log-file | Use file for logging + +By default there is no log output, logging can be enabled to be output to stdout +or a given file using the configure options. + +This package has been tested on the following platforms: Mac OS X +(powerpc-apple-darwin1.4), Cygwin (i686-pc-cygwin), Solaris +(sparc-sun-solaris2.6), RedHat Linux 7.1 and 9 (i686-pc-linux), and +OpenBSD (sparc-unknown-openbsd2.7). + +-------------------------------------------------------------------------------- + + +## Changing Build Configuration + +To build the `./configure` script mentioned above, libSRTP relies on the +[automake](https://www.gnu.org/software/automake/) toolchain. Since +`./configure` is built from `configure.in` by automake, if you make changes in +how `./configure` works (e.g., to add a new library dependency), you will need +to rebuild `./configure` and commit the updated version. In addition to +automake itself, you will need to have the `pkgconfig` tools installed as well. + +For example, on macOS: + +``` +brew install automake pkgconfig +# Edit configure.in +autoremake -ivf +``` + +-------------------------------------------------------------------------------- + +## Using Visual Studio + +On Windows one can use Visual Studio via CMake. CMake can be downloaded here: +https://cmake.org/ . To create Visual Studio build files, for example run the +following commands: + +``` +# Create build subdirectory +mkdir build +cd build + +# Make project files +cmake .. -G "Visual Studio 15 2017" + +# Or for 64 bit project files +cmake .. -G "Visual Studio 15 2017 Win64" +``` + +-------------------------------------------------------------------------------- + +## Using Meson + +On all platforms including Windows, one can build using [Meson](https://mesonbuild.com). +Steps to download Meson are here: https://mesonbuild.com/Getting-meson.html + +To build with Meson, you can do something like: + +``` +# Setup the build subdirectory +meson setup --prefix=/path/to/prefix builddir + +# Build the project +meson compile -C builddir + +# Run tests +meson test -C builddir + +# Optionally, install +meson install -C builddir +``` + +To build with Visual Studio, run the above commands from inside a Visual Studio +command prompt, or run `vcvarsall.bat` with the appropriate arguments inside +a Command Prompt. + +Note that you can also replace the above commands with the appropriate `ninja` +targets: `ninja -C build`, `ninja -C build test`, `ninja -C build install`. + +-------------------------------------------------------------------------------- + + +# Applications + +Several test drivers and a simple and portable srtp application are +included in the `test/` subdirectory. + +Test driver | Function tested +--------- | ------- +kernel_driver | crypto kernel (ciphers, auth funcs, rng) +srtp_driver | srtp in-memory tests (does not use the network) +rdbx_driver | rdbx (extended replay database) +roc_driver | extended sequence number functions +replay_driver | replay database +cipher_driver | ciphers +auth_driver | hash functions + +The app `rtpw` is a simple rtp application which reads words from +`/usr/dict/words` and then sends them out one at a time using [s]rtp. +Manual srtp keying uses the -k option; automated key management +using gdoi will be added later. + +usage: +~~~.txt +rtpw [[-d ]* [-k|b [-a][-e ][-g]] [-s | -r] dest_ip dest_port] | [-l] +~~~ + +Either the -s (sender) or -r (receiver) option must be chosen. The +values `dest_ip`, `dest_port` are the IP address and UDP port to which +the dictionary will be sent, respectively. + +The options are: + +Option | Description +--------- | ------- + -s | (S)RTP sender - causes app to send words + -r | (S)RTP receive - causes app to receive words + -k | use SRTP master key , where the key is a hexadecimal (without the leading "0x") + -b | same as -k but with base64 encoded key + -e | encrypt/decrypt (for data confidentiality) (requires use of -k option as well) (use 128, 192, or 256 for keysize) + -g | use AES-GCM mode (must be used with -e) + -a | message authentication (requires use of -k option as well) + -l | list the available debug modules + -d | turn on debugging for module + +In order to get random 30-byte values for use as key/salt pairs , you +can use the following bash function to format the output of +`/dev/random` (where that device is available). + +~~~.txt +function randhex() { + cat /dev/random | od --read-bytes=32 --width=32 -x | awk '{ print $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 }' +} +~~~ + +An example of an SRTP session using two rtpw programs follows: + +~~~.txt +set k=c1eec3717da76195bb878578790af71c4ee9f859e197a414a78d5abc7451 + +[sh1]$ test/rtpw -s -k $k -e 128 -a 0.0.0.0 9999 +Security services: confidentiality message authentication +set master key/salt to C1EEC3717DA76195BB878578790AF71C/4EE9F859E197A414A78D5ABC7451 +setting SSRC to 2078917053 +sending word: A +sending word: a +sending word: aa +sending word: aal +... + +[sh2]$ test/rtpw -r -k $k -e 128 -a 0.0.0.0 9999 +security services: confidentiality message authentication +set master key/salt to C1EEC3717DA76195BB878578790AF71C/4EE9F859E197A414A78D5ABC7451 +19 octets received from SSRC 2078917053 word: A +19 octets received from SSRC 2078917053 word: a +20 octets received from SSRC 2078917053 word: aa +21 octets received from SSRC 2078917053 word: aal +... +~~~ + +-------------------------------------------------------------------------------- + + +## Example Code + +This section provides a simple example of how to use libSRTP. The +example code lacks error checking, but is functional. Here we assume +that the value ssrc is already set to describe the SSRC of the stream +that we are sending, and that the functions `get_rtp_packet()` and +`send_srtp_packet()` are available to us. The former puts an RTP packet +into the buffer and returns the number of octets written to that +buffer. The latter sends the RTP packet in the buffer, given the +length as its second argument. + +~~~.c +srtp_t session; +srtp_policy_t policy; + +// Set key to predetermined value +uint8_t key[30] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D}; + +// initialize libSRTP +srtp_init(); + +// default policy values +memset(&policy, 0x0, sizeof(srtp_policy_t)); + +// set policy to describe a policy for an SRTP stream +srtp_crypto_policy_set_rtp_default(&policy.rtp); +srtp_crypto_policy_set_rtcp_default(&policy.rtcp); +policy.ssrc = ssrc; +policy.key = key; +policy.next = NULL; + +// allocate and initialize the SRTP session +srtp_create(&session, &policy); + +// main loop: get rtp packets, send srtp packets +while (1) { + char rtp_buffer[2048]; + size_t rtp_len; + char srtp_buffer[2048]; + size_t srtp_len = sizeof(srtp_buffer); + + len = get_rtp_packet(rtp_buffer); + srtp_protect(session, rtp_buffer, rtp_len, srtp_buffer, &srtp_len); + send_srtp_packet(srtp_buffer, srtp_len); +} +~~~ + +-------------------------------------------------------------------------------- + + +# Credits + +The original implementation and documentation of libSRTP was written +by David McGrew of Cisco Systems, Inc. in order to promote the use, +understanding, and interoperability of Secure RTP. Michael Jerris +contributed support for building under MSVC. Andris Pavenis +contributed many important fixes. Brian West contributed changes to +enable dynamic linking. Yves Shumann reported documentation bugs. +Randell Jesup contributed a working SRTCP implementation and other +fixes. Steve Underwood contributed x86_64 portability changes. We also give +thanks to Fredrik Thulin, Brian Weis, Mark Baugher, Jeff Chan, Bill +Simon, Douglas Smith, Bill May, Richard Preistley, Joe Tardo and +others for contributions, comments, and corrections. + +This reference material, when applicable, in this documenation was generated +using the doxygen utility for automatic documentation of source code. + +Copyright 2001-2005 by David A. McGrew, Cisco Systems, Inc. + +-------------------------------------------------------------------------------- + + +# References + +SRTP and ICM References +September, 2005 + +Secure RTP is defined in [RFC 3711](https://tools.ietf.org/html/rfc3711). +The counter mode definition is in [Section 4.1.1](https://tools.ietf.org/html/rfc3711#section-4.1.1). + +SHA-1 is defined in [FIPS PUB 180-4](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf). + +HMAC is defined in [RFC 2104](https://tools.ietf.org/html/rfc2104) +and HMAC-SHA1 test vectors are available +in [RFC 2202](https://tools.ietf.org/html/rfc2202#section-3). + +AES-GCM usage in SRTP is defined in [RFC 7714](https://tools.ietf.org/html/rfc7714) diff --git a/src/libs/libsrtp/config.guess b/src/libs/libsrtp/config.guess new file mode 100755 index 00000000..c4bd827a --- /dev/null +++ b/src/libs/libsrtp/config.guess @@ -0,0 +1,1456 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-05-15' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = hppa2.0w ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +cat >&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/libs/libsrtp/config.h b/src/libs/libsrtp/config.h new file mode 100644 index 00000000..c40dbe67 --- /dev/null +++ b/src/libs/libsrtp/config.h @@ -0,0 +1,202 @@ +/* config_in.h. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define if building for a CISC machine (e.g. Intel). */ +#undef CPU_CISC + +/* Define if building for a RISC machine (assume slow byte access). */ +#undef CPU_RISC + +/* Define to enabled debug logging for all mudules. */ +#undef ENABLE_DEBUG_LOGGING + +/* Logging statments will be writen to this file. */ +#undef ERR_REPORTING_FILE + +/* Define to redirect logging to stdout. */ +#undef ERR_REPORTING_STDOUT + +/* Define this to use AES-GCM. */ +#undef GCM + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_BYTESWAP_H + +/* Define to 1 if you have the `inet_aton' function. */ +#undef HAVE_INET_ATON + +/* Define to 1 if you have the `inet_pton' function. */ +#undef HAVE_INET_PTON + +/* Define to 1 if the system has the type `int16_t'. */ +#undef HAVE_INT16_T + +/* Define to 1 if the system has the type `int32_t'. */ +#undef HAVE_INT32_T + +/* Define to 1 if the system has the type `int8_t'. */ +#undef HAVE_INT8_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `dl' library (-ldl). */ +#undef HAVE_LIBDL + +/* Define to 1 if you have the `nspr4' library (-lnspr4). */ +#undef HAVE_LIBNSPR4 + +/* Define to 1 if you have the `nss3' library (-lnss3). */ +#undef HAVE_LIBNSS3 + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACHINE_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NSS_H + +/* Define to 1 if you have the `winpcap' library (-lwpcap) */ +#undef HAVE_PCAP + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_INT_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_UIO_H + +/* Define to 1 if the system has the type `uint16_t'. */ +#undef HAVE_UINT16_T + +/* Define to 1 if the system has the type `uint32_t'. */ +#undef HAVE_UINT32_T + +/* Define to 1 if the system has the type `uint64_t'. */ +#undef HAVE_UINT64_T + +/* Define to 1 if the system has the type `uint8_t'. */ +#undef HAVE_UINT8_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `usleep' function. */ +#undef HAVE_USLEEP + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINDOWS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINSOCK2_H + +/* Define to use X86 inlined assembly code */ +#undef HAVE_X86 + +/* Define this to use NSS crypto. */ +#undef NSS + +/* Define this to use OpenSSL crypto. */ +#undef OPENSSL + +/* Define this to use OpenSSL KDF for SRTP. */ +#undef OPENSSL_KDF + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The size of `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* The size of `unsigned long long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define this to use wolfSSL crypto. */ +#undef WOLFSSL + +/* Define this to use wolfSSL KDF for SRTP. */ +#undef WOLFSSL_KDF + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned int' if does not define. */ +#undef size_t diff --git a/src/libs/libsrtp/config.sub b/src/libs/libsrtp/config.sub new file mode 100755 index 00000000..6d86a1e2 --- /dev/null +++ b/src/libs/libsrtp/config.sub @@ -0,0 +1,1815 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-05-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/libs/libsrtp/config_in.h b/src/libs/libsrtp/config_in.h new file mode 100644 index 00000000..c40dbe67 --- /dev/null +++ b/src/libs/libsrtp/config_in.h @@ -0,0 +1,202 @@ +/* config_in.h. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define if building for a CISC machine (e.g. Intel). */ +#undef CPU_CISC + +/* Define if building for a RISC machine (assume slow byte access). */ +#undef CPU_RISC + +/* Define to enabled debug logging for all mudules. */ +#undef ENABLE_DEBUG_LOGGING + +/* Logging statments will be writen to this file. */ +#undef ERR_REPORTING_FILE + +/* Define to redirect logging to stdout. */ +#undef ERR_REPORTING_STDOUT + +/* Define this to use AES-GCM. */ +#undef GCM + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_BYTESWAP_H + +/* Define to 1 if you have the `inet_aton' function. */ +#undef HAVE_INET_ATON + +/* Define to 1 if you have the `inet_pton' function. */ +#undef HAVE_INET_PTON + +/* Define to 1 if the system has the type `int16_t'. */ +#undef HAVE_INT16_T + +/* Define to 1 if the system has the type `int32_t'. */ +#undef HAVE_INT32_T + +/* Define to 1 if the system has the type `int8_t'. */ +#undef HAVE_INT8_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `dl' library (-ldl). */ +#undef HAVE_LIBDL + +/* Define to 1 if you have the `nspr4' library (-lnspr4). */ +#undef HAVE_LIBNSPR4 + +/* Define to 1 if you have the `nss3' library (-lnss3). */ +#undef HAVE_LIBNSS3 + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACHINE_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NSS_H + +/* Define to 1 if you have the `winpcap' library (-lwpcap) */ +#undef HAVE_PCAP + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_INT_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_UIO_H + +/* Define to 1 if the system has the type `uint16_t'. */ +#undef HAVE_UINT16_T + +/* Define to 1 if the system has the type `uint32_t'. */ +#undef HAVE_UINT32_T + +/* Define to 1 if the system has the type `uint64_t'. */ +#undef HAVE_UINT64_T + +/* Define to 1 if the system has the type `uint8_t'. */ +#undef HAVE_UINT8_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `usleep' function. */ +#undef HAVE_USLEEP + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINDOWS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINSOCK2_H + +/* Define to use X86 inlined assembly code */ +#undef HAVE_X86 + +/* Define this to use NSS crypto. */ +#undef NSS + +/* Define this to use OpenSSL crypto. */ +#undef OPENSSL + +/* Define this to use OpenSSL KDF for SRTP. */ +#undef OPENSSL_KDF + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The size of `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* The size of `unsigned long long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define this to use wolfSSL crypto. */ +#undef WOLFSSL + +/* Define this to use wolfSSL KDF for SRTP. */ +#undef WOLFSSL_KDF + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned int' if does not define. */ +#undef size_t diff --git a/src/libs/libsrtp/config_in_cmake.h b/src/libs/libsrtp/config_in_cmake.h new file mode 100644 index 00000000..b65ba791 --- /dev/null +++ b/src/libs/libsrtp/config_in_cmake.h @@ -0,0 +1,141 @@ +/* clang-format off */ + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@" + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@" + +/* Define to enabled debug logging for all mudules. */ +#cmakedefine ENABLE_DEBUG_LOGGING 1 + +/* Logging statments will be writen to this file. */ +#cmakedefine ERR_REPORTING_FILE "@ERR_REPORTING_FILE@" + +/* Define to redirect logging to stdout. */ +#cmakedefine ERR_REPORTING_STDOUT 1 + +/* Define this to use OpenSSL crypto. */ +#cmakedefine OPENSSL 1 + +/* Define this to use wolfSSL crypto. */ +#cmakedefine WOLFSSL 1 + +/* Define this to use wolfSSL SRTP-KDF. */ +#cmakedefine WOLFSSL_KDF 1 + +/* Define this to use MBEDTLS. */ +#cmakedefine MBEDTLS 1 + +/* Define this to use NSS crypto. */ +#cmakedefine NSS 1 + +/* Define this to use AES-GCM. */ +#cmakedefine GCM 1 + +/* Define if building for a CISC machine (e.g. Intel). */ +#define CPU_CISC 1 + +/* Define if building for a RISC machine (assume slow byte access). */ +/* #undef CPU_RISC */ + +/* Define to use X86 inlined assembly code */ +#cmakedefine HAVE_X86 1 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#cmakedefine WORDS_BIGENDIAN 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_BYTESWAP_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MACHINE_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_INT_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_WINDOWS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_WINSOCK2_H 1 + +/* Define to 1 if you have the `inet_aton' function. */ +#cmakedefine HAVE_INET_ATON 1 + +/* Define to 1 if you have the `inet_pton' function. */ +#cmakedefine HAVE_INET_PTON 1 + +/* Define to 1 if you have the `sigaction' function. */ +#cmakedefine HAVE_SIGACTION 1 + +/* Define to 1 if you have the `usleep' function. */ +#cmakedefine HAVE_USLEEP 1 + +/* Define to 1 if the system has the type `uint8_t'. */ +#cmakedefine HAVE_UINT8_T 1 + +/* Define to 1 if the system has the type `uint16_t'. */ +#cmakedefine HAVE_UINT16_T 1 + +/* Define to 1 if the system has the type `uint32_t'. */ +#cmakedefine HAVE_UINT32_T 1 + +/* Define to 1 if the system has the type `uint64_t'. */ +#cmakedefine HAVE_UINT64_T 1 + +/* Define to 1 if the system has the type `int32_t'. */ +#cmakedefine HAVE_INT32_T 1 + +/* The size of `unsigned long', as computed by sizeof. */ +@SIZEOF_UNSIGNED_LONG_CODE@ + +/* The size of `unsigned long long', as computed by sizeof. */ +@SIZEOF_UNSIGNED_LONG_LONG_CODE@ + +/* Define inline to what is supported by compiler */ +#cmakedefine HAVE_INLINE 1 +#cmakedefine HAVE___INLINE 1 +#ifndef HAVE_INLINE + #ifdef HAVE___INLINE + #define inline __inline + #else + #define inline + #endif +#endif + +/* Define gcc/clang-style SSE macros on compilers that don't define them (primarilly, MSVC). */ +#if !defined(__SSE2__) && (defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)) +#define __SSE2__ +#endif +#if !defined(__SSSE3__) && defined(__AVX__) +#define __SSSE3__ +#endif +#if !defined(__SSE4_1__) && defined(__AVX__) +#define __SSE4_1__ +#endif diff --git a/src/libs/libsrtp/configure b/src/libs/libsrtp/configure new file mode 100755 index 00000000..bd30f43a --- /dev/null +++ b/src/libs/libsrtp/configure @@ -0,0 +1,7846 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.64 for libsrtp3 3.0.0-pre. +# +# Report bugs to . +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software +# Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://github.com/cisco/libsrtp/issues about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libsrtp3' +PACKAGE_TARNAME='libsrtp3' +PACKAGE_VERSION='3.0.0-pre' +PACKAGE_STRING='libsrtp3 3.0.0-pre' +PACKAGE_BUGREPORT='https://github.com/cisco/libsrtp/issues' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +PCAP_LIB +HAVE_PCAP +HMAC_OBJS +AES_ICM_OBJS +nss_LIBS +nss_CFLAGS +CRYPTO_LIBDIR +USE_EXTERNAL_CRYPTO +crypto_LIBS +crypto_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +EXE +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +EGREP +GREP +SED +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +RANLIB +ac_ct_AR +AR +EXTRA_CFLAGS +ac_ct_CXX +CXXFLAGS +CXX +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_debug_logging +with_crypto_library +with_openssl_dir +enable_openssl_kdf +with_wolfssl_dir +with_nss_dir +enable_pcap +enable_log_stdout +with_log_file +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +EXTRA_CFLAGS +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +crypto_CFLAGS +crypto_LIBS +nss_CFLAGS +nss_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information." + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libsrtp3 3.0.0-pre to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libsrtp3] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libsrtp3 3.0.0-pre:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-debug-logging Enable debug logging in all modules + --enable-openssl-kdf Use OpenSSL KDF algorithm + --disable-pcap Build without `pcap' library (-lpcap) + --enable-log-stdout redirecting logging to stdout + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-crypto-library=TYPE + Select crypto library, one of: internal, openssl, + wolfssl, nss + --with-openssl-dir Location of OpenSSL installation + --with-wolfssl-dir Location of wolfSSL installation + --with-nss-dir Location of NSS installation + --with-log-file Use file for logging + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + EXTRA_CFLAGS + C compiler flags appended to the regular C compiler flags + instead of overriding them + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + crypto_CFLAGS + C compiler flags for crypto, overriding pkg-config + crypto_LIBS linker flags for crypto, overriding pkg-config + nss_CFLAGS C compiler flags for nss, overriding pkg-config + nss_LIBS linker flags for nss, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libsrtp3 configure 3.0.0-pre +generated by GNU Autoconf 2.64 + +Copyright (C) 2009 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libsrtp3 $as_me 3.0.0-pre, which was +generated by GNU Autoconf 2.64. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +EMPTY_CFLAGS="no" +if test "x$CFLAGS" = "x"; then + EMPTY_CFLAGS="yes" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "no acceptable C compiler found in \$PATH +See \`config.log' for more details." "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then : + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "C compiler cannot create executables +See \`config.log' for more details." "$LINENO" 5; }; } +fi +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of object files: cannot compile +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + for ac_t in install-sh install.sh shtool; do + if test -f "$ac_dir/$ac_t"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/$ac_t -c" + break 2 + fi + done +done +if test -z "$ac_aux_dir"; then + as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if test "${am_cv_ar_interface+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error "could not determine $AR interface" "$LINENO" 5 + ;; +esac + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + +case $host_cpu in + i*86 | x86_64 ) + +$as_echo "#define CPU_CISC 1" >>confdefs.h + + +$as_echo "#define HAVE_X86 1" >>confdefs.h + + ;; + * ) + +$as_echo "#define CPU_RISC 1" >>confdefs.h + + ;; +esac + +case $host_os in + *cygwin*|*mingw* ) + EXE=.exe + ;; + * ) + EXE="" + ;; +esac + # define executable suffix; this is needed for `make clean' + +supported_cflags="" +if test "$EMPTY_CFLAGS" = "no"; then + supported_cflags="$CFLAGS" +fi + +WERROR="" +for w in -Werror -errwarn; do + if test "x$WERROR" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC-c} accepts $w" >&5 +$as_echo_n "checking whether ${CC-c} accepts $w... " >&6; } + save_cflags="$CFLAGS" + if test "x$CFLAGS" = "x"; then : + CFLAGS="$w" +else + CFLAGS="$CFLAGS $w" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + WERROR="$w" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + CFLAGS="$save_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC-c} accepts -fPIC" >&5 +$as_echo_n "checking whether ${CC-c} accepts -fPIC... " >&6; } +save_cflags="$CFLAGS" +if test "x$CFLAGS" = "x"; then : + CFLAGS="-fPIC" +else + CFLAGS="$CFLAGS -fPIC" +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if test "x$supported_cflags" = "x"; then : + supported_cflags="-fPIC" +else + supported_cflags="$supported_cflags -fPIC" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + CFLAGS="$save_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test "$EMPTY_CFLAGS" = "yes"; then + for f in -Wall -pedantic -Wstrict-prototypes; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC-c} accepts $f" >&5 +$as_echo_n "checking whether ${CC-c} accepts $f... " >&6; } + save_cflags="$CFLAGS" + if test "x$CFLAGS" = "x"; then : + CFLAGS="$f" +else + CFLAGS="$CFLAGS $f" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if test "x$supported_cflags" = "x"; then : + supported_cflags="$f" +else + supported_cflags="$supported_cflags $f" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + CFLAGS="$save_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + + OOPT="" + for f in -O3; do + if test "x$OOPT" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC-c} accepts $f" >&5 +$as_echo_n "checking whether ${CC-c} accepts $f... " >&6; } + save_cflags="$CFLAGS" + if test "x$CFLAGS" = "x"; then : + CFLAGS="$f" +else + CFLAGS="$CFLAGS $f" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if test "x$supported_cflags" = "x"; then : + supported_cflags="$f" +else + supported_cflags="$supported_cflags $f" +fi + OOPT="$f" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + CFLAGS="$save_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + done + + for f in -fexpensive-optimizations -funroll-loops; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC-c} accepts $f" >&5 +$as_echo_n "checking whether ${CC-c} accepts $f... " >&6; } + save_cflags="$CFLAGS" + if test "x$CFLAGS" = "x"; then : + CFLAGS="$f" +else + CFLAGS="$CFLAGS $f" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if test "x$supported_cflags" = "x"; then : + supported_cflags="$f" +else + supported_cflags="$supported_cflags $f" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + CFLAGS="$save_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +fi + +for f in -Wno-language-extension-token; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC-c} accepts $f" >&5 +$as_echo_n "checking whether ${CC-c} accepts $f... " >&6; } + save_cflags="$CFLAGS" + testf=$(echo "$f" | $SED 's|-Wno-\(.*\)|-W\1|g') + if test "x$CFLAGS" = "x"; then : + CFLAGS="$testf" +else + CFLAGS="$CFLAGS $testf" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if test "x$supported_cflags" = "x"; then : + supported_cflags="$f" +else + supported_cflags="$supported_cflags $f" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + CFLAGS="$save_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + +CFLAGS="$supported_cflags" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +for ac_header in unistd.h byteswap.h stdint.h sys/uio.h inttypes.h sys/types.h machine/types.h sys/int_types.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in sys/socket.h netinet/in.h arpa/inet.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in windows.h +do : + ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default +" +if test "x$ac_cv_header_windows_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WINDOWS_H 1 +_ACEOF + for ac_header in winsock2.h +do : + ac_fn_c_check_header_compile "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default +" +if test "x$ac_cv_header_winsock2_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WINSOCK2_H 1 +_ACEOF + +fi + +done + +fi + +done + + +ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default" +if test "x$ac_cv_type_int8_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT8_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default" +if test "x$ac_cv_type_uint8_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT8_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" +if test "x$ac_cv_type_int16_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT16_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default" +if test "x$ac_cv_type_uint16_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT16_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" +if test "x$ac_cv_type_int32_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT32_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" +if test "x$ac_cv_type_uint32_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT32_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" +if test "x$ac_cv_type_uint64_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT64_T 1 +_ACEOF + + +fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 +$as_echo_n "checking size of unsigned long... " >&6; } +if test "${ac_cv_sizeof_unsigned_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_unsigned_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (unsigned long) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_unsigned_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 +$as_echo "$ac_cv_sizeof_unsigned_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long long" >&5 +$as_echo_n "checking size of unsigned long long... " >&6; } +if test "${ac_cv_sizeof_unsigned_long_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long long))" "ac_cv_sizeof_unsigned_long_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_unsigned_long_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (unsigned long long) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_unsigned_long_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long_long" >&5 +$as_echo "$ac_cv_sizeof_unsigned_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long +_ACEOF + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if test "${ac_cv_c_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = x""yes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + +for ac_func in socket inet_aton inet_pton usleep sigaction +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +if test "x$ac_cv_func_socket" = "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +$as_echo_n "checking for socket in -lsocket... " >&6; } +if test "${ac_cv_lib_socket_socket+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_socket=yes +else + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +$as_echo "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lwsock32" >&5 +$as_echo_n "checking for socket in -lwsock32... " >&6; } + SAVELIBS="$LIBS" + LIBS="$LIBS -lwsock32" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int main(void) +{ + int fd = socket(0, 0, 0); + if (fd < 0) + return -1; + else + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_socket=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + LIBS="$SAVELIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable debug logging in all modules" >&5 +$as_echo_n "checking whether to enable debug logging in all modules... " >&6; } +# Check whether --enable-debug-logging was given. +if test "${enable_debug_logging+set}" = set; then : + enableval=$enable_debug_logging; +else + enable_debug_logging=no +fi + +if test "$enable_debug_logging" = "yes"; then + +$as_echo "#define ENABLE_DEBUG_LOGGING 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_logging" >&5 +$as_echo "$enable_debug_logging" >&6; } + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +if test "x$PKG_CONFIG" != "x"; then : + PKG_CONFIG="$PKG_CONFIG --static" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypto library" >&5 +$as_echo_n "checking for crypto library... " >&6; } + +# Check whether --with-crypto-library was given. +if test "${with_crypto_library+set}" = set; then : + withval=$with_crypto_library; case "$with_crypto_library" in + internal) ;; + openssl) enable_openssl=yes ;; + wolfssl) enable_wolfssl=yes ;; + nss) enable_nss=yes ;; + *) as_fn_error "Invalid crypto library: $with_crypto_library. Select one of: internal, openssl, wolfssl, nss," "$LINENO" 5 ;; + esac +else + with_crypto_library=internal +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_crypto_library" >&5 +$as_echo "$with_crypto_library" >&6; } + +if test "$enable_openssl" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for user specified OpenSSL directory" >&5 +$as_echo_n "checking for user specified OpenSSL directory... " >&6; } + +# Check whether --with-openssl-dir was given. +if test "${with_openssl_dir+set}" = set; then : + withval=$with_openssl_dir; if test "x$PKG_CONFIG" != "x" && test -f $with_openssl_dir/lib/pkgconfig/libcrypto.pc; then + if test "x$PKG_CONFIG_PATH" = "x"; then + export PKG_CONFIG_PATH="$with_openssl_dir/lib/pkgconfig" + else + export PKG_CONFIG_PATH="$with_openssl_dir/lib/pkgconfig:$PKG_CONFIG_PATH" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_openssl_dir" >&5 +$as_echo "$with_openssl_dir" >&6; } + elif test -d $with_openssl_dir/lib; then + CFLAGS="$CFLAGS -I$with_openssl_dir/include" + if test "x$LDFLAGS" = "x"; then + LDFLAGS="-L$with_openssl_dir/lib" + else + LDFLAGS="$LDFLAGS -L$with_openssl_dir/lib" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_openssl_dir" >&5 +$as_echo "$with_openssl_dir" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: invalid" >&5 +$as_echo "invalid" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "Invalid OpenSSL location: $with_openssl_dir +See \`config.log' for more details." "$LINENO" 5; } + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$PKG_CONFIG" != "x"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcrypto" >&5 +$as_echo_n "checking for libcrypto... " >&6; } + +if test -n "$crypto_CFLAGS"; then + pkg_cv_crypto_CFLAGS="$crypto_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcrypto\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcrypto") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_crypto_CFLAGS=`$PKG_CONFIG --cflags "libcrypto" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$crypto_LIBS"; then + pkg_cv_crypto_LIBS="$crypto_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcrypto\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcrypto") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_crypto_LIBS=`$PKG_CONFIG --libs "libcrypto" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + crypto_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcrypto" 2>&1` + else + crypto_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcrypto" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$crypto_PKG_ERRORS" >&5 + + as_fn_error "Package requirements (libcrypto) were not met: + +$crypto_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables crypto_CFLAGS +and crypto_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables crypto_CFLAGS +and crypto_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." "$LINENO" 5; } +else + crypto_CFLAGS=$pkg_cv_crypto_CFLAGS + crypto_LIBS=$pkg_cv_crypto_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$CFLAGS $crypto_CFLAGS" + LIBS="$crypto_LIBS $LIBS" +fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + + LIBS="-ldl $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't find libdl" >&5 +$as_echo "$as_me: WARNING: can't find libdl" >&2;} +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5 +$as_echo_n "checking for inflate in -lz... " >&6; } +if test "${ac_cv_lib_z_inflate+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflate (); +int +main () +{ +return inflate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_inflate=yes +else + ac_cv_lib_z_inflate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5 +$as_echo "$ac_cv_lib_z_inflate" >&6; } +if test "x$ac_cv_lib_z_inflate" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't find libz" >&5 +$as_echo "$as_me: WARNING: can't find libz" >&2;} +fi + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing EVP_EncryptInit" >&5 +$as_echo_n "checking for library containing EVP_EncryptInit... " >&6; } +if test "${ac_cv_search_EVP_EncryptInit+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char EVP_EncryptInit (); +int +main () +{ +return EVP_EncryptInit (); + ; + return 0; +} +_ACEOF +for ac_lib in '' crypto; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_EVP_EncryptInit=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_EVP_EncryptInit+set}" = set; then : + break +fi +done +if test "${ac_cv_search_EVP_EncryptInit+set}" = set; then : + +else + ac_cv_search_EVP_EncryptInit=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_EVP_EncryptInit" >&5 +$as_echo "$ac_cv_search_EVP_EncryptInit" >&6; } +ac_res=$ac_cv_search_EVP_EncryptInit +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find compatible openssl crypto lib +See \`config.log' for more details." "$LINENO" 5; } +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing EVP_aes_128_ctr" >&5 +$as_echo_n "checking for library containing EVP_aes_128_ctr... " >&6; } +if test "${ac_cv_search_EVP_aes_128_ctr+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char EVP_aes_128_ctr (); +int +main () +{ +return EVP_aes_128_ctr (); + ; + return 0; +} +_ACEOF +for ac_lib in '' crypto; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_EVP_aes_128_ctr=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_EVP_aes_128_ctr+set}" = set; then : + break +fi +done +if test "${ac_cv_search_EVP_aes_128_ctr+set}" = set; then : + +else + ac_cv_search_EVP_aes_128_ctr=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_EVP_aes_128_ctr" >&5 +$as_echo "$ac_cv_search_EVP_aes_128_ctr" >&6; } +ac_res=$ac_cv_search_EVP_aes_128_ctr +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find compatible openssl crypto lib +See \`config.log' for more details." "$LINENO" 5; } +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing EVP_aes_128_gcm" >&5 +$as_echo_n "checking for library containing EVP_aes_128_gcm... " >&6; } +if test "${ac_cv_search_EVP_aes_128_gcm+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char EVP_aes_128_gcm (); +int +main () +{ +return EVP_aes_128_gcm (); + ; + return 0; +} +_ACEOF +for ac_lib in '' crypto; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_EVP_aes_128_gcm=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_EVP_aes_128_gcm+set}" = set; then : + break +fi +done +if test "${ac_cv_search_EVP_aes_128_gcm+set}" = set; then : + +else + ac_cv_search_EVP_aes_128_gcm=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_EVP_aes_128_gcm" >&5 +$as_echo "$ac_cv_search_EVP_aes_128_gcm" >&6; } +ac_res=$ac_cv_search_EVP_aes_128_gcm +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find compatible openssl crypto lib +See \`config.log' for more details." "$LINENO" 5; } +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing EVP_CIPHER_CTX_reset" >&5 +$as_echo_n "checking for library containing EVP_CIPHER_CTX_reset... " >&6; } +if test "${ac_cv_search_EVP_CIPHER_CTX_reset+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char EVP_CIPHER_CTX_reset (); +int +main () +{ +return EVP_CIPHER_CTX_reset (); + ; + return 0; +} +_ACEOF +for ac_lib in '' crypto; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_EVP_CIPHER_CTX_reset=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_EVP_CIPHER_CTX_reset+set}" = set; then : + break +fi +done +if test "${ac_cv_search_EVP_CIPHER_CTX_reset+set}" = set; then : + +else + ac_cv_search_EVP_CIPHER_CTX_reset=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_EVP_CIPHER_CTX_reset" >&5 +$as_echo "$ac_cv_search_EVP_CIPHER_CTX_reset" >&6; } +ac_res=$ac_cv_search_EVP_CIPHER_CTX_reset +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find compatible openssl crypto lib +See \`config.log' for more details." "$LINENO" 5; } +fi + + + +$as_echo "#define GCM 1" >>confdefs.h + + +$as_echo "#define OPENSSL 1" >>confdefs.h + + AES_ICM_OBJS="crypto/cipher/aes_icm_ossl.o crypto/cipher/aes_gcm_ossl.o" + HMAC_OBJS=crypto/hash/hmac_ossl.o + USE_EXTERNAL_CRYPTO=1 + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to leverage OpenSSL KDF algorithm" >&5 +$as_echo_n "checking whether to leverage OpenSSL KDF algorithm... " >&6; } + # Check whether --enable-openssl-kdf was given. +if test "${enable_openssl_kdf+set}" = set; then : + enableval=$enable_openssl_kdf; +else + enable_openssl_kdf=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_openssl_kdf" >&5 +$as_echo "$enable_openssl_kdf" >&6; } + if test "$enable_openssl_kdf" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kdf_srtp" >&5 +$as_echo_n "checking for library containing kdf_srtp... " >&6; } +if test "${ac_cv_search_kdf_srtp+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char kdf_srtp (); +int +main () +{ +return kdf_srtp (); + ; + return 0; +} +_ACEOF +for ac_lib in '' crypto; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_kdf_srtp=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_kdf_srtp+set}" = set; then : + break +fi +done +if test "${ac_cv_search_kdf_srtp+set}" = set; then : + +else + ac_cv_search_kdf_srtp=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kdf_srtp" >&5 +$as_echo "$ac_cv_search_kdf_srtp" >&6; } +ac_res=$ac_cv_search_kdf_srtp +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find openssl KDF lib +See \`config.log' for more details." "$LINENO" 5; } +fi + + +$as_echo "#define OPENSSL_KDF 1" >>confdefs.h + + fi +elif test "$enable_wolfssl" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for user specified wolfSSL directory" >&5 +$as_echo_n "checking for user specified wolfSSL directory... " >&6; } + +# Check whether --with-wolfssl-dir was given. +if test "${with_wolfssl_dir+set}" = set; then : + withval=$with_wolfssl_dir; if test -d $with_wolfssl_dir/lib; then + CFLAGS="$CFLAGS -I$with_wolfssl_dir/include -I$with_wolfssl_dir/include/wolfssl" + if test "x$LDFLAGS" = "x"; then + LDFLAGS="-L$with_wolfssl_dir/lib" + else + LDFLAGS="$LDFLAGS -L$with_wolfssl_dir/lib" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_wolfssl_dir" >&5 +$as_echo "$with_wolfssl_dir" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: invalid" >&5 +$as_echo "invalid" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "Invalid wolfSSL location: $with_wolfssl_dir +See \`config.log' for more details." "$LINENO" 5; } + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + + LIBS="-ldl $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't find libdl" >&5 +$as_echo "$as_me: WARNING: can't find libdl" >&2;} +fi + + + +$as_echo "#define GCM 1" >>confdefs.h + + +$as_echo "#define WOLFSSL 1" >>confdefs.h + + AES_ICM_OBJS="crypto/cipher/aes_icm_wssl.o crypto/cipher/aes_gcm_wssl.o" + HMAC_OBJS=crypto/hash/hmac_wssl.o + USE_EXTERNAL_CRYPTO=1 + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to leverage wolfSSL KDF algorithm" >&5 +$as_echo_n "checking whether to leverage wolfSSL KDF algorithm... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing wc_SRTCP_KDF" >&5 +$as_echo_n "checking for library containing wc_SRTCP_KDF... " >&6; } +if test "${ac_cv_search_wc_SRTCP_KDF+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char wc_SRTCP_KDF (); +int +main () +{ +return wc_SRTCP_KDF (); + ; + return 0; +} +_ACEOF +for ac_lib in '' wolfssl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_wc_SRTCP_KDF=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_wc_SRTCP_KDF+set}" = set; then : + break +fi +done +if test "${ac_cv_search_wc_SRTCP_KDF+set}" = set; then : + +else + ac_cv_search_wc_SRTCP_KDF=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_wc_SRTCP_KDF" >&5 +$as_echo "$ac_cv_search_wc_SRTCP_KDF" >&6; } +ac_res=$ac_cv_search_wc_SRTCP_KDF +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find wolfssl KDF lib +See \`config.log' for more details." "$LINENO" 5; } +fi + + +$as_echo "#define WOLFSSL_KDF 1" >>confdefs.h + +elif test "$enable_nss" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for user specified NSS directory" >&5 +$as_echo_n "checking for user specified NSS directory... " >&6; } + +# Check whether --with-nss-dir was given. +if test "${with_nss_dir+set}" = set; then : + withval=$with_nss_dir; if test "x$PKG_CONFIG" != "x" && test -f $with_nss_dir/lib/pkgconfig/nss.pc; then + if test "x$PKG_CONFIG_PATH" = "x"; then + export PKG_CONFIG_PATH="$with_nss_dir/lib/pkgconfig" + else + export PKG_CONFIG_PATH="$with_nss_dir/lib/pkgconfig:$PKG_CONFIG_PATH" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_nss_dir" >&5 +$as_echo "$with_nss_dir" >&6; } + elif test -d $with_nss_dir/lib; then + CFLAGS="$CFLAGS -I$with_nss_dir/include" + CFLAGS="$CFLAGS -I$with_nss_dir/../public/nss" + if test "x$LDFLAGS" = "x"; then + LDFLAGS="-L$with_nss_dir/lib" + else + LDFLAGS="$LDFLAGS -L$with_nss_dir/lib" + fi + nss_skip_pkg_config=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_nss_dir" >&5 +$as_echo "$with_nss_dir" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: invalid" >&5 +$as_echo "invalid" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "Invalid NSS location: $with_nss_dir +See \`config.log' for more details." "$LINENO" 5; } + fi + CRYPTO_LIBDIR=$with_nss_dir/lib + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$PKG_CONFIG" != "x" && test "$nss_skip_pkg_config" != "yes"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nss" >&5 +$as_echo_n "checking for nss... " >&6; } + +if test -n "$nss_CFLAGS"; then + pkg_cv_nss_CFLAGS="$nss_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nss\""; } >&5 + ($PKG_CONFIG --exists --print-errors "nss") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_nss_CFLAGS=`$PKG_CONFIG --cflags "nss" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$nss_LIBS"; then + pkg_cv_nss_LIBS="$nss_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nss\""; } >&5 + ($PKG_CONFIG --exists --print-errors "nss") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_nss_LIBS=`$PKG_CONFIG --libs "nss" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + nss_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "nss" 2>&1` + else + nss_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "nss" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$nss_PKG_ERRORS" >&5 + + as_fn_error "Package requirements (nss) were not met: + +$nss_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables nss_CFLAGS +and nss_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables nss_CFLAGS +and nss_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." "$LINENO" 5; } +else + nss_CFLAGS=$pkg_cv_nss_CFLAGS + nss_LIBS=$pkg_cv_nss_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$CFLAGS $nss_CFLAGS" + LIBS="$nss_LIBS $LIBS" +fi + else + for ac_header in nss.h +do : + ac_fn_c_check_header_compile "$LINENO" "nss.h" "ac_cv_header_nss_h" "$ac_includes_default +" +if test "x$ac_cv_header_nss_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NSS_H 1 +_ACEOF + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find useable NSS headers +See \`config.log' for more details." "$LINENO" 5; } +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PR_GetError in -lnspr4" >&5 +$as_echo_n "checking for PR_GetError in -lnspr4... " >&6; } +if test "${ac_cv_lib_nspr4_PR_GetError+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnspr4 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char PR_GetError (); +int +main () +{ +return PR_GetError (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nspr4_PR_GetError=yes +else + ac_cv_lib_nspr4_PR_GetError=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nspr4_PR_GetError" >&5 +$as_echo "$ac_cv_lib_nspr4_PR_GetError" >&6; } +if test "x$ac_cv_lib_nspr4_PR_GetError" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSPR4 1 +_ACEOF + + LIBS="-lnspr4 $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't find libnspr4" >&5 +$as_echo "$as_me: WARNING: can't find libnspr4" >&2;} +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NSS_NoDB_Init in -lnss3" >&5 +$as_echo_n "checking for NSS_NoDB_Init in -lnss3... " >&6; } +if test "${ac_cv_lib_nss3_NSS_NoDB_Init+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnss3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char NSS_NoDB_Init (); +int +main () +{ +return NSS_NoDB_Init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nss3_NSS_NoDB_Init=yes +else + ac_cv_lib_nss3_NSS_NoDB_Init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nss3_NSS_NoDB_Init" >&5 +$as_echo "$ac_cv_lib_nss3_NSS_NoDB_Init" >&6; } +if test "x$ac_cv_lib_nss3_NSS_NoDB_Init" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSS3 1 +_ACEOF + + LIBS="-lnss3 $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "can't find useable libnss3 +See \`config.log' for more details." "$LINENO" 5; } +fi + + fi + + +$as_echo "#define GCM 1" >>confdefs.h + + +$as_echo "#define NSS 1" >>confdefs.h + + AES_ICM_OBJS="crypto/cipher/aes_icm_nss.o crypto/cipher/aes_gcm_nss.o" + HMAC_OBJS="crypto/hash/hmac_nss.o" + + # TODO(RLB): Use NSS for KDF + + USE_EXTERNAL_CRYPTO=1 + +else + AES_ICM_OBJS="crypto/cipher/aes_icm.o crypto/cipher/aes.o" + HMAC_OBJS="crypto/hash/hmac.o crypto/hash/sha1.o" +fi + + + + +PCAP_LIB="" +# Check whether --enable-pcap was given. +if test "${enable_pcap+set}" = set; then : + enableval=$enable_pcap; +fi + +if test "x$enable_pcap" != "xno"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcap_create in -lpcap" >&5 +$as_echo_n "checking for pcap_create in -lpcap... " >&6; } +if test "${ac_cv_lib_pcap_pcap_create+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pcap_create (); +int +main () +{ +return pcap_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pcap_pcap_create=yes +else + ac_cv_lib_pcap_pcap_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcap_pcap_create" >&5 +$as_echo "$ac_cv_lib_pcap_pcap_create" >&6; } +if test "x$ac_cv_lib_pcap_pcap_create" = x""yes; then : + PCAP_LIB="-lpcap" + +$as_echo "#define HAVE_PCAP 1" >>confdefs.h + + HAVE_PCAP=1 + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcap_create in -lwpcap" >&5 +$as_echo_n "checking for pcap_create in -lwpcap... " >&6; } +if test "${ac_cv_lib_wpcap_pcap_create+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lwpcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pcap_create (); +int +main () +{ +return pcap_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_wpcap_pcap_create=yes +else + ac_cv_lib_wpcap_pcap_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wpcap_pcap_create" >&5 +$as_echo "$ac_cv_lib_wpcap_pcap_create" >&6; } +if test "x$ac_cv_lib_wpcap_pcap_create" = x""yes; then : + PCAP_LIB="-lwpcap" + +$as_echo "#define HAVE_PCAP 1" >>confdefs.h + + HAVE_PCAP=1 + +fi + + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to redirect logging to stdout" >&5 +$as_echo_n "checking whether to redirect logging to stdout... " >&6; } +# Check whether --enable-log-stdout was given. +if test "${enable_log_stdout+set}" = set; then : + enableval=$enable_log_stdout; +else + enable_log_stdout=no +fi + +if test "$enable_log_stdout" = "yes"; then + +$as_echo "#define ERR_REPORTING_STDOUT 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_log_stdout" >&5 +$as_echo "$enable_log_stdout" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking wheather to use a file for logging" >&5 +$as_echo_n "checking wheather to use a file for logging... " >&6; } + +# Check whether --with-log-file was given. +if test "${with_log_file+set}" = set; then : + withval=$with_log_file; case x$with_log_file in #( + x) : + valid_with_log_file="no" ;; #( + xyes) : + valid_with_log_file="no" ;; #( + *) : + valid_with_error_file="yes" ;; +esac + if test "$valid_with_log_file" = "no"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: invalid" >&5 +$as_echo "invalid" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "Invalid value for --with-log-file: \"$with_log_file\" +See \`config.log' for more details." "$LINENO" 5; } +else + +cat >>confdefs.h <<_ACEOF +#define ERR_REPORTING_FILE "$with_log_file" +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: using log file: \"$with_log_file\"" >&5 +$as_echo "using log file: \"$with_log_file\"" >&6; } +fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$enable_log_stdout" = "yes" && test "x$with_log_file" != "x"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "Can only use one of --enable-log-stdout and --with-log-file; they are mutually exclusive +See \`config.log' for more details." "$LINENO" 5; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra C compiler flags" >&5 +$as_echo_n "checking for extra C compiler flags... " >&6; } +if test "x$EXTRA_CFLAGS" != "x"; then : + if test "x$CFLAGS" = "x"; then : + CFLAGS="$EXTRA_CFLAGS" +else + CFLAGS="$CFLAGS $EXTRA_CFLAGS" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXTRA_CFLAGS" >&5 +$as_echo "$EXTRA_CFLAGS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +ac_config_headers="$ac_config_headers crypto/include/config.h:config_in.h" + + +ac_config_files="$ac_config_files Makefile crypto/Makefile doc/Makefile fuzzer/Makefile libsrtp3.pc" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libsrtp3 $as_me 3.0.0-pre, which was +generated by GNU Autoconf 2.64. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +libsrtp3 config.status 3.0.0-pre +configured by $0, generated by GNU Autoconf 2.64, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2009 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "crypto/include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS crypto/include/config.h:config_in.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "crypto/Makefile") CONFIG_FILES="$CONFIG_FILES crypto/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "fuzzer/Makefile") CONFIG_FILES="$CONFIG_FILES fuzzer/Makefile" ;; + "libsrtp3.pc") CONFIG_FILES="$CONFIG_FILES libsrtp3.pc" ;; + + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit $? +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +# This is needed when building outside the source dir. +as_dir=crypto/cipher; as_fn_mkdir_p +as_dir=crypto/hash; as_fn_mkdir_p +as_dir=crypto/kernel; as_fn_mkdir_p +as_dir=crypto/math; as_fn_mkdir_p +as_dir=crypto/replay; as_fn_mkdir_p +as_dir=crypto/test; as_fn_mkdir_p +as_dir=doc; as_fn_mkdir_p +as_dir=srtp; as_fn_mkdir_p +as_dir=test; as_fn_mkdir_p diff --git a/src/libs/libsrtp/configure.ac b/src/libs/libsrtp/configure.ac new file mode 100644 index 00000000..c10c3ff3 --- /dev/null +++ b/src/libs/libsrtp/configure.ac @@ -0,0 +1,434 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT([libsrtp3],[3.0.0-pre],[https://github.com/cisco/libsrtp/issues]) + +dnl Must come before AC_PROG_CC +EMPTY_CFLAGS="no" +if test "x$CFLAGS" = "x"; then + dnl Default value for CFLAGS if not specified. + EMPTY_CFLAGS="yes" +fi + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_CPP +AC_PROG_CXX +AC_ARG_VAR( + [EXTRA_CFLAGS], + [C compiler flags appended to the regular C compiler flags instead of overriding them]) +AM_PROG_AR +AC_PROG_RANLIB +AC_PROG_INSTALL +AC_PROG_SED + +dnl Check the byte order +AC_C_BIGENDIAN + +AC_CANONICAL_HOST + +dnl check host_cpu type, set defines appropriately +case $host_cpu in + i*86 | x86_64 ) + AC_DEFINE([CPU_CISC], [1], [Define if building for a CISC machine (e.g. Intel).]) + AC_DEFINE([HAVE_X86], [1], [Define to use X86 inlined assembly code]) + ;; + * ) + AC_DEFINE([CPU_RISC], [1], [Define if building for a RISC machine (assume slow byte access).]) + ;; +esac + +dnl Check if we are on a Windows platform. +case $host_os in + *cygwin*|*mingw* ) + EXE=.exe + ;; + * ) + EXE="" + ;; +esac +AC_SUBST([EXE]) # define executable suffix; this is needed for `make clean' + +dnl Checks for supported compiler flags. +supported_cflags="" +if test "$EMPTY_CFLAGS" = "no"; then + supported_cflags="$CFLAGS" +fi + +dnl For accurate detection, we need warnings as errors. +dnl I.e. Clang will issue a warning about unsupported flags. +dnl For the compilation to fail, those warnings needs to be upgraded to errors. +dnl This will be removed again once the tests are complete (see below). +WERROR="" +for w in -Werror -errwarn; do + if test "x$WERROR" = "x"; then + AC_MSG_CHECKING([whether ${CC-c} accepts $w]) + save_cflags="$CFLAGS" + AS_IF([test "x$CFLAGS" = "x"], [CFLAGS="$w"], [CFLAGS="$CFLAGS $w"]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], + [WERROR="$w" + AC_MSG_RESULT([yes])], + [CFLAGS="$save_cflags" + AC_MSG_RESULT([no])]) + fi +done + +dnl Note that -fPIC is not explicitly added to LDFLAGS. +dnl Since the compiler is used as the link driver, CFLAGS will be part of the +dnl link line as well and the linker will get the flag from there. +dnl Adding it to LDFLAGS explicitly would duplicate the flag on the link line, +dnl but otherwise do no harm. +AC_MSG_CHECKING([whether ${CC-c} accepts -fPIC]) +save_cflags="$CFLAGS" +AS_IF([test "x$CFLAGS" = "x"], [CFLAGS="-fPIC"], [CFLAGS="$CFLAGS -fPIC"]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], + [AS_IF([test "x$supported_cflags" = "x"], [supported_cflags="-fPIC"], [supported_cflags="$supported_cflags -fPIC"]) + AC_MSG_RESULT([yes])], + [CFLAGS="$save_cflags" + AC_MSG_RESULT([no])]) + +if test "$EMPTY_CFLAGS" = "yes"; then + for f in -Wall -pedantic -Wstrict-prototypes; do + AC_MSG_CHECKING([whether ${CC-c} accepts $f]) + save_cflags="$CFLAGS" + AS_IF([test "x$CFLAGS" = "x"], [CFLAGS="$f"], [CFLAGS="$CFLAGS $f"]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], + [AS_IF([test "x$supported_cflags" = "x"], [supported_cflags="$f"], [supported_cflags="$supported_cflags $f"]) + AC_MSG_RESULT([yes])], + [CFLAGS="$save_cflags" + AC_MSG_RESULT([no])]) + done + + OOPT="" + for f in -O3; do + if test "x$OOPT" = "x"; then + AC_MSG_CHECKING([whether ${CC-c} accepts $f]) + save_cflags="$CFLAGS" + AS_IF([test "x$CFLAGS" = "x"], [CFLAGS="$f"], [CFLAGS="$CFLAGS $f"]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], + [AS_IF([test "x$supported_cflags" = "x"], [supported_cflags="$f"], [supported_cflags="$supported_cflags $f"]) + OOPT="$f" + AC_MSG_RESULT([yes])], + [CFLAGS="$save_cflags" + AC_MSG_RESULT([no])]) + fi + done + + for f in -fexpensive-optimizations -funroll-loops; do + AC_MSG_CHECKING([whether ${CC-c} accepts $f]) + save_cflags="$CFLAGS" + AS_IF([test "x$CFLAGS" = "x"], [CFLAGS="$f"], [CFLAGS="$CFLAGS $f"]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], + [AS_IF([test "x$supported_cflags" = "x"], [supported_cflags="$f"], [supported_cflags="$supported_cflags $f"]) + AC_MSG_RESULT([yes])], + [CFLAGS="$save_cflags" + AC_MSG_RESULT([no])]) + done +fi + +dnl When turning off warnigns, we're expecting unrecognized command line option errors if they're not +dnl supported. However, the -Wno- form isn't consulted unless a warning is triggered. +dnl At least that's the case for GCC. So to check which warnings we can turn off, we need to check +dnl if they can be turned on, thereby forcing GCC to take the argument into account right away. +for f in -Wno-language-extension-token; do + AC_MSG_CHECKING([whether ${CC-c} accepts $f]) + save_cflags="$CFLAGS" + testf=$(echo "$f" | $SED 's|-Wno-\(.*\)|-W\1|g') + AS_IF([test "x$CFLAGS" = "x"], [CFLAGS="$testf"], [CFLAGS="$CFLAGS $testf"]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], + [AS_IF([test "x$supported_cflags" = "x"], [supported_cflags="$f"], [supported_cflags="$supported_cflags $f"]) + AC_MSG_RESULT([yes])], + [CFLAGS="$save_cflags" + AC_MSG_RESULT([no])]) +done + +dnl Remowing -Werror again +CFLAGS="$supported_cflags" + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS( + [unistd.h byteswap.h stdint.h sys/uio.h inttypes.h sys/types.h machine/types.h sys/int_types.h], + [], [], [AC_INCLUDES_DEFAULT]) + +dnl socket() and friends +AC_CHECK_HEADERS([sys/socket.h netinet/in.h arpa/inet.h], [], [], [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS( + [windows.h], + [AC_CHECK_HEADERS([winsock2.h], [], [], [AC_INCLUDES_DEFAULT])], + [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_TYPES([int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, uint64_t]) +AC_CHECK_SIZEOF([unsigned long]) +AC_CHECK_SIZEOF([unsigned long long]) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T + +dnl Checks for library functions. +AC_CHECK_FUNCS([socket inet_aton inet_pton usleep sigaction]) + +dnl Find socket function if not found yet. +if test "x$ac_cv_func_socket" = "xno"; then + AC_CHECK_LIB([socket], [socket]) + AC_MSG_CHECKING([for socket in -lwsock32]) + SAVELIBS="$LIBS" + LIBS="$LIBS -lwsock32" + AC_LINK_IFELSE( + [AC_LANG_SOURCE([ +#include +int main(void) +{ + int fd = socket(0, 0, 0); + if (fd < 0) + return -1; + else + return 0; +} + ])], + [ac_cv_func_socket=yes + AC_MSG_RESULT([yes])], + [LIBS="$SAVELIBS" + AC_MSG_RESULT([no])]) +fi + +AC_MSG_CHECKING([whether to enable debug logging in all modules]) +AC_ARG_ENABLE([debug-logging], + [AS_HELP_STRING([--enable-debug-logging], [Enable debug logging in all modules])], + [], enable_debug_logging=no) +if test "$enable_debug_logging" = "yes"; then + AC_DEFINE([ENABLE_DEBUG_LOGGING], [1], [Define to enabled debug logging for all mudules.]) +fi +AC_MSG_RESULT([$enable_debug_logging]) + +PKG_PROG_PKG_CONFIG +AS_IF([test "x$PKG_CONFIG" != "x"], [PKG_CONFIG="$PKG_CONFIG --static"]) + +AC_MSG_CHECKING([for crypto library]) +AC_ARG_WITH([crypto-library], AS_HELP_STRING([--with-crypto-library=TYPE], [Select crypto library, one of: internal, openssl, wolfssl, nss]), + [case "$with_crypto_library" in + internal) ;; + openssl) enable_openssl=yes ;; + wolfssl) enable_wolfssl=yes ;; + nss) enable_nss=yes ;; + *) AC_MSG_ERROR([Invalid crypto library: $with_crypto_library. Select one of: internal, openssl, wolfssl, nss,]) ;; + esac], + [with_crypto_library=internal]) +AC_MSG_RESULT([$with_crypto_library]) + +if test "$enable_openssl" = "yes"; then + AC_MSG_CHECKING([for user specified OpenSSL directory]) + AC_ARG_WITH([openssl-dir], + [AS_HELP_STRING([--with-openssl-dir], [Location of OpenSSL installation])], + [if test "x$PKG_CONFIG" != "x" && test -f $with_openssl_dir/lib/pkgconfig/libcrypto.pc; then + if test "x$PKG_CONFIG_PATH" = "x"; then + export PKG_CONFIG_PATH="$with_openssl_dir/lib/pkgconfig" + else + export PKG_CONFIG_PATH="$with_openssl_dir/lib/pkgconfig:$PKG_CONFIG_PATH" + fi + AC_MSG_RESULT([$with_openssl_dir]) + elif test -d $with_openssl_dir/lib; then + CFLAGS="$CFLAGS -I$with_openssl_dir/include" + if test "x$LDFLAGS" = "x"; then + LDFLAGS="-L$with_openssl_dir/lib" + else + LDFLAGS="$LDFLAGS -L$with_openssl_dir/lib" + fi + AC_MSG_RESULT([$with_openssl_dir]) + else + AC_MSG_RESULT([invalid]) + AC_MSG_FAILURE([Invalid OpenSSL location: $with_openssl_dir]) + fi], + [AC_MSG_RESULT([no])]) + + if test "x$PKG_CONFIG" != "x"; then + PKG_CHECK_MODULES([crypto], [libcrypto], + [CFLAGS="$CFLAGS $crypto_CFLAGS" + LIBS="$crypto_LIBS $LIBS"]) + else + AC_CHECK_LIB([dl], [dlopen], [], [AC_MSG_WARN([can't find libdl])]) + AC_CHECK_LIB([z], [inflate], [], [AC_MSG_WARN([can't find libz])]) + fi + + AC_SEARCH_LIBS([EVP_EncryptInit], [crypto], + [], [AC_MSG_FAILURE([can't find compatible openssl crypto lib])]) + AC_SEARCH_LIBS([EVP_aes_128_ctr], [crypto], + [], [AC_MSG_FAILURE([can't find compatible openssl crypto lib])]) + AC_SEARCH_LIBS([EVP_aes_128_gcm], [crypto], + [], [AC_MSG_FAILURE([can't find compatible openssl crypto lib])]) + AC_SEARCH_LIBS([EVP_CIPHER_CTX_reset], [crypto], + [], [AC_MSG_FAILURE([can't find compatible openssl crypto lib])]) + + AC_DEFINE([GCM], [1], [Define this to use AES-GCM.]) + AC_DEFINE([OPENSSL], [1], [Define this to use OpenSSL crypto.]) + AES_ICM_OBJS="crypto/cipher/aes_icm_ossl.o crypto/cipher/aes_gcm_ossl.o" + HMAC_OBJS=crypto/hash/hmac_ossl.o + AC_SUBST([USE_EXTERNAL_CRYPTO], [1]) + + AC_MSG_CHECKING([whether to leverage OpenSSL KDF algorithm]) + AC_ARG_ENABLE([openssl-kdf], + [AS_HELP_STRING([--enable-openssl-kdf], [Use OpenSSL KDF algorithm])], + [], [enable_openssl_kdf=no]) + AC_MSG_RESULT([$enable_openssl_kdf]) + if test "$enable_openssl_kdf" = "yes"; then + AC_SEARCH_LIBS([kdf_srtp], [crypto], + [], [AC_MSG_FAILURE([can't find openssl KDF lib])]) + AC_DEFINE([OPENSSL_KDF], [1], [Define this to use OpenSSL KDF for SRTP.]) + fi +elif test "$enable_wolfssl" = "yes"; then + AC_MSG_CHECKING([for user specified wolfSSL directory]) + AC_ARG_WITH([wolfssl-dir], + [AS_HELP_STRING([--with-wolfssl-dir], [Location of wolfSSL installation])], + [if test -d $with_wolfssl_dir/lib; then + CFLAGS="$CFLAGS -I$with_wolfssl_dir/include -I$with_wolfssl_dir/include/wolfssl" + if test "x$LDFLAGS" = "x"; then + LDFLAGS="-L$with_wolfssl_dir/lib" + else + LDFLAGS="$LDFLAGS -L$with_wolfssl_dir/lib" + fi + AC_MSG_RESULT([$with_wolfssl_dir]) + else + AC_MSG_RESULT([invalid]) + AC_MSG_FAILURE([Invalid wolfSSL location: $with_wolfssl_dir]) + fi], + [AC_MSG_RESULT([no])]) + + AC_CHECK_LIB([dl], [dlopen], [], [AC_MSG_WARN([can't find libdl])]) + + AC_DEFINE([GCM], [1], [Define this to use AES-GCM.]) + AC_DEFINE([WOLFSSL], [1], [Define this to use wolfSSL crypto.]) + AES_ICM_OBJS="crypto/cipher/aes_icm_wssl.o crypto/cipher/aes_gcm_wssl.o" + HMAC_OBJS=crypto/hash/hmac_wssl.o + AC_SUBST([USE_EXTERNAL_CRYPTO], [1]) + + AC_MSG_CHECKING([whether to leverage wolfSSL KDF algorithm]) + AC_SEARCH_LIBS([wc_SRTCP_KDF], [wolfssl], + [], [AC_MSG_FAILURE([can't find wolfssl KDF lib])]) + AC_DEFINE([WOLFSSL_KDF], [1], [Define this to use wolfSSL KDF for SRTP.]) +elif test "$enable_nss" = "yes"; then + AC_MSG_CHECKING([for user specified NSS directory]) + AC_ARG_WITH([nss-dir], + [AS_HELP_STRING([--with-nss-dir], [Location of NSS installation])], + [if test "x$PKG_CONFIG" != "x" && test -f $with_nss_dir/lib/pkgconfig/nss.pc; then + if test "x$PKG_CONFIG_PATH" = "x"; then + export PKG_CONFIG_PATH="$with_nss_dir/lib/pkgconfig" + else + export PKG_CONFIG_PATH="$with_nss_dir/lib/pkgconfig:$PKG_CONFIG_PATH" + fi + AC_MSG_RESULT([$with_nss_dir]) + elif test -d $with_nss_dir/lib; then + CFLAGS="$CFLAGS -I$with_nss_dir/include" + CFLAGS="$CFLAGS -I$with_nss_dir/../public/nss" + if test "x$LDFLAGS" = "x"; then + LDFLAGS="-L$with_nss_dir/lib" + else + LDFLAGS="$LDFLAGS -L$with_nss_dir/lib" + fi + nss_skip_pkg_config=yes + AC_MSG_RESULT([$with_nss_dir]) + else + AC_MSG_RESULT([invalid]) + AC_MSG_FAILURE([Invalid NSS location: $with_nss_dir]) + fi + AC_SUBST([CRYPTO_LIBDIR], [$with_nss_dir/lib])], + [AC_MSG_RESULT([no])]) + + if test "x$PKG_CONFIG" != "x" && test "$nss_skip_pkg_config" != "yes"; then + PKG_CHECK_MODULES([nss], [nss], + [CFLAGS="$CFLAGS $nss_CFLAGS" + LIBS="$nss_LIBS $LIBS"]) + else + AC_CHECK_HEADERS( + [nss.h], + [], [AC_MSG_FAILURE([can't find useable NSS headers])], + [AC_INCLUDES_DEFAULT]) + AC_CHECK_LIB( + [nspr4], [PR_GetError], + [], [AC_MSG_WARN([can't find libnspr4])]) + AC_CHECK_LIB( + [nss3], [NSS_NoDB_Init], + [], [AC_MSG_FAILURE([can't find useable libnss3])]) + fi + + AC_DEFINE([GCM], [1], [Define this to use AES-GCM.]) + AC_DEFINE([NSS], [1], [Define this to use NSS crypto.]) + AES_ICM_OBJS="crypto/cipher/aes_icm_nss.o crypto/cipher/aes_gcm_nss.o" + HMAC_OBJS="crypto/hash/hmac_nss.o" + + # TODO(RLB): Use NSS for KDF + + AC_SUBST([USE_EXTERNAL_CRYPTO], [1]) +else + AES_ICM_OBJS="crypto/cipher/aes_icm.o crypto/cipher/aes.o" + HMAC_OBJS="crypto/hash/hmac.o crypto/hash/sha1.o" +fi +AC_SUBST([AES_ICM_OBJS]) +AC_SUBST([HMAC_OBJS]) + +dnl Checking for PCAP + +PCAP_LIB="" +AC_ARG_ENABLE([pcap], AS_HELP_STRING([--disable-pcap], [Build without `pcap' library (-lpcap)])) +AS_IF([test "x$enable_pcap" != "xno"], [ + AC_CHECK_LIB([pcap], [pcap_create], + [PCAP_LIB="-lpcap" + AC_DEFINE([HAVE_PCAP], [1], [Define to 1 if you have the `pcap' library (-lpcap)]) + AC_SUBST([HAVE_PCAP], [1])]) + + AC_CHECK_LIB([wpcap], [pcap_create], + [PCAP_LIB="-lwpcap" + AC_DEFINE([HAVE_PCAP], [1], [Define to 1 if you have the `winpcap' library (-lwpcap)]) + AC_SUBST([HAVE_PCAP], [1])]) +]) +AC_SUBST([PCAP_LIB]) + +AC_MSG_CHECKING([whether to redirect logging to stdout]) +AC_ARG_ENABLE([log-stdout], + [AS_HELP_STRING([--enable-log-stdout], [redirecting logging to stdout])], + [], [enable_log_stdout=no]) +if test "$enable_log_stdout" = "yes"; then + AC_DEFINE([ERR_REPORTING_STDOUT], [1], [Define to redirect logging to stdout.]) +fi +AC_MSG_RESULT([$enable_log_stdout]) + +AC_MSG_CHECKING([wheather to use a file for logging]) +AC_ARG_WITH([log-file], + [AS_HELP_STRING([--with-log-file], [Use file for logging])], + [AS_CASE([x$with_log_file], + [x], [valid_with_log_file="no"], + [xyes], [valid_with_log_file="no"], + [valid_with_error_file="yes"]) + AS_IF([test "$valid_with_log_file" = "no"], + [AC_MSG_RESULT([invalid]) + AC_MSG_FAILURE([Invalid value for --with-log-file: "$with_log_file"])], + [AC_DEFINE_UNQUOTED([ERR_REPORTING_FILE], ["$with_log_file"], [Logging statments will be writen to this file.]) + AC_MSG_RESULT([using log file: "$with_log_file"])])], + [AC_MSG_RESULT([no])]) + +AS_IF( + [test "$enable_log_stdout" = "yes" && test "x$with_log_file" != "x"], + [AC_MSG_FAILURE([Can only use one of --enable-log-stdout and --with-log-file; they are mutually exclusive])]) + +dnl Appending EXTRA_CFLAGS, if given +AC_MSG_CHECKING([for extra C compiler flags]) +AS_IF([test "x$EXTRA_CFLAGS" != "x"], + [AS_IF([test "x$CFLAGS" = "x"], + [CFLAGS="$EXTRA_CFLAGS"], [CFLAGS="$CFLAGS $EXTRA_CFLAGS"]) + AC_MSG_RESULT([$EXTRA_CFLAGS])], + [AC_MSG_RESULT(no)]) + +AC_CONFIG_HEADER([crypto/include/config.h:config_in.h]) + +AC_CONFIG_FILES([Makefile crypto/Makefile doc/Makefile fuzzer/Makefile libsrtp3.pc]) +AC_OUTPUT + +# This is needed when building outside the source dir. +AS_MKDIR_P([crypto/cipher]) +AS_MKDIR_P([crypto/hash]) +AS_MKDIR_P([crypto/kernel]) +AS_MKDIR_P([crypto/math]) +AS_MKDIR_P([crypto/replay]) +AS_MKDIR_P([crypto/test]) +AS_MKDIR_P([doc]) +AS_MKDIR_P([srtp]) +AS_MKDIR_P([test]) diff --git a/src/libs/libsrtp/crypto/Makefile.in b/src/libs/libsrtp/crypto/Makefile.in new file mode 100644 index 00000000..8eff89c5 --- /dev/null +++ b/src/libs/libsrtp/crypto/Makefile.in @@ -0,0 +1,118 @@ +# Makefile for crypto test suite +# +# David A. McGrew +# Cisco Systems, Inc. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @top_builddir@ +VPATH = @srcdir@ + +CC = @CC@ +INCDIR = -Iinclude -I$(srcdir)/include -I$(top_srcdir)/include +DEFS = @DEFS@ +CPPFLAGS= @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LIBS = @LIBS@ +LDFLAGS = @LDFLAGS@ -L. -L.. +COMPILE = $(CC) $(DEFS) $(INCDIR) $(CPPFLAGS) $(CFLAGS) +CRYPTOLIB = -lsrtp3 +CRYPTO_LIBDIR = @CRYPTO_LIBDIR@ + +RANLIB = @RANLIB@ + +# Specify how tests should find shared libraries on macOS and Linux +# +# macOS purges DYLD_LIBRARY_PATH when spawning subprocesses, so it's +# not possible to pass this in from the outside; we have to specify +# it for any subprocesses we call. No support for dynamic linked +# tests on Windows. +ifneq ($(strip $(CRYPTO_LIBDIR)),) + ifneq ($(OS),Windows_NT) + UNAME_S = $(shell uname -s) + ifeq ($(UNAME_S),Linux) + FIND_LIBRARIES = LD_LIBRARY_PATH=$(CRYPTO_LIBDIR) + endif + ifeq ($(UNAME_S),Darwin) + FIND_LIBRARIES = DYLD_LIBRARY_PATH=$(CRYPTO_LIBDIR) + endif + endif +endif + +# EXE defines the suffix on executables - it's .exe for cygwin, and +# null on linux, bsd, and OS X and other OSes. we define this so that +# `make clean` will work on the cygwin platform +EXE = @EXE@ +# Random source. +USE_EXTERNAL_CRYPTO = @USE_EXTERNAL_CRYPTO@ + +ifdef ARCH + DEFS += -D$(ARCH)=1 +endif + +ifdef sysname + DEFS += -D$(sysname)=1 +endif + +.PHONY: dummy all runtest clean superclean + +dummy : all runtest + +# test applications +ifneq (1, $(USE_EXTERNAL_CRYPTO)) +AES_CALC = test/aes_calc$(EXE) +SHA1_DRIVER = test/sha1_driver$(EXE) +endif + +testapp = test/cipher_driver$(EXE) test/datatypes_driver$(EXE) \ + $(SHA1_DRIVER) test/kernel_driver$(EXE) \ + $(AES_CALC) test/env$(EXE) + +# data values used to test the aes_calc application for AES-128 +k128=000102030405060708090a0b0c0d0e0f +p128=00112233445566778899aabbccddeeff +c128=69c4e0d86a7b0430d8cdb78070b4c55a + + +# data values used to test the aes_calc application for AES-256 +k256=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +p256=00112233445566778899aabbccddeeff +c256=8ea2b7ca516745bfeafc49904b496089 + + +runtest: $(testapp) + $(FIND_LIBRARIES) test/env$(EXE) # print out information on the build environment + @echo "running crypto test applications..." +ifneq (1, $(USE_EXTERNAL_CRYPTO)) + $(FIND_LIBRARIES) test `test/aes_calc $(k128) $(p128)` = $(c128) + $(FIND_LIBRARIES) test `test/aes_calc $(k256) $(p256)` = $(c256) + $(FIND_LIBRARIES) test/sha1_driver$(EXE) -v >/dev/null +endif + $(FIND_LIBRARIES) test/cipher_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) test/datatypes_driver$(EXE) -v >/dev/null + $(FIND_LIBRARIES) test/kernel_driver$(EXE) -v >/dev/null + @echo "crypto test applications passed." + + +# the rule for making object files and test apps + +%.o: %.c + $(COMPILE) -c $< -o $@ + +%$(EXE): %.c $(srcdir)/../test/getopt_s.c + $(COMPILE) $(LDFLAGS) $< $(srcdir)/../test/getopt_s.c -o $@ $(CRYPTOLIB) $(LIBS) + +all: $(testapp) + +# housekeeping functions + +clean: + rm -f $(testapp) *.o */*.o + for a in * .* */*; do if [ -f "$$a~" ] ; then rm $$a~; fi; done; + rm -f `find . -name "*.[ch]~*~"` + rm -rf latex + +superclean: clean + rm -f *core TAGS ktrace.out + +# EOF diff --git a/src/libs/libsrtp/crypto/cipher/aes.c b/src/libs/libsrtp/crypto/cipher/aes.c new file mode 100644 index 00000000..eb92358b --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes.c @@ -0,0 +1,2160 @@ +/* + * aes.c + * + * An implemnetation of the AES block cipher. + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "aes.h" +#include "err.h" + +/* + * we use the tables T0, T1, T2, T3, and T4 to compute AES, and + * the tables U0, U1, U2, and U4 to compute its inverse + * + * different tables are used on little-endian (Intel, VMS) and + * big-endian processors (everything else) + * + * these tables are computed using the program tables/aes_tables; use + * this program to generate different tables for porting or + * optimization on a different platform + */ + +#ifndef WORDS_BIGENDIAN +/* clang-format off */ +static const uint32_t T0[256] = { + 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, + 0xdf2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, + 0x50303060, 0x3010102, 0xa96767ce, 0x7d2b2b56, + 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, + 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, + 0x15fafaef, 0xeb5959b2, 0xc947478e, 0xbf0f0fb, + 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, + 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, + 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, + 0x5a36366c, 0x413f3f7e, 0x2f7f7f5, 0x4fcccc83, + 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x8f1f1f9, + 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, + 0xc040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, + 0x28181830, 0xa1969637, 0xf05050a, 0xb59a9a2f, + 0x907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, + 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, + 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, + 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, + 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, + 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, + 0xf55353a6, 0x68d1d1b9, 0x0, 0x2cededc1, + 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, + 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, + 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, + 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, + 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, + 0xcf45458a, 0x10f9f9e9, 0x6020204, 0x817f7ffe, + 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, + 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, + 0xad92923f, 0xbc9d9d21, 0x48383870, 0x4f5f5f1, + 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, + 0x30101020, 0x1affffe5, 0xef3f3fd, 0x6dd2d2bf, + 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, + 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, + 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, + 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, + 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, + 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, + 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, + 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, + 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, + 0xdb494992, 0xa06060c, 0x6c242448, 0xe45c5cb8, + 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, + 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, + 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, + 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, + 0xb46c6cd8, 0xfa5656ac, 0x7f4f4f3, 0x25eaeacf, + 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, + 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, + 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, + 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, + 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, + 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, + 0xd8484890, 0x5030306, 0x1f6f6f7, 0x120e0e1c, + 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, + 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, + 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, + 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, + 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, + 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, + 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, + 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, + 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, + 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t T1[256] = { + 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, + 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154, + 0x30306050, 0x1010203, 0x6767cea9, 0x2b2b567d, + 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, + 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, + 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, + 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, + 0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b, + 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, + 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, + 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, + 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, + 0x404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, + 0x18183028, 0x969637a1, 0x5050a0f, 0x9a9a2fb5, + 0x7070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, + 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, + 0x909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, + 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, + 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, + 0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397, + 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c, + 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, + 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, + 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, + 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, + 0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194, + 0x45458acf, 0xf9f9e910, 0x2020406, 0x7f7ffe81, + 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, + 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, + 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, + 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, + 0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d, + 0xcdcd814c, 0xc0c1814, 0x13132635, 0xececc32f, + 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, + 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, + 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, + 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, + 0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83, + 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, + 0xdedea779, 0x5e5ebce2, 0xb0b161d, 0xdbdbad76, + 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0xa0a141e, + 0x494992db, 0x6060c0a, 0x2424486c, 0x5c5cb8e4, + 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, + 0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b, + 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, + 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, + 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, + 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x8081018, + 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, + 0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751, + 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, + 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, + 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, + 0x484890d8, 0x3030605, 0xf6f6f701, 0xe0e1c12, + 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, + 0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9, + 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, + 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, + 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, + 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, + 0x8c8c038f, 0xa1a159f8, 0x89890980, 0xd0d1a17, + 0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8, + 0x414182c3, 0x999929b0, 0x2d2d5a77, 0xf0f1e11, + 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t T2[256] = { + 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, + 0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5, + 0x30605030, 0x1020301, 0x67cea967, 0x2b567d2b, + 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, + 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, + 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, + 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, + 0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0, + 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, + 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, + 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, + 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, + 0x4080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, + 0x18302818, 0x9637a196, 0x50a0f05, 0x9a2fb59a, + 0x70e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, + 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, + 0x9121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, + 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, + 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, + 0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784, + 0x53a6f553, 0xd1b968d1, 0x0, 0xedc12ced, + 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, + 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, + 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, + 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, + 0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485, + 0x458acf45, 0xf9e910f9, 0x2040602, 0x7ffe817f, + 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, + 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, + 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, + 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, + 0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2, + 0xcd814ccd, 0xc18140c, 0x13263513, 0xecc32fec, + 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, + 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, + 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, + 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, + 0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388, + 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, + 0xdea779de, 0x5ebce25e, 0xb161d0b, 0xdbad76db, + 0xe0db3be0, 0x32645632, 0x3a744e3a, 0xa141e0a, + 0x4992db49, 0x60c0a06, 0x24486c24, 0x5cb8e45c, + 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, + 0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79, + 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, + 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, + 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, + 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x8101808, + 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, + 0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6, + 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, + 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, + 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, + 0x4890d848, 0x3060503, 0xf6f701f6, 0xe1c120e, + 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, + 0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e, + 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, + 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, + 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, + 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, + 0x8c038f8c, 0xa159f8a1, 0x89098089, 0xd1a170d, + 0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868, + 0x4182c341, 0x9929b099, 0x2d5a772d, 0xf1e110f, + 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t T3[256] = { + 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, + 0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5, + 0x60503030, 0x2030101, 0xcea96767, 0x567d2b2b, + 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, + 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, + 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, + 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, + 0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0, + 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, + 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, + 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, + 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, + 0x80c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, + 0x30281818, 0x37a19696, 0xa0f0505, 0x2fb59a9a, + 0xe090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, + 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, + 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, + 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, + 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, + 0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484, + 0xa6f55353, 0xb968d1d1, 0x0, 0xc12ceded, + 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, + 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, + 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, + 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, + 0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585, + 0x8acf4545, 0xe910f9f9, 0x4060202, 0xfe817f7f, + 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, + 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x58a8f8f, + 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, + 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, + 0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2, + 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, + 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, + 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, + 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, + 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, + 0x44662222, 0x547e2a2a, 0x3bab9090, 0xb838888, + 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, + 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, + 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, + 0x92db4949, 0xc0a0606, 0x486c2424, 0xb8e45c5c, + 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, + 0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979, + 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, + 0x18c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, + 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, + 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, + 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, + 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6, + 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, + 0x96dd4b4b, 0x61dcbdbd, 0xd868b8b, 0xf858a8a, + 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, + 0x90d84848, 0x6050303, 0xf701f6f6, 0x1c120e0e, + 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, + 0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e, + 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, + 0xd2bb6969, 0xa970d9d9, 0x7898e8e, 0x33a79494, + 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, + 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, + 0x38f8c8c, 0x59f8a1a1, 0x9808989, 0x1a170d0d, + 0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868, + 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, + 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U0[256] = { + 0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, + 0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b, + 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, + 0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5, + 0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d, + 0x2752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b, + 0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295, + 0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e, + 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927, + 0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d, + 0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362, + 0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9, + 0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52, + 0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566, + 0x728ebb2, 0x3c2b52f, 0x9a7bc586, 0xa50837d3, + 0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed, + 0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e, + 0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4, + 0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4, + 0x39ec830b, 0xaaef6040, 0x69f715e, 0x51106ebd, + 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d, + 0xb58d5491, 0x55dc471, 0x6fd40604, 0xff155060, + 0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967, + 0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879, + 0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x0, + 0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c, + 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36, + 0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624, + 0xb1670a0c, 0xfe75793, 0xd296eeb4, 0x9e919b1b, + 0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c, + 0xaba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12, + 0xb0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14, + 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3, + 0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b, + 0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8, + 0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684, + 0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7, + 0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177, + 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947, + 0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322, + 0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498, + 0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f, + 0xe49d3a2c, 0xd927850, 0x9bcc5f6a, 0x62467e54, + 0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382, + 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf, + 0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb, + 0x97826cd, 0xf418596e, 0x1b79aec, 0xa89a4f83, + 0x656e95e6, 0x7ee6ffaa, 0x8cfbc21, 0xe6e815ef, + 0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029, + 0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235, + 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733, + 0x4a9804f1, 0xf7daec41, 0xe50cd7f, 0x2ff69117, + 0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4, + 0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546, + 0x4ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb, + 0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d, + 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb, + 0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a, + 0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773, + 0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478, + 0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2, + 0x72c31d16, 0xc25e2bc, 0x8b493c28, 0x41950dff, + 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664, + 0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U1[256] = { + 0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96, + 0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x3e34b93, + 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525, + 0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f, + 0x5ab1de49, 0x1bba2567, 0xeea4598, 0xc0fe5de1, + 0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6, + 0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da, + 0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44, + 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd, + 0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4, + 0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245, + 0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994, + 0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7, + 0xd373ab23, 0x24b72e2, 0x8f1fe357, 0xab55662a, + 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x837d3a5, + 0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c, + 0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1, + 0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a, + 0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475, + 0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51, + 0x8a213ef9, 0x6dd963d, 0x53eddae, 0xbde64d46, + 0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff, + 0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777, + 0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db, + 0xa7ca147, 0xf427ce9, 0x1e84f8c9, 0x0, + 0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e, + 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627, + 0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a, + 0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e, + 0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16, + 0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d, + 0xd090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8, + 0x19f15785, 0x775af4c, 0xdd99eebb, 0x607fa3fd, + 0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34, + 0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863, + 0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420, + 0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d, + 0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0, + 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722, + 0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef, + 0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0xbd49836, + 0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4, + 0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462, + 0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5, + 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3, + 0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b, + 0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8, + 0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6, + 0x9be7bad9, 0x366f4ace, 0x99fead4, 0x7cb029d6, + 0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0, + 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315, + 0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f, + 0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x496e4df, + 0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f, + 0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e, + 0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13, + 0x61d79a8c, 0xca1377a, 0x14f8598e, 0x3c13eb89, + 0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c, + 0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf, + 0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886, + 0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f, + 0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41, + 0x1a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490, + 0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U2[256] = { + 0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, + 0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303, + 0x302055fa, 0x76adf66d, 0xcc889176, 0x2f5254c, + 0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3, + 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0, + 0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9, + 0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59, + 0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8, + 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71, + 0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a, + 0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f, + 0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x8f9942b, + 0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8, + 0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab, + 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508, + 0x2830f287, 0xbf23b2a5, 0x302ba6a, 0x16ed5c82, + 0xcf8a2b1c, 0x79a792b4, 0x7f3f0f2, 0x694ea1e2, + 0xda65cdf4, 0x506d5be, 0x34d11f62, 0xa6c48afe, + 0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb, + 0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110, + 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, + 0x5491b58d, 0xc471055d, 0x6046fd4, 0x5060ff15, + 0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e, + 0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee, + 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x0, + 0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72, + 0xefdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739, + 0xf0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e, + 0xa0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91, + 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a, + 0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, + 0x90e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9, + 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60, + 0x1f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e, + 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1, + 0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011, + 0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1, + 0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3, + 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264, + 0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90, + 0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b, + 0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf, + 0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246, + 0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af, + 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312, + 0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb, + 0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a, + 0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8, + 0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c, + 0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066, + 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, + 0x4f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6, + 0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04, + 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51, + 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0xbfb2e41, + 0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347, + 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c, + 0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1, + 0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37, + 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db, + 0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, + 0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0xdff4195, + 0xa8397101, 0xc08deb3, 0xb4d89ce4, 0x566490c1, + 0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U3[256] = { + 0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, + 0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3, + 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02, + 0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362, + 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe, + 0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3, + 0x3e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952, + 0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9, + 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9, + 0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace, + 0x63184adf, 0xe582311a, 0x97603351, 0x62457f53, + 0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08, + 0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b, + 0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55, + 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837, + 0x30f28728, 0x23b2a5bf, 0x2ba6a03, 0xed5c8216, + 0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269, + 0x65cdf4da, 0x6d5be05, 0xd11f6234, 0xc48afea6, + 0x349d532e, 0xa2a055f3, 0x532e18a, 0xa475ebf6, + 0xb39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e, + 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, + 0x91b58d54, 0x71055dc4, 0x46fd406, 0x60ff1550, + 0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9, + 0xb0bd42e8, 0x7888b89, 0xe7385b19, 0x79dbeec8, + 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x0, + 0x9838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a, + 0xfdfbff0e, 0xf563885, 0x3d1ed5ae, 0x3627392d, + 0xa64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36, + 0xcb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b, + 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12, + 0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, + 0xe0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e, + 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f, + 0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb, + 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4, + 0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6, + 0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129, + 0x1d4b2f9e, 0xdcf330b2, 0xdec5286, 0x77d0e3c1, + 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9, + 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033, + 0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4, + 0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad, + 0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e, + 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3, + 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225, + 0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b, + 0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f, + 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815, + 0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0, + 0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2, + 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, + 0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691, + 0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496, + 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165, + 0x9d04ea5e, 0x15d358c, 0xfa737487, 0xfb2e410b, + 0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6, + 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13, + 0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147, + 0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7, + 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44, + 0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, + 0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d, + 0x397101a8, 0x8deb30c, 0xd89ce4b4, 0x6490c156, + 0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8, +}; +/* clang-format on */ + +#else /* assume big endian */ +/* clang-format off */ +static const uint32_t T0[256] = { + 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, + 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, + 0x60303050, 0x2010103, 0xce6767a9, 0x562b2b7d, + 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, + 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, + 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, + 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, + 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, + 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, + 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, + 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, + 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, + 0x804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, + 0x30181828, 0x379696a1, 0xa05050f, 0x2f9a9ab5, + 0xe070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, + 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, + 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, + 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, + 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, + 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, + 0xa65353f5, 0xb9d1d168, 0x0, 0xc1eded2c, + 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, + 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, + 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, + 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, + 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, + 0x8a4545cf, 0xe9f9f910, 0x4020206, 0xfe7f7f81, + 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, + 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x58f8f8a, + 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, + 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, + 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, + 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, + 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, + 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, + 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, + 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, + 0x44222266, 0x542a2a7e, 0x3b9090ab, 0xb888883, + 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, + 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, + 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, + 0x924949db, 0xc06060a, 0x4824246c, 0xb85c5ce4, + 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, + 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, + 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, + 0x18d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, + 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, + 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, + 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, + 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, + 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, + 0x964b4bdd, 0x61bdbddc, 0xd8b8b86, 0xf8a8a85, + 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, + 0x904848d8, 0x6030305, 0xf7f6f601, 0x1c0e0e12, + 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, + 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, + 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, + 0xd26969bb, 0xa9d9d970, 0x78e8e89, 0x339494a7, + 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, + 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, + 0x38c8c8f, 0x59a1a1f8, 0x9898980, 0x1a0d0d17, + 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, + 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, + 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t T1[256] = { + 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, + 0xdfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, + 0x50603030, 0x3020101, 0xa9ce6767, 0x7d562b2b, + 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, + 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, + 0x15effafa, 0xebb25959, 0xc98e4747, 0xbfbf0f0, + 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, + 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, + 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, + 0x5a6c3636, 0x417e3f3f, 0x2f5f7f7, 0x4f83cccc, + 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x8f9f1f1, + 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, + 0xc080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, + 0x28301818, 0xa1379696, 0xf0a0505, 0xb52f9a9a, + 0x90e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, + 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, + 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, + 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, + 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, + 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, + 0xf5a65353, 0x68b9d1d1, 0x0, 0x2cc1eded, + 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, + 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, + 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, + 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, + 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, + 0xcf8a4545, 0x10e9f9f9, 0x6040202, 0x81fe7f7f, + 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, + 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, + 0xad3f9292, 0xbc219d9d, 0x48703838, 0x4f1f5f5, + 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, + 0x30201010, 0x1ae5ffff, 0xefdf3f3, 0x6dbfd2d2, + 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, + 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, + 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, + 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, + 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, + 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, + 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, + 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, + 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, + 0xdb924949, 0xa0c0606, 0x6c482424, 0xe4b85c5c, + 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, + 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, + 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, + 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, + 0xb4d86c6c, 0xfaac5656, 0x7f3f4f4, 0x25cfeaea, + 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, + 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, + 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, + 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, + 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, + 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, + 0xd8904848, 0x5060303, 0x1f7f6f6, 0x121c0e0e, + 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, + 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, + 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, + 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, + 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, + 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, + 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, + 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, + 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, + 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t T2[256] = { + 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, + 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, + 0x30506030, 0x1030201, 0x67a9ce67, 0x2b7d562b, + 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, + 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, + 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, + 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, + 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, + 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, + 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, + 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, + 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, + 0x40c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, + 0x18283018, 0x96a13796, 0x50f0a05, 0x9ab52f9a, + 0x7090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, + 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, + 0x91b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, + 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, + 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, + 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, + 0x53f5a653, 0xd168b9d1, 0x0, 0xed2cc1ed, + 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, + 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, + 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, + 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, + 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, + 0x45cf8a45, 0xf910e9f9, 0x2060402, 0x7f81fe7f, + 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, + 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, + 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, + 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, + 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, + 0xcd4c81cd, 0xc14180c, 0x13352613, 0xec2fc3ec, + 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, + 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, + 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, + 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, + 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, + 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, + 0xde79a7de, 0x5ee2bc5e, 0xb1d160b, 0xdb76addb, + 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0xa1e140a, + 0x49db9249, 0x60a0c06, 0x246c4824, 0x5ce4b85c, + 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, + 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, + 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, + 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, + 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, + 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x8181008, + 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, + 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, + 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, + 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, + 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, + 0x48d89048, 0x3050603, 0xf601f7f6, 0xe121c0e, + 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, + 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, + 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, + 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, + 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, + 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, + 0x8c8f038c, 0xa1f859a1, 0x89800989, 0xd171a0d, + 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, + 0x41c38241, 0x99b02999, 0x2d775a2d, 0xf111e0f, + 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t T3[256] = { + 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, + 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, + 0x30305060, 0x1010302, 0x6767a9ce, 0x2b2b7d56, + 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, + 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, + 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, + 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, + 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, + 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, + 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, + 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, + 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, + 0x4040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, + 0x18182830, 0x9696a137, 0x5050f0a, 0x9a9ab52f, + 0x707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, + 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, + 0x9091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, + 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, + 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, + 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, + 0x5353f5a6, 0xd1d168b9, 0x0, 0xeded2cc1, + 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, + 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, + 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, + 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, + 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, + 0x4545cf8a, 0xf9f910e9, 0x2020604, 0x7f7f81fe, + 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, + 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, + 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, + 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, + 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, + 0xcdcd4c81, 0xc0c1418, 0x13133526, 0xecec2fc3, + 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, + 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, + 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, + 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, + 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, + 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, + 0xdede79a7, 0x5e5ee2bc, 0xb0b1d16, 0xdbdb76ad, + 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0xa0a1e14, + 0x4949db92, 0x6060a0c, 0x24246c48, 0x5c5ce4b8, + 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, + 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, + 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, + 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, + 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, + 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x8081810, + 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, + 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, + 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, + 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, + 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, + 0x4848d890, 0x3030506, 0xf6f601f7, 0xe0e121c, + 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, + 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, + 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, + 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, + 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, + 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, + 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0xd0d171a, + 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, + 0x4141c382, 0x9999b029, 0x2d2d775a, 0xf0f111e, + 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U0[256] = { + 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, + 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, + 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, + 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, + 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, + 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, + 0x38f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, + 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, + 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, + 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, + 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, + 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, + 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, + 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, + 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, + 0x302887f2, 0x23bfa5b2, 0x2036aba, 0xed16825c, + 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, + 0x65daf4cd, 0x605bed5, 0xd134621f, 0xc4a6fe8a, + 0x342e539d, 0xa2f355a0, 0x58ae132, 0xa4f6eb75, + 0xb83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, + 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, + 0x91548db5, 0x71c45d05, 0x406d46f, 0x605015ff, + 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, + 0xb0e842bd, 0x7898b88, 0xe7195b38, 0x79c8eedb, + 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x0, + 0x9808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, + 0xfd0efffb, 0xf853856, 0x3daed51e, 0x362d3927, + 0xa0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, + 0xc0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, + 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, + 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, + 0xe090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, + 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, + 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, + 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, + 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, + 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, + 0x1d9e2f4b, 0xdcb230f3, 0xd8652ec, 0x77c1e3d0, + 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, + 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, + 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, + 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, + 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, + 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, + 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, + 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, + 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, + 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, + 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, + 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, + 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, + 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, + 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, + 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, + 0x9d5eea04, 0x18c355d, 0xfa877473, 0xfb0b412e, + 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, + 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, + 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, + 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, + 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, + 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, + 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, + 0x39a80171, 0x80cb3de, 0xd8b4e49c, 0x6456c190, + 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U1[256] = { + 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, + 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, + 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, + 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, + 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, + 0x2c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, + 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, + 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, + 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, + 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, + 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, + 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, + 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, + 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, + 0x7b2eb28, 0x32fb5c2, 0x9a86c57b, 0xa5d33708, + 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, + 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, + 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, + 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, + 0x390b83ec, 0xaa4060ef, 0x65e719f, 0x51bd6e10, + 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, + 0xb591548d, 0x571c45d, 0x6f0406d4, 0xff605015, + 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, + 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, + 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x0, + 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, + 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, + 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, + 0xb10c0a67, 0xf9357e7, 0xd2b4ee96, 0x9e1b9b91, + 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, + 0xae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, + 0xb0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, + 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, + 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, + 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, + 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, + 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, + 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, + 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, + 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, + 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, + 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, + 0xe42c3a9d, 0xd507892, 0x9b6a5fcc, 0x62547e46, + 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, + 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, + 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, + 0x9cd2678, 0xf46e5918, 0x1ec9ab7, 0xa8834f9a, + 0x65e6956e, 0x7eaaffe6, 0x821bccf, 0xe6ef15e8, + 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, + 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, + 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, + 0x4af10498, 0xf741ecda, 0xe7fcd50, 0x2f1791f6, + 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, + 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, + 0x49d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, + 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, + 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, + 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, + 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, + 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, + 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, + 0x72161dc3, 0xcbce225, 0x8b283c49, 0x41ff0d95, + 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, + 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U2[256] = { + 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, + 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x3934be3, + 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, + 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, + 0x5a49deb1, 0x1b6725ba, 0xe9845ea, 0xc0e15dfe, + 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, + 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, + 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, + 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, + 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, + 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, + 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, + 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, + 0xd323ab73, 0x2e2724b, 0x8f57e31f, 0xab2a6655, + 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x8a5d337, + 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, + 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, + 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, + 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, + 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, + 0x8af93e21, 0x63d96dd, 0x5aedd3e, 0xbd464de6, + 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, + 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, + 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, + 0xa47a17c, 0xfe97c42, 0x1ec9f884, 0x0, + 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, + 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, + 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, + 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, + 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, + 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, + 0xd0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, + 0x198557f1, 0x74caf75, 0xddbbee99, 0x60fda37f, + 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, + 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, + 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, + 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, + 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, + 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, + 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, + 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0xb3698d4, + 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, + 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, + 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, + 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, + 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, + 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, + 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, + 0x9bd9bae7, 0x36ce4a6f, 0x9d4ea9f, 0x7cd629b0, + 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, + 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, + 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, + 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x4dfe496, + 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, + 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, + 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, + 0x618c9ad7, 0xc7a37a1, 0x148e59f8, 0x3c89eb13, + 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, + 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, + 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, + 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, + 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, + 0x17139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, + 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U3[256] = { + 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, + 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, + 0x30fa5520, 0x766df6ad, 0xcc769188, 0x24c25f5, + 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, + 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, + 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, + 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, + 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, + 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, + 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, + 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, + 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x82b94f9, + 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, + 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, + 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, + 0x2887f230, 0xbfa5b223, 0x36aba02, 0x16825ced, + 0xcf1c2b8a, 0x79b492a7, 0x7f2f0f3, 0x69e2a14e, + 0xdaf4cd65, 0x5bed506, 0x34621fd1, 0xa6fe8ac4, + 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, + 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, + 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, + 0x548db591, 0xc45d0571, 0x6d46f04, 0x5015ff60, + 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, + 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, + 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x0, + 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, + 0xefffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, + 0xfd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, + 0xa67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, + 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, + 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, + 0x90d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, + 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, + 0x1269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, + 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, + 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, + 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, + 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, + 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, + 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, + 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, + 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, + 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, + 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, + 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, + 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, + 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, + 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, + 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, + 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, + 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, + 0x4984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, + 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, + 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, + 0x5eea049d, 0x8c355d01, 0x877473fa, 0xb412efb, + 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, + 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, + 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, + 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, + 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, + 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, + 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0xd9541ff, + 0xa8017139, 0xcb3de08, 0xb4e49cd8, 0x56c19064, + 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0 +}; +/* clang-format on */ +#endif + +/* + * the following tables (aes_sbox, aes_inv_sbox, T4, U4) are + * endian-neutral + */ +/* clang-format off */ +static const uint8_t aes_sbox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, + 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, + 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, + 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, + 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, + 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, + 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, + 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, + 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, + 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, + 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, + 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 +}; +/* clang-format on */ + +#ifndef CPU_RISC +/* clang-format off */ +static const uint8_t aes_inv_sbox[256] = { + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, + 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, + 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, + 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, + 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, + 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, + 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, + 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, + 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, + 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, + 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, + 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, + 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, + 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, + 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, + 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, + 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, + 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, + 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, + 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, + 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, + 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, + 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, + 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, + 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, + 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d +}; +/* clang-format on */ +#endif /* ! CPU_RISC */ + +#ifdef CPU_RISC +/* clang-format off */ +static const uint32_t T4[256] = { + 0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b, + 0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5, + 0x30303030, 0x01010101, 0x67676767, 0x2b2b2b2b, + 0xfefefefe, 0xd7d7d7d7, 0xabababab, 0x76767676, + 0xcacacaca, 0x82828282, 0xc9c9c9c9, 0x7d7d7d7d, + 0xfafafafa, 0x59595959, 0x47474747, 0xf0f0f0f0, + 0xadadadad, 0xd4d4d4d4, 0xa2a2a2a2, 0xafafafaf, + 0x9c9c9c9c, 0xa4a4a4a4, 0x72727272, 0xc0c0c0c0, + 0xb7b7b7b7, 0xfdfdfdfd, 0x93939393, 0x26262626, + 0x36363636, 0x3f3f3f3f, 0xf7f7f7f7, 0xcccccccc, + 0x34343434, 0xa5a5a5a5, 0xe5e5e5e5, 0xf1f1f1f1, + 0x71717171, 0xd8d8d8d8, 0x31313131, 0x15151515, + 0x04040404, 0xc7c7c7c7, 0x23232323, 0xc3c3c3c3, + 0x18181818, 0x96969696, 0x05050505, 0x9a9a9a9a, + 0x07070707, 0x12121212, 0x80808080, 0xe2e2e2e2, + 0xebebebeb, 0x27272727, 0xb2b2b2b2, 0x75757575, + 0x09090909, 0x83838383, 0x2c2c2c2c, 0x1a1a1a1a, + 0x1b1b1b1b, 0x6e6e6e6e, 0x5a5a5a5a, 0xa0a0a0a0, + 0x52525252, 0x3b3b3b3b, 0xd6d6d6d6, 0xb3b3b3b3, + 0x29292929, 0xe3e3e3e3, 0x2f2f2f2f, 0x84848484, + 0x53535353, 0xd1d1d1d1, 0x00000000, 0xedededed, + 0x20202020, 0xfcfcfcfc, 0xb1b1b1b1, 0x5b5b5b5b, + 0x6a6a6a6a, 0xcbcbcbcb, 0xbebebebe, 0x39393939, + 0x4a4a4a4a, 0x4c4c4c4c, 0x58585858, 0xcfcfcfcf, + 0xd0d0d0d0, 0xefefefef, 0xaaaaaaaa, 0xfbfbfbfb, + 0x43434343, 0x4d4d4d4d, 0x33333333, 0x85858585, + 0x45454545, 0xf9f9f9f9, 0x02020202, 0x7f7f7f7f, + 0x50505050, 0x3c3c3c3c, 0x9f9f9f9f, 0xa8a8a8a8, + 0x51515151, 0xa3a3a3a3, 0x40404040, 0x8f8f8f8f, + 0x92929292, 0x9d9d9d9d, 0x38383838, 0xf5f5f5f5, + 0xbcbcbcbc, 0xb6b6b6b6, 0xdadadada, 0x21212121, + 0x10101010, 0xffffffff, 0xf3f3f3f3, 0xd2d2d2d2, + 0xcdcdcdcd, 0x0c0c0c0c, 0x13131313, 0xecececec, + 0x5f5f5f5f, 0x97979797, 0x44444444, 0x17171717, + 0xc4c4c4c4, 0xa7a7a7a7, 0x7e7e7e7e, 0x3d3d3d3d, + 0x64646464, 0x5d5d5d5d, 0x19191919, 0x73737373, + 0x60606060, 0x81818181, 0x4f4f4f4f, 0xdcdcdcdc, + 0x22222222, 0x2a2a2a2a, 0x90909090, 0x88888888, + 0x46464646, 0xeeeeeeee, 0xb8b8b8b8, 0x14141414, + 0xdededede, 0x5e5e5e5e, 0x0b0b0b0b, 0xdbdbdbdb, + 0xe0e0e0e0, 0x32323232, 0x3a3a3a3a, 0x0a0a0a0a, + 0x49494949, 0x06060606, 0x24242424, 0x5c5c5c5c, + 0xc2c2c2c2, 0xd3d3d3d3, 0xacacacac, 0x62626262, + 0x91919191, 0x95959595, 0xe4e4e4e4, 0x79797979, + 0xe7e7e7e7, 0xc8c8c8c8, 0x37373737, 0x6d6d6d6d, + 0x8d8d8d8d, 0xd5d5d5d5, 0x4e4e4e4e, 0xa9a9a9a9, + 0x6c6c6c6c, 0x56565656, 0xf4f4f4f4, 0xeaeaeaea, + 0x65656565, 0x7a7a7a7a, 0xaeaeaeae, 0x08080808, + 0xbabababa, 0x78787878, 0x25252525, 0x2e2e2e2e, + 0x1c1c1c1c, 0xa6a6a6a6, 0xb4b4b4b4, 0xc6c6c6c6, + 0xe8e8e8e8, 0xdddddddd, 0x74747474, 0x1f1f1f1f, + 0x4b4b4b4b, 0xbdbdbdbd, 0x8b8b8b8b, 0x8a8a8a8a, + 0x70707070, 0x3e3e3e3e, 0xb5b5b5b5, 0x66666666, + 0x48484848, 0x03030303, 0xf6f6f6f6, 0x0e0e0e0e, + 0x61616161, 0x35353535, 0x57575757, 0xb9b9b9b9, + 0x86868686, 0xc1c1c1c1, 0x1d1d1d1d, 0x9e9e9e9e, + 0xe1e1e1e1, 0xf8f8f8f8, 0x98989898, 0x11111111, + 0x69696969, 0xd9d9d9d9, 0x8e8e8e8e, 0x94949494, + 0x9b9b9b9b, 0x1e1e1e1e, 0x87878787, 0xe9e9e9e9, + 0xcececece, 0x55555555, 0x28282828, 0xdfdfdfdf, + 0x8c8c8c8c, 0xa1a1a1a1, 0x89898989, 0x0d0d0d0d, + 0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868, + 0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f, + 0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint32_t U4[256] = { + 0x52525252, 0x9090909, 0x6a6a6a6a, 0xd5d5d5d5, + 0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838, + 0xbfbfbfbf, 0x40404040, 0xa3a3a3a3, 0x9e9e9e9e, + 0x81818181, 0xf3f3f3f3, 0xd7d7d7d7, 0xfbfbfbfb, + 0x7c7c7c7c, 0xe3e3e3e3, 0x39393939, 0x82828282, + 0x9b9b9b9b, 0x2f2f2f2f, 0xffffffff, 0x87878787, + 0x34343434, 0x8e8e8e8e, 0x43434343, 0x44444444, + 0xc4c4c4c4, 0xdededede, 0xe9e9e9e9, 0xcbcbcbcb, + 0x54545454, 0x7b7b7b7b, 0x94949494, 0x32323232, + 0xa6a6a6a6, 0xc2c2c2c2, 0x23232323, 0x3d3d3d3d, + 0xeeeeeeee, 0x4c4c4c4c, 0x95959595, 0xb0b0b0b, + 0x42424242, 0xfafafafa, 0xc3c3c3c3, 0x4e4e4e4e, + 0x8080808, 0x2e2e2e2e, 0xa1a1a1a1, 0x66666666, + 0x28282828, 0xd9d9d9d9, 0x24242424, 0xb2b2b2b2, + 0x76767676, 0x5b5b5b5b, 0xa2a2a2a2, 0x49494949, + 0x6d6d6d6d, 0x8b8b8b8b, 0xd1d1d1d1, 0x25252525, + 0x72727272, 0xf8f8f8f8, 0xf6f6f6f6, 0x64646464, + 0x86868686, 0x68686868, 0x98989898, 0x16161616, + 0xd4d4d4d4, 0xa4a4a4a4, 0x5c5c5c5c, 0xcccccccc, + 0x5d5d5d5d, 0x65656565, 0xb6b6b6b6, 0x92929292, + 0x6c6c6c6c, 0x70707070, 0x48484848, 0x50505050, + 0xfdfdfdfd, 0xedededed, 0xb9b9b9b9, 0xdadadada, + 0x5e5e5e5e, 0x15151515, 0x46464646, 0x57575757, + 0xa7a7a7a7, 0x8d8d8d8d, 0x9d9d9d9d, 0x84848484, + 0x90909090, 0xd8d8d8d8, 0xabababab, 0x0, + 0x8c8c8c8c, 0xbcbcbcbc, 0xd3d3d3d3, 0xa0a0a0a, + 0xf7f7f7f7, 0xe4e4e4e4, 0x58585858, 0x5050505, + 0xb8b8b8b8, 0xb3b3b3b3, 0x45454545, 0x6060606, + 0xd0d0d0d0, 0x2c2c2c2c, 0x1e1e1e1e, 0x8f8f8f8f, + 0xcacacaca, 0x3f3f3f3f, 0xf0f0f0f, 0x2020202, + 0xc1c1c1c1, 0xafafafaf, 0xbdbdbdbd, 0x3030303, + 0x1010101, 0x13131313, 0x8a8a8a8a, 0x6b6b6b6b, + 0x3a3a3a3a, 0x91919191, 0x11111111, 0x41414141, + 0x4f4f4f4f, 0x67676767, 0xdcdcdcdc, 0xeaeaeaea, + 0x97979797, 0xf2f2f2f2, 0xcfcfcfcf, 0xcececece, + 0xf0f0f0f0, 0xb4b4b4b4, 0xe6e6e6e6, 0x73737373, + 0x96969696, 0xacacacac, 0x74747474, 0x22222222, + 0xe7e7e7e7, 0xadadadad, 0x35353535, 0x85858585, + 0xe2e2e2e2, 0xf9f9f9f9, 0x37373737, 0xe8e8e8e8, + 0x1c1c1c1c, 0x75757575, 0xdfdfdfdf, 0x6e6e6e6e, + 0x47474747, 0xf1f1f1f1, 0x1a1a1a1a, 0x71717171, + 0x1d1d1d1d, 0x29292929, 0xc5c5c5c5, 0x89898989, + 0x6f6f6f6f, 0xb7b7b7b7, 0x62626262, 0xe0e0e0e, + 0xaaaaaaaa, 0x18181818, 0xbebebebe, 0x1b1b1b1b, + 0xfcfcfcfc, 0x56565656, 0x3e3e3e3e, 0x4b4b4b4b, + 0xc6c6c6c6, 0xd2d2d2d2, 0x79797979, 0x20202020, + 0x9a9a9a9a, 0xdbdbdbdb, 0xc0c0c0c0, 0xfefefefe, + 0x78787878, 0xcdcdcdcd, 0x5a5a5a5a, 0xf4f4f4f4, + 0x1f1f1f1f, 0xdddddddd, 0xa8a8a8a8, 0x33333333, + 0x88888888, 0x7070707, 0xc7c7c7c7, 0x31313131, + 0xb1b1b1b1, 0x12121212, 0x10101010, 0x59595959, + 0x27272727, 0x80808080, 0xecececec, 0x5f5f5f5f, + 0x60606060, 0x51515151, 0x7f7f7f7f, 0xa9a9a9a9, + 0x19191919, 0xb5b5b5b5, 0x4a4a4a4a, 0xd0d0d0d, + 0x2d2d2d2d, 0xe5e5e5e5, 0x7a7a7a7a, 0x9f9f9f9f, + 0x93939393, 0xc9c9c9c9, 0x9c9c9c9c, 0xefefefef, + 0xa0a0a0a0, 0xe0e0e0e0, 0x3b3b3b3b, 0x4d4d4d4d, + 0xaeaeaeae, 0x2a2a2a2a, 0xf5f5f5f5, 0xb0b0b0b0, + 0xc8c8c8c8, 0xebebebeb, 0xbbbbbbbb, 0x3c3c3c3c, + 0x83838383, 0x53535353, 0x99999999, 0x61616161, + 0x17171717, 0x2b2b2b2b, 0x4040404, 0x7e7e7e7e, + 0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626, + 0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363, + 0x55555555, 0x21212121, 0xc0c0c0c, 0x7d7d7d7d +}; +/* clang-format on */ +#endif /* CPU_RISC */ + +#define gf2_8_field_polynomial 0x1B +/* + * gf2_8_shift(z) returns the result of the GF(2^8) 'multiply by x' + * operation, using the field representation from AES; that is, the + * next gf2_8 value in the cyclic representation of that field. The + * value z should be an uint8_t. + */ +#define gf2_8_shift(z) \ + (((z)&128) ? (((z) << 1) ^ gf2_8_field_polynomial) : ((z) << 1)) + +/* aes internals */ + +static void aes_128_expand_encryption_key(const uint8_t *key, + srtp_aes_expanded_key_t *expanded_key) +{ + /* initialize round constant */ + uint8_t rc = 1; + + expanded_key->num_rounds = 10; + + v128_copy_octet_string(&expanded_key->round[0], key); + + /* loop over round keys */ + for (size_t i = 1; i < 11; i++) { + /* munge first word of round key */ + expanded_key->round[i].v8[0] = + aes_sbox[expanded_key->round[i - 1].v8[13]] ^ rc; + expanded_key->round[i].v8[1] = + aes_sbox[expanded_key->round[i - 1].v8[14]]; + expanded_key->round[i].v8[2] = + aes_sbox[expanded_key->round[i - 1].v8[15]]; + expanded_key->round[i].v8[3] = + aes_sbox[expanded_key->round[i - 1].v8[12]]; + + expanded_key->round[i].v32[0] ^= expanded_key->round[i - 1].v32[0]; + + /* set remaining 32 bit words to the exor of the one previous with + * the one four words previous */ + + expanded_key->round[i].v32[1] = + expanded_key->round[i].v32[0] ^ expanded_key->round[i - 1].v32[1]; + + expanded_key->round[i].v32[2] = + expanded_key->round[i].v32[1] ^ expanded_key->round[i - 1].v32[2]; + + expanded_key->round[i].v32[3] = + expanded_key->round[i].v32[2] ^ expanded_key->round[i - 1].v32[3]; + + /* modify round constant */ + rc = gf2_8_shift(rc); + } +} + +static void aes_256_expand_encryption_key(const uint8_t *key, + srtp_aes_expanded_key_t *expanded_key) +{ + /* initialize round constant */ + uint8_t rc = 1; + + expanded_key->num_rounds = 14; + + v128_copy_octet_string(&expanded_key->round[0], key); + v128_copy_octet_string(&expanded_key->round[1], key + 16); + + /* loop over rest of round keys */ + for (size_t i = 2; i < 15; i++) { + /* munge first word of round key */ + if ((i & 1) == 0) { + expanded_key->round[i].v8[0] = + aes_sbox[expanded_key->round[i - 1].v8[13]] ^ rc; + expanded_key->round[i].v8[1] = + aes_sbox[expanded_key->round[i - 1].v8[14]]; + expanded_key->round[i].v8[2] = + aes_sbox[expanded_key->round[i - 1].v8[15]]; + expanded_key->round[i].v8[3] = + aes_sbox[expanded_key->round[i - 1].v8[12]]; + + /* modify round constant */ + rc = gf2_8_shift(rc); + } else { + expanded_key->round[i].v8[0] = + aes_sbox[expanded_key->round[i - 1].v8[12]]; + expanded_key->round[i].v8[1] = + aes_sbox[expanded_key->round[i - 1].v8[13]]; + expanded_key->round[i].v8[2] = + aes_sbox[expanded_key->round[i - 1].v8[14]]; + expanded_key->round[i].v8[3] = + aes_sbox[expanded_key->round[i - 1].v8[15]]; + } + + expanded_key->round[i].v32[0] ^= expanded_key->round[i - 2].v32[0]; + + /* set remaining 32 bit words to the exor of the one previous with + * the one eight words previous */ + + expanded_key->round[i].v32[1] = + expanded_key->round[i].v32[0] ^ expanded_key->round[i - 2].v32[1]; + + expanded_key->round[i].v32[2] = + expanded_key->round[i].v32[1] ^ expanded_key->round[i - 2].v32[2]; + + expanded_key->round[i].v32[3] = + expanded_key->round[i].v32[2] ^ expanded_key->round[i - 2].v32[3]; + } +} + +srtp_err_status_t srtp_aes_expand_encryption_key( + const uint8_t *key, + size_t key_len, + srtp_aes_expanded_key_t *expanded_key) +{ + if (key_len == 16) { + aes_128_expand_encryption_key(key, expanded_key); + return srtp_err_status_ok; + } else if (key_len == 24) { + /* AES-192 not yet supported */ + return srtp_err_status_bad_param; + } else if (key_len == 32) { + aes_256_expand_encryption_key(key, expanded_key); + return srtp_err_status_ok; + } else { + return srtp_err_status_bad_param; + } +} + +srtp_err_status_t srtp_aes_expand_decryption_key( + const uint8_t *key, + size_t key_len, + srtp_aes_expanded_key_t *expanded_key) +{ + srtp_err_status_t status; + size_t num_rounds = expanded_key->num_rounds; + + status = srtp_aes_expand_encryption_key(key, key_len, expanded_key); + if (status) { + return status; + } + + /* invert the order of the round keys */ + for (size_t i = 0; i < num_rounds / 2; i++) { + v128_t tmp; + v128_copy(&tmp, &expanded_key->round[num_rounds - i]); + v128_copy(&expanded_key->round[num_rounds - i], + &expanded_key->round[i]); + v128_copy(&expanded_key->round[i], &tmp); + } + + /* + * apply the inverse mixColumn transform to the round keys (except + * for the first and the last) + * + * mixColumn is implemented by using the tables U0, U1, U2, U3, + * followed by the T4 table (which cancels out the use of the sbox + * in the U-tables) + */ + for (size_t i = 1; i < num_rounds; i++) { +#ifdef CPU_RISC + uint32_t tmp; + +#ifdef WORDS_BIGENDIAN + /* clang-format off */ + tmp = expanded_key->round[i].v32[0]; + expanded_key->round[i].v32[0] = + U0[T4[(tmp >> 24) ] & 0xff] ^ + U1[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U2[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U3[T4[(tmp) & 0xff] & 0xff]; + + tmp = expanded_key->round[i].v32[1]; + expanded_key->round[i].v32[1] = + U0[T4[(tmp >> 24) ] & 0xff] ^ + U1[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U2[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U3[T4[(tmp) & 0xff] & 0xff]; + + tmp = expanded_key->round[i].v32[2]; + expanded_key->round[i].v32[2] = + U0[T4[(tmp >> 24) ] & 0xff] ^ + U1[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U2[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U3[T4[(tmp) & 0xff] & 0xff]; + + tmp = expanded_key->round[i].v32[3]; + expanded_key->round[i].v32[3] = + U0[T4[(tmp >> 24) ] & 0xff] ^ + U1[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U2[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U3[T4[(tmp) & 0xff] & 0xff]; +#else + tmp = expanded_key->round[i].v32[0]; + expanded_key->round[i].v32[0] = + U3[T4[(tmp >> 24) ] & 0xff] ^ + U2[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U1[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U0[T4[(tmp) & 0xff] & 0xff]; + + tmp = expanded_key->round[i].v32[1]; + expanded_key->round[i].v32[1] = + U3[T4[(tmp >> 24) ] & 0xff] ^ + U2[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U1[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U0[T4[(tmp) & 0xff] & 0xff]; + + tmp = expanded_key->round[i].v32[2]; + expanded_key->round[i].v32[2] = + U3[T4[(tmp >> 24) ] & 0xff] ^ + U2[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U1[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U0[T4[(tmp) & 0xff] & 0xff]; + + tmp = expanded_key->round[i].v32[3]; + expanded_key->round[i].v32[3] = + U3[T4[(tmp >> 24) ] & 0xff] ^ + U2[T4[(tmp >> 16) & 0xff] & 0xff] ^ + U1[T4[(tmp >> 8) & 0xff] & 0xff] ^ + U0[T4[(tmp) & 0xff] & 0xff]; +/* clang-format on */ +#endif /* WORDS_BIGENDIAN */ + +#else /* assume CPU_CISC */ + + uint32_t c0, c1, c2, c3; + + c0 = U0[aes_sbox[expanded_key->round[i].v8[0]]] ^ + U1[aes_sbox[expanded_key->round[i].v8[1]]] ^ + U2[aes_sbox[expanded_key->round[i].v8[2]]] ^ + U3[aes_sbox[expanded_key->round[i].v8[3]]]; + + c1 = U0[aes_sbox[expanded_key->round[i].v8[4]]] ^ + U1[aes_sbox[expanded_key->round[i].v8[5]]] ^ + U2[aes_sbox[expanded_key->round[i].v8[6]]] ^ + U3[aes_sbox[expanded_key->round[i].v8[7]]]; + + c2 = U0[aes_sbox[expanded_key->round[i].v8[8]]] ^ + U1[aes_sbox[expanded_key->round[i].v8[9]]] ^ + U2[aes_sbox[expanded_key->round[i].v8[10]]] ^ + U3[aes_sbox[expanded_key->round[i].v8[11]]]; + + c3 = U0[aes_sbox[expanded_key->round[i].v8[12]]] ^ + U1[aes_sbox[expanded_key->round[i].v8[13]]] ^ + U2[aes_sbox[expanded_key->round[i].v8[14]]] ^ + U3[aes_sbox[expanded_key->round[i].v8[15]]]; + + expanded_key->round[i].v32[0] = c0; + expanded_key->round[i].v32[1] = c1; + expanded_key->round[i].v32[2] = c2; + expanded_key->round[i].v32[3] = c3; + +#endif + } + + return srtp_err_status_ok; +} + +#ifdef CPU_CISC + +static inline void aes_round(v128_t *state, const v128_t *round_key) +{ + uint32_t column0, column1, column2, column3; + + /* compute the columns of the output square in terms of the octets + of state, using the tables T0, T1, T2, T3 */ + + column0 = T0[state->v8[0]] ^ T1[state->v8[5]] ^ T2[state->v8[10]] ^ + T3[state->v8[15]]; + + column1 = T0[state->v8[4]] ^ T1[state->v8[9]] ^ T2[state->v8[14]] ^ + T3[state->v8[3]]; + + column2 = T0[state->v8[8]] ^ T1[state->v8[13]] ^ T2[state->v8[2]] ^ + T3[state->v8[7]]; + + column3 = T0[state->v8[12]] ^ T1[state->v8[1]] ^ T2[state->v8[6]] ^ + T3[state->v8[11]]; + + state->v32[0] = column0 ^ round_key->v32[0]; + state->v32[1] = column1 ^ round_key->v32[1]; + state->v32[2] = column2 ^ round_key->v32[2]; + state->v32[3] = column3 ^ round_key->v32[3]; +} + +static inline void aes_inv_round(v128_t *state, const v128_t *round_key) +{ + uint32_t column0, column1, column2, column3; + + /* compute the columns of the output square in terms of the octets + of state, using the tables U0, U1, U2, U3 */ + + column0 = U0[state->v8[0]] ^ U1[state->v8[13]] ^ U2[state->v8[10]] ^ + U3[state->v8[7]]; + + column1 = U0[state->v8[4]] ^ U1[state->v8[1]] ^ U2[state->v8[14]] ^ + U3[state->v8[11]]; + + column2 = U0[state->v8[8]] ^ U1[state->v8[5]] ^ U2[state->v8[2]] ^ + U3[state->v8[15]]; + + column3 = U0[state->v8[12]] ^ U1[state->v8[9]] ^ U2[state->v8[6]] ^ + U3[state->v8[3]]; + + state->v32[0] = column0 ^ round_key->v32[0]; + state->v32[1] = column1 ^ round_key->v32[1]; + state->v32[2] = column2 ^ round_key->v32[2]; + state->v32[3] = column3 ^ round_key->v32[3]; +} + +static inline void aes_final_round(v128_t *state, const v128_t *round_key) +{ + uint8_t tmp; + + /* byte substitutions and row shifts */ + /* first row - no shift */ + state->v8[0] = aes_sbox[state->v8[0]]; + state->v8[4] = aes_sbox[state->v8[4]]; + state->v8[8] = aes_sbox[state->v8[8]]; + state->v8[12] = aes_sbox[state->v8[12]]; + + /* second row - shift one left */ + tmp = aes_sbox[state->v8[1]]; + state->v8[1] = aes_sbox[state->v8[5]]; + state->v8[5] = aes_sbox[state->v8[9]]; + state->v8[9] = aes_sbox[state->v8[13]]; + state->v8[13] = tmp; + + /* third row - shift two left */ + tmp = aes_sbox[state->v8[10]]; + state->v8[10] = aes_sbox[state->v8[2]]; + state->v8[2] = tmp; + tmp = aes_sbox[state->v8[14]]; + state->v8[14] = aes_sbox[state->v8[6]]; + state->v8[6] = tmp; + + /* fourth row - shift three left */ + tmp = aes_sbox[state->v8[15]]; + state->v8[15] = aes_sbox[state->v8[11]]; + state->v8[11] = aes_sbox[state->v8[7]]; + state->v8[7] = aes_sbox[state->v8[3]]; + state->v8[3] = tmp; + + v128_xor_eq(state, round_key); +} + +static inline void aes_inv_final_round(v128_t *state, const v128_t *round_key) +{ + uint8_t tmp; + + /* byte substitutions and row shifts */ + /* first row - no shift */ + state->v8[0] = aes_inv_sbox[state->v8[0]]; + state->v8[4] = aes_inv_sbox[state->v8[4]]; + state->v8[8] = aes_inv_sbox[state->v8[8]]; + state->v8[12] = aes_inv_sbox[state->v8[12]]; + + /* second row - shift one right */ + tmp = aes_inv_sbox[state->v8[13]]; + state->v8[13] = aes_inv_sbox[state->v8[9]]; + state->v8[9] = aes_inv_sbox[state->v8[5]]; + state->v8[5] = aes_inv_sbox[state->v8[1]]; + state->v8[1] = tmp; + + /* third row - shift two right */ + tmp = aes_inv_sbox[state->v8[2]]; + state->v8[2] = aes_inv_sbox[state->v8[10]]; + state->v8[10] = tmp; + tmp = aes_inv_sbox[state->v8[6]]; + state->v8[6] = aes_inv_sbox[state->v8[14]]; + state->v8[14] = tmp; + + /* fourth row - shift three right */ + tmp = aes_inv_sbox[state->v8[3]]; + state->v8[3] = aes_inv_sbox[state->v8[7]]; + state->v8[7] = aes_inv_sbox[state->v8[11]]; + state->v8[11] = aes_inv_sbox[state->v8[15]]; + state->v8[15] = tmp; + + v128_xor_eq(state, round_key); +} + +#elif defined(CPU_RISC) + +static inline void aes_round(v128_t *state, const v128_t *round_key) +{ + uint32_t column0, column1, column2, column3; + +/* compute the columns of the output square in terms of the octets + of state, using the tables T0, T1, T2, T3 */ +#ifdef WORDS_BIGENDIAN + column0 = T0[state->v32[0] >> 24] ^ T1[(state->v32[1] >> 16) & 0xff] ^ + T2[(state->v32[2] >> 8) & 0xff] ^ T3[state->v32[3] & 0xff]; + + column1 = T0[state->v32[1] >> 24] ^ T1[(state->v32[2] >> 16) & 0xff] ^ + T2[(state->v32[3] >> 8) & 0xff] ^ T3[state->v32[0] & 0xff]; + + column2 = T0[state->v32[2] >> 24] ^ T1[(state->v32[3] >> 16) & 0xff] ^ + T2[(state->v32[0] >> 8) & 0xff] ^ T3[state->v32[1] & 0xff]; + + column3 = T0[state->v32[3] >> 24] ^ T1[(state->v32[0] >> 16) & 0xff] ^ + T2[(state->v32[1] >> 8) & 0xff] ^ T3[state->v32[2] & 0xff]; +#else + column0 = T0[state->v32[0] & 0xff] ^ T1[(state->v32[1] >> 8) & 0xff] ^ + T2[(state->v32[2] >> 16) & 0xff] ^ T3[state->v32[3] >> 24]; + + column1 = T0[state->v32[1] & 0xff] ^ T1[(state->v32[2] >> 8) & 0xff] ^ + T2[(state->v32[3] >> 16) & 0xff] ^ T3[state->v32[0] >> 24]; + + column2 = T0[state->v32[2] & 0xff] ^ T1[(state->v32[3] >> 8) & 0xff] ^ + T2[(state->v32[0] >> 16) & 0xff] ^ T3[state->v32[1] >> 24]; + + column3 = T0[state->v32[3] & 0xff] ^ T1[(state->v32[0] >> 8) & 0xff] ^ + T2[(state->v32[1] >> 16) & 0xff] ^ T3[state->v32[2] >> 24]; +#endif /* WORDS_BIGENDIAN */ + + state->v32[0] = column0 ^ round_key->v32[0]; + state->v32[1] = column1 ^ round_key->v32[1]; + state->v32[2] = column2 ^ round_key->v32[2]; + state->v32[3] = column3 ^ round_key->v32[3]; +} + +static inline void aes_inv_round(v128_t *state, const v128_t *round_key) +{ + uint32_t column0, column1, column2, column3; + + /* compute the columns of the output square in terms of the octets + of state, using the tables U0, U1, U2, U3 */ + +#ifdef WORDS_BIGENDIAN + column0 = U0[state->v32[0] >> 24] ^ U1[(state->v32[3] >> 16) & 0xff] ^ + U2[(state->v32[2] >> 8) & 0xff] ^ U3[state->v32[1] & 0xff]; + + column1 = U0[state->v32[1] >> 24] ^ U1[(state->v32[0] >> 16) & 0xff] ^ + U2[(state->v32[3] >> 8) & 0xff] ^ U3[state->v32[2] & 0xff]; + + column2 = U0[state->v32[2] >> 24] ^ U1[(state->v32[1] >> 16) & 0xff] ^ + U2[(state->v32[0] >> 8) & 0xff] ^ U3[state->v32[3] & 0xff]; + + column3 = U0[state->v32[3] >> 24] ^ U1[(state->v32[2] >> 16) & 0xff] ^ + U2[(state->v32[1] >> 8) & 0xff] ^ U3[state->v32[0] & 0xff]; +#else + column0 = U0[state->v32[0] & 0xff] ^ U1[(state->v32[3] >> 8) & 0xff] ^ + U2[(state->v32[2] >> 16) & 0xff] ^ + U3[(state->v32[1] >> 24) & 0xff]; + + column1 = U0[state->v32[1] & 0xff] ^ U1[(state->v32[0] >> 8) & 0xff] ^ + U2[(state->v32[3] >> 16) & 0xff] ^ + U3[(state->v32[2] >> 24) & 0xff]; + + column2 = U0[state->v32[2] & 0xff] ^ U1[(state->v32[1] >> 8) & 0xff] ^ + U2[(state->v32[0] >> 16) & 0xff] ^ + U3[(state->v32[3] >> 24) & 0xff]; + + column3 = U0[state->v32[3] & 0xff] ^ U1[(state->v32[2] >> 8) & 0xff] ^ + U2[(state->v32[1] >> 16) & 0xff] ^ + U3[(state->v32[0] >> 24) & 0xff]; +#endif /* WORDS_BIGENDIAN */ + + state->v32[0] = column0 ^ round_key->v32[0]; + state->v32[1] = column1 ^ round_key->v32[1]; + state->v32[2] = column2 ^ round_key->v32[2]; + state->v32[3] = column3 ^ round_key->v32[3]; +} + +static inline void aes_final_round(v128_t *state, const v128_t *round_key) +{ + uint32_t tmp0, tmp1, tmp2, tmp3; + +#ifdef WORDS_BIGENDIAN + /* clang-format off */ + tmp0 = (T4[(state->v32[0] >> 24)] & 0xff000000) ^ + (T4[(state->v32[1] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[2] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[3] ) & 0xff] & 0x000000ff) ^ + round_key->v32[0]; + + tmp1 = (T4[(state->v32[1] >> 24)] & 0xff000000) ^ + (T4[(state->v32[2] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[3] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[0] ) & 0xff] & 0x000000ff) ^ + round_key->v32[1]; + + tmp2 = (T4[(state->v32[2] >> 24)] & 0xff000000) ^ + (T4[(state->v32[3] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[0] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[1] ) & 0xff] & 0x000000ff) ^ + round_key->v32[2]; + + tmp3 = (T4[(state->v32[3] >> 24)] & 0xff000000) ^ + (T4[(state->v32[0] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[1] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[2] ) & 0xff] & 0x000000ff) ^ + round_key->v32[3]; +#else + tmp0 = (T4[(state->v32[3] >> 24)] & 0xff000000) ^ + (T4[(state->v32[2] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[1] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[0] ) & 0xff] & 0x000000ff) ^ + round_key->v32[0]; + + tmp1 = (T4[(state->v32[0] >> 24)] & 0xff000000) ^ + (T4[(state->v32[3] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[2] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[1] ) & 0xff] & 0x000000ff) ^ + round_key->v32[1]; + + tmp2 = (T4[(state->v32[1] >> 24)] & 0xff000000) ^ + (T4[(state->v32[0] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[3] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[2] ) & 0xff] & 0x000000ff) ^ + round_key->v32[2]; + + tmp3 = (T4[(state->v32[2] >> 24)] & 0xff000000) ^ + (T4[(state->v32[1] >> 16) & 0xff] & 0x00ff0000) ^ + (T4[(state->v32[0] >> 8) & 0xff] & 0x0000ff00) ^ + (T4[(state->v32[3] ) & 0xff] & 0x000000ff) ^ + round_key->v32[3]; +/* clang-format on */ +#endif /* WORDS_BIGENDIAN */ + + state->v32[0] = tmp0; + state->v32[1] = tmp1; + state->v32[2] = tmp2; + state->v32[3] = tmp3; +} + +static inline void aes_inv_final_round(v128_t *state, const v128_t *round_key) +{ + uint32_t tmp0, tmp1, tmp2, tmp3; + +#ifdef WORDS_BIGENDIAN + /* clang-format off */ + tmp0 = (U4[(state->v32[0] >> 24)] & 0xff000000) ^ + (U4[(state->v32[3] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[2] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[1] ) & 0xff] & 0x000000ff) ^ + round_key->v32[0]; + + tmp1 = (U4[(state->v32[1] >> 24)] & 0xff000000) ^ + (U4[(state->v32[0] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[3] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[2] ) & 0xff] & 0x000000ff) ^ + round_key->v32[1]; + + tmp2 = (U4[(state->v32[2] >> 24)] & 0xff000000) ^ + (U4[(state->v32[1] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[0] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[3] ) & 0xff] & 0x000000ff) ^ + round_key->v32[2]; + + tmp3 = (U4[(state->v32[3] >> 24)] & 0xff000000) ^ + (U4[(state->v32[2] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[1] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[0] ) & 0xff] & 0x000000ff) ^ + round_key->v32[3]; +#else + tmp0 = (U4[(state->v32[1] >> 24)] & 0xff000000) ^ + (U4[(state->v32[2] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[3] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[0] ) & 0xff] & 0x000000ff) ^ + round_key->v32[0]; + + tmp1 = (U4[(state->v32[2] >> 24)] & 0xff000000) ^ + (U4[(state->v32[3] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[0] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[1] ) & 0xff] & 0x000000ff) ^ + round_key->v32[1]; + + tmp2 = (U4[(state->v32[3] >> 24)] & 0xff000000) ^ + (U4[(state->v32[0] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[1] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[2] ) & 0xff] & 0x000000ff) ^ + round_key->v32[2]; + + tmp3 = (U4[(state->v32[0] >> 24)] & 0xff000000) ^ + (U4[(state->v32[1] >> 16) & 0xff] & 0x00ff0000) ^ + (U4[(state->v32[2] >> 8) & 0xff] & 0x0000ff00) ^ + (U4[(state->v32[3] ) & 0xff] & 0x000000ff) ^ + round_key->v32[3]; +/* clang-format on */ +#endif /* WORDS_BIGENDIAN */ + + state->v32[0] = tmp0; + state->v32[1] = tmp1; + state->v32[2] = tmp2; + state->v32[3] = tmp3; +} + +#elif CPU_16 /* assume 16-bit word size on processor */ + +static inline void aes_round(v128_t *state, const v128_t *round_key) +{ + uint32_t column0, column1, column2, column3; + /* compute the columns of the output square in terms of the octets + of state, using the tables T0, T1, T2, T3 */ + + column0 = T0[state->v8[0]] ^ T1[state->v8[5]] ^ T2[state->v8[10]] ^ + T3[state->v8[15]]; + + column1 = T0[state->v8[4]] ^ T1[state->v8[9]] ^ T2[state->v8[14]] ^ + T3[state->v8[3]]; + + column2 = T0[state->v8[8]] ^ T1[state->v8[13]] ^ T2[state->v8[2]] ^ + T3[state->v8[7]]; + + column3 = T0[state->v8[12]] ^ T1[state->v8[1]] ^ T2[state->v8[6]] ^ + T3[state->v8[11]]; + + state->v32[0] = column0 ^ round_key->v32[0]; + state->v32[1] = column1 ^ round_key->v32[1]; + state->v32[2] = column2 ^ round_key->v32[2]; + state->v32[3] = column3 ^ round_key->v32[3]; +} + +static inline void aes_inv_round(v128_t *state, const v128_t *round_key) +{ + uint32_t column0, column1, column2, column3; + + /* compute the columns of the output square in terms of the octets + of state, using the tables U0, U1, U2, U3 */ + + column0 = U0[state->v8[0]] ^ U1[state->v8[5]] ^ U2[state->v8[10]] ^ + U3[state->v8[15]]; + + column1 = U0[state->v8[4]] ^ U1[state->v8[9]] ^ U2[state->v8[14]] ^ + U3[state->v8[3]]; + + column2 = U0[state->v8[8]] ^ U1[state->v8[13]] ^ U2[state->v8[2]] ^ + U3[state->v8[7]]; + + column3 = U0[state->v8[12]] ^ U1[state->v8[1]] ^ U2[state->v8[6]] ^ + U3[state->v8[11]]; + + state->v32[0] = column0 ^ round_key->v32[0]; + state->v32[1] = column1 ^ round_key->v32[1]; + state->v32[2] = column2 ^ round_key->v32[2]; + state->v32[3] = column3 ^ round_key->v32[3]; +} + +static inline void aes_final_round(v128_t *state, const v128_t *round_key) +{ + uint8_t tmp; + + /* byte substitutions and row shifts */ + /* first row - no shift */ + state->v8[0] = aes_sbox[state->v8[0]]; + state->v8[4] = aes_sbox[state->v8[4]]; + state->v8[8] = aes_sbox[state->v8[8]]; + state->v8[12] = aes_sbox[state->v8[12]]; + + /* second row - shift one left */ + tmp = aes_sbox[state->v8[1]]; + state->v8[1] = aes_sbox[state->v8[5]]; + state->v8[5] = aes_sbox[state->v8[9]]; + state->v8[9] = aes_sbox[state->v8[13]]; + state->v8[13] = tmp; + + /* third row - shift two left */ + tmp = aes_sbox[state->v8[10]]; + state->v8[10] = aes_sbox[state->v8[2]]; + state->v8[2] = tmp; + tmp = aes_sbox[state->v8[14]]; + state->v8[14] = aes_sbox[state->v8[6]]; + state->v8[6] = tmp; + + /* fourth row - shift three left */ + tmp = aes_sbox[state->v8[15]]; + state->v8[15] = aes_sbox[state->v8[11]]; + state->v8[11] = aes_sbox[state->v8[7]]; + state->v8[7] = aes_sbox[state->v8[3]]; + state->v8[3] = tmp; + + v128_xor_eq(state, round_key); +} + +static inline void aes_inv_final_round(v128_t *state, const v128_t *round_key) +{ + uint8_t tmp; + + /* byte substitutions and row shifts */ + /* first row - no shift */ + state->v8[0] = aes_inv_sbox[state->v8[0]]; + state->v8[4] = aes_inv_sbox[state->v8[4]]; + state->v8[8] = aes_inv_sbox[state->v8[8]]; + state->v8[12] = aes_inv_sbox[state->v8[12]]; + + /* second row - shift one left */ + tmp = aes_inv_sbox[state->v8[1]]; + state->v8[1] = aes_inv_sbox[state->v8[5]]; + state->v8[5] = aes_inv_sbox[state->v8[9]]; + state->v8[9] = aes_inv_sbox[state->v8[13]]; + state->v8[13] = tmp; + + /* third row - shift two left */ + tmp = aes_inv_sbox[state->v8[10]]; + state->v8[10] = aes_inv_sbox[state->v8[2]]; + state->v8[2] = tmp; + tmp = aes_inv_sbox[state->v8[14]]; + state->v8[14] = aes_inv_sbox[state->v8[6]]; + state->v8[6] = tmp; + + /* fourth row - shift three left */ + tmp = aes_inv_sbox[state->v8[15]]; + state->v8[15] = aes_inv_sbox[state->v8[11]]; + state->v8[11] = aes_inv_sbox[state->v8[7]]; + state->v8[7] = aes_inv_sbox[state->v8[3]]; + state->v8[3] = tmp; + + v128_xor_eq(state, round_key); +} + +#endif /* CPU type */ + +void srtp_aes_encrypt(v128_t *plaintext, const srtp_aes_expanded_key_t *exp_key) +{ + /* add in the subkey */ + v128_xor_eq(plaintext, &exp_key->round[0]); + + /* now do the rounds */ + aes_round(plaintext, &exp_key->round[1]); + aes_round(plaintext, &exp_key->round[2]); + aes_round(plaintext, &exp_key->round[3]); + aes_round(plaintext, &exp_key->round[4]); + aes_round(plaintext, &exp_key->round[5]); + aes_round(plaintext, &exp_key->round[6]); + aes_round(plaintext, &exp_key->round[7]); + aes_round(plaintext, &exp_key->round[8]); + aes_round(plaintext, &exp_key->round[9]); + if (exp_key->num_rounds == 10) { + aes_final_round(plaintext, &exp_key->round[10]); + } else if (exp_key->num_rounds == 12) { + aes_round(plaintext, &exp_key->round[10]); + aes_round(plaintext, &exp_key->round[11]); + aes_final_round(plaintext, &exp_key->round[12]); + } else if (exp_key->num_rounds == 14) { + aes_round(plaintext, &exp_key->round[10]); + aes_round(plaintext, &exp_key->round[11]); + aes_round(plaintext, &exp_key->round[12]); + aes_round(plaintext, &exp_key->round[13]); + aes_final_round(plaintext, &exp_key->round[14]); + } +} + +void srtp_aes_decrypt(v128_t *plaintext, const srtp_aes_expanded_key_t *exp_key) +{ + /* add in the subkey */ + v128_xor_eq(plaintext, &exp_key->round[0]); + + /* now do the rounds */ + aes_inv_round(plaintext, &exp_key->round[1]); + aes_inv_round(plaintext, &exp_key->round[2]); + aes_inv_round(plaintext, &exp_key->round[3]); + aes_inv_round(plaintext, &exp_key->round[4]); + aes_inv_round(plaintext, &exp_key->round[5]); + aes_inv_round(plaintext, &exp_key->round[6]); + aes_inv_round(plaintext, &exp_key->round[7]); + aes_inv_round(plaintext, &exp_key->round[8]); + aes_inv_round(plaintext, &exp_key->round[9]); + if (exp_key->num_rounds == 10) { + aes_inv_final_round(plaintext, &exp_key->round[10]); + } else if (exp_key->num_rounds == 12) { + aes_inv_round(plaintext, &exp_key->round[10]); + aes_inv_round(plaintext, &exp_key->round[11]); + aes_inv_final_round(plaintext, &exp_key->round[12]); + } else if (exp_key->num_rounds == 14) { + aes_inv_round(plaintext, &exp_key->round[10]); + aes_inv_round(plaintext, &exp_key->round[11]); + aes_inv_round(plaintext, &exp_key->round[12]); + aes_inv_round(plaintext, &exp_key->round[13]); + aes_inv_final_round(plaintext, &exp_key->round[14]); + } +} diff --git a/src/libs/libsrtp/crypto/cipher/aes_gcm_mbedtls.c b/src/libs/libsrtp/crypto/cipher/aes_gcm_mbedtls.c new file mode 100644 index 00000000..285c3680 --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_gcm_mbedtls.c @@ -0,0 +1,442 @@ +/* + * aes_gcm_mbedtls.c + * + * AES Galois Counter Mode + * + * YongCheng Yang + * + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include "aes_gcm.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "crypto_types.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_gcm = { + false, /* debugging is off by default */ + "aes gcm mbedtls" /* printable module name */ +}; + +/** + * SRTP IV Formation for AES-GCM + * https://tools.ietf.org/html/rfc7714#section-8.1 + * 0 0 0 0 0 0 0 0 0 0 1 1 + * 0 1 2 3 4 5 6 7 8 9 0 1 + * +--+--+--+--+--+--+--+--+--+--+--+--+ + * |00|00| SSRC | ROC | SEQ |---+ + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Encryption Salt |->(+) + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Initialization Vector |<--+ + * +--+--+--+--+--+--+--+--+--+--+--+--+ + * + * SRTCP IV Formation for AES-GCM + * https://tools.ietf.org/html/rfc7714#section-9.1 + * + */ + +/* + * For now we only support 8 and 16 octet tags. The spec allows for + * optional 12 byte tag, which may be supported in the future. + */ +#define GCM_IV_LEN 12 +#define GCM_AUTH_TAG_LEN 16 +#define GCM_AUTH_TAG_LEN_8 8 + +#define FUNC_ENTRY() debug_print(srtp_mod_aes_gcm, "%s entry", __func__); + +/* + * static function declarations. + */ +static srtp_err_status_t srtp_aes_gcm_mbedtls_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen); + +static srtp_err_status_t srtp_aes_gcm_mbedtls_dealloc(srtp_cipher_t *c); + +static srtp_err_status_t srtp_aes_gcm_mbedtls_context_init(void *cv, + const uint8_t *key); + +static srtp_err_status_t srtp_aes_gcm_mbedtls_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t direction); + +static srtp_err_status_t srtp_aes_gcm_mbedtls_set_aad(void *cv, + const uint8_t *aad, + size_t aad_len); + +static srtp_err_status_t srtp_aes_gcm_mbedtls_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); + +static srtp_err_status_t srtp_aes_gcm_mbedtls_decrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); + +/* + * Name of this crypto engine + */ +static const char srtp_aes_gcm_128_mbedtls_description[] = + "AES-128 GCM using mbedtls"; +static const char srtp_aes_gcm_256_mbedtls_description[] = + "AES-256 GCM using mbedtls"; + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_128 = { + srtp_aes_gcm_mbedtls_alloc, + srtp_aes_gcm_mbedtls_dealloc, + srtp_aes_gcm_mbedtls_context_init, + srtp_aes_gcm_mbedtls_set_aad, + srtp_aes_gcm_mbedtls_encrypt, + srtp_aes_gcm_mbedtls_decrypt, + srtp_aes_gcm_mbedtls_set_iv, + srtp_aes_gcm_128_mbedtls_description, + &srtp_aes_gcm_128_test_case_0, + SRTP_AES_GCM_128 +}; +/* clang-format on */ + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_256 = { + srtp_aes_gcm_mbedtls_alloc, + srtp_aes_gcm_mbedtls_dealloc, + srtp_aes_gcm_mbedtls_context_init, + srtp_aes_gcm_mbedtls_set_aad, + srtp_aes_gcm_mbedtls_encrypt, + srtp_aes_gcm_mbedtls_decrypt, + srtp_aes_gcm_mbedtls_set_iv, + srtp_aes_gcm_256_mbedtls_description, + &srtp_aes_gcm_256_test_case_0, + SRTP_AES_GCM_256 +}; +/* clang-format on */ + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 28 or 44 for + * AES-128-GCM or AES-256-GCM respectively. Note that the + * key length includes the 14 byte salt value that is used when + * initializing the KDF. + */ +static srtp_err_status_t srtp_aes_gcm_mbedtls_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *gcm; + + debug_print(srtp_mod_aes_gcm, "allocating cipher with key length %zu", + key_len); + debug_print(srtp_mod_aes_gcm, "allocating cipher with tag length %zu", + tlen); + + /* + * Verify the key_len is valid for one of: AES-128/256 + */ + if (key_len != SRTP_AES_GCM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_GCM_256_KEY_LEN_WSALT) { + return (srtp_err_status_bad_param); + } + + if (tlen != GCM_AUTH_TAG_LEN && tlen != GCM_AUTH_TAG_LEN_8) { + return (srtp_err_status_bad_param); + } + + /* allocate memory a cipher of type aes_gcm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return (srtp_err_status_alloc_fail); + } + + gcm = (srtp_aes_gcm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_gcm_ctx_t)); + if (gcm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return (srtp_err_status_alloc_fail); + } + + gcm->ctx = + (mbedtls_gcm_context *)srtp_crypto_alloc(sizeof(mbedtls_gcm_context)); + if (gcm->ctx == NULL) { + srtp_crypto_free(gcm); + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + mbedtls_gcm_init(gcm->ctx); + + /* set pointers */ + (*c)->state = gcm; + + /* setup cipher attributes */ + switch (key_len) { + case SRTP_AES_GCM_128_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_128; + (*c)->algorithm = SRTP_AES_GCM_128; + gcm->key_size = SRTP_AES_128_KEY_LEN; + gcm->tag_len = tlen; + break; + case SRTP_AES_GCM_256_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_256; + (*c)->algorithm = SRTP_AES_GCM_256; + gcm->key_size = SRTP_AES_256_KEY_LEN; + gcm->tag_len = tlen; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return (srtp_err_status_ok); +} + +/* + * This function deallocates a GCM session + */ +static srtp_err_status_t srtp_aes_gcm_mbedtls_dealloc(srtp_cipher_t *c) +{ + srtp_aes_gcm_ctx_t *ctx; + FUNC_ENTRY(); + ctx = (srtp_aes_gcm_ctx_t *)c->state; + if (ctx) { + mbedtls_gcm_free(ctx->ctx); + srtp_crypto_free(ctx->ctx); + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_gcm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return (srtp_err_status_ok); +} + +static srtp_err_status_t srtp_aes_gcm_mbedtls_context_init(void *cv, + const uint8_t *key) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + uint32_t key_len_in_bits; + int errCode = 0; + c->dir = srtp_direction_any; + c->aad_size = 0; + + debug_print(srtp_mod_aes_gcm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + key_len_in_bits = (c->key_size << 3); + switch (c->key_size) { + case SRTP_AES_256_KEY_LEN: + case SRTP_AES_128_KEY_LEN: + break; + default: + return (srtp_err_status_bad_param); + break; + } + + errCode = + mbedtls_gcm_setkey(c->ctx, MBEDTLS_CIPHER_ID_AES, key, key_len_in_bits); + if (errCode != 0) { + debug_print(srtp_mod_aes_gcm, "mbedtls error code: %d", errCode); + return srtp_err_status_init_fail; + } + + return (srtp_err_status_ok); +} + +static srtp_err_status_t srtp_aes_gcm_mbedtls_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + if (direction != srtp_direction_encrypt && + direction != srtp_direction_decrypt) { + return (srtp_err_status_bad_param); + } + c->dir = direction; + + debug_print(srtp_mod_aes_gcm, "setting iv: %s", + srtp_octet_string_hex_string(iv, GCM_IV_LEN)); + c->iv_len = GCM_IV_LEN; + memcpy(c->iv, iv, c->iv_len); + return (srtp_err_status_ok); +} + +/* + * This function processes the AAD + * + * Parameters: + * c Crypto context + * aad Additional data to process for AEAD cipher suites + * aad_len length of aad buffer + */ +static srtp_err_status_t srtp_aes_gcm_mbedtls_set_aad(void *cv, + const uint8_t *aad, + size_t aad_len) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + debug_print(srtp_mod_aes_gcm, "setting AAD: %s", + srtp_octet_string_hex_string(aad, aad_len)); + + if (aad_len + c->aad_size > MAX_AD_SIZE) { + return srtp_err_status_bad_param; + } + + memcpy(c->aad + c->aad_size, aad, aad_len); + c->aad_size += aad_len; + + return (srtp_err_status_ok); +} + +/* + * This function encrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_mbedtls_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int errCode = 0; + + if (c->dir != srtp_direction_encrypt) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len + c->tag_len) { + return srtp_err_status_buffer_small; + } + + errCode = mbedtls_gcm_crypt_and_tag(c->ctx, MBEDTLS_GCM_ENCRYPT, src_len, + c->iv, c->iv_len, c->aad, c->aad_size, + src, dst, c->tag_len, dst + src_len); + + c->aad_size = 0; + if (errCode != 0) { + debug_print(srtp_mod_aes_gcm, "mbedtls error code: %d", errCode); + return srtp_err_status_bad_param; + } + + *dst_len = src_len + c->tag_len; + + return srtp_err_status_ok; +} + +/* + * This function decrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_mbedtls_decrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int errCode = 0; + + if (c->dir != srtp_direction_decrypt) { + return srtp_err_status_bad_param; + } + + if (src_len < c->tag_len) { + return srtp_err_status_bad_param; + } + + if (*dst_len < (src_len - c->tag_len)) { + return srtp_err_status_buffer_small; + } + + debug_print(srtp_mod_aes_gcm, "AAD: %s", + srtp_octet_string_hex_string(c->aad, c->aad_size)); + + errCode = mbedtls_gcm_auth_decrypt( + c->ctx, (src_len - c->tag_len), c->iv, c->iv_len, c->aad, c->aad_size, + src + (src_len - c->tag_len), c->tag_len, src, dst); + c->aad_size = 0; + if (errCode != 0) { + return srtp_err_status_auth_fail; + } + + /* + * Reduce the buffer size by the tag length since the tag + * is not part of the original payload + */ + *dst_len = (src_len - c->tag_len); + + return srtp_err_status_ok; +} diff --git a/src/libs/libsrtp/crypto/cipher/aes_gcm_nss.c b/src/libs/libsrtp/crypto/cipher/aes_gcm_nss.c new file mode 100644 index 00000000..d70386d0 --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_gcm_nss.c @@ -0,0 +1,431 @@ +/* + * aes_gcm_nss.c + * + * AES Galois Counter Mode + * + * Richard L. Barnes + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "aes_gcm.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "crypto_types.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" +#include +#include + +srtp_debug_module_t srtp_mod_aes_gcm = { + false, /* debugging is off by default */ + "aes gcm nss" /* printable module name */ +}; + +/* + * For now we only support 8 and 16 octet tags. The spec allows for + * optional 12 byte tag, which may be supported in the future. + */ +#define GCM_IV_LEN 12 +#define GCM_AUTH_TAG_LEN 16 +#define GCM_AUTH_TAG_LEN_8 8 + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 28 or 44 for + * AES-128-GCM or AES-256-GCM respectively. Note that the + * key length includes the 14 byte salt value that is used when + * initializing the KDF. + */ +static srtp_err_status_t srtp_aes_gcm_nss_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_gcm_ctx_t *gcm; + NSSInitContext *nss; + + debug_print(srtp_mod_aes_gcm, "allocating cipher with key length %zu", + key_len); + debug_print(srtp_mod_aes_gcm, "allocating cipher with tag length %zu", + tlen); + + /* + * Verify the key_len is valid for one of: AES-128/256 + */ + if (key_len != SRTP_AES_GCM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_GCM_256_KEY_LEN_WSALT) { + return (srtp_err_status_bad_param); + } + + if (tlen != GCM_AUTH_TAG_LEN && tlen != GCM_AUTH_TAG_LEN_8) { + return (srtp_err_status_bad_param); + } + + /* Initialize NSS equiv of NSS_NoDB_Init(NULL) */ + nss = NSS_InitContext("", "", "", "", NULL, + NSS_INIT_READONLY | NSS_INIT_NOCERTDB | + NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN | + NSS_INIT_OPTIMIZESPACE); + if (!nss) { + return (srtp_err_status_cipher_fail); + } + + /* allocate memory a cipher of type aes_gcm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + NSS_ShutdownContext(nss); + return (srtp_err_status_alloc_fail); + } + + gcm = (srtp_aes_gcm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_gcm_ctx_t)); + if (gcm == NULL) { + NSS_ShutdownContext(nss); + srtp_crypto_free(*c); + *c = NULL; + return (srtp_err_status_alloc_fail); + } + + gcm->nss = nss; + + /* set pointers */ + (*c)->state = gcm; + + /* setup cipher attributes */ + switch (key_len) { + case SRTP_AES_GCM_128_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_128; + (*c)->algorithm = SRTP_AES_GCM_128; + gcm->key_size = SRTP_AES_128_KEY_LEN; + gcm->tag_size = tlen; + gcm->params.ulTagBits = 8 * tlen; + break; + case SRTP_AES_GCM_256_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_256; + (*c)->algorithm = SRTP_AES_GCM_256; + gcm->key_size = SRTP_AES_256_KEY_LEN; + gcm->tag_size = tlen; + gcm->params.ulTagBits = 8 * tlen; + break; + default: + /* this should never hit, but to be sure... */ + return (srtp_err_status_bad_param); + } + + /* set key size and tag size*/ + (*c)->key_len = key_len; + + return (srtp_err_status_ok); +} + +/* + * This function deallocates a GCM session + */ +static srtp_err_status_t srtp_aes_gcm_nss_dealloc(srtp_cipher_t *c) +{ + srtp_aes_gcm_ctx_t *ctx; + + ctx = (srtp_aes_gcm_ctx_t *)c->state; + if (ctx) { + /* release NSS resources */ + if (ctx->key) { + PK11_FreeSymKey(ctx->key); + } + + if (ctx->nss) { + NSS_ShutdownContext(ctx->nss); + ctx->nss = NULL; + } + + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_gcm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return (srtp_err_status_ok); +} + +/* + * aes_gcm_nss_context_init(...) initializes the aes_gcm_context + * using the value in key[]. + * + * the key is the secret key + */ +static srtp_err_status_t srtp_aes_gcm_nss_context_init(void *cv, + const uint8_t *key) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + c->dir = srtp_direction_any; + + debug_print(srtp_mod_aes_gcm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + + if (c->key) { + PK11_FreeSymKey(c->key); + c->key = NULL; + } + + PK11SlotInfo *slot = PK11_GetBestSlot(CKM_AES_GCM, NULL); + if (!slot) { + return (srtp_err_status_cipher_fail); + } + + /* explicitly cast away const of key */ + SECItem key_item = { siBuffer, (unsigned char *)(uintptr_t)key, + c->key_size }; + c->key = PK11_ImportSymKey(slot, CKM_AES_GCM, PK11_OriginUnwrap, + CKA_ENCRYPT, &key_item, NULL); + PK11_FreeSlot(slot); + + if (!c->key) { + return (srtp_err_status_cipher_fail); + } + + return (srtp_err_status_ok); +} + +/* + * aes_gcm_nss_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ +static srtp_err_status_t srtp_aes_gcm_nss_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + if (direction != srtp_direction_encrypt && + direction != srtp_direction_decrypt) { + return (srtp_err_status_bad_param); + } + c->dir = direction; + + debug_print(srtp_mod_aes_gcm, "setting iv: %s", + srtp_octet_string_hex_string(iv, GCM_IV_LEN)); + + memcpy(c->iv, iv, GCM_IV_LEN); + + return (srtp_err_status_ok); +} + +/* + * This function processes the AAD + * + * Parameters: + * c Crypto context + * aad Additional data to process for AEAD cipher suites + * aad_len length of aad buffer + */ +static srtp_err_status_t srtp_aes_gcm_nss_set_aad(void *cv, + const uint8_t *aad, + size_t aad_len) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + debug_print(srtp_mod_aes_gcm, "setting AAD: %s", + srtp_octet_string_hex_string(aad, aad_len)); + + if (aad_len + c->aad_size > MAX_AD_SIZE) { + return srtp_err_status_bad_param; + } + + memcpy(c->aad + c->aad_size, aad, aad_len); + c->aad_size += aad_len; + + return (srtp_err_status_ok); +} + +static srtp_err_status_t srtp_aes_gcm_nss_do_crypto(void *cv, + bool encrypt, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + c->params.pIv = c->iv; + c->params.ulIvLen = GCM_IV_LEN; + c->params.pAAD = c->aad; + c->params.ulAADLen = c->aad_size; + + // Reset AAD + c->aad_size = 0; + + unsigned int out_len = 0; + int rv; + SECItem param = { siBuffer, (unsigned char *)&c->params, + sizeof(CK_GCM_PARAMS) }; + if (encrypt) { + if (c->dir != srtp_direction_encrypt) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len + c->tag_size) { + return srtp_err_status_buffer_small; + } + + rv = PK11_Encrypt(c->key, CKM_AES_GCM, ¶m, dst, &out_len, *dst_len, + src, src_len); + } else { + if (c->dir != srtp_direction_decrypt) { + return srtp_err_status_bad_param; + } + + if (src_len < c->tag_size) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len - c->tag_size) { + return srtp_err_status_buffer_small; + } + + rv = PK11_Decrypt(c->key, CKM_AES_GCM, ¶m, dst, &out_len, *dst_len, + src, src_len); + } + *dst_len = out_len; + srtp_err_status_t status = srtp_err_status_ok; + if (rv != SECSuccess) { + status = srtp_err_status_cipher_fail; + } + + return status; +} + +/* + * This function encrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_nss_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + return srtp_aes_gcm_nss_do_crypto(cv, true, src, src_len, dst, dst_len); +} + +/* + * This function decrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_nss_decrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + uint8_t tagbuf[16]; + uint8_t *non_null_dst_buf = dst; + if (!non_null_dst_buf && (*dst_len == 0)) { + non_null_dst_buf = tagbuf; + *dst_len = sizeof(tagbuf); + } else if (!non_null_dst_buf) { + return srtp_err_status_bad_param; + } + + srtp_err_status_t status = srtp_aes_gcm_nss_do_crypto( + cv, false, src, src_len, non_null_dst_buf, dst_len); + if (status != srtp_err_status_ok) { + int err = PR_GetError(); + if (err == SEC_ERROR_BAD_DATA) { + status = srtp_err_status_auth_fail; + } + } + + return status; +} + +/* + * Name of this crypto engine + */ +static const char srtp_aes_gcm_128_nss_description[] = "AES-128 GCM using NSS"; +static const char srtp_aes_gcm_256_nss_description[] = "AES-256 GCM using NSS"; + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_128 = { + srtp_aes_gcm_nss_alloc, + srtp_aes_gcm_nss_dealloc, + srtp_aes_gcm_nss_context_init, + srtp_aes_gcm_nss_set_aad, + srtp_aes_gcm_nss_encrypt, + srtp_aes_gcm_nss_decrypt, + srtp_aes_gcm_nss_set_iv, + srtp_aes_gcm_128_nss_description, + &srtp_aes_gcm_128_test_case_0, + SRTP_AES_GCM_128 +}; +/* clang-format on */ + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_256 = { + srtp_aes_gcm_nss_alloc, + srtp_aes_gcm_nss_dealloc, + srtp_aes_gcm_nss_context_init, + srtp_aes_gcm_nss_set_aad, + srtp_aes_gcm_nss_encrypt, + srtp_aes_gcm_nss_decrypt, + srtp_aes_gcm_nss_set_iv, + srtp_aes_gcm_256_nss_description, + &srtp_aes_gcm_256_test_case_0, + SRTP_AES_GCM_256 +}; +/* clang-format on */ diff --git a/src/libs/libsrtp/crypto/cipher/aes_gcm_ossl.c b/src/libs/libsrtp/crypto/cipher/aes_gcm_ossl.c new file mode 100644 index 00000000..e427e64c --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_gcm_ossl.c @@ -0,0 +1,433 @@ +/* + * aes_gcm_ossl.c + * + * AES Galois Counter Mode + * + * John A. Foley + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include "aes_gcm.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "crypto_types.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_gcm = { + false, /* debugging is off by default */ + "aes gcm" /* printable module name */ +}; + +/* + * For now we only support 8 and 16 octet tags. The spec allows for + * optional 12 byte tag, which may be supported in the future. + */ +#define GCM_AUTH_TAG_LEN 16 +#define GCM_AUTH_TAG_LEN_8 8 + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 28 or 44 for + * AES-128-GCM or AES-256-GCM respectively. Note that the + * key length includes the 14 byte salt value that is used when + * initializing the KDF. + */ +static srtp_err_status_t srtp_aes_gcm_openssl_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_gcm_ctx_t *gcm; + + debug_print(srtp_mod_aes_gcm, "allocating cipher with key length %zu", + key_len); + debug_print(srtp_mod_aes_gcm, "allocating cipher with tag length %zu", + tlen); + + /* + * Verify the key_len is valid for one of: AES-128/256 + */ + if (key_len != SRTP_AES_GCM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_GCM_256_KEY_LEN_WSALT) { + return (srtp_err_status_bad_param); + } + + if (tlen != GCM_AUTH_TAG_LEN && tlen != GCM_AUTH_TAG_LEN_8) { + return (srtp_err_status_bad_param); + } + + /* allocate memory a cipher of type aes_gcm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return (srtp_err_status_alloc_fail); + } + + gcm = (srtp_aes_gcm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_gcm_ctx_t)); + if (gcm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return (srtp_err_status_alloc_fail); + } + + gcm->ctx = EVP_CIPHER_CTX_new(); + if (gcm->ctx == NULL) { + srtp_crypto_free(gcm); + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + /* set pointers */ + (*c)->state = gcm; + + /* setup cipher attributes */ + switch (key_len) { + case SRTP_AES_GCM_128_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_128; + (*c)->algorithm = SRTP_AES_GCM_128; + gcm->key_size = SRTP_AES_128_KEY_LEN; + gcm->tag_len = tlen; + break; + case SRTP_AES_GCM_256_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_256; + (*c)->algorithm = SRTP_AES_GCM_256; + gcm->key_size = SRTP_AES_256_KEY_LEN; + gcm->tag_len = tlen; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return (srtp_err_status_ok); +} + +/* + * This function deallocates a GCM session + */ +static srtp_err_status_t srtp_aes_gcm_openssl_dealloc(srtp_cipher_t *c) +{ + srtp_aes_gcm_ctx_t *ctx; + + ctx = (srtp_aes_gcm_ctx_t *)c->state; + if (ctx) { + EVP_CIPHER_CTX_free(ctx->ctx); + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_gcm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return (srtp_err_status_ok); +} + +/* + * aes_gcm_openssl_context_init(...) initializes the aes_gcm_context + * using the value in key[]. + * + * the key is the secret key + */ +static srtp_err_status_t srtp_aes_gcm_openssl_context_init(void *cv, + const uint8_t *key) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + const EVP_CIPHER *evp; + + c->dir = srtp_direction_any; + + debug_print(srtp_mod_aes_gcm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + + switch (c->key_size) { + case SRTP_AES_256_KEY_LEN: + evp = EVP_aes_256_gcm(); + break; + case SRTP_AES_128_KEY_LEN: + evp = EVP_aes_128_gcm(); + break; + default: + return (srtp_err_status_bad_param); + break; + } + + EVP_CIPHER_CTX_reset(c->ctx); + + if (!EVP_CipherInit_ex(c->ctx, evp, NULL, key, NULL, 0)) { + return srtp_err_status_init_fail; + } + + if (!EVP_CIPHER_CTX_ctrl(c->ctx, EVP_CTRL_GCM_SET_IVLEN, 12, 0)) { + return srtp_err_status_init_fail; + } + + return srtp_err_status_ok; +} + +/* + * aes_gcm_openssl_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ +static srtp_err_status_t srtp_aes_gcm_openssl_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + + if (direction != srtp_direction_encrypt && + direction != srtp_direction_decrypt) { + return (srtp_err_status_bad_param); + } + c->dir = direction; + + debug_print(srtp_mod_aes_gcm, "setting iv: %s", + srtp_octet_string_hex_string(iv, 12)); + + if (c->dir == srtp_direction_encrypt) { + if (EVP_EncryptInit_ex(c->ctx, NULL, NULL, NULL, iv) != 1) { + return srtp_err_status_init_fail; + } + } else { + if (EVP_DecryptInit_ex(c->ctx, NULL, NULL, NULL, iv) != 1) { + return srtp_err_status_init_fail; + } + } + + return srtp_err_status_ok; +} + +/* + * This function processes the AAD + * + * Parameters: + * c Crypto context + * aad Additional data to process for AEAD cipher suites + * aad_len length of aad buffer + */ +static srtp_err_status_t srtp_aes_gcm_openssl_set_aad(void *cv, + const uint8_t *aad, + size_t aad_len) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int len = 0; + + debug_print(srtp_mod_aes_gcm, "setting AAD: %s", + srtp_octet_string_hex_string(aad, aad_len)); + + if (c->dir == srtp_direction_encrypt) { + if (EVP_EncryptUpdate(c->ctx, NULL, &len, aad, (int)aad_len) != 1) { + return srtp_err_status_algo_fail; + } + } else { + if (EVP_DecryptUpdate(c->ctx, NULL, &len, aad, (int)aad_len) != 1) { + return srtp_err_status_algo_fail; + } + } + + if (len != (int)aad_len) { + return srtp_err_status_algo_fail; + } + + return srtp_err_status_ok; +} + +/* + * This function encrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_openssl_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int len = 0; + + if (c->dir != srtp_direction_encrypt) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len + c->tag_len) { + return srtp_err_status_buffer_small; + } + + /* + * Encrypt the data + */ + if (EVP_EncryptUpdate(c->ctx, dst, &len, src, (int)src_len) != 1) { + return srtp_err_status_algo_fail; + } + *dst_len = len; + + /* + * Calculate the tag + */ + if (EVP_EncryptFinal_ex(c->ctx, dst + len, &len) != 1) { + return srtp_err_status_algo_fail; + } + *dst_len += len; + + /* + * Retrieve the tag + */ + if (EVP_CIPHER_CTX_ctrl(c->ctx, EVP_CTRL_GCM_GET_TAG, (int)c->tag_len, + dst + *dst_len) != 1) { + return srtp_err_status_algo_fail; + } + *dst_len += c->tag_len; + + return srtp_err_status_ok; +} + +/* + * This function decrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_openssl_decrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int len = 0; + + if (c->dir != srtp_direction_decrypt) { + return srtp_err_status_bad_param; + } + + if (src_len < c->tag_len) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len - c->tag_len) { + return srtp_err_status_buffer_small; + } + + /* + * Decrypt the data + */ + if (EVP_DecryptUpdate(c->ctx, dst, &len, src, + (int)(src_len - c->tag_len)) != 1) { + return srtp_err_status_algo_fail; + } + *dst_len = len; + + /* + * Set the tag before decrypting + * + * explicitly cast away const of src + */ + if (EVP_CIPHER_CTX_ctrl( + c->ctx, EVP_CTRL_GCM_SET_TAG, (int)c->tag_len, + (void *)(uintptr_t)(src + (src_len - c->tag_len))) != 1) { + return srtp_err_status_algo_fail; + } + + /* + * Check the tag + */ + if (EVP_DecryptFinal_ex(c->ctx, dst + *dst_len, &len) != 1) { + return srtp_err_status_auth_fail; + } + *dst_len += len; + + return srtp_err_status_ok; +} + +/* + * Name of this crypto engine + */ +static const char srtp_aes_gcm_128_openssl_description[] = + "AES-128 GCM using openssl"; +static const char srtp_aes_gcm_256_openssl_description[] = + "AES-256 GCM using openssl"; + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_128 = { + srtp_aes_gcm_openssl_alloc, + srtp_aes_gcm_openssl_dealloc, + srtp_aes_gcm_openssl_context_init, + srtp_aes_gcm_openssl_set_aad, + srtp_aes_gcm_openssl_encrypt, + srtp_aes_gcm_openssl_decrypt, + srtp_aes_gcm_openssl_set_iv, + srtp_aes_gcm_128_openssl_description, + &srtp_aes_gcm_128_test_case_0, + SRTP_AES_GCM_128 +}; +/* clang-format on */ + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_256 = { + srtp_aes_gcm_openssl_alloc, + srtp_aes_gcm_openssl_dealloc, + srtp_aes_gcm_openssl_context_init, + srtp_aes_gcm_openssl_set_aad, + srtp_aes_gcm_openssl_encrypt, + srtp_aes_gcm_openssl_decrypt, + srtp_aes_gcm_openssl_set_iv, + srtp_aes_gcm_256_openssl_description, + &srtp_aes_gcm_256_test_case_0, + SRTP_AES_GCM_256 +}; +/* clang-format on */ diff --git a/src/libs/libsrtp/crypto/cipher/aes_gcm_wssl.c b/src/libs/libsrtp/crypto/cipher/aes_gcm_wssl.c new file mode 100644 index 00000000..8f4699e2 --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_gcm_wssl.c @@ -0,0 +1,474 @@ +/* + * aes_gcm_wssl.c + * + * AES Galois Counter Mode using wolfSSL + * + * Sean Parkinson, wolfSSL + * + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#ifndef WOLFSSL_USER_SETTINGS +#include +#endif +#include +#include +#include "aes_gcm.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "crypto_types.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_gcm = { + 0, /* debugging is off by default */ + "aes gcm wssl" /* printable module name */ +}; + +/** + * SRTP IV Formation for AES-GCM + * https://tools.ietf.org/html/rfc7714#section-8.1 + * 0 0 0 0 0 0 0 0 0 0 1 1 + * 0 1 2 3 4 5 6 7 8 9 0 1 + * +--+--+--+--+--+--+--+--+--+--+--+--+ + * |00|00| SSRC | ROC | SEQ |---+ + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Encryption Salt |->(+) + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Initialization Vector |<--+ + * +--+--+--+--+--+--+--+--+--+--+--+--+ + * + * SRTCP IV Formation for AES-GCM + * https://tools.ietf.org/html/rfc7714#section-9.1 + * + */ + +/* + * For now we only support 8 and 16 octet tags. The spec allows for + * optional 12 byte tag, which may be supported in the future. + */ +#define GCM_AUTH_TAG_LEN AES_BLOCK_SIZE +#define GCM_AUTH_TAG_LEN_8 8 + +#define FUNC_ENTRY() debug_print(srtp_mod_aes_gcm, "%s entry", __func__); + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 28 or 44 for + * AES-128-GCM or AES-256-GCM respectively. Note that the + * key length includes the 14 byte salt value that is used when + * initializing the KDF. + */ +static srtp_err_status_t srtp_aes_gcm_wolfssl_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *gcm; + + debug_print(srtp_mod_aes_gcm, "allocating cipher with key length %zu", + key_len); + debug_print(srtp_mod_aes_gcm, "allocating cipher with tag length %zu", + tlen); + + /* + * Verify the key_len is valid for one of: AES-128/256 + */ + if (key_len != SRTP_AES_GCM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_GCM_256_KEY_LEN_WSALT) { + return (srtp_err_status_bad_param); + } + + if (tlen != GCM_AUTH_TAG_LEN && tlen != GCM_AUTH_TAG_LEN_8) { + return (srtp_err_status_bad_param); + } + + /* allocate memory a cipher of type aes_gcm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return (srtp_err_status_alloc_fail); + } + + gcm = (srtp_aes_gcm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_gcm_ctx_t)); + if (gcm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return (srtp_err_status_alloc_fail); + } + gcm->ctx = NULL; + + /* set pointers */ + (*c)->state = gcm; + + /* setup cipher attributes */ + switch (key_len) { + case SRTP_AES_GCM_128_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_128; + (*c)->algorithm = SRTP_AES_GCM_128; + gcm->key_size = SRTP_AES_128_KEY_LEN; + gcm->tag_len = tlen; + break; + case SRTP_AES_GCM_256_KEY_LEN_WSALT: + (*c)->type = &srtp_aes_gcm_256; + (*c)->algorithm = SRTP_AES_GCM_256; + gcm->key_size = SRTP_AES_256_KEY_LEN; + gcm->tag_len = tlen; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return (srtp_err_status_ok); +} + +/* + * This function deallocates a GCM session + */ +static srtp_err_status_t srtp_aes_gcm_wolfssl_dealloc(srtp_cipher_t *c) +{ + srtp_aes_gcm_ctx_t *ctx; + FUNC_ENTRY(); + ctx = (srtp_aes_gcm_ctx_t *)c->state; + if (ctx != NULL) { + if (ctx->ctx != NULL) { + wc_AesFree(ctx->ctx); + srtp_crypto_free(ctx->ctx); + } + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_gcm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return (srtp_err_status_ok); +} + +static srtp_err_status_t srtp_aes_gcm_wolfssl_context_init(void *cv, + const uint8_t *key) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int err; + + c->dir = srtp_direction_any; +#ifndef WOLFSSL_AESGCM_STREAM + c->aad_size = 0; +#endif + + debug_print(srtp_mod_aes_gcm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + switch (c->key_size) { + case SRTP_AES_256_KEY_LEN: + case SRTP_AES_128_KEY_LEN: + break; + default: + return (srtp_err_status_bad_param); + break; + } + + if (c->ctx == NULL) { + c->ctx = (Aes *)srtp_crypto_alloc(sizeof(Aes)); + if (c->ctx == NULL) { + return srtp_err_status_alloc_fail; + } + err = wc_AesInit(c->ctx, NULL, INVALID_DEVID); + if (err < 0) { + srtp_crypto_free(c->ctx); + c->ctx = NULL; + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_init_fail; + } + } + + err = wc_AesGcmSetKey(c->ctx, (const unsigned char *)key, c->key_size); + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_init_fail; + } + + return (srtp_err_status_ok); +} + +static srtp_err_status_t srtp_aes_gcm_wolfssl_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; +#ifdef WOLFSSL_AESGCM_STREAM + int err; +#endif + + if (direction != srtp_direction_encrypt && + direction != srtp_direction_decrypt) { + return (srtp_err_status_bad_param); + } + c->dir = direction; + + debug_print(srtp_mod_aes_gcm, "setting iv: %s", + srtp_octet_string_hex_string(iv, GCM_NONCE_MID_SZ)); +#ifndef WOLFSSL_AESGCM_STREAM + c->iv_len = GCM_NONCE_MID_SZ; + memcpy(c->iv, iv, c->iv_len); + + c->aad_size = 0; +#else + err = wc_AesGcmInit(c->ctx, NULL, 0, iv, GCM_NONCE_MID_SZ); + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_init_fail; + } +#endif + + return (srtp_err_status_ok); +} + +/* + * This function processes the AAD + * + * Parameters: + * c Crypto context + * aad Additional data to process for AEAD cipher suites + * aad_len length of aad buffer + */ +static srtp_err_status_t srtp_aes_gcm_wolfssl_set_aad(void *cv, + const uint8_t *aad, + size_t aad_len) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; +#ifdef WOLFSSL_AESGCM_STREAM + int err; +#endif + + debug_print(srtp_mod_aes_gcm, "setting AAD: %s", + srtp_octet_string_hex_string(aad, aad_len)); + +#ifndef WOLFSSL_AESGCM_STREAM + if (aad_len + c->aad_size > MAX_AD_SIZE) { + return srtp_err_status_bad_param; + } + + memcpy(c->aad + c->aad_size, aad, aad_len); + c->aad_size += aad_len; +#else + if (c->dir == srtp_direction_encrypt) { + err = wc_AesGcmEncryptUpdate(c->ctx, NULL, NULL, 0, aad, aad_len); + } else { + err = wc_AesGcmDecryptUpdate(c->ctx, NULL, NULL, 0, aad, aad_len); + } + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_algo_fail; + } +#endif + + return (srtp_err_status_ok); +} + +/* + * This function encrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_wolfssl_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int err; + + if (c->dir != srtp_direction_encrypt) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len + c->tag_len) { + return srtp_err_status_buffer_small; + } + +#ifndef WOLFSSL_AESGCM_STREAM + // tag must always be 16 bytes when passed to wc_AesGcmEncrypt, can truncate + // to c->tag_len after + uint8_t tag[GCM_AUTH_TAG_LEN]; + err = wc_AesGcmEncrypt(c->ctx, dst, src, src_len, c->iv, c->iv_len, tag, + sizeof(tag), c->aad, c->aad_size); + c->aad_size = 0; + if (err == 0) { + memcpy(dst + src_len, tag, c->tag_len); + } +#else + err = wc_AesGcmEncryptUpdate(c->ctx, dst, src, src_len, NULL, 0); + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_algo_fail; + } + err = wc_AesGcmEncryptFinal(c->ctx, dst + src_len, c->tag_len); +#endif + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + printf("wolfSSL error code: %d\n", err); + return srtp_err_status_algo_fail; + } + + *dst_len = src_len + c->tag_len; + + return srtp_err_status_ok; +} + +/* + * This function decrypts a buffer using AES GCM mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_gcm_wolfssl_decrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + FUNC_ENTRY(); + srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv; + int err; + + if (c->dir != srtp_direction_decrypt) { + return srtp_err_status_bad_param; + } + + if (src_len < c->tag_len) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len - c->tag_len) { + return srtp_err_status_buffer_small; + } + +#ifndef WOLFSSL_AESGCM_STREAM + debug_print(srtp_mod_aes_gcm, "AAD: %s", + srtp_octet_string_hex_string(c->aad, c->aad_size)); + + err = wc_AesGcmDecrypt(c->ctx, dst, src, (src_len - c->tag_len), c->iv, + c->iv_len, src + (src_len - c->tag_len), c->tag_len, + c->aad, c->aad_size); + c->aad_size = 0; +#else + err = wc_AesGcmDecryptUpdate(c->ctx, dst, src, (src_len - c->tag_len), NULL, + 0); + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_algo_fail; + } + err = + wc_AesGcmDecryptFinal(c->ctx, src + (src_len - c->tag_len), c->tag_len); +#endif + if (err < 0) { + debug_print(srtp_mod_aes_gcm, "wolfSSL error code: %d", err); + return srtp_err_status_auth_fail; + } + + /* + * Reduce the buffer size by the tag length since the tag + * is not part of the original payload + */ + *dst_len = src_len -= c->tag_len; + + return srtp_err_status_ok; +} + +/* + * Name of this crypto engine + */ +static const char srtp_aes_gcm_128_wolfssl_description[] = + "AES-128 GCM using wolfssl"; +static const char srtp_aes_gcm_256_wolfssl_description[] = + "AES-256 GCM using wolfssl"; + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_128 = { + srtp_aes_gcm_wolfssl_alloc, + srtp_aes_gcm_wolfssl_dealloc, + srtp_aes_gcm_wolfssl_context_init, + srtp_aes_gcm_wolfssl_set_aad, + srtp_aes_gcm_wolfssl_encrypt, + srtp_aes_gcm_wolfssl_decrypt, + srtp_aes_gcm_wolfssl_set_iv, + srtp_aes_gcm_128_wolfssl_description, + &srtp_aes_gcm_128_test_case_0, + SRTP_AES_GCM_128 +}; +/* clang-format on */ + +/* + * This is the vector function table for this crypto engine. + */ +/* clang-format off */ +const srtp_cipher_type_t srtp_aes_gcm_256 = { + srtp_aes_gcm_wolfssl_alloc, + srtp_aes_gcm_wolfssl_dealloc, + srtp_aes_gcm_wolfssl_context_init, + srtp_aes_gcm_wolfssl_set_aad, + srtp_aes_gcm_wolfssl_encrypt, + srtp_aes_gcm_wolfssl_decrypt, + srtp_aes_gcm_wolfssl_set_iv, + srtp_aes_gcm_256_wolfssl_description, + &srtp_aes_gcm_256_test_case_0, + SRTP_AES_GCM_256 +}; +/* clang-format on */ diff --git a/src/libs/libsrtp/crypto/cipher/aes_icm.c b/src/libs/libsrtp/crypto/cipher/aes_icm.c new file mode 100644 index 00000000..f56fd76a --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_icm.c @@ -0,0 +1,449 @@ +/* + * aes_icm.c + * + * AES Integer Counter Mode + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#define ALIGN_32 0 + +#include "aes_icm.h" +#include "alloc.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_icm = { + false, /* debugging is off by default */ + "aes icm" /* printable module name */ +}; + +/* + * integer counter mode works as follows: + * + * 16 bits + * <-----> + * +------+------+------+------+------+------+------+------+ + * | nonce | pakcet index | ctr |---+ + * +------+------+------+------+------+------+------+------+ | + * | + * +------+------+------+------+------+------+------+------+ v + * | salt |000000|->(+) + * +------+------+------+------+------+------+------+------+ | + * | + * +---------+ + * | encrypt | + * +---------+ + * | + * +------+------+------+------+------+------+------+------+ | + * | keystream block |<--+ + * +------+------+------+------+------+------+------+------+ + * + * All fields are big-endian + * + * ctr is the block counter, which increments from zero for + * each packet (16 bits wide) + * + * packet index is distinct for each packet (48 bits wide) + * + * nonce can be distinct across many uses of the same key, or + * can be a fixed value per key, or can be per-packet randomness + * (64 bits) + * + */ + +static srtp_err_status_t srtp_aes_icm_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_icm_ctx_t *icm; + (void)tlen; + + debug_print(srtp_mod_aes_icm, "allocating cipher with key length %zu", + key_len); + + /* + * The check for key_len = 30/46 does not apply. Our usage + * of aes functions with key_len = values other than 30 + * has not broken anything. Don't know what would be the + * effect of skipping this check for srtp in general. + */ + if (key_len != SRTP_AES_ICM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_256_KEY_LEN_WSALT) { + return srtp_err_status_bad_param; + } + + /* allocate memory a cipher of type aes_icm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return srtp_err_status_alloc_fail; + } + + icm = (srtp_aes_icm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_icm_ctx_t)); + if (icm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + /* set pointers */ + (*c)->state = icm; + + switch (key_len) { + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_256; + (*c)->type = &srtp_aes_icm_256; + break; + default: + (*c)->algorithm = SRTP_AES_ICM_128; + (*c)->type = &srtp_aes_icm_128; + break; + } + + /* set key size */ + icm->key_size = key_len; + (*c)->key_len = key_len; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_aes_icm_dealloc(srtp_cipher_t *c) +{ + srtp_aes_icm_ctx_t *ctx; + + if (c == NULL) { + return srtp_err_status_bad_param; + } + + ctx = (srtp_aes_icm_ctx_t *)c->state; + if (ctx) { + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_icm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free the cipher context */ + srtp_crypto_free(c); + + return srtp_err_status_ok; +} + +/* + * aes_icm_context_init(...) initializes the aes_icm_context + * using the value in key[]. + * + * the key is the secret key + * + * the salt is unpredictable (but not necessarily secret) data which + * randomizes the starting point in the keystream + */ + +static srtp_err_status_t srtp_aes_icm_context_init(void *cv, const uint8_t *key) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + srtp_err_status_t status; + size_t base_key_len, copy_len; + + if (c->key_size == SRTP_AES_ICM_128_KEY_LEN_WSALT || + c->key_size == SRTP_AES_ICM_256_KEY_LEN_WSALT) { + base_key_len = c->key_size - SRTP_SALT_LEN; + } else { + return srtp_err_status_bad_param; + } + + /* + * set counter and initial values to 'offset' value, being careful not to + * go past the end of the key buffer + */ + v128_set_to_zero(&c->counter); + v128_set_to_zero(&c->offset); + + copy_len = c->key_size - base_key_len; + /* force last two octets of the offset to be left zero (for srtp + * compatibility) */ + if (copy_len > SRTP_SALT_LEN) { + copy_len = SRTP_SALT_LEN; + } + + memcpy(&c->counter, key + base_key_len, copy_len); + memcpy(&c->offset, key + base_key_len, copy_len); + + debug_print(srtp_mod_aes_icm, "key: %s", + srtp_octet_string_hex_string(key, base_key_len)); + debug_print(srtp_mod_aes_icm, "offset: %s", v128_hex_string(&c->offset)); + + /* expand key */ + status = + srtp_aes_expand_encryption_key(key, base_key_len, &c->expanded_key); + if (status) { + v128_set_to_zero(&c->counter); + v128_set_to_zero(&c->offset); + return status; + } + + /* indicate that the keystream_buffer is empty */ + c->bytes_in_buffer = 0; + + return srtp_err_status_ok; +} + +/* + * aes_icm_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ + +static srtp_err_status_t srtp_aes_icm_set_iv(void *cv, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + v128_t nonce; + (void)direction; + + /* set nonce (for alignment) */ + v128_copy_octet_string(&nonce, iv); + + debug_print(srtp_mod_aes_icm, "setting iv: %s", v128_hex_string(&nonce)); + + v128_xor(&c->counter, &c->offset, &nonce); + + debug_print(srtp_mod_aes_icm, "set_counter: %s", + v128_hex_string(&c->counter)); + + /* indicate that the keystream_buffer is empty */ + c->bytes_in_buffer = 0; + + return srtp_err_status_ok; +} + +/* + * aes_icm_advance(...) refills the keystream_buffer and + * advances the block index of the sicm_context forward by one + * + * this is an internal, hopefully inlined function + */ +static void srtp_aes_icm_advance(srtp_aes_icm_ctx_t *c) +{ + /* fill buffer with new keystream */ + v128_copy(&c->keystream_buffer, &c->counter); + srtp_aes_encrypt(&c->keystream_buffer, &c->expanded_key); + c->bytes_in_buffer = sizeof(v128_t); + + debug_print(srtp_mod_aes_icm, "counter: %s", + v128_hex_string(&c->counter)); + debug_print(srtp_mod_aes_icm, "ciphertext: %s", + v128_hex_string(&c->keystream_buffer)); + + /* clock counter forward */ + if (!++(c->counter.v8[15])) { + ++(c->counter.v8[14]); + } +} + +/* + * icm_encrypt deals with the following cases: + * + * bytes_to_encr < bytes_in_buffer + * - add keystream into data + * + * bytes_to_encr > bytes_in_buffer + * - add keystream into data until keystream_buffer is depleted + * - loop over blocks, filling keystream_buffer and then + * adding keystream into data + * - fill buffer then add in remaining (< 16) bytes of keystream + */ + +static srtp_err_status_t srtp_aes_icm_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + size_t bytes_to_encr = src_len; + uint32_t *b; + const uint32_t *s; + + if (*dst_len < src_len) { + return srtp_err_status_buffer_small; + } + + *dst_len = src_len; + + unsigned char *buf = dst; + + /* check that there's enough segment left*/ + size_t bytes_of_new_keystream = bytes_to_encr - c->bytes_in_buffer; + size_t blocks_of_new_keystream = (bytes_of_new_keystream + 15) >> 4; + if ((blocks_of_new_keystream + htons(c->counter.v16[7])) > 0xffff) { + return srtp_err_status_terminus; + } + + debug_print(srtp_mod_aes_icm, "block index: %d", htons(c->counter.v16[7])); + if (bytes_to_encr <= c->bytes_in_buffer) { + /* deal with odd case of small bytes_to_encr */ + for (size_t i = (sizeof(v128_t) - c->bytes_in_buffer); + i < (sizeof(v128_t) - c->bytes_in_buffer + bytes_to_encr); i++) { + *buf++ = *src++ ^ c->keystream_buffer.v8[i]; + } + + c->bytes_in_buffer -= bytes_to_encr; + + /* return now to avoid the main loop */ + return srtp_err_status_ok; + + } else { + /* encrypt bytes until the remaining data is 16-byte aligned */ + for (size_t i = (sizeof(v128_t) - c->bytes_in_buffer); + i < sizeof(v128_t); i++) { + *buf++ = *src++ ^ c->keystream_buffer.v8[i]; + } + + bytes_to_encr -= c->bytes_in_buffer; + c->bytes_in_buffer = 0; + } + + /* now loop over entire 16-byte blocks of keystream */ + for (size_t i = 0; i < (bytes_to_encr / sizeof(v128_t)); i++) { + /* fill buffer with new keystream */ + srtp_aes_icm_advance(c); + + /* + * add keystream into the data buffer (this would be a lot faster + * if we could assume 32-bit alignment!) + */ + +#if ALIGN_32 + b = (uint32_t *)buf; + s = (const uint32_t *)src; + *b++ = *s++ ^ c->keystream_buffer.v32[0]; + *b++ = *s++ ^ c->keystream_buffer.v32[1]; + *b++ = *s++ ^ c->keystream_buffer.v32[2]; + *b++ = *s++ ^ c->keystream_buffer.v32[3]; + buf = (uint8_t *)b; + src = (const uint8_t *)s; +#else + if ((((uintptr_t)buf) & 0x03) != 0) { + *buf++ = *src++ ^ c->keystream_buffer.v8[0]; + *buf++ = *src++ ^ c->keystream_buffer.v8[1]; + *buf++ = *src++ ^ c->keystream_buffer.v8[2]; + *buf++ = *src++ ^ c->keystream_buffer.v8[3]; + *buf++ = *src++ ^ c->keystream_buffer.v8[4]; + *buf++ = *src++ ^ c->keystream_buffer.v8[5]; + *buf++ = *src++ ^ c->keystream_buffer.v8[6]; + *buf++ = *src++ ^ c->keystream_buffer.v8[7]; + *buf++ = *src++ ^ c->keystream_buffer.v8[8]; + *buf++ = *src++ ^ c->keystream_buffer.v8[9]; + *buf++ = *src++ ^ c->keystream_buffer.v8[10]; + *buf++ = *src++ ^ c->keystream_buffer.v8[11]; + *buf++ = *src++ ^ c->keystream_buffer.v8[12]; + *buf++ = *src++ ^ c->keystream_buffer.v8[13]; + *buf++ = *src++ ^ c->keystream_buffer.v8[14]; + *buf++ = *src++ ^ c->keystream_buffer.v8[15]; + } else { + b = (uint32_t *)buf; + s = (const uint32_t *)src; + *b++ = *s++ ^ c->keystream_buffer.v32[0]; + *b++ = *s++ ^ c->keystream_buffer.v32[1]; + *b++ = *s++ ^ c->keystream_buffer.v32[2]; + *b++ = *s++ ^ c->keystream_buffer.v32[3]; + buf = (uint8_t *)b; + src = (const uint8_t *)s; + } +#endif /* #if ALIGN_32 */ + } + + /* if there is a tail end of the data, process it */ + if ((bytes_to_encr & 0xf) != 0) { + /* fill buffer with new keystream */ + srtp_aes_icm_advance(c); + + for (size_t i = 0; i < (bytes_to_encr & 0xf); i++) { + *buf++ = *src++ ^ c->keystream_buffer.v8[i]; + } + + /* reset the keystream buffer size to right value */ + c->bytes_in_buffer = sizeof(v128_t) - (bytes_to_encr & 0xf); + } else { + /* no tail, so just reset the keystream buffer size to zero */ + c->bytes_in_buffer = 0; + } + + return srtp_err_status_ok; +} + +static const char srtp_aes_icm_128_description[] = + "AES-128 integer counter mode"; +static const char srtp_aes_icm_256_description[] = + "AES-256 integer counter mode"; + +/* + * note: the encrypt function is identical to the decrypt function + */ + +const srtp_cipher_type_t srtp_aes_icm_128 = { + srtp_aes_icm_alloc, /* */ + srtp_aes_icm_dealloc, /* */ + srtp_aes_icm_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_encrypt, /* */ + srtp_aes_icm_encrypt, /* */ + srtp_aes_icm_set_iv, /* */ + srtp_aes_icm_128_description, /* */ + &srtp_aes_icm_128_test_case_0, /* */ + SRTP_AES_ICM_128 /* */ +}; + +const srtp_cipher_type_t srtp_aes_icm_256 = { + srtp_aes_icm_alloc, /* */ + srtp_aes_icm_dealloc, /* */ + srtp_aes_icm_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_encrypt, /* */ + srtp_aes_icm_encrypt, /* */ + srtp_aes_icm_set_iv, /* */ + srtp_aes_icm_256_description, /* */ + &srtp_aes_icm_256_test_case_0, /* */ + SRTP_AES_ICM_256 /* */ +}; diff --git a/src/libs/libsrtp/crypto/cipher/aes_icm_mbedtls.c b/src/libs/libsrtp/crypto/cipher/aes_icm_mbedtls.c new file mode 100644 index 00000000..1b5d4b83 --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_icm_mbedtls.c @@ -0,0 +1,402 @@ +/* + * aes_icm_mbedtls.c + * + * AES Integer Counter Mode + * + * YongCheng Yang + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include "aes_icm_ext.h" +#include "crypto_types.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_icm = { + false, /* debugging is off by default */ + "aes icm mbedtls" /* printable module name */ +}; + +/* + * static function declarations. + */ +static srtp_err_status_t srtp_aes_icm_mbedtls_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen); + +static srtp_err_status_t srtp_aes_icm_mbedtls_dealloc(srtp_cipher_t *c); + +static srtp_err_status_t srtp_aes_icm_mbedtls_context_init(void *cv, + const uint8_t *key); + +static srtp_err_status_t srtp_aes_icm_mbedtls_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t dir); + +static srtp_err_status_t srtp_aes_icm_mbedtls_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); + +/* + * Name of this crypto engine + */ +static const char srtp_aes_icm_128_mbedtls_description[] = + "AES-128 counter mode using mbedtls"; +static const char srtp_aes_icm_192_mbedtls_description[] = + "AES-192 counter mode using mbedtls"; +static const char srtp_aes_icm_256_mbedtls_description[] = + "AES-256 counter mode using mbedtls"; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_128 = { + srtp_aes_icm_mbedtls_alloc, /* */ + srtp_aes_icm_mbedtls_dealloc, /* */ + srtp_aes_icm_mbedtls_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_mbedtls_encrypt, /* */ + srtp_aes_icm_mbedtls_encrypt, /* */ + srtp_aes_icm_mbedtls_set_iv, /* */ + srtp_aes_icm_128_mbedtls_description, /* */ + &srtp_aes_icm_128_test_case_0, /* */ + SRTP_AES_ICM_128 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_192 = { + srtp_aes_icm_mbedtls_alloc, /* */ + srtp_aes_icm_mbedtls_dealloc, /* */ + srtp_aes_icm_mbedtls_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_mbedtls_encrypt, /* */ + srtp_aes_icm_mbedtls_encrypt, /* */ + srtp_aes_icm_mbedtls_set_iv, /* */ + srtp_aes_icm_192_mbedtls_description, /* */ + &srtp_aes_icm_192_test_case_0, /* */ + SRTP_AES_ICM_192 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_256 = { + srtp_aes_icm_mbedtls_alloc, /* */ + srtp_aes_icm_mbedtls_dealloc, /* */ + srtp_aes_icm_mbedtls_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_mbedtls_encrypt, /* */ + srtp_aes_icm_mbedtls_encrypt, /* */ + srtp_aes_icm_mbedtls_set_iv, /* */ + srtp_aes_icm_256_mbedtls_description, /* */ + &srtp_aes_icm_256_test_case_0, /* */ + SRTP_AES_ICM_256 /* */ +}; + +/* + * integer counter mode works as follows: + * + * https://tools.ietf.org/html/rfc3711#section-4.1.1 + * + * E(k, IV) || E(k, IV + 1 mod 2^128) || E(k, IV + 2 mod 2^128) ... + * IV = (k_s * 2^16) XOR (SSRC * 2^64) XOR (i * 2^16) + * + * IV SHALL be defined by the SSRC, the SRTP packet index i, + * and the SRTP session salting key k_s. + * + * SSRC: 32bits. + * Sequence number: 16bits. + * nonce is 64bits. . + * packet index = ROC || SEQ. (ROC: Rollover counter) + * + * 16 bits + * <-----> + * +------+------+------+------+------+------+------+------+ + * | nonce | packet index | ctr |---+ + * +------+------+------+------+------+------+------+------+ | + * | + * +------+------+------+------+------+------+------+------+ v + * | salt |000000|->(+) + * +------+------+------+------+------+------+------+------+ | + * | + * +---------+ + * | encrypt | + * +---------+ + * | + * +------+------+------+------+------+------+------+------+ | + * | keystream block |<--+ + * +------+------+------+------+------+------+------+------+ + * + * All fields are big-endian + * + * ctr is the block counter, which increments from zero for + * each packet (16 bits wide) + * + * packet index is distinct for each packet (48 bits wide) + * + * nonce can be distinct across many uses of the same key, or + * can be a fixed value per key, or can be per-packet randomness + * (64 bits) + * + */ + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 30, 38, or 46 for + * AES-128, AES-192, and AES-256 respectively. Note, this key_len + * value is inflated, as it also accounts for the 112 bit salt + * value. The tlen argument is for the AEAD tag length, which + * isn't used in counter mode. + */ +static srtp_err_status_t srtp_aes_icm_mbedtls_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_icm_ctx_t *icm; + (void)tlen; + + debug_print(srtp_mod_aes_icm, "allocating cipher with key length %zu", + key_len); + + /* + * Verify the key_len is valid for one of: AES-128/192/256 + */ + if (key_len != SRTP_AES_ICM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_192_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_256_KEY_LEN_WSALT) { + return srtp_err_status_bad_param; + } + + /* allocate memory a cipher of type aes_icm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return srtp_err_status_alloc_fail; + } + + icm = (srtp_aes_icm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_icm_ctx_t)); + if (icm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + icm->ctx = + (mbedtls_aes_context *)srtp_crypto_alloc(sizeof(mbedtls_aes_context)); + if (icm->ctx == NULL) { + srtp_crypto_free(icm); + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + mbedtls_aes_init(icm->ctx); + + /* set pointers */ + (*c)->state = icm; + + /* setup cipher parameters */ + switch (key_len) { + case SRTP_AES_ICM_128_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_128; + (*c)->type = &srtp_aes_icm_128; + icm->key_size = SRTP_AES_128_KEY_LEN; + break; + case SRTP_AES_ICM_192_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_192; + (*c)->type = &srtp_aes_icm_192; + icm->key_size = SRTP_AES_192_KEY_LEN; + break; + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_256; + (*c)->type = &srtp_aes_icm_256; + icm->key_size = SRTP_AES_256_KEY_LEN; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return srtp_err_status_ok; +} + +/* + * This function deallocates an instance of this engine + */ +static srtp_err_status_t srtp_aes_icm_mbedtls_dealloc(srtp_cipher_t *c) +{ + srtp_aes_icm_ctx_t *ctx; + + if (c == NULL) { + return srtp_err_status_bad_param; + } + + /* + * Free the aes context + */ + ctx = (srtp_aes_icm_ctx_t *)c->state; + if (ctx != NULL) { + mbedtls_aes_free(ctx->ctx); + srtp_crypto_free(ctx->ctx); + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_icm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_aes_icm_mbedtls_context_init(void *cv, + const uint8_t *key) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + uint32_t key_size_in_bits = (c->key_size << 3); + int errcode = 0; + + /* + * set counter and initial values to 'offset' value, being careful not to + * go past the end of the key buffer + */ + v128_set_to_zero(&c->counter); + v128_set_to_zero(&c->offset); + memcpy(&c->counter, key + c->key_size, SRTP_SALT_LEN); + memcpy(&c->offset, key + c->key_size, SRTP_SALT_LEN); + + /* force last two octets of the offset to zero (for srtp compatibility) */ + c->offset.v8[SRTP_SALT_LEN] = c->offset.v8[SRTP_SALT_LEN + 1] = 0; + c->counter.v8[SRTP_SALT_LEN] = c->counter.v8[SRTP_SALT_LEN + 1] = 0; + debug_print(srtp_mod_aes_icm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + debug_print(srtp_mod_aes_icm, "offset: %s", v128_hex_string(&c->offset)); + + switch (c->key_size) { + case SRTP_AES_256_KEY_LEN: + case SRTP_AES_192_KEY_LEN: + case SRTP_AES_128_KEY_LEN: + break; + default: + return srtp_err_status_bad_param; + break; + } + + errcode = mbedtls_aes_setkey_enc(c->ctx, key, key_size_in_bits); + if (errcode != 0) { + debug_print(srtp_mod_aes_icm, "errCode: %d", errcode); + } + + return srtp_err_status_ok; +} + +/* + * aes_icm_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ +static srtp_err_status_t srtp_aes_icm_mbedtls_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t dir) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + v128_t nonce; + (void)dir; + + c->nc_off = 0; + /* set nonce (for alignment) */ + v128_copy_octet_string(&nonce, iv); + + debug_print(srtp_mod_aes_icm, "setting iv: %s", v128_hex_string(&nonce)); + + v128_xor(&c->counter, &c->offset, &nonce); + + debug_print(srtp_mod_aes_icm, "set_counter: %s", + v128_hex_string(&c->counter)); + + return srtp_err_status_ok; +} + +/* + * This function encrypts a buffer using AES CTR mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_icm_mbedtls_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + + int errCode = 0; + debug_print(srtp_mod_aes_icm, "rs0: %s", v128_hex_string(&c->counter)); + + if (*dst_len < src_len) { + return srtp_err_status_buffer_small; + } + + errCode = + mbedtls_aes_crypt_ctr(c->ctx, src_len, &(c->nc_off), c->counter.v8, + c->stream_block.v8, src, dst); + if (errCode != 0) { + debug_print(srtp_mod_aes_icm, "encrypt error: %d", errCode); + return srtp_err_status_cipher_fail; + } + + *dst_len = src_len; + + return srtp_err_status_ok; +} diff --git a/src/libs/libsrtp/crypto/cipher/aes_icm_nss.c b/src/libs/libsrtp/crypto/cipher/aes_icm_nss.c new file mode 100644 index 00000000..5d6dc07b --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_icm_nss.c @@ -0,0 +1,415 @@ +/* + * aes_icm_nss.c + * + * AES Integer Counter Mode + * + * Richard L. Barnes + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "aes_icm_ext.h" +#include "crypto_types.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_icm = { + false, /* debugging is off by default */ + "aes icm nss" /* printable module name */ +}; + +/* + * integer counter mode works as follows: + * + * 16 bits + * <-----> + * +------+------+------+------+------+------+------+------+ + * | nonce | packet index | ctr |---+ + * +------+------+------+------+------+------+------+------+ | + * | + * +------+------+------+------+------+------+------+------+ v + * | salt |000000|->(+) + * +------+------+------+------+------+------+------+------+ | + * | + * +---------+ + * | encrypt | + * +---------+ + * | + * +------+------+------+------+------+------+------+------+ | + * | keystream block |<--+ + * +------+------+------+------+------+------+------+------+ + * + * All fields are big-endian + * + * ctr is the block counter, which increments from zero for + * each packet (16 bits wide) + * + * packet index is distinct for each packet (48 bits wide) + * + * nonce can be distinct across many uses of the same key, or + * can be a fixed value per key, or can be per-packet randomness + * (64 bits) + * + */ + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 30, 38, or 46 for + * AES-128, AES-192, and AES-256 respectively. Note, this key_len + * value is inflated, as it also accounts for the 112 bit salt + * value. The tlen argument is for the AEAD tag length, which + * isn't used in counter mode. + */ +static srtp_err_status_t srtp_aes_icm_nss_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_icm_ctx_t *icm; + NSSInitContext *nss; + (void)tlen; + + debug_print(srtp_mod_aes_icm, "allocating cipher with key length %zu", + key_len); + + /* + * Verify the key_len is valid for one of: AES-128/192/256 + */ + if (key_len != SRTP_AES_ICM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_192_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_256_KEY_LEN_WSALT) { + return srtp_err_status_bad_param; + } + + /* Initialize NSS equiv of NSS_NoDB_Init(NULL) */ + nss = NSS_InitContext("", "", "", "", NULL, + NSS_INIT_READONLY | NSS_INIT_NOCERTDB | + NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN | + NSS_INIT_OPTIMIZESPACE); + if (!nss) { + return (srtp_err_status_cipher_fail); + } + + /* allocate memory a cipher of type aes_icm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + NSS_ShutdownContext(nss); + return srtp_err_status_alloc_fail; + } + + icm = (srtp_aes_icm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_icm_ctx_t)); + if (icm == NULL) { + NSS_ShutdownContext(nss); + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + icm->key = NULL; + icm->ctx = NULL; + icm->nss = nss; + + /* set pointers */ + (*c)->state = icm; + + /* setup cipher parameters */ + switch (key_len) { + case SRTP_AES_ICM_128_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_128; + (*c)->type = &srtp_aes_icm_128; + icm->key_size = SRTP_AES_128_KEY_LEN; + break; + case SRTP_AES_ICM_192_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_192; + (*c)->type = &srtp_aes_icm_192; + icm->key_size = SRTP_AES_192_KEY_LEN; + break; + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_256; + (*c)->type = &srtp_aes_icm_256; + icm->key_size = SRTP_AES_256_KEY_LEN; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return srtp_err_status_ok; +} + +/* + * This function deallocates an instance of this engine + */ +static srtp_err_status_t srtp_aes_icm_nss_dealloc(srtp_cipher_t *c) +{ + srtp_aes_icm_ctx_t *ctx; + + ctx = (srtp_aes_icm_ctx_t *)c->state; + if (ctx) { + /* free any PK11 values that have been created */ + if (ctx->key) { + PK11_FreeSymKey(ctx->key); + ctx->key = NULL; + } + + if (ctx->ctx) { + PK11_DestroyContext(ctx->ctx, PR_TRUE); + ctx->ctx = NULL; + } + + if (ctx->nss) { + NSS_ShutdownContext(ctx->nss); + ctx->nss = NULL; + } + + /* zeroize everything */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_icm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return (srtp_err_status_ok); +} + +/* + * aes_icm_nss_context_init(...) initializes the aes_icm_context + * using the value in key[]. + * + * the key is the secret key + * + * the salt is unpredictable (but not necessarily secret) data which + * randomizes the starting point in the keystream + */ +static srtp_err_status_t srtp_aes_icm_nss_context_init(void *cv, + const uint8_t *key) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + + /* + * set counter and initial values to 'offset' value, being careful not to + * go past the end of the key buffer + */ + v128_set_to_zero(&c->counter); + v128_set_to_zero(&c->offset); + memcpy(&c->counter, key + c->key_size, SRTP_SALT_LEN); + memcpy(&c->offset, key + c->key_size, SRTP_SALT_LEN); + + /* force last two octets of the offset to zero (for srtp compatibility) */ + c->offset.v8[SRTP_SALT_LEN] = c->offset.v8[SRTP_SALT_LEN + 1] = 0; + c->counter.v8[SRTP_SALT_LEN] = c->counter.v8[SRTP_SALT_LEN + 1] = 0; + + debug_print(srtp_mod_aes_icm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + debug_print(srtp_mod_aes_icm, "offset: %s", v128_hex_string(&c->offset)); + + if (c->key) { + PK11_FreeSymKey(c->key); + c->key = NULL; + } + + PK11SlotInfo *slot = PK11_GetBestSlot(CKM_AES_CTR, NULL); + if (!slot) { + return srtp_err_status_bad_param; + } + + /* explicitly cast away const of key */ + SECItem keyItem = { siBuffer, (unsigned char *)(uintptr_t)key, + c->key_size }; + c->key = PK11_ImportSymKey(slot, CKM_AES_CTR, PK11_OriginUnwrap, + CKA_ENCRYPT, &keyItem, NULL); + PK11_FreeSlot(slot); + + if (!c->key) { + return srtp_err_status_cipher_fail; + } + + return (srtp_err_status_ok); +} + +/* + * aes_icm_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ +static srtp_err_status_t srtp_aes_icm_nss_set_iv(void *cv, + uint8_t *iv, + srtp_cipher_direction_t dir) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + v128_t nonce; + (void)dir; + + /* set nonce (for alignment) */ + v128_copy_octet_string(&nonce, iv); + + debug_print(srtp_mod_aes_icm, "setting iv: %s", v128_hex_string(&nonce)); + + v128_xor(&c->counter, &c->offset, &nonce); + + debug_print(srtp_mod_aes_icm, "set_counter: %s", + v128_hex_string(&c->counter)); + + /* set up the PK11 context now that we have all the info */ + CK_AES_CTR_PARAMS param; + param.ulCounterBits = 16; + memcpy(param.cb, &c->counter, 16); + + if (!c->key) { + return srtp_err_status_bad_param; + } + + if (c->ctx) { + PK11_DestroyContext(c->ctx, PR_TRUE); + } + + SECItem paramItem = { siBuffer, (unsigned char *)¶m, + sizeof(CK_AES_CTR_PARAMS) }; + c->ctx = PK11_CreateContextBySymKey(CKM_AES_CTR, CKA_ENCRYPT, c->key, + ¶mItem); + if (!c->ctx) { + return srtp_err_status_cipher_fail; + } + + return srtp_err_status_ok; +} + +/* + * This function encrypts a buffer using AES CTR mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_icm_nss_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + + if (!c->ctx) { + return srtp_err_status_bad_param; + } + + if (dst_len == NULL) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len) { + return srtp_err_status_buffer_small; + } + + int out_len = 0; + int rv = PK11_CipherOp(c->ctx, dst, &out_len, *dst_len, src, src_len); + *dst_len = out_len; + srtp_err_status_t status = srtp_err_status_ok; + if (rv != SECSuccess) { + status = srtp_err_status_cipher_fail; + } + + return status; +} + +/* + * Name of this crypto engine + */ +static const char srtp_aes_icm_128_nss_description[] = + "AES-128 counter mode using NSS"; +static const char srtp_aes_icm_192_nss_description[] = + "AES-192 counter mode using NSS"; +static const char srtp_aes_icm_256_nss_description[] = + "AES-256 counter mode using NSS"; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_128 = { + srtp_aes_icm_nss_alloc, /* */ + srtp_aes_icm_nss_dealloc, /* */ + srtp_aes_icm_nss_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_nss_encrypt, /* */ + srtp_aes_icm_nss_encrypt, /* */ + srtp_aes_icm_nss_set_iv, /* */ + srtp_aes_icm_128_nss_description, /* */ + &srtp_aes_icm_128_test_case_0, /* */ + SRTP_AES_ICM_128 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_192 = { + srtp_aes_icm_nss_alloc, /* */ + srtp_aes_icm_nss_dealloc, /* */ + srtp_aes_icm_nss_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_nss_encrypt, /* */ + srtp_aes_icm_nss_encrypt, /* */ + srtp_aes_icm_nss_set_iv, /* */ + srtp_aes_icm_192_nss_description, /* */ + &srtp_aes_icm_192_test_case_0, /* */ + SRTP_AES_ICM_192 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_256 = { + srtp_aes_icm_nss_alloc, /* */ + srtp_aes_icm_nss_dealloc, /* */ + srtp_aes_icm_nss_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_nss_encrypt, /* */ + srtp_aes_icm_nss_encrypt, /* */ + srtp_aes_icm_nss_set_iv, /* */ + srtp_aes_icm_256_nss_description, /* */ + &srtp_aes_icm_256_test_case_0, /* */ + SRTP_AES_ICM_256 /* */ +}; diff --git a/src/libs/libsrtp/crypto/cipher/aes_icm_ossl.c b/src/libs/libsrtp/crypto/cipher/aes_icm_ossl.c new file mode 100644 index 00000000..8c33347f --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_icm_ossl.c @@ -0,0 +1,391 @@ +/* + * aes_icm_ossl.c + * + * AES Integer Counter Mode + * + * John A. Foley + * Cisco Systems, Inc. + * + * 2/24/2012: This module was modified to use CiscoSSL for AES counter + * mode. Eddy Lem contributed the code to allow this. + * + * 12/20/2012: Added support for AES-192 and AES-256. + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include "aes_icm_ext.h" +#include "crypto_types.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_icm = { + false, /* debugging is off by default */ + "aes icm ossl" /* printable module name */ +}; + +/* + * integer counter mode works as follows: + * + * 16 bits + * <-----> + * +------+------+------+------+------+------+------+------+ + * | nonce | packet index | ctr |---+ + * +------+------+------+------+------+------+------+------+ | + * | + * +------+------+------+------+------+------+------+------+ v + * | salt |000000|->(+) + * +------+------+------+------+------+------+------+------+ | + * | + * +---------+ + * | encrypt | + * +---------+ + * | + * +------+------+------+------+------+------+------+------+ | + * | keystream block |<--+ + * +------+------+------+------+------+------+------+------+ + * + * All fields are big-endian + * + * ctr is the block counter, which increments from zero for + * each packet (16 bits wide) + * + * packet index is distinct for each packet (48 bits wide) + * + * nonce can be distinct across many uses of the same key, or + * can be a fixed value per key, or can be per-packet randomness + * (64 bits) + * + */ + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 30, 38, or 46 for + * AES-128, AES-192, and AES-256 respectively. Note, this key_len + * value is inflated, as it also accounts for the 112 bit salt + * value. The tlen argument is for the AEAD tag length, which + * isn't used in counter mode. + */ +static srtp_err_status_t srtp_aes_icm_openssl_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_icm_ctx_t *icm; + (void)tlen; + + debug_print(srtp_mod_aes_icm, "allocating cipher with key length %zu", + key_len); + + /* + * Verify the key_len is valid for one of: AES-128/192/256 + */ + if (key_len != SRTP_AES_ICM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_192_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_256_KEY_LEN_WSALT) { + return srtp_err_status_bad_param; + } + + /* allocate memory a cipher of type aes_icm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return srtp_err_status_alloc_fail; + } + + icm = (srtp_aes_icm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_icm_ctx_t)); + if (icm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + icm->ctx = EVP_CIPHER_CTX_new(); + if (icm->ctx == NULL) { + srtp_crypto_free(icm); + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + + /* set pointers */ + (*c)->state = icm; + + /* setup cipher parameters */ + switch (key_len) { + case SRTP_AES_ICM_128_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_128; + (*c)->type = &srtp_aes_icm_128; + icm->key_size = SRTP_AES_128_KEY_LEN; + break; + case SRTP_AES_ICM_192_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_192; + (*c)->type = &srtp_aes_icm_192; + icm->key_size = SRTP_AES_192_KEY_LEN; + break; + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_256; + (*c)->type = &srtp_aes_icm_256; + icm->key_size = SRTP_AES_256_KEY_LEN; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return srtp_err_status_ok; +} + +/* + * This function deallocates an instance of this engine + */ +static srtp_err_status_t srtp_aes_icm_openssl_dealloc(srtp_cipher_t *c) +{ + srtp_aes_icm_ctx_t *ctx; + + if (c == NULL) { + return srtp_err_status_bad_param; + } + + /* + * Free the EVP context + */ + ctx = (srtp_aes_icm_ctx_t *)c->state; + if (ctx != NULL) { + EVP_CIPHER_CTX_free(ctx->ctx); + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_icm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return srtp_err_status_ok; +} + +/* + * aes_icm_openssl_context_init(...) initializes the aes_icm_context + * using the value in key[]. + * + * the key is the secret key + * + * the salt is unpredictable (but not necessarily secret) data which + * randomizes the starting point in the keystream + */ +static srtp_err_status_t srtp_aes_icm_openssl_context_init(void *cv, + const uint8_t *key) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + const EVP_CIPHER *evp; + + /* + * set counter and initial values to 'offset' value, being careful not to + * go past the end of the key buffer + */ + v128_set_to_zero(&c->counter); + v128_set_to_zero(&c->offset); + memcpy(&c->counter, key + c->key_size, SRTP_SALT_LEN); + memcpy(&c->offset, key + c->key_size, SRTP_SALT_LEN); + + /* force last two octets of the offset to zero (for srtp compatibility) */ + c->offset.v8[SRTP_SALT_LEN] = c->offset.v8[SRTP_SALT_LEN + 1] = 0; + c->counter.v8[SRTP_SALT_LEN] = c->counter.v8[SRTP_SALT_LEN + 1] = 0; + + debug_print(srtp_mod_aes_icm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + debug_print(srtp_mod_aes_icm, "offset: %s", v128_hex_string(&c->offset)); + + switch (c->key_size) { + case SRTP_AES_256_KEY_LEN: + evp = EVP_aes_256_ctr(); + break; + case SRTP_AES_192_KEY_LEN: + evp = EVP_aes_192_ctr(); + break; + case SRTP_AES_128_KEY_LEN: + evp = EVP_aes_128_ctr(); + break; + default: + return srtp_err_status_bad_param; + break; + } + + EVP_CIPHER_CTX_reset(c->ctx); + + if (!EVP_EncryptInit_ex(c->ctx, evp, NULL, key, NULL)) { + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +/* + * aes_icm_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ +static srtp_err_status_t srtp_aes_icm_openssl_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t dir) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + v128_t nonce; + (void)dir; + + /* set nonce (for alignment) */ + v128_copy_octet_string(&nonce, iv); + + debug_print(srtp_mod_aes_icm, "setting iv: %s", v128_hex_string(&nonce)); + + v128_xor(&c->counter, &c->offset, &nonce); + + debug_print(srtp_mod_aes_icm, "set_counter: %s", + v128_hex_string(&c->counter)); + + if (!EVP_EncryptInit_ex(c->ctx, NULL, NULL, NULL, c->counter.v8)) { + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +/* + * This function encrypts a buffer using AES CTR mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_icm_openssl_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + int len = 0; + + debug_print(srtp_mod_aes_icm, "rs0: %s", v128_hex_string(&c->counter)); + + if (dst_len == NULL) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len) { + return srtp_err_status_buffer_small; + } + + if (!EVP_EncryptUpdate(c->ctx, dst, &len, src, (int)src_len)) { + return srtp_err_status_cipher_fail; + } + *dst_len = len; + + if (!EVP_EncryptFinal_ex(c->ctx, dst + len, &len)) { + return srtp_err_status_cipher_fail; + } + *dst_len += len; + + return srtp_err_status_ok; +} + +/* + * Name of this crypto engine + */ +static const char srtp_aes_icm_128_openssl_description[] = + "AES-128 counter mode using openssl"; +static const char srtp_aes_icm_192_openssl_description[] = + "AES-192 counter mode using openssl"; +static const char srtp_aes_icm_256_openssl_description[] = + "AES-256 counter mode using openssl"; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_128 = { + srtp_aes_icm_openssl_alloc, /* */ + srtp_aes_icm_openssl_dealloc, /* */ + srtp_aes_icm_openssl_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_openssl_encrypt, /* */ + srtp_aes_icm_openssl_encrypt, /* */ + srtp_aes_icm_openssl_set_iv, /* */ + srtp_aes_icm_128_openssl_description, /* */ + &srtp_aes_icm_128_test_case_0, /* */ + SRTP_AES_ICM_128 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_192 = { + srtp_aes_icm_openssl_alloc, /* */ + srtp_aes_icm_openssl_dealloc, /* */ + srtp_aes_icm_openssl_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_openssl_encrypt, /* */ + srtp_aes_icm_openssl_encrypt, /* */ + srtp_aes_icm_openssl_set_iv, /* */ + srtp_aes_icm_192_openssl_description, /* */ + &srtp_aes_icm_192_test_case_0, /* */ + SRTP_AES_ICM_192 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_256 = { + srtp_aes_icm_openssl_alloc, /* */ + srtp_aes_icm_openssl_dealloc, /* */ + srtp_aes_icm_openssl_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_openssl_encrypt, /* */ + srtp_aes_icm_openssl_encrypt, /* */ + srtp_aes_icm_openssl_set_iv, /* */ + srtp_aes_icm_256_openssl_description, /* */ + &srtp_aes_icm_256_test_case_0, /* */ + SRTP_AES_ICM_256 /* */ +}; diff --git a/src/libs/libsrtp/crypto/cipher/aes_icm_wssl.c b/src/libs/libsrtp/crypto/cipher/aes_icm_wssl.c new file mode 100644 index 00000000..b0e07dfc --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/aes_icm_wssl.c @@ -0,0 +1,399 @@ +/* + * aes_icm_wssl.c + * + * AES Integer Counter Mode using wolfSSL + * + * Sean Parkinson, wolfSSL + */ + +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#ifndef WOLFSSL_USER_SETTINGS +#include +#endif +#include +#include +#include "aes_icm_ext.h" +#include "crypto_types.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" +#include "cipher_types.h" +#include "cipher_test_cases.h" + +srtp_debug_module_t srtp_mod_aes_icm = { + 0, /* debugging is off by default */ + "aes icm wssl" /* printable module name */ +}; + +/* + * integer counter mode works as follows: + * + * https://tools.ietf.org/html/rfc3711#section-4.1.1 + * + * E(k, IV) || E(k, IV + 1 mod 2^128) || E(k, IV + 2 mod 2^128) ... + * IV = (k_s * 2^16) XOR (SSRC * 2^64) XOR (i * 2^16) + * + * IV SHALL be defined by the SSRC, the SRTP packet index i, + * and the SRTP session salting key k_s. + * + * SSRC: 32bits. + * Sequence number: 16bits. + * nonce is 64bits. . + * packet index = ROC || SEQ. (ROC: Rollover counter) + * + * 16 bits + * <-----> + * +------+------+------+------+------+------+------+------+ + * | nonce | packet index | ctr |---+ + * +------+------+------+------+------+------+------+------+ | + * | + * +------+------+------+------+------+------+------+------+ v + * | salt |000000|->(+) + * +------+------+------+------+------+------+------+------+ | + * | + * +---------+ + * | encrypt | + * +---------+ + * | + * +------+------+------+------+------+------+------+------+ | + * | keystream block |<--+ + * +------+------+------+------+------+------+------+------+ + * + * All fields are big-endian + * + * ctr is the block counter, which increments from zero for + * each packet (16 bits wide) + * + * packet index is distinct for each packet (48 bits wide) + * + * nonce can be distinct across many uses of the same key, or + * can be a fixed value per key, or can be per-packet randomness + * (64 bits) + * + */ + +/* + * This function allocates a new instance of this crypto engine. + * The key_len parameter should be one of 30, 38, or 46 for + * AES-128, AES-192, and AES-256 respectively. Note, this key_len + * value is inflated, as it also accounts for the 112 bit salt + * value. The tlen argument is for the AEAD tag length, which + * isn't used in counter mode. + */ +static srtp_err_status_t srtp_aes_icm_wolfssl_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + srtp_aes_icm_ctx_t *icm; + (void)tlen; + + debug_print(srtp_mod_aes_icm, "allocating cipher with key length %zu", + key_len); + + /* + * Verify the key_len is valid for one of: AES-128/192/256 + */ + if (key_len != SRTP_AES_ICM_128_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_192_KEY_LEN_WSALT && + key_len != SRTP_AES_ICM_256_KEY_LEN_WSALT) { + return srtp_err_status_bad_param; + } + + /* allocate memory a cipher of type aes_icm */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return srtp_err_status_alloc_fail; + } + + icm = (srtp_aes_icm_ctx_t *)srtp_crypto_alloc(sizeof(srtp_aes_icm_ctx_t)); + if (icm == NULL) { + srtp_crypto_free(*c); + *c = NULL; + return srtp_err_status_alloc_fail; + } + icm->ctx = NULL; + + (*c)->state = icm; + + /* setup cipher parameters */ + switch (key_len) { + case SRTP_AES_ICM_128_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_128; + (*c)->type = &srtp_aes_icm_128; + icm->key_size = SRTP_AES_128_KEY_LEN; + break; + case SRTP_AES_ICM_192_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_192; + (*c)->type = &srtp_aes_icm_192; + icm->key_size = SRTP_AES_192_KEY_LEN; + break; + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + (*c)->algorithm = SRTP_AES_ICM_256; + (*c)->type = &srtp_aes_icm_256; + icm->key_size = SRTP_AES_256_KEY_LEN; + break; + } + + /* set key size */ + (*c)->key_len = key_len; + + return srtp_err_status_ok; +} + +/* + * This function deallocates an instance of this engine + */ +static srtp_err_status_t srtp_aes_icm_wolfssl_dealloc(srtp_cipher_t *c) +{ + srtp_aes_icm_ctx_t *ctx; + + if (c == NULL) { + return srtp_err_status_bad_param; + } + + /* + * Free the aes context + */ + ctx = (srtp_aes_icm_ctx_t *)c->state; + if (ctx != NULL) { + if (ctx->ctx != NULL) { + wc_AesFree(ctx->ctx); + srtp_crypto_free(ctx->ctx); + } + /* zeroize the key material */ + octet_string_set_to_zero(ctx, sizeof(srtp_aes_icm_ctx_t)); + srtp_crypto_free(ctx); + } + + /* free memory */ + srtp_crypto_free(c); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_aes_icm_wolfssl_context_init(void *cv, + const uint8_t *key) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + int err; + + if (c->ctx == NULL) { + c->ctx = (Aes *)srtp_crypto_alloc(sizeof(Aes)); + if (c->ctx == NULL) { + return srtp_err_status_alloc_fail; + } + + err = wc_AesInit(c->ctx, NULL, INVALID_DEVID); + if (err < 0) { + debug_print(srtp_mod_aes_icm, "wolfSSL error code: %d", err); + srtp_crypto_free(c->ctx); + c->ctx = NULL; + return srtp_err_status_init_fail; + } + } + + /* set pointers */ + /* + * set counter and initial values to 'offset' value, being careful not to + * go past the end of the key buffer + */ + v128_set_to_zero(&c->counter); + v128_set_to_zero(&c->offset); + memcpy(&c->counter, key + c->key_size, SRTP_SALT_LEN); + memcpy(&c->offset, key + c->key_size, SRTP_SALT_LEN); + + /* force last two octets of the offset to zero (for srtp compatibility) */ + c->offset.v8[SRTP_SALT_LEN] = c->offset.v8[SRTP_SALT_LEN + 1] = 0; + c->counter.v8[SRTP_SALT_LEN] = c->counter.v8[SRTP_SALT_LEN + 1] = 0; + debug_print(srtp_mod_aes_icm, "key: %s", + srtp_octet_string_hex_string(key, c->key_size)); + debug_print(srtp_mod_aes_icm, "offset: %s", v128_hex_string(&c->offset)); + + switch (c->key_size) { + case SRTP_AES_256_KEY_LEN: + case SRTP_AES_192_KEY_LEN: + case SRTP_AES_128_KEY_LEN: + break; + default: + return srtp_err_status_bad_param; + break; + } + + /* Store key. */ + if (c->key_size > sizeof(c->key)) { + return srtp_err_status_bad_param; + } + memcpy(c->key, key, c->key_size); + + return srtp_err_status_ok; +} + +/* + * aes_icm_set_iv(c, iv) sets the counter value to the exor of iv with + * the offset + */ +static srtp_err_status_t srtp_aes_icm_wolfssl_set_iv( + void *cv, + uint8_t *iv, + srtp_cipher_direction_t dir) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + v128_t nonce; + int err; + (void)dir; + + /* set nonce (for alignment) */ + v128_copy_octet_string(&nonce, iv); + + debug_print(srtp_mod_aes_icm, "setting iv: %s", v128_hex_string(&nonce)); + + v128_xor(&c->counter, &c->offset, &nonce); + + debug_print(srtp_mod_aes_icm, "set_counter: %s", + v128_hex_string(&c->counter)); + + /* Counter mode always encrypts. */ + err = wc_AesSetKey(c->ctx, c->key, c->key_size, c->counter.v8, + AES_ENCRYPTION); + if (err < 0) { + debug_print(srtp_mod_aes_icm, "wolfSSL error code: %d", err); + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +/* + * This function encrypts a buffer using AES CTR mode + * + * Parameters: + * c Crypto context + * buf data to encrypt + * enc_len length of encrypt buffer + */ +static srtp_err_status_t srtp_aes_icm_wolfssl_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + srtp_aes_icm_ctx_t *c = (srtp_aes_icm_ctx_t *)cv; + + int err; + debug_print(srtp_mod_aes_icm, "rs0: %s", v128_hex_string(&c->counter)); + + if (dst_len == NULL) { + return srtp_err_status_bad_param; + } + + if (*dst_len < src_len) { + return srtp_err_status_buffer_small; + } + + err = wc_AesCtrEncrypt(c->ctx, dst, src, src_len); + if (err < 0) { + debug_print(srtp_mod_aes_icm, "wolfSSL encrypt error: %d", err); + return srtp_err_status_cipher_fail; + } + *dst_len = src_len; + + return srtp_err_status_ok; +} + +/* + * Name of this crypto engine + */ +static const char srtp_aes_icm_128_wolfssl_description[] = + "AES-128 counter mode using wolfSSL"; +static const char srtp_aes_icm_192_wolfssl_description[] = + "AES-192 counter mode using wolfSSL"; +static const char srtp_aes_icm_256_wolfssl_description[] = + "AES-256 counter mode using wolfSSL"; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_128 = { + srtp_aes_icm_wolfssl_alloc, /* */ + srtp_aes_icm_wolfssl_dealloc, /* */ + srtp_aes_icm_wolfssl_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_wolfssl_encrypt, /* */ + srtp_aes_icm_wolfssl_encrypt, /* */ + srtp_aes_icm_wolfssl_set_iv, /* */ + srtp_aes_icm_128_wolfssl_description, /* */ + &srtp_aes_icm_128_test_case_0, /* */ + SRTP_AES_ICM_128 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_192 = { + srtp_aes_icm_wolfssl_alloc, /* */ + srtp_aes_icm_wolfssl_dealloc, /* */ + srtp_aes_icm_wolfssl_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_wolfssl_encrypt, /* */ + srtp_aes_icm_wolfssl_encrypt, /* */ + srtp_aes_icm_wolfssl_set_iv, /* */ + srtp_aes_icm_192_wolfssl_description, /* */ + &srtp_aes_icm_192_test_case_0, /* */ + SRTP_AES_ICM_192 /* */ +}; + +/* + * This is the function table for this crypto engine. + * note: the encrypt function is identical to the decrypt function + */ +const srtp_cipher_type_t srtp_aes_icm_256 = { + srtp_aes_icm_wolfssl_alloc, /* */ + srtp_aes_icm_wolfssl_dealloc, /* */ + srtp_aes_icm_wolfssl_context_init, /* */ + 0, /* set_aad */ + srtp_aes_icm_wolfssl_encrypt, /* */ + srtp_aes_icm_wolfssl_encrypt, /* */ + srtp_aes_icm_wolfssl_set_iv, /* */ + srtp_aes_icm_256_wolfssl_description, /* */ + &srtp_aes_icm_256_test_case_0, /* */ + SRTP_AES_ICM_256 /* */ +}; diff --git a/src/libs/libsrtp/crypto/cipher/cipher.c b/src/libs/libsrtp/crypto/cipher/cipher.c new file mode 100644 index 00000000..3cc59618 --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/cipher.c @@ -0,0 +1,651 @@ +/* + * cipher.c + * + * cipher meta-functions + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "cipher.h" +#include "cipher_priv.h" +#include "crypto_types.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" /* for crypto_alloc(), crypto_free() */ + +#include + +srtp_debug_module_t srtp_mod_cipher = { + false, /* debugging is off by default */ + "cipher" /* printable module name */ +}; + +srtp_err_status_t srtp_cipher_type_alloc(const srtp_cipher_type_t *ct, + srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + if (!ct || !ct->alloc) { + return (srtp_err_status_bad_param); + } + return ((ct)->alloc((c), (key_len), (tlen))); +} + +srtp_err_status_t srtp_cipher_dealloc(srtp_cipher_t *c) +{ + if (!c || !c->type) { + return (srtp_err_status_bad_param); + } + return (((c)->type)->dealloc(c)); +} + +srtp_err_status_t srtp_cipher_init(srtp_cipher_t *c, const uint8_t *key) +{ + if (!c || !c->type || !c->state) { + return (srtp_err_status_bad_param); + } + return (((c)->type)->init(((c)->state), (key))); +} + +srtp_err_status_t srtp_cipher_set_iv(srtp_cipher_t *c, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + if (!c || !c->type || !c->state) { + return (srtp_err_status_bad_param); + } + + return (((c)->type)->set_iv(((c)->state), iv, direction)); +} + +srtp_err_status_t srtp_cipher_output(srtp_cipher_t *c, + uint8_t *buffer, + size_t *num_octets_to_output) +{ + /* zeroize the buffer */ + octet_string_set_to_zero(buffer, *num_octets_to_output); + + /* exor keystream into buffer */ + return (((c)->type)->encrypt(((c)->state), buffer, *num_octets_to_output, + buffer, num_octets_to_output)); +} + +srtp_err_status_t srtp_cipher_encrypt(srtp_cipher_t *c, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + if (!c || !c->type || !c->state) { + return (srtp_err_status_bad_param); + } + + return (((c)->type)->encrypt(((c)->state), src, src_len, dst, dst_len)); +} + +srtp_err_status_t srtp_cipher_decrypt(srtp_cipher_t *c, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + if (!c || !c->type || !c->state) { + return (srtp_err_status_bad_param); + } + + return (((c)->type)->decrypt(((c)->state), src, src_len, dst, dst_len)); +} + +srtp_err_status_t srtp_cipher_set_aad(srtp_cipher_t *c, + const uint8_t *aad, + size_t aad_len) +{ + if (!c || !c->type || !c->state) { + return (srtp_err_status_bad_param); + } + if (!((c)->type)->set_aad) { + return (srtp_err_status_no_such_op); + } + + return (((c)->type)->set_aad(((c)->state), aad, aad_len)); +} + +/* some bookkeeping functions */ + +size_t srtp_cipher_get_key_length(const srtp_cipher_t *c) +{ + return c->key_len; +} + +/* + * A trivial platform independent random source. + * For use in test only. + */ +void srtp_cipher_rand_for_tests(uint8_t *dest, size_t len) +{ + /* Generic C-library (rand()) version */ + /* This is a random source of last resort */ + while (len) { + int val = rand(); + /* rand() returns 0-32767 (ugh) */ + /* Is this a good enough way to get random bytes? + It is if it passes FIPS-140... */ + *dest++ = val & 0xff; + len--; + } +} + +/* + * A trivial platform independent 32 bit random number. + * For use in test only. + */ +uint32_t srtp_cipher_rand_u32_for_tests(void) +{ + uint32_t r; + srtp_cipher_rand_for_tests((uint8_t *)&r, sizeof(r)); + return r; +} + +#define SELF_TEST_BUF_OCTETS 128 +#define NUM_RAND_TESTS 128 +#define MAX_KEY_LEN 64 +/* + * srtp_cipher_type_test(ct, test_data) tests a cipher of type ct against + * test cases provided in a list test_data of values of key, salt, iv, + * plaintext, and ciphertext that is known to be good + */ +srtp_err_status_t srtp_cipher_type_test( + const srtp_cipher_type_t *ct, + const srtp_cipher_test_case_t *test_data) +{ + const srtp_cipher_test_case_t *test_case = test_data; + srtp_cipher_t *c; + srtp_err_status_t status; + uint8_t buffer[SELF_TEST_BUF_OCTETS]; + uint8_t buffer2[SELF_TEST_BUF_OCTETS]; + size_t len; + size_t case_num = 0; + + debug_print(srtp_mod_cipher, "running self-test for cipher %s", + ct->description); + + /* + * check to make sure that we have at least one test case, and + * return an error if we don't - we need to be paranoid here + */ + if (test_case == NULL) { + return srtp_err_status_cant_check; + } + + /* + * loop over all test cases, perform known-answer tests of both the + * encryption and decryption functions + */ + while (test_case != NULL) { + /* allocate cipher */ + status = srtp_cipher_type_alloc(ct, &c, test_case->key_length_octets, + test_case->tag_length_octets); + if (status) { + return status; + } + + /* + * test the encrypt function + */ + debug_print0(srtp_mod_cipher, "testing encryption"); + + /* initialize cipher */ + status = srtp_cipher_init(c, test_case->key); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + /* copy plaintext into test buffer */ + if (test_case->ciphertext_length_octets > SELF_TEST_BUF_OCTETS) { + srtp_cipher_dealloc(c); + return srtp_err_status_bad_param; + } + for (size_t k = 0; k < test_case->plaintext_length_octets; k++) { + buffer[k] = test_case->plaintext[k]; + } + + debug_print(srtp_mod_cipher, "plaintext: %s", + srtp_octet_string_hex_string( + buffer, test_case->plaintext_length_octets)); + + /* set the initialization vector */ + status = srtp_cipher_set_iv(c, test_case->idx, srtp_direction_encrypt); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + if (c->algorithm == SRTP_AES_GCM_128 || + c->algorithm == SRTP_AES_GCM_256) { + debug_print(srtp_mod_cipher, "IV: %s", + srtp_octet_string_hex_string(test_case->idx, 12)); + + /* + * Set the AAD + */ + status = srtp_cipher_set_aad(c, test_case->aad, + test_case->aad_length_octets); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + debug_print(srtp_mod_cipher, "AAD: %s", + srtp_octet_string_hex_string( + test_case->aad, test_case->aad_length_octets)); + } + + /* encrypt */ + len = sizeof(buffer); + status = srtp_cipher_encrypt( + c, buffer, test_case->plaintext_length_octets, buffer, &len); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + debug_print(srtp_mod_cipher, "ciphertext: %s", + srtp_octet_string_hex_string( + buffer, test_case->ciphertext_length_octets)); + + /* compare the resulting ciphertext with that in the test case */ + if (len != test_case->ciphertext_length_octets) { + srtp_cipher_dealloc(c); + return srtp_err_status_algo_fail; + } + status = srtp_err_status_ok; + for (size_t k = 0; k < test_case->ciphertext_length_octets; k++) { + if (buffer[k] != test_case->ciphertext[k]) { + status = srtp_err_status_algo_fail; + debug_print(srtp_mod_cipher, "test case %zu failed", case_num); + debug_print(srtp_mod_cipher, "(failure at byte %zu)", k); + break; + } + } + if (status) { + debug_print(srtp_mod_cipher, "c computed: %s", + srtp_octet_string_hex_string( + buffer, 2 * test_case->plaintext_length_octets)); + debug_print(srtp_mod_cipher, "c expected: %s", + srtp_octet_string_hex_string( + test_case->ciphertext, + 2 * test_case->plaintext_length_octets)); + + srtp_cipher_dealloc(c); + return srtp_err_status_algo_fail; + } + + /* + * test the decrypt function + */ + debug_print0(srtp_mod_cipher, "testing decryption"); + + /* re-initialize cipher for decryption */ + status = srtp_cipher_init(c, test_case->key); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + /* copy ciphertext into test buffer */ + if (test_case->ciphertext_length_octets > SELF_TEST_BUF_OCTETS) { + srtp_cipher_dealloc(c); + return srtp_err_status_bad_param; + } + for (size_t k = 0; k < test_case->ciphertext_length_octets; k++) { + buffer[k] = test_case->ciphertext[k]; + } + + debug_print(srtp_mod_cipher, "ciphertext: %s", + srtp_octet_string_hex_string( + buffer, test_case->plaintext_length_octets)); + + /* set the initialization vector */ + status = srtp_cipher_set_iv(c, test_case->idx, srtp_direction_decrypt); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + if (c->algorithm == SRTP_AES_GCM_128 || + c->algorithm == SRTP_AES_GCM_256) { + /* + * Set the AAD + */ + status = srtp_cipher_set_aad(c, test_case->aad, + test_case->aad_length_octets); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + debug_print(srtp_mod_cipher, "AAD: %s", + srtp_octet_string_hex_string( + test_case->aad, test_case->aad_length_octets)); + } + + /* decrypt */ + len = sizeof(buffer); + status = srtp_cipher_decrypt( + c, buffer, test_case->ciphertext_length_octets, buffer, &len); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + debug_print(srtp_mod_cipher, "plaintext: %s", + srtp_octet_string_hex_string( + buffer, test_case->plaintext_length_octets)); + + /* compare the resulting plaintext with that in the test case */ + if (len != test_case->plaintext_length_octets) { + srtp_cipher_dealloc(c); + return srtp_err_status_algo_fail; + } + status = srtp_err_status_ok; + for (size_t k = 0; k < test_case->plaintext_length_octets; k++) { + if (buffer[k] != test_case->plaintext[k]) { + status = srtp_err_status_algo_fail; + debug_print(srtp_mod_cipher, "test case %zu failed", case_num); + debug_print(srtp_mod_cipher, "(failure at byte %zu)", k); + } + } + if (status) { + debug_print(srtp_mod_cipher, "p computed: %s", + srtp_octet_string_hex_string( + buffer, 2 * test_case->plaintext_length_octets)); + debug_print(srtp_mod_cipher, "p expected: %s", + srtp_octet_string_hex_string( + test_case->plaintext, + 2 * test_case->plaintext_length_octets)); + + srtp_cipher_dealloc(c); + return srtp_err_status_algo_fail; + } + + /* deallocate the cipher */ + status = srtp_cipher_dealloc(c); + if (status) { + return status; + } + + /* + * the cipher passed the test case, so move on to the next test + * case in the list; if NULL, we'l proceed to the next test + */ + test_case = test_case->next_test_case; + ++case_num; + } + + /* now run some random invertibility tests */ + + /* allocate cipher, using paramaters from the first test case */ + test_case = test_data; + status = srtp_cipher_type_alloc(ct, &c, test_case->key_length_octets, + test_case->tag_length_octets); + if (status) { + return status; + } + + for (size_t j = 0; j < NUM_RAND_TESTS; j++) { + size_t plaintext_len; + size_t encrypted_len; + size_t decrypted_len; + uint8_t key[MAX_KEY_LEN]; + uint8_t iv[MAX_KEY_LEN]; + + /* choose a length at random (leaving room for IV and padding) */ + plaintext_len = + srtp_cipher_rand_u32_for_tests() % (SELF_TEST_BUF_OCTETS - 64); + debug_print(srtp_mod_cipher, "random plaintext length %zu\n", + plaintext_len); + srtp_cipher_rand_for_tests(buffer, plaintext_len); + + debug_print(srtp_mod_cipher, "plaintext: %s", + srtp_octet_string_hex_string(buffer, plaintext_len)); + + /* copy plaintext into second buffer */ + for (size_t i = 0; i < plaintext_len; i++) { + buffer2[i] = buffer[i]; + } + + /* choose a key at random */ + if (test_case->key_length_octets > MAX_KEY_LEN) { + srtp_cipher_dealloc(c); + return srtp_err_status_cant_check; + } + srtp_cipher_rand_for_tests(key, test_case->key_length_octets); + + /* chose a random initialization vector */ + srtp_cipher_rand_for_tests(iv, MAX_KEY_LEN); + + /* initialize cipher */ + status = srtp_cipher_init(c, key); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + /* set initialization vector */ + status = srtp_cipher_set_iv(c, test_case->idx, srtp_direction_encrypt); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + if (c->algorithm == SRTP_AES_GCM_128 || + c->algorithm == SRTP_AES_GCM_256) { + /* + * Set the AAD + */ + status = srtp_cipher_set_aad(c, test_case->aad, + test_case->aad_length_octets); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + debug_print(srtp_mod_cipher, "AAD: %s", + srtp_octet_string_hex_string( + test_case->aad, test_case->aad_length_octets)); + } + + /* encrypt buffer with cipher */ + encrypted_len = sizeof(buffer); + status = srtp_cipher_encrypt(c, buffer, plaintext_len, buffer, + &encrypted_len); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + debug_print(srtp_mod_cipher, "ciphertext: %s", + srtp_octet_string_hex_string(buffer, encrypted_len)); + + /* + * re-initialize cipher for decryption, re-set the iv, then + * decrypt the ciphertext + */ + status = srtp_cipher_init(c, key); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + status = srtp_cipher_set_iv(c, (uint8_t *)test_case->idx, + srtp_direction_decrypt); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + if (c->algorithm == SRTP_AES_GCM_128 || + c->algorithm == SRTP_AES_GCM_256) { + /* + * Set the AAD + */ + status = srtp_cipher_set_aad(c, test_case->aad, + test_case->aad_length_octets); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + debug_print(srtp_mod_cipher, "AAD: %s", + srtp_octet_string_hex_string( + test_case->aad, test_case->aad_length_octets)); + } + decrypted_len = sizeof(buffer); + status = srtp_cipher_decrypt(c, buffer, encrypted_len, buffer, + &decrypted_len); + if (status) { + srtp_cipher_dealloc(c); + return status; + } + + debug_print(srtp_mod_cipher, "plaintext[2]: %s", + srtp_octet_string_hex_string(buffer, decrypted_len)); + + /* compare the resulting plaintext with the original one */ + if (decrypted_len != plaintext_len) { + srtp_cipher_dealloc(c); + return srtp_err_status_algo_fail; + } + status = srtp_err_status_ok; + for (size_t k = 0; k < plaintext_len; k++) { + if (buffer[k] != buffer2[k]) { + status = srtp_err_status_algo_fail; + debug_print(srtp_mod_cipher, "random test case %zu failed", + case_num); + debug_print(srtp_mod_cipher, "(failure at byte %zu)", k); + } + } + if (status) { + srtp_cipher_dealloc(c); + return srtp_err_status_algo_fail; + } + } + + status = srtp_cipher_dealloc(c); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* + * srtp_cipher_type_self_test(ct) performs srtp_cipher_type_test on ct's + * internal list of test data. + */ +srtp_err_status_t srtp_cipher_type_self_test(const srtp_cipher_type_t *ct) +{ + return srtp_cipher_type_test(ct, ct->test_data); +} + +/* + * cipher_bits_per_second(c, l, t) computes (an estimate of) the + * number of bits that a cipher implementation can encrypt in a second + * + * c is a cipher (which MUST be allocated and initialized already), l + * is the length in octets of the test data to be encrypted, and t is + * the number of trials + * + * if an error is encountered, the value 0 is returned + */ +uint64_t srtp_cipher_bits_per_second(srtp_cipher_t *c, + size_t octets_in_buffer, + size_t num_trials) +{ + v128_t nonce; + clock_t timer; + uint8_t *enc_buf; + size_t len = octets_in_buffer; + size_t out_len; + size_t tag_len = SRTP_MAX_TAG_LEN; + uint8_t aad[4] = { 0, 0, 0, 0 }; + size_t aad_len = 4; + + enc_buf = (uint8_t *)srtp_crypto_alloc(octets_in_buffer + tag_len); + if (enc_buf == NULL) { + return 0; /* indicate bad parameters by returning null */ + } + /* time repeated trials */ + v128_set_to_zero(&nonce); + timer = clock(); + for (size_t i = 0; i < num_trials; i++, nonce.v32[3] = (uint32_t)i) { + // Set IV + if (srtp_cipher_set_iv(c, (uint8_t *)&nonce, srtp_direction_encrypt) != + srtp_err_status_ok) { + srtp_crypto_free(enc_buf); + return 0; + } + + // Set (empty) AAD if supported by the cipher + if (c->type->set_aad) { + if (srtp_cipher_set_aad(c, aad, aad_len) != srtp_err_status_ok) { + srtp_crypto_free(enc_buf); + return 0; + } + } + + // Encrypt the buffer + out_len = octets_in_buffer + tag_len; + if (srtp_cipher_encrypt(c, enc_buf, len, enc_buf, &out_len) != + srtp_err_status_ok) { + srtp_crypto_free(enc_buf); + return 0; + } + } + timer = clock() - timer; + + srtp_crypto_free(enc_buf); + + if (timer == 0) { + /* Too fast! */ + return 0; + } + + return (uint64_t)CLOCKS_PER_SEC * num_trials * 8 * octets_in_buffer / timer; +} diff --git a/src/libs/libsrtp/crypto/cipher/cipher_test_cases.c b/src/libs/libsrtp/crypto/cipher/cipher_test_cases.c new file mode 100644 index 00000000..e4b8f0fc --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/cipher_test_cases.c @@ -0,0 +1,365 @@ +/* + * + * Copyright (c) 2013-2021, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "cipher_test_cases.h" +#include + +/* + * KAT values for AES self-test. These + * values came from the legacy libsrtp code. + */ +/* clang-format off */ +static const uint8_t srtp_aes_icm_128_test_case_0_key[SRTP_AES_ICM_128_KEY_LEN_WSALT] = { + 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd +}; +/* clang-format on */ + +/* clang-format off */ +static uint8_t srtp_aes_icm_128_test_case_0_nonce[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_icm_128_test_case_0_plaintext[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_icm_128_test_case_0_ciphertext[32] = { + 0xe0, 0x3e, 0xad, 0x09, 0x35, 0xc9, 0x5e, 0x80, + 0xe1, 0x66, 0xb1, 0x6d, 0xd9, 0x2b, 0x4e, 0xb4, + 0xd2, 0x35, 0x13, 0x16, 0x2b, 0x02, 0xd0, 0xf7, + 0x2a, 0x43, 0xa2, 0xfe, 0x4a, 0x5f, 0x97, 0xab +}; +/* clang-format on */ + +const srtp_cipher_test_case_t srtp_aes_icm_128_test_case_0 = { + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_icm_128_test_case_0_key, /* key */ + srtp_aes_icm_128_test_case_0_nonce, /* packet index */ + 32, /* octets in plaintext */ + srtp_aes_icm_128_test_case_0_plaintext, /* plaintext */ + 32, /* octets in ciphertext */ + srtp_aes_icm_128_test_case_0_ciphertext, /* ciphertext */ + 0, /* */ + NULL, /* */ + 0, /* */ + NULL /* pointer to next testcase */ +}; + +/* + * KAT values for AES-192-CTR self-test. These + * values came from section 7 of RFC 6188. + */ +/* clang-format off */ +static const uint8_t srtp_aes_icm_192_test_case_0_key[SRTP_AES_ICM_192_KEY_LEN_WSALT] = { + 0xea, 0xb2, 0x34, 0x76, 0x4e, 0x51, 0x7b, 0x2d, + 0x3d, 0x16, 0x0d, 0x58, 0x7d, 0x8c, 0x86, 0x21, + 0x97, 0x40, 0xf6, 0x5f, 0x99, 0xb6, 0xbc, 0xf7, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd +}; +/* clang-format on */ + +/* clang-format off */ +static uint8_t srtp_aes_icm_192_test_case_0_nonce[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_icm_192_test_case_0_plaintext[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_icm_192_test_case_0_ciphertext[32] = { + 0x35, 0x09, 0x6c, 0xba, 0x46, 0x10, 0x02, 0x8d, + 0xc1, 0xb5, 0x75, 0x03, 0x80, 0x4c, 0xe3, 0x7c, + 0x5d, 0xe9, 0x86, 0x29, 0x1d, 0xcc, 0xe1, 0x61, + 0xd5, 0x16, 0x5e, 0xc4, 0x56, 0x8f, 0x5c, 0x9a +}; +/* clang-format on */ + +const srtp_cipher_test_case_t srtp_aes_icm_192_test_case_0 = { + SRTP_AES_ICM_192_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_icm_192_test_case_0_key, /* key */ + srtp_aes_icm_192_test_case_0_nonce, /* packet index */ + 32, /* octets in plaintext */ + srtp_aes_icm_192_test_case_0_plaintext, /* plaintext */ + 32, /* octets in ciphertext */ + srtp_aes_icm_192_test_case_0_ciphertext, /* ciphertext */ + 0, /* */ + NULL, /* */ + 0, /* */ + NULL /* pointer to next testcase */ +}; + +/* + * KAT values for AES-256-CTR self-test. These + * values came from section 7 of RFC 6188. + */ +/* clang-format off */ +static const uint8_t srtp_aes_icm_256_test_case_0_key[SRTP_AES_ICM_256_KEY_LEN_WSALT] = { + 0x57, 0xf8, 0x2f, 0xe3, 0x61, 0x3f, 0xd1, 0x70, + 0xa8, 0x5e, 0xc9, 0x3c, 0x40, 0xb1, 0xf0, 0x92, + 0x2e, 0xc4, 0xcb, 0x0d, 0xc0, 0x25, 0xb5, 0x82, + 0x72, 0x14, 0x7c, 0xc4, 0x38, 0x94, 0x4a, 0x98, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd +}; +/* clang-format on */ + +/* clang-format off */ +static uint8_t srtp_aes_icm_256_test_case_0_nonce[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_icm_256_test_case_0_plaintext[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_icm_256_test_case_0_ciphertext[32] = { + 0x92, 0xbd, 0xd2, 0x8a, 0x93, 0xc3, 0xf5, 0x25, + 0x11, 0xc6, 0x77, 0xd0, 0x8b, 0x55, 0x15, 0xa4, + 0x9d, 0xa7, 0x1b, 0x23, 0x78, 0xa8, 0x54, 0xf6, + 0x70, 0x50, 0x75, 0x6d, 0xed, 0x16, 0x5b, 0xac +}; +/* clang-format on */ + +const srtp_cipher_test_case_t srtp_aes_icm_256_test_case_0 = { + SRTP_AES_ICM_256_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_icm_256_test_case_0_key, /* key */ + srtp_aes_icm_256_test_case_0_nonce, /* packet index */ + 32, /* octets in plaintext */ + srtp_aes_icm_256_test_case_0_plaintext, /* plaintext */ + 32, /* octets in ciphertext */ + srtp_aes_icm_256_test_case_0_ciphertext, /* ciphertext */ + 0, /* */ + NULL, /* */ + 0, /* */ + NULL /* pointer to next testcase */ +}; + +/* + * KAT values for AES self-test. These + * values we're derived from independent test code + * using OpenSSL. + */ +/* clang-format off */ +static const uint8_t srtp_aes_gcm_128_test_case_0_key[SRTP_AES_GCM_128_KEY_LEN_WSALT] = { + 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, + 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, +}; +/* clang-format on */ + +/* clang-format off */ +static uint8_t srtp_aes_gcm_128_test_case_0_iv[12] = { + 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, + 0xde, 0xca, 0xf8, 0x88 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_128_test_case_0_plaintext[60] = { + 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, + 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, + 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, + 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, + 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, + 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, + 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, + 0xba, 0x63, 0x7b, 0x39 +}; + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_128_test_case_0_aad[20] = { + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xab, 0xad, 0xda, 0xd2 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_128_test_case_0_ciphertext[76] = { + 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, + 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, + 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, + 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, + 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, + 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, + 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, + 0x3d, 0x58, 0xe0, 0x91, + /* the last 16 bytes are the tag */ + 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, + 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47, +}; +/* clang-format on */ + +static const srtp_cipher_test_case_t srtp_aes_gcm_128_test_case_0a = { + SRTP_AES_GCM_128_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_gcm_128_test_case_0_key, /* key */ + srtp_aes_gcm_128_test_case_0_iv, /* packet index */ + 60, /* octets in plaintext */ + srtp_aes_gcm_128_test_case_0_plaintext, /* plaintext */ + 68, /* octets in ciphertext */ + srtp_aes_gcm_128_test_case_0_ciphertext, /* ciphertext + tag */ + 20, /* octets in AAD */ + srtp_aes_gcm_128_test_case_0_aad, /* AAD */ + 8, /* */ + NULL /* pointer to next testcase */ +}; + +const srtp_cipher_test_case_t srtp_aes_gcm_128_test_case_0 = { + SRTP_AES_GCM_128_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_gcm_128_test_case_0_key, /* key */ + srtp_aes_gcm_128_test_case_0_iv, /* packet index */ + 60, /* octets in plaintext */ + srtp_aes_gcm_128_test_case_0_plaintext, /* plaintext */ + 76, /* octets in ciphertext */ + srtp_aes_gcm_128_test_case_0_ciphertext, /* ciphertext + tag */ + 20, /* octets in AAD */ + srtp_aes_gcm_128_test_case_0_aad, /* AAD */ + 16, /* */ + &srtp_aes_gcm_128_test_case_0a /* pointer to next testcase */ +}; + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_256_test_case_0_key[SRTP_AES_GCM_256_KEY_LEN_WSALT] = { + 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, + 0xa5, 0x59, 0x09, 0xc5, 0x54, 0x66, 0x93, 0x1c, + 0xaf, 0xf5, 0x26, 0x9a, 0x21, 0xd5, 0x14, 0xb2, + 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, +}; +/* clang-format on */ + +/* clang-format off */ +static uint8_t srtp_aes_gcm_256_test_case_0_iv[12] = { + 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, + 0xde, 0xca, 0xf8, 0x88 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_256_test_case_0_plaintext[60] = { + 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, + 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, + 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, + 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, + 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, + 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, + 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, + 0xba, 0x63, 0x7b, 0x39 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_256_test_case_0_aad[20] = { + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xab, 0xad, 0xda, 0xd2 +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_aes_gcm_256_test_case_0_ciphertext[76] = { + 0x0b, 0x11, 0xcf, 0xaf, 0x68, 0x4d, 0xae, 0x46, + 0xc7, 0x90, 0xb8, 0x8e, 0xb7, 0x6a, 0x76, 0x2a, + 0x94, 0x82, 0xca, 0xab, 0x3e, 0x39, 0xd7, 0x86, + 0x1b, 0xc7, 0x93, 0xed, 0x75, 0x7f, 0x23, 0x5a, + 0xda, 0xfd, 0xd3, 0xe2, 0x0e, 0x80, 0x87, 0xa9, + 0x6d, 0xd7, 0xe2, 0x6a, 0x7d, 0x5f, 0xb4, 0x80, + 0xef, 0xef, 0xc5, 0x29, 0x12, 0xd1, 0xaa, 0x10, + 0x09, 0xc9, 0x86, 0xc1, + /* the last 16 bytes are the tag */ + 0x45, 0xbc, 0x03, 0xe6, 0xe1, 0xac, 0x0a, 0x9f, + 0x81, 0xcb, 0x8e, 0x5b, 0x46, 0x65, 0x63, 0x1d, +}; +/* clang-format on */ + +static const srtp_cipher_test_case_t srtp_aes_gcm_256_test_case_0a = { + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_gcm_256_test_case_0_key, /* key */ + srtp_aes_gcm_256_test_case_0_iv, /* packet index */ + 60, /* octets in plaintext */ + srtp_aes_gcm_256_test_case_0_plaintext, /* plaintext */ + 68, /* octets in ciphertext */ + srtp_aes_gcm_256_test_case_0_ciphertext, /* ciphertext + tag */ + 20, /* octets in AAD */ + srtp_aes_gcm_256_test_case_0_aad, /* AAD */ + 8, /* */ + NULL /* pointer to next testcase */ +}; + +const srtp_cipher_test_case_t srtp_aes_gcm_256_test_case_0 = { + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* octets in key */ + srtp_aes_gcm_256_test_case_0_key, /* key */ + srtp_aes_gcm_256_test_case_0_iv, /* packet index */ + 60, /* octets in plaintext */ + srtp_aes_gcm_256_test_case_0_plaintext, /* plaintext */ + 76, /* octets in ciphertext */ + srtp_aes_gcm_256_test_case_0_ciphertext, /* ciphertext + tag */ + 20, /* octets in AAD */ + srtp_aes_gcm_256_test_case_0_aad, /* AAD */ + 16, /* */ + &srtp_aes_gcm_256_test_case_0a /* pointer to next testcase */ +}; diff --git a/src/libs/libsrtp/crypto/cipher/cipher_test_cases.h b/src/libs/libsrtp/crypto/cipher/cipher_test_cases.h new file mode 100644 index 00000000..3c5d54c4 --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/cipher_test_cases.h @@ -0,0 +1,53 @@ +/* + * + * Copyright (c) 2013-2021, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CIPHER_TEST_CASES_H +#define CIPHER_TEST_CASES_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "cipher.h" + +extern const srtp_cipher_test_case_t srtp_aes_icm_128_test_case_0; +extern const srtp_cipher_test_case_t srtp_aes_icm_192_test_case_0; +extern const srtp_cipher_test_case_t srtp_aes_icm_256_test_case_0; + +extern const srtp_cipher_test_case_t srtp_aes_gcm_128_test_case_0; +extern const srtp_cipher_test_case_t srtp_aes_gcm_256_test_case_0; + +#endif diff --git a/src/libs/libsrtp/crypto/cipher/null_cipher.c b/src/libs/libsrtp/crypto/cipher/null_cipher.c new file mode 100644 index 00000000..6337c34e --- /dev/null +++ b/src/libs/libsrtp/crypto/cipher/null_cipher.c @@ -0,0 +1,166 @@ +/* + * null_cipher.c + * + * A null cipher implementation. This cipher leaves the plaintext + * unchanged. + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "datatypes.h" +#include "null_cipher.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" +#include "cipher_types.h" + +static srtp_err_status_t srtp_null_cipher_alloc(srtp_cipher_t **c, + size_t key_len, + size_t tlen) +{ + extern const srtp_cipher_type_t srtp_null_cipher; + (void)tlen; + + debug_print(srtp_mod_cipher, "allocating cipher with key length %zu", + key_len); + + /* allocate memory a cipher of type null_cipher */ + *c = (srtp_cipher_t *)srtp_crypto_alloc(sizeof(srtp_cipher_t)); + if (*c == NULL) { + return srtp_err_status_alloc_fail; + } + + /* set pointers */ + (*c)->algorithm = SRTP_NULL_CIPHER; + (*c)->type = &srtp_null_cipher; + (*c)->state = (void *)0x1; /* The null cipher does not maintain state */ + + /* set key size */ + (*c)->key_len = key_len; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_cipher_dealloc(srtp_cipher_t *c) +{ + extern const srtp_cipher_type_t srtp_null_cipher; + + /* zeroize entire state*/ + octet_string_set_to_zero(c, sizeof(srtp_cipher_t)); + + /* free memory of type null_cipher */ + srtp_crypto_free(c); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_cipher_init(void *cv, const uint8_t *key) +{ + /* srtp_null_cipher_ctx_t *c = (srtp_null_cipher_ctx_t *)cv; */ + (void)cv; + (void)key; + debug_print0(srtp_mod_cipher, "initializing null cipher"); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_cipher_set_iv(void *cv, + uint8_t *iv, + srtp_cipher_direction_t dir) +{ + /* srtp_null_cipher_ctx_t *c = (srtp_null_cipher_ctx_t *)cv; */ + (void)cv; + (void)iv; + (void)dir; + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_cipher_encrypt(void *cv, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len) +{ + (void)cv; + if (src != dst) { + if (*dst_len < src_len) { + return srtp_err_status_buffer_small; + } + memcpy(dst, src, src_len); + } + *dst_len = src_len; + return srtp_err_status_ok; +} + +static const char srtp_null_cipher_description[] = "null cipher"; + +static const srtp_cipher_test_case_t srtp_null_cipher_test_0 = { + 0, /* octets in key */ + NULL, /* key */ + 0, /* packet index */ + 0, /* octets in plaintext */ + NULL, /* plaintext */ + 0, /* octets in plaintext */ + NULL, /* ciphertext */ + 0, /* */ + NULL, /* */ + 0, /* */ + NULL /* pointer to next testcase */ +}; + +/* + * note: the decrypt function is identical to the encrypt function + */ + +const srtp_cipher_type_t srtp_null_cipher = { + srtp_null_cipher_alloc, /* */ + srtp_null_cipher_dealloc, /* */ + srtp_null_cipher_init, /* */ + 0, /* set_aad */ + srtp_null_cipher_encrypt, /* */ + srtp_null_cipher_encrypt, /* */ + srtp_null_cipher_set_iv, /* */ + srtp_null_cipher_description, /* */ + &srtp_null_cipher_test_0, /* */ + SRTP_NULL_CIPHER /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/auth.c b/src/libs/libsrtp/crypto/hash/auth.c new file mode 100644 index 00000000..735d1248 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/auth.c @@ -0,0 +1,194 @@ +/* + * auth.c + * + * some bookkeeping functions for authentication functions + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "auth.h" +#include "err.h" /* for srtp_debug */ +#include "datatypes.h" /* for octet_string */ + +/* the debug module for authentiation */ + +srtp_debug_module_t srtp_mod_auth = { + false, /* debugging is off by default */ + "auth func" /* printable name for module */ +}; + +size_t srtp_auth_get_key_length(const srtp_auth_t *a) +{ + return a->key_len; +} + +size_t srtp_auth_get_tag_length(const srtp_auth_t *a) +{ + return a->out_len; +} + +size_t srtp_auth_get_prefix_length(const srtp_auth_t *a) +{ + return a->prefix_len; +} + +/* + * srtp_auth_type_test() tests an auth function of type ct against + * test cases provided in a list test_data of values of key, data, and tag + * that is known to be good + */ + +/* should be big enough for most occasions */ +#define SELF_TEST_TAG_BUF_OCTETS 32 + +srtp_err_status_t srtp_auth_type_test(const srtp_auth_type_t *at, + const srtp_auth_test_case_t *test_data) +{ + const srtp_auth_test_case_t *test_case = test_data; + srtp_auth_t *a; + srtp_err_status_t status; + uint8_t tag[SELF_TEST_TAG_BUF_OCTETS]; + size_t i = 0; + size_t case_num = 0; + + debug_print(srtp_mod_auth, "running self-test for auth function %s", + at->description); + + /* + * check to make sure that we have at least one test case, and + * return an error if we don't - we need to be paranoid here + */ + if (test_case == NULL) { + return srtp_err_status_cant_check; + } + + /* loop over all test cases */ + while (test_case != NULL) { + /* check test case parameters */ + if (test_case->tag_length_octets > SELF_TEST_TAG_BUF_OCTETS) { + return srtp_err_status_bad_param; + } + + /* allocate auth */ + status = srtp_auth_type_alloc(at, &a, test_case->key_length_octets, + test_case->tag_length_octets); + if (status) { + return status; + } + + /* initialize auth */ + status = srtp_auth_init(a, test_case->key); + if (status) { + srtp_auth_dealloc(a); + return status; + } + + status = srtp_auth_start(a); + if (status) { + srtp_auth_dealloc(a); + return status; + } + + /* zeroize tag then compute */ + octet_string_set_to_zero(tag, test_case->tag_length_octets); + status = srtp_auth_compute(a, test_case->data, + test_case->data_length_octets, tag); + if (status) { + srtp_auth_dealloc(a); + return status; + } + + debug_print(srtp_mod_auth, "key: %s", + srtp_octet_string_hex_string(test_case->key, + test_case->key_length_octets)); + debug_print(srtp_mod_auth, "data: %s", + srtp_octet_string_hex_string( + test_case->data, test_case->data_length_octets)); + debug_print( + srtp_mod_auth, "tag computed: %s", + srtp_octet_string_hex_string(tag, test_case->tag_length_octets)); + debug_print(srtp_mod_auth, "tag expected: %s", + srtp_octet_string_hex_string(test_case->tag, + test_case->tag_length_octets)); + + /* check the result */ + status = srtp_err_status_ok; + for (i = 0; i < test_case->tag_length_octets; i++) { + if (tag[i] != test_case->tag[i]) { + status = srtp_err_status_algo_fail; + debug_print(srtp_mod_auth, "test case %zu failed", case_num); + debug_print(srtp_mod_auth, " (mismatch at octet %zu)", i); + } + } + if (status) { + srtp_auth_dealloc(a); + return srtp_err_status_algo_fail; + } + + /* deallocate the auth function */ + status = srtp_auth_dealloc(a); + if (status) { + return status; + } + + /* + * the auth function passed the test case, so move on to the next test + * case in the list; if NULL, we'll quit and return an OK + */ + test_case = test_case->next_test_case; + ++case_num; + } + + return srtp_err_status_ok; +} + +/* + * srtp_auth_type_self_test(at) performs srtp_auth_type_test on at's internal + * list of test data. + */ + +srtp_err_status_t srtp_auth_type_self_test(const srtp_auth_type_t *at) +{ + return srtp_auth_type_test(at, at->test_data); +} diff --git a/src/libs/libsrtp/crypto/hash/auth_test_cases.c b/src/libs/libsrtp/crypto/hash/auth_test_cases.c new file mode 100644 index 00000000..22b94184 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/auth_test_cases.c @@ -0,0 +1,70 @@ +/* + * + * Copyright (c) 2013-2021, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "auth_test_cases.h" +#include + +/* clang-format off */ +static const uint8_t srtp_hmac_test_case_0_key[20] = { + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_hmac_test_case_0_data[8] = { + 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 /* "Hi There" */ +}; +/* clang-format on */ + +/* clang-format off */ +static const uint8_t srtp_hmac_test_case_0_tag[20] = { + 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, + 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, + 0xf1, 0x46, 0xbe, 0x00 +}; +/* clang-format on */ + +const srtp_auth_test_case_t srtp_hmac_test_case_0 = { + sizeof(srtp_hmac_test_case_0_key), /* octets in key */ + srtp_hmac_test_case_0_key, /* key */ + sizeof(srtp_hmac_test_case_0_data), /* octets in data */ + srtp_hmac_test_case_0_data, /* data */ + sizeof(srtp_hmac_test_case_0_tag), /* octets in tag */ + srtp_hmac_test_case_0_tag, /* tag */ + NULL /* pointer to next testcase */ +}; diff --git a/src/libs/libsrtp/crypto/hash/auth_test_cases.h b/src/libs/libsrtp/crypto/hash/auth_test_cases.h new file mode 100644 index 00000000..9f377182 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/auth_test_cases.h @@ -0,0 +1,48 @@ +/* + * + * Copyright (c) 2013-2021, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef AUTH_TEST_CASES_H +#define AUTH_TEST_CASES_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "auth.h" + +extern const srtp_auth_test_case_t srtp_hmac_test_case_0; + +#endif diff --git a/src/libs/libsrtp/crypto/hash/hmac.c b/src/libs/libsrtp/crypto/hash/hmac.c new file mode 100644 index 00000000..e10ed5e3 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/hmac.c @@ -0,0 +1,248 @@ +/* + * hmac.c + * + * implementation of hmac srtp_auth_type_t + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "hmac.h" +#include "alloc.h" +#include "cipher_types.h" +#include "auth_test_cases.h" + +/* the debug module for authentiation */ + +srtp_debug_module_t srtp_mod_hmac = { + false, /* debugging is off by default */ + "hmac sha-1" /* printable name for module */ +}; + +static srtp_err_status_t srtp_hmac_alloc(srtp_auth_t **a, + size_t key_len, + size_t out_len) +{ + extern const srtp_auth_type_t srtp_hmac; + uint8_t *pointer; + + debug_print(srtp_mod_hmac, "allocating auth func with key length %zu", + key_len); + debug_print(srtp_mod_hmac, " tag length %zu", + out_len); + + /* + * check key length - note that we don't support keys larger + * than 20 bytes yet + */ + if (key_len > 20) { + return srtp_err_status_bad_param; + } + + /* check output length - should be less than 20 bytes */ + if (out_len > 20) { + return srtp_err_status_bad_param; + } + + /* allocate memory for auth and srtp_hmac_ctx_t structures */ + pointer = (uint8_t *)srtp_crypto_alloc(sizeof(srtp_hmac_ctx_t) + + sizeof(srtp_auth_t)); + if (pointer == NULL) { + return srtp_err_status_alloc_fail; + } + + /* set pointers */ + *a = (srtp_auth_t *)pointer; + (*a)->type = &srtp_hmac; + (*a)->state = pointer + sizeof(srtp_auth_t); + (*a)->out_len = out_len; + (*a)->key_len = key_len; + (*a)->prefix_len = 0; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_dealloc(srtp_auth_t *a) +{ + /* zeroize entire state*/ + octet_string_set_to_zero(a, sizeof(srtp_hmac_ctx_t) + sizeof(srtp_auth_t)); + + /* free memory */ + srtp_crypto_free(a); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_init(void *statev, + const uint8_t *key, + size_t key_len) +{ + srtp_hmac_ctx_t *state = (srtp_hmac_ctx_t *)statev; + uint8_t ipad[64]; + + /* + * check key length - note that we don't support keys larger + * than 20 bytes yet + */ + if (key_len > 20) { + return srtp_err_status_bad_param; + } + + /* + * set values of ipad and opad by exoring the key into the + * appropriate constant values + */ + for (size_t i = 0; i < key_len; i++) { + ipad[i] = key[i] ^ 0x36; + state->opad[i] = key[i] ^ 0x5c; + } + /* set the rest of ipad, opad to constant values */ + for (size_t i = key_len; i < 64; i++) { + ipad[i] = 0x36; + ((uint8_t *)state->opad)[i] = 0x5c; + } + + debug_print(srtp_mod_hmac, "ipad: %s", + srtp_octet_string_hex_string(ipad, 64)); + + /* initialize sha1 context */ + srtp_sha1_init(&state->init_ctx); + + /* hash ipad ^ key */ + srtp_sha1_update(&state->init_ctx, ipad, 64); + memcpy(&state->ctx, &state->init_ctx, sizeof(srtp_sha1_ctx_t)); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_start(void *statev) +{ + srtp_hmac_ctx_t *state = (srtp_hmac_ctx_t *)statev; + + memcpy(&state->ctx, &state->init_ctx, sizeof(srtp_sha1_ctx_t)); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_update(void *statev, + const uint8_t *message, + size_t msg_octets) +{ + srtp_hmac_ctx_t *state = (srtp_hmac_ctx_t *)statev; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + /* hash message into sha1 context */ + srtp_sha1_update(&state->ctx, message, msg_octets); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_compute(void *statev, + const uint8_t *message, + size_t msg_octets, + size_t tag_len, + uint8_t *result) +{ + srtp_hmac_ctx_t *state = (srtp_hmac_ctx_t *)statev; + uint32_t hash_value[5]; + uint32_t H[5]; + size_t i; + + /* check tag length, return error if we can't provide the value expected */ + if (tag_len > 20) { + return srtp_err_status_bad_param; + } + + /* hash message, copy output into H */ + srtp_hmac_update(state, message, msg_octets); + srtp_sha1_final(&state->ctx, H); + + /* + * note that we don't need to debug_print() the input, since the + * function hmac_update() already did that for us + */ + debug_print(srtp_mod_hmac, "intermediate state: %s", + srtp_octet_string_hex_string((uint8_t *)H, 20)); + + /* re-initialize hash context */ + srtp_sha1_init(&state->ctx); + + /* hash opad ^ key */ + srtp_sha1_update(&state->ctx, (uint8_t *)state->opad, 64); + + /* hash the result of the inner hash */ + srtp_sha1_update(&state->ctx, (uint8_t *)H, 20); + + /* the result is returned in the array hash_value[] */ + srtp_sha1_final(&state->ctx, hash_value); + + /* copy hash_value to *result */ + for (i = 0; i < tag_len; i++) { + result[i] = ((uint8_t *)hash_value)[i]; + } + + debug_print(srtp_mod_hmac, "output: %s", + srtp_octet_string_hex_string((uint8_t *)hash_value, tag_len)); + + return srtp_err_status_ok; +} + +static const char srtp_hmac_description[] = + "hmac sha-1 authentication function"; + +/* + * srtp_auth_type_t hmac is the hmac metaobject + */ + +const srtp_auth_type_t srtp_hmac = { + srtp_hmac_alloc, /* */ + srtp_hmac_dealloc, /* */ + srtp_hmac_init, /* */ + srtp_hmac_compute, /* */ + srtp_hmac_update, /* */ + srtp_hmac_start, /* */ + srtp_hmac_description, /* */ + &srtp_hmac_test_case_0, /* */ + SRTP_HMAC_SHA1 /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/hmac_mbedtls.c b/src/libs/libsrtp/crypto/hash/hmac_mbedtls.c new file mode 100644 index 00000000..57d0ff1c --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/hmac_mbedtls.c @@ -0,0 +1,224 @@ +/* + * hmac_mbedtls.c + * + * Implementation of hmac srtp_auth_type_t that leverages Mbedtls + * + * YongCheng Yang + */ +/* + * + * Copyright(c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "auth.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "auth_test_cases.h" +#include + +#define SHA1_DIGEST_SIZE 20 + +/* the debug module for authentiation */ + +srtp_debug_module_t srtp_mod_hmac = { + false, /* debugging is off by default */ + "hmac sha-1 mbedtls" /* printable name for module */ +}; + +static srtp_err_status_t srtp_hmac_mbedtls_alloc(srtp_auth_t **a, + size_t key_len, + size_t out_len) +{ + extern const srtp_auth_type_t srtp_hmac; + + debug_print(srtp_mod_hmac, "allocating auth func with key length %zu", + key_len); + debug_print(srtp_mod_hmac, " tag length %zu", + out_len); + + /* check output length - should be less than 20 bytes */ + if (out_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + *a = (srtp_auth_t *)srtp_crypto_alloc(sizeof(srtp_auth_t)); + if (*a == NULL) { + return srtp_err_status_alloc_fail; + } + // allocate the buffer of mbedtls context. + (*a)->state = srtp_crypto_alloc(sizeof(mbedtls_md_context_t)); + if ((*a)->state == NULL) { + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } + mbedtls_md_init((mbedtls_md_context_t *)(*a)->state); + + /* set pointers */ + (*a)->type = &srtp_hmac; + (*a)->out_len = out_len; + (*a)->key_len = key_len; + (*a)->prefix_len = 0; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_mbedtls_dealloc(srtp_auth_t *a) +{ + mbedtls_md_context_t *hmac_ctx; + hmac_ctx = (mbedtls_md_context_t *)a->state; + mbedtls_md_free(hmac_ctx); + srtp_crypto_free(hmac_ctx); + /* zeroize entire state*/ + octet_string_set_to_zero(a, sizeof(srtp_auth_t)); + + /* free memory */ + srtp_crypto_free(a); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_mbedtls_start(void *statev) +{ + mbedtls_md_context_t *state = (mbedtls_md_context_t *)statev; + if (mbedtls_md_hmac_reset(state) != 0) { + return srtp_err_status_auth_fail; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_mbedtls_init(void *statev, + const uint8_t *key, + size_t key_len) +{ + mbedtls_md_context_t *state = (mbedtls_md_context_t *)statev; + const mbedtls_md_info_t *info = NULL; + + info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA1); + if (info == NULL) { + return srtp_err_status_auth_fail; + } + + if (mbedtls_md_setup(state, info, 1) != 0) { + return srtp_err_status_auth_fail; + } + + debug_print(srtp_mod_hmac, "mbedtls setup, name: %s", + mbedtls_md_get_name(info)); + debug_print(srtp_mod_hmac, "mbedtls setup, size: %d", + mbedtls_md_get_size(info)); + + if (mbedtls_md_hmac_starts(state, key, key_len) != 0) { + return srtp_err_status_auth_fail; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_mbedtls_update(void *statev, + const uint8_t *message, + size_t msg_octets) +{ + mbedtls_md_context_t *state = (mbedtls_md_context_t *)statev; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + if (mbedtls_md_hmac_update(state, message, msg_octets) != 0) { + return srtp_err_status_auth_fail; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_mbedtls_compute(void *statev, + const uint8_t *message, + size_t msg_octets, + size_t tag_len, + uint8_t *result) +{ + mbedtls_md_context_t *state = (mbedtls_md_context_t *)statev; + uint8_t hash_value[SHA1_DIGEST_SIZE]; + size_t i; + + /* check tag length, return error if we can't provide the value expected */ + if (tag_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + /* hash message, copy output into H */ + if (mbedtls_md_hmac_update(statev, message, msg_octets) != 0) { + return srtp_err_status_auth_fail; + } + + if (mbedtls_md_hmac_finish(state, hash_value) != 0) { + return srtp_err_status_auth_fail; + } + + /* copy hash_value to *result */ + for (i = 0; i < tag_len; i++) { + result[i] = hash_value[i]; + } + + debug_print(srtp_mod_hmac, "output: %s", + srtp_octet_string_hex_string(hash_value, tag_len)); + + return srtp_err_status_ok; +} + +/* end test case 0 */ + +static const char srtp_hmac_mbedtls_description[] = + "hmac sha-1 authentication function using mbedtls"; + +/* + * srtp_auth_type_t hmac is the hmac metaobject + */ + +const srtp_auth_type_t srtp_hmac = { + srtp_hmac_mbedtls_alloc, /* */ + srtp_hmac_mbedtls_dealloc, /* */ + srtp_hmac_mbedtls_init, /* */ + srtp_hmac_mbedtls_compute, /* */ + srtp_hmac_mbedtls_update, /* */ + srtp_hmac_mbedtls_start, /* */ + srtp_hmac_mbedtls_description, /* */ + &srtp_hmac_test_case_0, /* */ + SRTP_HMAC_SHA1 /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/hmac_nss.c b/src/libs/libsrtp/crypto/hash/hmac_nss.c new file mode 100644 index 00000000..a2a76adb --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/hmac_nss.c @@ -0,0 +1,291 @@ +/* + * + * Copyright(c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "auth.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "auth_test_cases.h" + +#define NSS_PKCS11_2_0_COMPAT 1 + +#include +#include + +#define SHA1_DIGEST_SIZE 20 + +/* the debug module for authentiation */ + +srtp_debug_module_t srtp_mod_hmac = { + false, /* debugging is off by default */ + "hmac sha-1 nss" /* printable name for module */ +}; + +typedef struct { + NSSInitContext *nss; + PK11SymKey *key; + PK11Context *ctx; +} srtp_hmac_nss_ctx_t; + +static srtp_err_status_t srtp_hmac_alloc(srtp_auth_t **a, + size_t key_len, + size_t out_len) +{ + extern const srtp_auth_type_t srtp_hmac; + srtp_hmac_nss_ctx_t *hmac; + NSSInitContext *nss; + + debug_print(srtp_mod_hmac, "allocating auth func with key length %zu", + key_len); + debug_print(srtp_mod_hmac, " tag length %zu", + out_len); + + /* check output length - should be less than 20 bytes */ + if (out_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + /* Initialize NSS equiv of NSS_NoDB_Init(NULL) */ + nss = NSS_InitContext("", "", "", "", NULL, + NSS_INIT_READONLY | NSS_INIT_NOCERTDB | + NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN | + NSS_INIT_OPTIMIZESPACE); + if (!nss) { + return srtp_err_status_auth_fail; + } + + *a = (srtp_auth_t *)srtp_crypto_alloc(sizeof(srtp_auth_t)); + if (*a == NULL) { + NSS_ShutdownContext(nss); + return srtp_err_status_alloc_fail; + } + + hmac = + (srtp_hmac_nss_ctx_t *)srtp_crypto_alloc(sizeof(srtp_hmac_nss_ctx_t)); + if (hmac == NULL) { + NSS_ShutdownContext(nss); + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } + + hmac->nss = nss; + hmac->key = NULL; + hmac->ctx = NULL; + + /* set pointers */ + (*a)->state = hmac; + (*a)->type = &srtp_hmac; + (*a)->out_len = out_len; + (*a)->key_len = key_len; + (*a)->prefix_len = 0; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_dealloc(srtp_auth_t *a) +{ + srtp_hmac_nss_ctx_t *hmac; + + hmac = (srtp_hmac_nss_ctx_t *)a->state; + if (hmac) { + /* free any PK11 values that have been created */ + if (hmac->key) { + PK11_FreeSymKey(hmac->key); + hmac->key = NULL; + } + + if (hmac->ctx) { + PK11_DestroyContext(hmac->ctx, PR_TRUE); + hmac->ctx = NULL; + } + + if (hmac->nss) { + NSS_ShutdownContext(hmac->nss); + hmac->nss = NULL; + } + + /* zeroize everything */ + octet_string_set_to_zero(hmac, sizeof(srtp_hmac_nss_ctx_t)); + srtp_crypto_free(hmac); + } + + /* free memory */ + srtp_crypto_free(a); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_start(void *statev) +{ + srtp_hmac_nss_ctx_t *hmac; + hmac = (srtp_hmac_nss_ctx_t *)statev; + + if (PK11_DigestBegin(hmac->ctx) != SECSuccess) { + return srtp_err_status_auth_fail; + } + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_init(void *statev, + const uint8_t *key, + size_t key_len) +{ + srtp_hmac_nss_ctx_t *hmac; + hmac = (srtp_hmac_nss_ctx_t *)statev; + PK11SymKey *sym_key; + PK11Context *ctx; + + if (hmac->ctx) { + PK11_DestroyContext(hmac->ctx, PR_TRUE); + hmac->ctx = NULL; + } + + if (hmac->key) { + PK11_FreeSymKey(hmac->key); + hmac->key = NULL; + } + + PK11SlotInfo *slot = PK11_GetBestSlot(CKM_SHA_1_HMAC, NULL); + if (!slot) { + return srtp_err_status_bad_param; + } + + /* explicitly cast away const of key */ + SECItem key_item = { siBuffer, (unsigned char *)(uintptr_t)key, key_len }; + sym_key = PK11_ImportSymKey(slot, CKM_SHA_1_HMAC, PK11_OriginUnwrap, + CKA_SIGN, &key_item, NULL); + PK11_FreeSlot(slot); + + if (!sym_key) { + return srtp_err_status_auth_fail; + } + + SECItem param_item = { siBuffer, NULL, 0 }; + ctx = PK11_CreateContextBySymKey(CKM_SHA_1_HMAC, CKA_SIGN, sym_key, + ¶m_item); + if (!ctx) { + PK11_FreeSymKey(sym_key); + return srtp_err_status_auth_fail; + } + + hmac->key = sym_key; + hmac->ctx = ctx; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_update(void *statev, + const uint8_t *message, + size_t msg_octets) +{ + srtp_hmac_nss_ctx_t *hmac; + hmac = (srtp_hmac_nss_ctx_t *)statev; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + if (PK11_DigestOp(hmac->ctx, message, msg_octets) != SECSuccess) { + return srtp_err_status_auth_fail; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_compute(void *statev, + const uint8_t *message, + size_t msg_octets, + size_t tag_len, + uint8_t *result) +{ + srtp_hmac_nss_ctx_t *hmac; + hmac = (srtp_hmac_nss_ctx_t *)statev; + uint8_t hash_value[SHA1_DIGEST_SIZE]; + unsigned int len; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + /* check tag length, return error if we can't provide the value expected */ + if (tag_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + if (PK11_DigestOp(hmac->ctx, message, msg_octets) != SECSuccess) { + return srtp_err_status_auth_fail; + } + + if (PK11_DigestFinal(hmac->ctx, hash_value, &len, SHA1_DIGEST_SIZE) != + SECSuccess) { + return srtp_err_status_auth_fail; + } + + if (len < tag_len) { + return srtp_err_status_auth_fail; + } + + /* copy hash_value to *result */ + for (size_t i = 0; i < tag_len; i++) { + result[i] = hash_value[i]; + } + + debug_print(srtp_mod_hmac, "output: %s", + srtp_octet_string_hex_string(hash_value, tag_len)); + + return srtp_err_status_ok; +} + +static const char srtp_hmac_description[] = + "hmac sha-1 authentication function"; + +/* + * srtp_auth_type_t hmac is the hmac metaobject + */ + +const srtp_auth_type_t srtp_hmac = { + srtp_hmac_alloc, /* */ + srtp_hmac_dealloc, /* */ + srtp_hmac_init, /* */ + srtp_hmac_compute, /* */ + srtp_hmac_update, /* */ + srtp_hmac_start, /* */ + srtp_hmac_description, /* */ + &srtp_hmac_test_case_0, /* */ + SRTP_HMAC_SHA1 /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/hmac_ossl.c b/src/libs/libsrtp/crypto/hash/hmac_ossl.c new file mode 100644 index 00000000..b0ed3418 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/hmac_ossl.c @@ -0,0 +1,343 @@ +/* + * hmac_ossl.c + * + * Implementation of hmac srtp_auth_type_t that leverages OpenSSL + * + * John A. Foley + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "auth.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "auth_test_cases.h" +#include + +#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) +#define SRTP_OSSL_USE_EVP_MAC +/* before this version reinit of EVP_MAC_CTX was not supported so need to + * duplicate the CTX each time */ +#define SRTP_OSSL_MIN_REINIT_VERSION 0x30000030L +#endif + +#ifndef SRTP_OSSL_USE_EVP_MAC +#include +#endif + +#define SHA1_DIGEST_SIZE 20 + +/* the debug module for authentication */ + +srtp_debug_module_t srtp_mod_hmac = { + false, /* debugging is off by default */ + "hmac sha-1 openssl" /* printable name for module */ +}; + +/* + * There are three different behaviors of OpenSSL HMAC for different versions. + * + * 1. Pre-3.0 - Use HMAC API + * 2. 3.0.0 - 3.0.2 - EVP API is required, but doesn't support reinitialization, + * so we have to use EVP_MAC_CTX_dup + * 3. 3.0.3 and later - EVP API is required and supports reinitialization + * + * The distinction between cases 2 & 3 needs to be made at runtime, because in a + * shared library context you might end up building against 3.0.3 and running + * against 3.0.2. + */ + +typedef struct { +#ifdef SRTP_OSSL_USE_EVP_MAC + EVP_MAC *mac; + EVP_MAC_CTX *ctx; + int use_dup; + EVP_MAC_CTX *ctx_dup; +#else + HMAC_CTX *ctx; +#endif +} srtp_hmac_ossl_ctx_t; + +static srtp_err_status_t srtp_hmac_alloc(srtp_auth_t **a, + size_t key_len, + size_t out_len) +{ + extern const srtp_auth_type_t srtp_hmac; + srtp_hmac_ossl_ctx_t *hmac; + + debug_print(srtp_mod_hmac, "allocating auth func with key length %zu", + key_len); + debug_print(srtp_mod_hmac, " tag length %zu", + out_len); + + /* check output length - should be less than 20 bytes */ + if (out_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + *a = (srtp_auth_t *)srtp_crypto_alloc(sizeof(srtp_auth_t)); + if (*a == NULL) { + return srtp_err_status_alloc_fail; + } + + hmac = + (srtp_hmac_ossl_ctx_t *)srtp_crypto_alloc(sizeof(srtp_hmac_ossl_ctx_t)); + if (hmac == NULL) { + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } + +#ifdef SRTP_OSSL_USE_EVP_MAC + hmac->mac = EVP_MAC_fetch(NULL, "HMAC", NULL); + if (hmac->mac == NULL) { + srtp_crypto_free(hmac); + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } + + hmac->ctx = EVP_MAC_CTX_new(hmac->mac); + if (hmac->ctx == NULL) { + EVP_MAC_free(hmac->mac); + srtp_crypto_free(hmac); + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } + + hmac->use_dup = + OpenSSL_version_num() < SRTP_OSSL_MIN_REINIT_VERSION ? 1 : 0; + + if (hmac->use_dup) { + debug_print0(srtp_mod_hmac, "using EVP_MAC_CTX_dup"); + hmac->ctx_dup = hmac->ctx; + hmac->ctx = NULL; + } +#else + hmac->ctx = HMAC_CTX_new(); + if (hmac->ctx == NULL) { + srtp_crypto_free(hmac); + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } +#endif + + /* set pointers */ + (*a)->state = hmac; + (*a)->type = &srtp_hmac; + (*a)->out_len = out_len; + (*a)->key_len = key_len; + (*a)->prefix_len = 0; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_dealloc(srtp_auth_t *a) +{ + srtp_hmac_ossl_ctx_t *hmac = (srtp_hmac_ossl_ctx_t *)a->state; + + if (hmac) { +#ifdef SRTP_OSSL_USE_EVP_MAC + EVP_MAC_CTX_free(hmac->ctx); + EVP_MAC_CTX_free(hmac->ctx_dup); + EVP_MAC_free(hmac->mac); +#else + HMAC_CTX_free(hmac->ctx); +#endif + /* zeroize entire state*/ + octet_string_set_to_zero(hmac, sizeof(srtp_hmac_ossl_ctx_t)); + + srtp_crypto_free(hmac); + } + + /* zeroize entire state*/ + octet_string_set_to_zero(a, sizeof(srtp_auth_t)); + + /* free memory */ + srtp_crypto_free(a); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_start(void *statev) +{ + srtp_hmac_ossl_ctx_t *hmac = (srtp_hmac_ossl_ctx_t *)statev; + +#ifdef SRTP_OSSL_USE_EVP_MAC + if (hmac->use_dup) { + EVP_MAC_CTX_free(hmac->ctx); + hmac->ctx = EVP_MAC_CTX_dup(hmac->ctx_dup); + if (hmac->ctx == NULL) { + return srtp_err_status_alloc_fail; + } + } else { + if (EVP_MAC_init(hmac->ctx, NULL, 0, NULL) == 0) { + return srtp_err_status_auth_fail; + } + } +#else + if (HMAC_Init_ex(hmac->ctx, NULL, 0, NULL, NULL) == 0) { + return srtp_err_status_auth_fail; + } +#endif + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_init(void *statev, + const uint8_t *key, + size_t key_len) +{ + srtp_hmac_ossl_ctx_t *hmac = (srtp_hmac_ossl_ctx_t *)statev; + +#ifdef SRTP_OSSL_USE_EVP_MAC + OSSL_PARAM params[2]; + + params[0] = OSSL_PARAM_construct_utf8_string("digest", "SHA1", 0); + params[1] = OSSL_PARAM_construct_end(); + + if (EVP_MAC_init(hmac->use_dup ? hmac->ctx_dup : hmac->ctx, key, key_len, + params) == 0) { + return srtp_err_status_auth_fail; + } +#else + if (HMAC_Init_ex(hmac->ctx, key, key_len, EVP_sha1(), NULL) == 0) { + return srtp_err_status_auth_fail; + } +#endif + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_update(void *statev, + const uint8_t *message, + size_t msg_octets) +{ + srtp_hmac_ossl_ctx_t *hmac = (srtp_hmac_ossl_ctx_t *)statev; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + +#ifdef SRTP_OSSL_USE_EVP_MAC + if (EVP_MAC_update(hmac->ctx, message, msg_octets) == 0) { + return srtp_err_status_auth_fail; + } +#else + if (HMAC_Update(hmac->ctx, message, msg_octets) == 0) { + return srtp_err_status_auth_fail; + } +#endif + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_compute(void *statev, + const uint8_t *message, + size_t msg_octets, + size_t tag_len, + uint8_t *result) +{ + srtp_hmac_ossl_ctx_t *hmac = (srtp_hmac_ossl_ctx_t *)statev; + uint8_t hash_value[SHA1_DIGEST_SIZE]; +#ifdef SRTP_OSSL_USE_EVP_MAC + size_t len; +#else + unsigned int len; +#endif + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + /* check tag length, return error if we can't provide the value expected */ + if (tag_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + /* hash message, copy output into H */ +#ifdef SRTP_OSSL_USE_EVP_MAC + if (EVP_MAC_update(hmac->ctx, message, msg_octets) == 0) { + return srtp_err_status_auth_fail; + } + + if (EVP_MAC_final(hmac->ctx, hash_value, &len, sizeof hash_value) == 0) { + return srtp_err_status_auth_fail; + } +#else + if (HMAC_Update(hmac->ctx, message, msg_octets) == 0) { + return srtp_err_status_auth_fail; + } + + if (HMAC_Final(hmac->ctx, hash_value, &len) == 0) { + return srtp_err_status_auth_fail; + } +#endif + if (len < tag_len) { + return srtp_err_status_auth_fail; + } + + /* copy hash_value to *result */ + for (size_t i = 0; i < tag_len; i++) { + result[i] = hash_value[i]; + } + + debug_print(srtp_mod_hmac, "output: %s", + srtp_octet_string_hex_string(hash_value, tag_len)); + + return srtp_err_status_ok; +} + +static const char srtp_hmac_description[] = + "hmac sha-1 authentication function"; + +/* + * srtp_auth_type_t hmac is the hmac metaobject + */ + +const srtp_auth_type_t srtp_hmac = { + srtp_hmac_alloc, /* */ + srtp_hmac_dealloc, /* */ + srtp_hmac_init, /* */ + srtp_hmac_compute, /* */ + srtp_hmac_update, /* */ + srtp_hmac_start, /* */ + srtp_hmac_description, /* */ + &srtp_hmac_test_case_0, /* */ + SRTP_HMAC_SHA1 /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/hmac_wssl.c b/src/libs/libsrtp/crypto/hash/hmac_wssl.c new file mode 100644 index 00000000..9a97ea09 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/hmac_wssl.c @@ -0,0 +1,228 @@ +/* + * hmac_wssl.c + * + * Implementation of hmac srtp_auth_type_t that uses wolfSSL + * + * Sean Parkinson, wolfSSL + */ +/* + * + * Copyright(c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#ifndef WOLFSSL_USER_SETTINGS +#include +#endif +#include +#include +#include "auth.h" +#include "alloc.h" +#include "err.h" /* for srtp_debug */ +#include "auth_test_cases.h" + +#define SHA1_DIGEST_SIZE 20 + +/* the debug module for authentiation */ + +srtp_debug_module_t srtp_mod_hmac = { + 0, /* debugging is off by default */ + "hmac sha-1 wssl" /* printable name for module */ +}; + +static srtp_err_status_t srtp_hmac_wolfssl_alloc(srtp_auth_t **a, + size_t key_len, + size_t out_len) +{ + extern const srtp_auth_type_t srtp_hmac; + int err; + + debug_print(srtp_mod_hmac, "allocating auth func with key length %zu", + key_len); + debug_print(srtp_mod_hmac, " tag length %zu", + out_len); + + /* check output length - should be less than 20 bytes */ + if (out_len > SHA1_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + *a = (srtp_auth_t *)srtp_crypto_alloc(sizeof(srtp_auth_t)); + if (*a == NULL) { + return srtp_err_status_alloc_fail; + } + // allocate the buffer of wolfssl context. + (*a)->state = srtp_crypto_alloc(sizeof(Hmac)); + if ((*a)->state == NULL) { + srtp_crypto_free(*a); + *a = NULL; + return srtp_err_status_alloc_fail; + } + err = wc_HmacInit((Hmac *)(*a)->state, NULL, INVALID_DEVID); + if (err < 0) { + srtp_crypto_free((*a)->state); + srtp_crypto_free(*a); + *a = NULL; + debug_print(srtp_mod_hmac, "wolfSSL error code: %d", err); + return srtp_err_status_init_fail; + } + + /* set pointers */ + (*a)->type = &srtp_hmac; + (*a)->out_len = out_len; + (*a)->key_len = key_len; + (*a)->prefix_len = 0; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_wolfssl_dealloc(srtp_auth_t *a) +{ + wc_HmacFree((Hmac *)a->state); + srtp_crypto_free(a->state); + /* zeroize entire state*/ + octet_string_set_to_zero(a, sizeof(srtp_auth_t)); + + /* free memory */ + srtp_crypto_free(a); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_wolfssl_start(void *statev) +{ + (void)statev; + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_wolfssl_init(void *statev, + const uint8_t *key, + size_t key_len) +{ + Hmac *state = (Hmac *)statev; + int err; + + err = wc_HmacSetKey(state, WC_SHA, key, key_len); + if (err < 0) { + debug_print(srtp_mod_hmac, "wolfSSL error code: %d", err); + return srtp_err_status_auth_fail; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_wolfssl_update(void *statev, + const uint8_t *message, + size_t msg_octets) +{ + Hmac *state = (Hmac *)statev; + int err; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + err = wc_HmacUpdate(state, message, msg_octets); + if (err < 0) { + debug_print(srtp_mod_hmac, "wolfSSL error code: %d", err); + return srtp_err_status_auth_fail; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_hmac_wolfssl_compute(void *statev, + const uint8_t *message, + size_t msg_octets, + size_t tag_len, + uint8_t *result) +{ + Hmac *state = (Hmac *)statev; + uint8_t hash_value[WC_SHA_DIGEST_SIZE]; + int err; + int i; + + debug_print(srtp_mod_hmac, "input: %s", + srtp_octet_string_hex_string(message, msg_octets)); + + /* check tag length, return error if we can't provide the value expected */ + if (tag_len > WC_SHA_DIGEST_SIZE) { + return srtp_err_status_bad_param; + } + + /* hash message, copy output into H */ + err = wc_HmacUpdate(state, message, msg_octets); + if (err < 0) { + debug_print(srtp_mod_hmac, "wolfSSL error code: %d", err); + return srtp_err_status_auth_fail; + } + + err = wc_HmacFinal(state, hash_value); + if (err < 0) { + debug_print(srtp_mod_hmac, "wolfSSL error code: %d", err); + return srtp_err_status_auth_fail; + } + + /* copy hash_value to *result */ + for (i = 0; i < (int)tag_len; i++) { + result[i] = hash_value[i]; + } + + debug_print(srtp_mod_hmac, "output: %s", + srtp_octet_string_hex_string(hash_value, tag_len)); + + return srtp_err_status_ok; +} + +/* end test case 0 */ + +static const char srtp_hmac_wolfssl_description[] = + "hmac sha-1 authentication function using wolfSSL"; + +/* + * srtp_auth_type_t hmac is the hmac metaobject + */ + +const srtp_auth_type_t srtp_hmac = { + srtp_hmac_wolfssl_alloc, /* */ + srtp_hmac_wolfssl_dealloc, /* */ + srtp_hmac_wolfssl_init, /* */ + srtp_hmac_wolfssl_compute, /* */ + srtp_hmac_wolfssl_update, /* */ + srtp_hmac_wolfssl_start, /* */ + srtp_hmac_wolfssl_description, /* */ + &srtp_hmac_test_case_0, /* */ + SRTP_HMAC_SHA1 /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/null_auth.c b/src/libs/libsrtp/crypto/hash/null_auth.c new file mode 100644 index 00000000..d1b0bc31 --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/null_auth.c @@ -0,0 +1,181 @@ +/* + * null_auth.c + * + * implements the do-nothing auth algorithm + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "null_auth.h" +#include "err.h" /* for srtp_debug */ +#include "alloc.h" +#include "cipher_types.h" + +static srtp_err_status_t srtp_null_auth_alloc(srtp_auth_t **a, + size_t key_len, + size_t out_len) +{ + extern const srtp_auth_type_t srtp_null_auth; + uint8_t *pointer; + + debug_print(srtp_mod_auth, "allocating auth func with key length %zu", + key_len); + debug_print(srtp_mod_auth, " tag length %zu", + out_len); + + /* allocate memory for auth and srtp_null_auth_ctx_t structures */ + pointer = (uint8_t *)srtp_crypto_alloc(sizeof(srtp_null_auth_ctx_t) + + sizeof(srtp_auth_t)); + if (pointer == NULL) { + return srtp_err_status_alloc_fail; + } + + /* set pointers */ + *a = (srtp_auth_t *)pointer; + (*a)->type = &srtp_null_auth; + (*a)->state = pointer + sizeof(srtp_auth_t); + (*a)->out_len = out_len; + (*a)->prefix_len = out_len; + (*a)->key_len = key_len; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_auth_dealloc(srtp_auth_t *a) +{ + extern const srtp_auth_type_t srtp_null_auth; + + /* zeroize entire state*/ + octet_string_set_to_zero(a, sizeof(srtp_null_auth_ctx_t) + + sizeof(srtp_auth_t)); + + /* free memory */ + srtp_crypto_free(a); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_auth_init(void *statev, + const uint8_t *key, + size_t key_len) +{ + /* srtp_null_auth_ctx_t *state = (srtp_null_auth_ctx_t *)statev; */ + (void)statev; + (void)key; + (void)key_len; + + /* accept any length of key, and do nothing */ + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_auth_compute(void *statev, + const uint8_t *message, + size_t msg_octets, + size_t tag_len, + uint8_t *result) +{ + /* srtp_null_auth_ctx_t *state = (srtp_null_auth_ctx_t *)statev; */ + (void)statev; + (void)message; + (void)msg_octets; + (void)tag_len; + (void)result; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_auth_update(void *statev, + const uint8_t *message, + size_t msg_octets) +{ + /* srtp_null_auth_ctx_t *state = (srtp_null_auth_ctx_t *)statev; */ + (void)statev; + (void)message; + (void)msg_octets; + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_null_auth_start(void *statev) +{ + /* srtp_null_auth_ctx_t *state = (srtp_null_auth_ctx_t *)statev; */ + (void)statev; + + return srtp_err_status_ok; +} + +/* + * srtp_auth_type_t - defines description, test case, and null_auth + * metaobject + */ + +/* begin test case 0 */ + +static const srtp_auth_test_case_t srtp_null_auth_test_case_0 = { + 0, /* octets in key */ + NULL, /* key */ + 0, /* octets in data */ + NULL, /* data */ + 0, /* octets in tag */ + NULL, /* tag */ + NULL /* pointer to next testcase */ +}; + +/* end test case 0 */ + +static const char srtp_null_auth_description[] = "null authentication function"; + +const srtp_auth_type_t srtp_null_auth = { + srtp_null_auth_alloc, /* */ + srtp_null_auth_dealloc, /* */ + srtp_null_auth_init, /* */ + srtp_null_auth_compute, /* */ + srtp_null_auth_update, /* */ + srtp_null_auth_start, /* */ + srtp_null_auth_description, /* */ + &srtp_null_auth_test_case_0, /* */ + SRTP_NULL_AUTH /* */ +}; diff --git a/src/libs/libsrtp/crypto/hash/sha1.c b/src/libs/libsrtp/crypto/hash/sha1.c new file mode 100644 index 00000000..4f6d851d --- /dev/null +++ b/src/libs/libsrtp/crypto/hash/sha1.c @@ -0,0 +1,463 @@ +/* + * sha1.c + * + * an implementation of the Secure Hash Algorithm v.1 (SHA-1), + * specified in FIPS 180-1 + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "sha1.h" + +srtp_debug_module_t srtp_mod_sha1 = { + false, /* debugging is off by default */ + "sha-1" /* printable module name */ +}; + +/* SN == Rotate left N bits */ +#define S1(X) ((X << 1) | (X >> 31)) +#define S5(X) ((X << 5) | (X >> 27)) +#define S30(X) ((X << 30) | (X >> 2)) + +#define f0(B, C, D) ((B & C) | (~B & D)) +#define f1(B, C, D) (B ^ C ^ D) +#define f2(B, C, D) ((B & C) | (B & D) | (C & D)) +#define f3(B, C, D) (B ^ C ^ D) + +/* + * nota bene: the variable K0 appears in the curses library, so we + * give longer names to these variables to avoid spurious warnings + * on systems that uses curses + */ + +uint32_t SHA_K0 = 0x5A827999; /* Kt for 0 <= t <= 19 */ +uint32_t SHA_K1 = 0x6ED9EBA1; /* Kt for 20 <= t <= 39 */ +uint32_t SHA_K2 = 0x8F1BBCDC; /* Kt for 40 <= t <= 59 */ +uint32_t SHA_K3 = 0xCA62C1D6; /* Kt for 60 <= t <= 79 */ + +/* + * srtp_sha1_core(M, H) computes the core compression function, where M is + * the next part of the message (in network byte order) and H is the + * intermediate state { H0, H1, ...} (in host byte order) + * + * this function does not do any of the padding required in the + * complete SHA1 function + * + * this function is used in the SEAL 3.0 key setup routines + * (crypto/cipher/seal.c) + */ + +void srtp_sha1_core(const uint32_t M[16], uint32_t hash_value[5]) +{ + uint32_t H0; + uint32_t H1; + uint32_t H2; + uint32_t H3; + uint32_t H4; + uint32_t W[80]; + uint32_t A, B, C, D, E, TEMP; + size_t t; + + /* copy hash_value into H0, H1, H2, H3, H4 */ + H0 = hash_value[0]; + H1 = hash_value[1]; + H2 = hash_value[2]; + H3 = hash_value[3]; + H4 = hash_value[4]; + + /* copy/xor message into array */ + + W[0] = be32_to_cpu(M[0]); + W[1] = be32_to_cpu(M[1]); + W[2] = be32_to_cpu(M[2]); + W[3] = be32_to_cpu(M[3]); + W[4] = be32_to_cpu(M[4]); + W[5] = be32_to_cpu(M[5]); + W[6] = be32_to_cpu(M[6]); + W[7] = be32_to_cpu(M[7]); + W[8] = be32_to_cpu(M[8]); + W[9] = be32_to_cpu(M[9]); + W[10] = be32_to_cpu(M[10]); + W[11] = be32_to_cpu(M[11]); + W[12] = be32_to_cpu(M[12]); + W[13] = be32_to_cpu(M[13]); + W[14] = be32_to_cpu(M[14]); + W[15] = be32_to_cpu(M[15]); + TEMP = W[13] ^ W[8] ^ W[2] ^ W[0]; + W[16] = S1(TEMP); + TEMP = W[14] ^ W[9] ^ W[3] ^ W[1]; + W[17] = S1(TEMP); + TEMP = W[15] ^ W[10] ^ W[4] ^ W[2]; + W[18] = S1(TEMP); + TEMP = W[16] ^ W[11] ^ W[5] ^ W[3]; + W[19] = S1(TEMP); + TEMP = W[17] ^ W[12] ^ W[6] ^ W[4]; + W[20] = S1(TEMP); + TEMP = W[18] ^ W[13] ^ W[7] ^ W[5]; + W[21] = S1(TEMP); + TEMP = W[19] ^ W[14] ^ W[8] ^ W[6]; + W[22] = S1(TEMP); + TEMP = W[20] ^ W[15] ^ W[9] ^ W[7]; + W[23] = S1(TEMP); + TEMP = W[21] ^ W[16] ^ W[10] ^ W[8]; + W[24] = S1(TEMP); + TEMP = W[22] ^ W[17] ^ W[11] ^ W[9]; + W[25] = S1(TEMP); + TEMP = W[23] ^ W[18] ^ W[12] ^ W[10]; + W[26] = S1(TEMP); + TEMP = W[24] ^ W[19] ^ W[13] ^ W[11]; + W[27] = S1(TEMP); + TEMP = W[25] ^ W[20] ^ W[14] ^ W[12]; + W[28] = S1(TEMP); + TEMP = W[26] ^ W[21] ^ W[15] ^ W[13]; + W[29] = S1(TEMP); + TEMP = W[27] ^ W[22] ^ W[16] ^ W[14]; + W[30] = S1(TEMP); + TEMP = W[28] ^ W[23] ^ W[17] ^ W[15]; + W[31] = S1(TEMP); + + /* process the remainder of the array */ + for (t = 32; t < 80; t++) { + TEMP = W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16]; + W[t] = S1(TEMP); + } + + A = H0; + B = H1; + C = H2; + D = H3; + E = H4; + + for (t = 0; t < 20; t++) { + TEMP = S5(A) + f0(B, C, D) + E + W[t] + SHA_K0; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 40; t++) { + TEMP = S5(A) + f1(B, C, D) + E + W[t] + SHA_K1; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 60; t++) { + TEMP = S5(A) + f2(B, C, D) + E + W[t] + SHA_K2; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 80; t++) { + TEMP = S5(A) + f3(B, C, D) + E + W[t] + SHA_K3; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + + hash_value[0] = H0 + A; + hash_value[1] = H1 + B; + hash_value[2] = H2 + C; + hash_value[3] = H3 + D; + hash_value[4] = H4 + E; + + return; +} + +void srtp_sha1_init(srtp_sha1_ctx_t *ctx) +{ + /* initialize state vector */ + ctx->H[0] = 0x67452301; + ctx->H[1] = 0xefcdab89; + ctx->H[2] = 0x98badcfe; + ctx->H[3] = 0x10325476; + ctx->H[4] = 0xc3d2e1f0; + + /* indicate that message buffer is empty */ + ctx->octets_in_buffer = 0; + + /* reset message bit-count to zero */ + ctx->num_bits_in_msg = 0; +} + +void srtp_sha1_update(srtp_sha1_ctx_t *ctx, + const uint8_t *msg, + size_t octets_in_msg) +{ + size_t i; + uint8_t *buf = (uint8_t *)ctx->M; + + /* update message bit-count */ + ctx->num_bits_in_msg += (uint32_t)octets_in_msg * 8; + + /* loop over 16-word blocks of M */ + while (octets_in_msg > 0) { + if (octets_in_msg + ctx->octets_in_buffer >= 64) { + /* + * copy words of M into msg buffer until that buffer is full, + * converting them into host byte order as needed + */ + octets_in_msg -= (64 - ctx->octets_in_buffer); + for (i = ctx->octets_in_buffer; i < 64; i++) { + buf[i] = *msg++; + } + ctx->octets_in_buffer = 0; + + /* process a whole block */ + + debug_print0(srtp_mod_sha1, "(update) running srtp_sha1_core()"); + + srtp_sha1_core(ctx->M, ctx->H); + + } else { + debug_print0(srtp_mod_sha1, + "(update) not running srtp_sha1_core()"); + + for (i = ctx->octets_in_buffer; + i < (ctx->octets_in_buffer + octets_in_msg); i++) { + buf[i] = *msg++; + } + ctx->octets_in_buffer += octets_in_msg; + octets_in_msg = 0; + } + } +} + +/* + * srtp_sha1_final(ctx, output) computes the result for ctx and copies it + * into the twenty octets located at *output + */ + +void srtp_sha1_final(srtp_sha1_ctx_t *ctx, uint32_t output[5]) +{ + uint32_t A, B, C, D, E, TEMP; + uint32_t W[80]; + size_t i, t; + + /* + * process the remaining octets_in_buffer, padding and terminating as + * necessary + */ + { + size_t tail = ctx->octets_in_buffer % 4; + + /* copy/xor message into array */ + for (i = 0; i < (ctx->octets_in_buffer + 3) / 4; i++) { + W[i] = be32_to_cpu(ctx->M[i]); + } + + /* set the high bit of the octet immediately following the message */ + switch (tail) { + case (3): + W[i - 1] = (be32_to_cpu(ctx->M[i - 1]) & 0xffffff00) | 0x80; + W[i] = 0x0; + break; + case (2): + W[i - 1] = (be32_to_cpu(ctx->M[i - 1]) & 0xffff0000) | 0x8000; + W[i] = 0x0; + break; + case (1): + W[i - 1] = (be32_to_cpu(ctx->M[i - 1]) & 0xff000000) | 0x800000; + W[i] = 0x0; + break; + case (0): + W[i] = 0x80000000; + break; + } + + /* zeroize remaining words */ + for (i++; i < 15; i++) { + W[i] = 0x0; + } + + /* + * if there is room at the end of the word array, then set the + * last word to the bit-length of the message; otherwise, set that + * word to zero and then we need to do one more run of the + * compression algo. + */ + if (ctx->octets_in_buffer < 56) { + W[15] = ctx->num_bits_in_msg; + } else if (ctx->octets_in_buffer < 60) { + W[15] = 0x0; + } + + /* process the word array */ + for (t = 16; t < 80; t++) { + TEMP = W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16]; + W[t] = S1(TEMP); + } + + A = ctx->H[0]; + B = ctx->H[1]; + C = ctx->H[2]; + D = ctx->H[3]; + E = ctx->H[4]; + + for (t = 0; t < 20; t++) { + TEMP = S5(A) + f0(B, C, D) + E + W[t] + SHA_K0; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 40; t++) { + TEMP = S5(A) + f1(B, C, D) + E + W[t] + SHA_K1; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 60; t++) { + TEMP = S5(A) + f2(B, C, D) + E + W[t] + SHA_K2; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 80; t++) { + TEMP = S5(A) + f3(B, C, D) + E + W[t] + SHA_K3; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + + ctx->H[0] += A; + ctx->H[1] += B; + ctx->H[2] += C; + ctx->H[3] += D; + ctx->H[4] += E; + } + + debug_print0(srtp_mod_sha1, "(final) running srtp_sha1_core()"); + + if (ctx->octets_in_buffer >= 56) { + debug_print0(srtp_mod_sha1, "(final) running srtp_sha1_core() again"); + + /* we need to do one final run of the compression algo */ + + /* + * set initial part of word array to zeros, and set the + * final part to the number of bits in the message + */ + for (i = 0; i < 15; i++) { + W[i] = 0x0; + } + W[15] = ctx->num_bits_in_msg; + + /* process the word array */ + for (t = 16; t < 80; t++) { + TEMP = W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16]; + W[t] = S1(TEMP); + } + + A = ctx->H[0]; + B = ctx->H[1]; + C = ctx->H[2]; + D = ctx->H[3]; + E = ctx->H[4]; + + for (t = 0; t < 20; t++) { + TEMP = S5(A) + f0(B, C, D) + E + W[t] + SHA_K0; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 40; t++) { + TEMP = S5(A) + f1(B, C, D) + E + W[t] + SHA_K1; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 60; t++) { + TEMP = S5(A) + f2(B, C, D) + E + W[t] + SHA_K2; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + for (; t < 80; t++) { + TEMP = S5(A) + f3(B, C, D) + E + W[t] + SHA_K3; + E = D; + D = C; + C = S30(B); + B = A; + A = TEMP; + } + + ctx->H[0] += A; + ctx->H[1] += B; + ctx->H[2] += C; + ctx->H[3] += D; + ctx->H[4] += E; + } + + /* copy result into output buffer */ + output[0] = be32_to_cpu(ctx->H[0]); + output[1] = be32_to_cpu(ctx->H[1]); + output[2] = be32_to_cpu(ctx->H[2]); + output[3] = be32_to_cpu(ctx->H[3]); + output[4] = be32_to_cpu(ctx->H[4]); + + /* indicate that message buffer in context is empty */ + ctx->octets_in_buffer = 0; + + return; +} diff --git a/src/libs/libsrtp/crypto/include/aes.h b/src/libs/libsrtp/crypto/include/aes.h new file mode 100644 index 00000000..1e8edc1b --- /dev/null +++ b/src/libs/libsrtp/crypto/include/aes.h @@ -0,0 +1,83 @@ +/* + * aes.h + * + * header file for the AES block cipher + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef AES_H +#define AES_H + +#include "datatypes.h" +#include "err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* aes internals */ + +typedef struct { + v128_t round[15]; + size_t num_rounds; +} srtp_aes_expanded_key_t; + +srtp_err_status_t srtp_aes_expand_encryption_key( + const uint8_t *key, + size_t key_len, + srtp_aes_expanded_key_t *expanded_key); + +srtp_err_status_t srtp_aes_expand_decryption_key( + const uint8_t *key, + size_t key_len, + srtp_aes_expanded_key_t *expanded_key); + +void srtp_aes_encrypt(v128_t *plaintext, + const srtp_aes_expanded_key_t *exp_key); + +void srtp_aes_decrypt(v128_t *plaintext, + const srtp_aes_expanded_key_t *exp_key); + +#ifdef __cplusplus +} +#endif + +#endif /* AES_H */ diff --git a/src/libs/libsrtp/crypto/include/aes_gcm.h b/src/libs/libsrtp/crypto/include/aes_gcm.h new file mode 100644 index 00000000..d6705a46 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/aes_gcm.h @@ -0,0 +1,134 @@ +/* + * aes_gcm.h + * + * Header for AES Galois Counter Mode. + * + * John A. Foley + * Cisco Systems, Inc. + * + */ +/* + * + * Copyright (c) 2013-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef AES_GCM_H +#define AES_GCM_H + +#include "cipher.h" +#include "srtp.h" +#include "datatypes.h" + +#ifdef OPENSSL + +#include +#include + +typedef struct { + size_t key_size; + size_t tag_len; + EVP_CIPHER_CTX *ctx; + srtp_cipher_direction_t dir; +} srtp_aes_gcm_ctx_t; + +#endif /* OPENSSL */ + +#ifdef WOLFSSL +#define MAX_AD_SIZE 2048 +#ifdef HAVE_CONFIG_H +#include +#endif +#ifndef WOLFSSL_USER_SETTINGS +#include +#endif +#include +#include + +typedef struct { + size_t key_size; + size_t tag_len; +#ifndef WOLFSSL_AESGCM_STREAM + size_t aad_size; + size_t iv_len; + uint8_t iv[GCM_NONCE_MID_SZ]; + uint8_t aad[MAX_AD_SIZE]; +#endif + Aes *ctx; + srtp_cipher_direction_t dir; +} srtp_aes_gcm_ctx_t; + +#endif /* WOLFSSL */ + +#ifdef MBEDTLS +#define MAX_AD_SIZE 2048 +#include +#include + +typedef struct { + size_t key_size; + size_t tag_len; + size_t aad_size; + size_t iv_len; + uint8_t iv[12]; + uint8_t aad[MAX_AD_SIZE]; + mbedtls_gcm_context *ctx; + srtp_cipher_direction_t dir; +} srtp_aes_gcm_ctx_t; + +#endif /* MBEDTLS */ + +#ifdef NSS + +#define NSS_PKCS11_2_0_COMPAT 1 + +#include +#include + +#define MAX_AD_SIZE 2048 + +typedef struct { + size_t key_size; + size_t tag_size; + srtp_cipher_direction_t dir; + NSSInitContext *nss; + PK11SymKey *key; + uint8_t iv[12]; + uint8_t aad[MAX_AD_SIZE]; + size_t aad_size; + CK_GCM_PARAMS params; +} srtp_aes_gcm_ctx_t; + +#endif /* NSS */ + +#endif /* AES_GCM_H */ diff --git a/src/libs/libsrtp/crypto/include/aes_icm.h b/src/libs/libsrtp/crypto/include/aes_icm.h new file mode 100644 index 00000000..8262e9ba --- /dev/null +++ b/src/libs/libsrtp/crypto/include/aes_icm.h @@ -0,0 +1,62 @@ +/* + * aes_icm.h + * + * Header for AES Integer Counter Mode. + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef AES_ICM_H +#define AES_ICM_H + +#include "aes.h" +#include "cipher.h" + +typedef struct { + v128_t counter; /* holds the counter value */ + v128_t offset; /* initial offset value */ + v128_t keystream_buffer; /* buffers bytes of keystream */ + srtp_aes_expanded_key_t expanded_key; /* the cipher key */ + size_t bytes_in_buffer; /* number of unused bytes in buffer */ + size_t key_size; /* AES key size + 14 byte SALT */ +} srtp_aes_icm_ctx_t; + +#endif /* AES_ICM_H */ diff --git a/src/libs/libsrtp/crypto/include/aes_icm_ext.h b/src/libs/libsrtp/crypto/include/aes_icm_ext.h new file mode 100644 index 00000000..9000294e --- /dev/null +++ b/src/libs/libsrtp/crypto/include/aes_icm_ext.h @@ -0,0 +1,112 @@ +/* + * aes_icm.h + * + * Header for AES Integer Counter Mode. + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef AES_ICM_H +#define AES_ICM_H + +#include "cipher.h" +#include "datatypes.h" + +#ifdef OPENSSL + +#include +#include + +typedef struct { + v128_t counter; /* holds the counter value */ + v128_t offset; /* initial offset value */ + size_t key_size; + EVP_CIPHER_CTX *ctx; +} srtp_aes_icm_ctx_t; + +#endif /* OPENSSL */ + +#ifdef WOLFSSL + +#include +typedef struct { + v128_t counter; /* holds the counter value */ + v128_t offset; /* initial offset value */ + uint8_t key[SRTP_AES_256_KEY_LEN]; + size_t key_size; + Aes *ctx; +} srtp_aes_icm_ctx_t; + +#endif /* WOLFSSL */ + +#ifdef MBEDTLS + +#include +typedef struct { + v128_t counter; /* holds the counter value */ + v128_t offset; /* initial offset value */ + v128_t stream_block; + size_t nc_off; + size_t key_size; + mbedtls_aes_context *ctx; +} srtp_aes_icm_ctx_t; + +#endif /* MBEDTLS */ + +#ifdef NSS + +#define NSS_PKCS11_2_0_COMPAT 1 + +#include +#include + +typedef struct { + v128_t counter; + v128_t offset; + size_t key_size; + uint8_t iv[16]; + NSSInitContext *nss; + PK11SymKey *key; + PK11Context *ctx; +} srtp_aes_icm_ctx_t; + +#endif /* NSS */ + +#endif /* AES_ICM_H */ diff --git a/src/libs/libsrtp/crypto/include/alloc.h b/src/libs/libsrtp/crypto/include/alloc.h new file mode 100644 index 00000000..1fc04101 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/alloc.h @@ -0,0 +1,76 @@ +/* + * alloc.h + * + * interface to memory allocation and deallocation, with optional debugging + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CRYPTO_ALLOC_H +#define CRYPTO_ALLOC_H + +#include "datatypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * srtp_crypto_alloc + * + * Allocates a block of memory of given size. The memory will be + * initialized to zero's. Free the memory with a call to srtp_crypto_free. + * + * returns pointer to memory on success or else NULL + */ +void *srtp_crypto_alloc(size_t size); + +/* + * srtp_crypto_free + * + * Frees the block of memory ptr previously allocated with + * srtp_crypto_alloc + */ +void srtp_crypto_free(void *ptr); + +#ifdef __cplusplus +} +#endif + +#endif /* CRYPTO_ALLOC_H */ diff --git a/src/libs/libsrtp/crypto/include/auth.h b/src/libs/libsrtp/crypto/include/auth.h new file mode 100644 index 00000000..5ec4d764 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/auth.h @@ -0,0 +1,173 @@ +/* + * auth.h + * + * common interface to authentication functions + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_AUTH_H +#define SRTP_AUTH_H + +#include "srtp.h" +#include "crypto_types.h" /* for values of auth_type_id_t */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef const struct srtp_auth_type_t *srtp_auth_type_pointer; +typedef struct srtp_auth_t *srtp_auth_pointer_t; + +typedef srtp_err_status_t (*srtp_auth_alloc_func)(srtp_auth_pointer_t *ap, + size_t key_len, + size_t out_len); + +typedef srtp_err_status_t (*srtp_auth_init_func)(void *state, + const uint8_t *key, + size_t key_len); + +typedef srtp_err_status_t (*srtp_auth_dealloc_func)(srtp_auth_pointer_t ap); + +typedef srtp_err_status_t (*srtp_auth_compute_func)(void *state, + const uint8_t *buffer, + size_t octets_to_auth, + size_t tag_len, + uint8_t *tag); + +typedef srtp_err_status_t (*srtp_auth_update_func)(void *state, + const uint8_t *buffer, + size_t octets_to_auth); + +typedef srtp_err_status_t (*srtp_auth_start_func)(void *state); + +/* some syntactic sugar on these function types */ +#define srtp_auth_type_alloc(at, a, klen, outlen) \ + ((at)->alloc((a), (klen), (outlen))) + +#define srtp_auth_init(a, key) \ + (((a)->type)->init((a)->state, (key), ((a)->key_len))) + +#define srtp_auth_compute(a, buf, len, res) \ + (((a)->type)->compute((a)->state, (buf), (len), (a)->out_len, (res))) + +#define srtp_auth_update(a, buf, len) \ + (((a)->type)->update((a)->state, (buf), (len))) + +#define srtp_auth_start(a) (((a)->type)->start((a)->state)) + +#define srtp_auth_dealloc(c) (((c)->type)->dealloc(c)) + +/* functions to get information about a particular auth_t */ +size_t srtp_auth_get_key_length(const struct srtp_auth_t *a); + +size_t srtp_auth_get_tag_length(const struct srtp_auth_t *a); + +size_t srtp_auth_get_prefix_length(const struct srtp_auth_t *a); + +/* + * srtp_auth_test_case_t is a (list of) key/message/tag values that are + * known to be correct for a particular cipher. this data can be used + * to test an implementation in an on-the-fly self test of the + * correctness of the implementation. (see the srtp_auth_type_self_test() + * function below) + */ +typedef struct srtp_auth_test_case_t { + size_t key_length_octets; /* octets in key */ + const uint8_t *key; /* key */ + size_t data_length_octets; /* octets in data */ + const uint8_t *data; /* data */ + size_t tag_length_octets; /* octets in tag */ + const uint8_t *tag; /* tag */ + const struct srtp_auth_test_case_t + *next_test_case; /* pointer to next testcase */ +} srtp_auth_test_case_t; + +/* srtp_auth_type_t */ +typedef struct srtp_auth_type_t { + srtp_auth_alloc_func alloc; + srtp_auth_dealloc_func dealloc; + srtp_auth_init_func init; + srtp_auth_compute_func compute; + srtp_auth_update_func update; + srtp_auth_start_func start; + const char *description; + const srtp_auth_test_case_t *test_data; + srtp_auth_type_id_t id; +} srtp_auth_type_t; + +typedef struct srtp_auth_t { + const srtp_auth_type_t *type; + void *state; + size_t out_len; /* length of output tag in octets */ + size_t key_len; /* length of key in octets */ + size_t prefix_len; /* length of keystream prefix */ +} srtp_auth_t; + +/* + * srtp_auth_type_self_test() tests an auth_type against test cases + * provided in an array of values of key/message/tag that is known to + * be good + */ +srtp_err_status_t srtp_auth_type_self_test(const srtp_auth_type_t *at); + +/* + * srtp_auth_type_test() tests an auth_type against external test cases + * provided in an array of values of key/message/tag that is known to + * be good + */ +srtp_err_status_t srtp_auth_type_test(const srtp_auth_type_t *at, + const srtp_auth_test_case_t *test_data); + +/* + * srtp_replace_auth_type(ct, id) + * + * replaces srtp's kernel's auth type implementation for the auth_type id + * with a new one passed in externally. The new auth type must pass all the + * existing auth_type's self tests as well as its own. + */ +srtp_err_status_t srtp_replace_auth_type(const srtp_auth_type_t *ct, + srtp_auth_type_id_t id); + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_AUTH_H */ diff --git a/src/libs/libsrtp/crypto/include/cipher.h b/src/libs/libsrtp/crypto/include/cipher.h new file mode 100644 index 00000000..86ce9d3f --- /dev/null +++ b/src/libs/libsrtp/crypto/include/cipher.h @@ -0,0 +1,242 @@ +/* + * cipher.h + * + * common interface to ciphers + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_CIPHER_H +#define SRTP_CIPHER_H + +#include "srtp.h" +#include "crypto_types.h" /* for values of cipher_type_id_t */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * srtp_cipher_direction_t defines a particular cipher operation. + * + * A srtp_cipher_direction_t is an enum that describes a particular cipher + * operation, i.e. encryption or decryption. For some ciphers, this + * distinction does not matter, but for others, it is essential. + */ +typedef enum { + srtp_direction_encrypt, /**< encryption (convert plaintext to ciphertext) */ + srtp_direction_decrypt, /**< decryption (convert ciphertext to plaintext) */ + srtp_direction_any /**< encryption or decryption */ +} srtp_cipher_direction_t; + +/* + * the srtp_cipher_pointer_t definition is needed + * as srtp_cipher_t is not yet defined + */ +typedef struct srtp_cipher_t *srtp_cipher_pointer_t; + +/* + * a srtp_cipher_alloc_func_t allocates (but does not initialize) a + * srtp_cipher_t + */ +typedef srtp_err_status_t (*srtp_cipher_alloc_func_t)(srtp_cipher_pointer_t *cp, + size_t key_len, + size_t tag_len); + +/* + * a srtp_cipher_init_func_t [re-]initializes a cipher_t with a given key + */ +typedef srtp_err_status_t (*srtp_cipher_init_func_t)(void *state, + const uint8_t *key); + +/* a srtp_cipher_dealloc_func_t de-allocates a cipher_t */ +typedef srtp_err_status_t (*srtp_cipher_dealloc_func_t)( + srtp_cipher_pointer_t cp); + +/* + * a srtp_cipher_set_aad_func_t processes the AAD data for AEAD ciphers + */ +typedef srtp_err_status_t (*srtp_cipher_set_aad_func_t)(void *state, + const uint8_t *aad, + size_t aad_len); + +/* a srtp_cipher_encrypt_func_t encrypts data in-place */ +typedef srtp_err_status_t (*srtp_cipher_encrypt_func_t)(void *state, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); + +/* a srtp_cipher_decrypt_func_t decrypts data in-place */ +typedef srtp_err_status_t (*srtp_cipher_decrypt_func_t)(void *state, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); + +/* + * a srtp_cipher_set_iv_func_t function sets the current initialization vector + */ +typedef srtp_err_status_t (*srtp_cipher_set_iv_func_t)( + void *state, + uint8_t *iv, + srtp_cipher_direction_t direction); + +/* + * srtp_cipher_test_case_t is a (list of) key, salt, plaintext, ciphertext, + * and aad values that are known to be correct for a + * particular cipher. this data can be used to test an implementation + * in an on-the-fly self test of the correctness of the implementation. + * (see the srtp_cipher_type_self_test() function below) + */ +typedef struct srtp_cipher_test_case_t { + size_t key_length_octets; /* octets in key */ + const uint8_t *key; /* key */ + uint8_t *idx; /* packet index */ + size_t plaintext_length_octets; /* octets in plaintext */ + const uint8_t *plaintext; /* plaintext */ + size_t ciphertext_length_octets; /* octets in plaintext */ + const uint8_t *ciphertext; /* ciphertext */ + size_t aad_length_octets; /* octets in AAD */ + const uint8_t *aad; /* AAD */ + size_t tag_length_octets; /* Length of AEAD tag */ + const struct srtp_cipher_test_case_t + *next_test_case; /* pointer to next testcase */ +} srtp_cipher_test_case_t; + +/* srtp_cipher_type_t defines the 'metadata' for a particular cipher type */ +typedef struct srtp_cipher_type_t { + srtp_cipher_alloc_func_t alloc; + srtp_cipher_dealloc_func_t dealloc; + srtp_cipher_init_func_t init; + srtp_cipher_set_aad_func_t set_aad; + srtp_cipher_encrypt_func_t encrypt; + srtp_cipher_decrypt_func_t decrypt; + srtp_cipher_set_iv_func_t set_iv; + const char *description; + const srtp_cipher_test_case_t *test_data; + srtp_cipher_type_id_t id; +} srtp_cipher_type_t; + +/* + * srtp_cipher_t defines an instantiation of a particular cipher, with fixed + * key length, key and salt values + */ +typedef struct srtp_cipher_t { + const srtp_cipher_type_t *type; + void *state; + size_t key_len; + srtp_cipher_type_id_t algorithm; +} srtp_cipher_t; + +/* some bookkeeping functions */ +size_t srtp_cipher_get_key_length(const srtp_cipher_t *c); + +/* + * srtp_cipher_type_self_test() tests a cipher against test cases provided in + * an array of values of key/srtp_xtd_seq_num_t/plaintext/ciphertext + * that is known to be good + */ +srtp_err_status_t srtp_cipher_type_self_test(const srtp_cipher_type_t *ct); + +/* + * srtp_cipher_type_test() tests a cipher against external test cases provided + * in + * an array of values of key/srtp_xtd_seq_num_t/plaintext/ciphertext + * that is known to be good + */ +srtp_err_status_t srtp_cipher_type_test( + const srtp_cipher_type_t *ct, + const srtp_cipher_test_case_t *test_data); + +/* + * srtp_cipher_bits_per_second(c, l, t) computes (an estimate of) the + * number of bits that a cipher implementation can encrypt in a second + * + * c is a cipher (which MUST be allocated and initialized already), l + * is the length in octets of the test data to be encrypted, and t is + * the number of trials + * + * if an error is encountered, then the value 0 is returned + */ +uint64_t srtp_cipher_bits_per_second(srtp_cipher_t *c, + size_t octets_in_buffer, + size_t num_trials); + +srtp_err_status_t srtp_cipher_type_alloc(const srtp_cipher_type_t *ct, + srtp_cipher_t **c, + size_t key_len, + size_t tlen); +srtp_err_status_t srtp_cipher_dealloc(srtp_cipher_t *c); +srtp_err_status_t srtp_cipher_init(srtp_cipher_t *c, const uint8_t *key); +srtp_err_status_t srtp_cipher_set_iv(srtp_cipher_t *c, + uint8_t *iv, + srtp_cipher_direction_t direction); +srtp_err_status_t srtp_cipher_output(srtp_cipher_t *c, + uint8_t *buffer, + size_t *num_octets_to_output); +srtp_err_status_t srtp_cipher_encrypt(srtp_cipher_t *c, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); +srtp_err_status_t srtp_cipher_decrypt(srtp_cipher_t *c, + const uint8_t *src, + size_t src_len, + uint8_t *dst, + size_t *dst_len); +srtp_err_status_t srtp_cipher_set_aad(srtp_cipher_t *c, + const uint8_t *aad, + size_t aad_len); + +/* + * srtp_replace_cipher_type(ct, id) + * + * replaces srtp's existing cipher implementation for the cipher_type id + * with a new one passed in externally. The new cipher must pass all the + * existing cipher_type's self tests as well as its own. + */ +srtp_err_status_t srtp_replace_cipher_type(const srtp_cipher_type_t *ct, + srtp_cipher_type_id_t id); + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_CIPHER_H */ diff --git a/src/libs/libsrtp/crypto/include/cipher_priv.h b/src/libs/libsrtp/crypto/include/cipher_priv.h new file mode 100644 index 00000000..de15896f --- /dev/null +++ b/src/libs/libsrtp/crypto/include/cipher_priv.h @@ -0,0 +1,62 @@ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_CIHPER_PRIV_H +#define SRTP_CIHPER_PRIV_H + +#include "cipher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A trivial platform independent random source. + * For use in test only. + */ +void srtp_cipher_rand_for_tests(uint8_t *dest, size_t len); + +/* + * A trivial platform independent 32 bit random number. + * For use in test only. + */ +uint32_t srtp_cipher_rand_u32_for_tests(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_CIPHER_PRIV_H */ diff --git a/src/libs/libsrtp/crypto/include/cipher_types.h b/src/libs/libsrtp/crypto/include/cipher_types.h new file mode 100644 index 00000000..dd36b9e6 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/cipher_types.h @@ -0,0 +1,80 @@ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CIHPER_TYPES_H +#define CIHPER_TYPES_H + +#include "cipher.h" +#include "auth.h" + +/* + * cipher types that can be included in the kernel + */ + +extern const srtp_cipher_type_t srtp_null_cipher; +extern const srtp_cipher_type_t srtp_aes_icm_128; +extern const srtp_cipher_type_t srtp_aes_icm_256; +#ifdef GCM +extern const srtp_cipher_type_t srtp_aes_icm_192; +extern const srtp_cipher_type_t srtp_aes_gcm_128; +extern const srtp_cipher_type_t srtp_aes_gcm_256; +#endif + +/* + * auth func types that can be included in the kernel + */ + +extern const srtp_auth_type_t srtp_null_auth; +extern const srtp_auth_type_t srtp_hmac; + +/* + * other generic debug modules that can be included in the kernel + */ + +extern srtp_debug_module_t srtp_mod_auth; +extern srtp_debug_module_t srtp_mod_cipher; +extern srtp_debug_module_t srtp_mod_alloc; + +/* debug modules for cipher types */ +extern srtp_debug_module_t srtp_mod_aes_icm; + +#if defined(OPENSSL) || defined(WOLFSSL) || defined(MBEDTLS) || defined(NSS) +extern srtp_debug_module_t srtp_mod_aes_gcm; +#endif + +/* debug modules for auth types */ +extern srtp_debug_module_t srtp_mod_hmac; +#endif diff --git a/src/libs/libsrtp/crypto/include/crypto_kernel.h b/src/libs/libsrtp/crypto/include/crypto_kernel.h new file mode 100644 index 00000000..262a8069 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/crypto_kernel.h @@ -0,0 +1,215 @@ +/* + * crypto_kernel.h + * + * header for the cryptographic kernel + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CRYPTO_KERNEL +#define CRYPTO_KERNEL + +#include "cipher.h" +#include "auth.h" +#include "err.h" +#include "crypto_types.h" +#include "key.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * crypto_kernel_state_t defines the possible states: + * + * insecure - not yet initialized + * secure - initialized and passed self-tests + */ +typedef enum { + srtp_crypto_kernel_state_insecure, + srtp_crypto_kernel_state_secure +} srtp_crypto_kernel_state_t; + +/* + * linked list of cipher types + */ +typedef struct srtp_kernel_cipher_type { + srtp_cipher_type_id_t id; + const srtp_cipher_type_t *cipher_type; + struct srtp_kernel_cipher_type *next; +} srtp_kernel_cipher_type_t; + +/* + * linked list of auth types + */ +typedef struct srtp_kernel_auth_type { + srtp_auth_type_id_t id; + const srtp_auth_type_t *auth_type; + struct srtp_kernel_auth_type *next; +} srtp_kernel_auth_type_t; + +/* + * linked list of debug modules + */ +typedef struct srtp_kernel_debug_module { + srtp_debug_module_t *mod; + struct srtp_kernel_debug_module *next; +} srtp_kernel_debug_module_t; + +/* + * crypto_kernel_t is the data structure for the crypto kernel + * + * note that there is *exactly one* instance of this data type, + * a global variable defined in crypto_kernel.c + */ +typedef struct { + srtp_crypto_kernel_state_t state; /* current state of kernel */ + srtp_kernel_cipher_type_t *cipher_type_list; /* list of all cipher types */ + srtp_kernel_auth_type_t *auth_type_list; /* list of all auth func types */ + srtp_kernel_debug_module_t + *debug_module_list; /* list of all debug modules */ +} srtp_crypto_kernel_t; + +/* + * srtp_crypto_kernel_t external api + */ + +/* + * The function srtp_crypto_kernel_init() initialized the crypto kernel and + * runs the self-test operations on the random number generators and + * crypto algorithms. Possible return values are: + * + * srtp_err_status_ok initialization successful + * init failure + * + * If any value other than srtp_err_status_ok is returned, the + * crypto_kernel MUST NOT be used. + */ +srtp_err_status_t srtp_crypto_kernel_init(void); + +/* + * The function srtp_crypto_kernel_shutdown() de-initializes the + * crypto_kernel, zeroizes keys and other cryptographic material, and + * deallocates any dynamically allocated memory. Possible return + * values are: + * + * srtp_err_status_ok shutdown successful + * shutdown failure + * + */ +srtp_err_status_t srtp_crypto_kernel_shutdown(void); + +/* + * The function srtp_crypto_kernel_stats() checks the the crypto_kernel, + * running tests on the ciphers, auth funcs, and rng, and prints out a + * status report. Possible return values are: + * + * srtp_err_status_ok all tests were passed + * a test failed + * + */ +srtp_err_status_t srtp_crypto_kernel_status(void); + +/* + * srtp_crypto_kernel_list_debug_modules() outputs a list of debugging modules + * + */ +srtp_err_status_t srtp_crypto_kernel_list_debug_modules(void); + +/* + * srtp_crypto_kernel_load_cipher_type() + * + */ +srtp_err_status_t srtp_crypto_kernel_load_cipher_type( + const srtp_cipher_type_t *ct, + srtp_cipher_type_id_t id); + +srtp_err_status_t srtp_crypto_kernel_load_auth_type(const srtp_auth_type_t *ct, + srtp_auth_type_id_t id); + +srtp_err_status_t srtp_crypto_kernel_load_debug_module( + srtp_debug_module_t *new_dm); + +/* + * srtp_crypto_kernel_alloc_cipher(id, cp, key_len); + * + * allocates a cipher of type id at location *cp, with key length + * key_len octets. Return values are: + * + * srtp_err_status_ok no problems + * srtp_err_status_alloc_fail an allocation failure occured + * srtp_err_status_fail couldn't find cipher with identifier 'id' + */ +srtp_err_status_t srtp_crypto_kernel_alloc_cipher(srtp_cipher_type_id_t id, + srtp_cipher_pointer_t *cp, + size_t key_len, + size_t tag_len); + +/* + * srtp_crypto_kernel_alloc_auth(id, ap, key_len, tag_len); + * + * allocates an auth function of type id at location *ap, with key + * length key_len octets and output tag length of tag_len. Return + * values are: + * + * srtp_err_status_ok no problems + * srtp_err_status_alloc_fail an allocation failure occured + * srtp_err_status_fail couldn't find auth with identifier 'id' + */ +srtp_err_status_t srtp_crypto_kernel_alloc_auth(srtp_auth_type_id_t id, + srtp_auth_pointer_t *ap, + size_t key_len, + size_t tag_len); + +/* + * srtp_crypto_kernel_set_debug_module(mod_name, v) + * + * sets dynamic debugging to the value v (false for off, true for on) for the + * debug module with the name mod_name + * + * returns srtp_err_status_ok on success, srtp_err_status_fail otherwise + */ +srtp_err_status_t srtp_crypto_kernel_set_debug_module(const char *mod_name, + bool v); + +#ifdef __cplusplus +} +#endif + +#endif /* CRYPTO_KERNEL */ diff --git a/src/libs/libsrtp/crypto/include/crypto_types.h b/src/libs/libsrtp/crypto/include/crypto_types.h new file mode 100644 index 00000000..7fd3178b --- /dev/null +++ b/src/libs/libsrtp/crypto/include/crypto_types.h @@ -0,0 +1,116 @@ +/* + * crypto_types.h + * + * constants for cipher types and auth func types + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_CRYPTO_TYPES_H +#define SRTP_CRYPTO_TYPES_H + +/* + * The null cipher performs no encryption. + * + * The SRTP_NULL_CIPHER leaves its inputs unaltered, during both the + * encryption and decryption operations. This cipher can be chosen + * to indicate that no encryption is to be performed. + */ +#define SRTP_NULL_CIPHER 0 + +/* + * AES-128 Integer Counter Mode (AES ICM) + * + * AES-128 ICM is the variant of counter mode that is used by + * Secure RTP. This cipher uses a 16-octet key concatenated with a + * 14-octet offset (or salt) value. + */ +#define SRTP_AES_ICM_128 1 + +/* + * AES-192 Integer Counter Mode (AES ICM) + * + * AES-128 ICM is the variant of counter mode that is used by + * Secure RTP. This cipher uses a 24-octet key concatenated with a + * 14-octet offset (or salt) value. + */ +#define SRTP_AES_ICM_192 4 + +/* + * AES-256 Integer Counter Mode (AES ICM) + * + * AES-128 ICM is the variant of counter mode that is used by + * Secure RTP. This cipher uses a 32-octet key concatenated with a + * 14-octet offset (or salt) value. + */ +#define SRTP_AES_ICM_256 5 + +/* + * AES-128_GCM Galois Counter Mode (AES GCM) + * + * AES-128 GCM is the variant of galois counter mode that is used by + * Secure RTP. This cipher uses a 16-octet key. + */ +#define SRTP_AES_GCM_128 6 + +/* + * AES-256_GCM Galois Counter Mode (AES GCM) + * + * AES-256 GCM is the variant of galois counter mode that is used by + * Secure RTP. This cipher uses a 32-octet key. + */ +#define SRTP_AES_GCM_256 7 + +/* + * The null authentication function performs no authentication. + * + * The NULL_AUTH function does nothing, and can be selected to indicate + * that authentication should not be performed. + */ +#define SRTP_NULL_AUTH 0 + +/* + * HMAC-SHA1 + * + * SRTP_HMAC_SHA1 implements the Hash-based MAC using the NIST Secure + * Hash Algorithm version 1 (SHA1). + */ +#define SRTP_HMAC_SHA1 3 + +#endif /* SRTP_CRYPTO_TYPES_H */ diff --git a/src/libs/libsrtp/crypto/include/datatypes.h b/src/libs/libsrtp/crypto/include/datatypes.h new file mode 100644 index 00000000..6e2a1912 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/datatypes.h @@ -0,0 +1,264 @@ +/* + * datatypes.h + * + * data types for bit vectors and finite fields + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DATATYPES_H +#define DATATYPES_H + +#include +#include +#include +#include +#ifdef HAVE_NETINET_IN_H +#include +#elif defined HAVE_WINSOCK2_H +#include +#endif + +#if defined(__SSE2__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_WIN32) || defined(WIN32) +#include +typedef SSIZE_T ssize_t; +#endif + +typedef union { + uint8_t v8[16]; + uint16_t v16[8]; + uint32_t v32[4]; + uint64_t v64[2]; +} v128_t; + +#define MAX_PRINT_STRING_LEN 1024 + +char *srtp_octet_string_hex_string(const void *str, size_t length); + +char *v128_bit_string(v128_t *x); + +char *v128_hex_string(v128_t *x); + +void v128_copy_octet_string(v128_t *x, const uint8_t s[16]); + +void v128_left_shift(v128_t *x, size_t shift_index); + +/* + * the following macros define the data manipulation functions + * + */ + +#if defined(__SSE2__) + +#define v128_set_to_zero(x) \ + (_mm_storeu_si128((__m128i *)(x), _mm_setzero_si128())) + +#define v128_copy(x, y) \ + (_mm_storeu_si128((__m128i *)(x), _mm_loadu_si128((const __m128i *)(y)))) + +#define v128_xor(z, x, y) \ + (_mm_storeu_si128((__m128i *)(z), \ + _mm_xor_si128(_mm_loadu_si128((const __m128i *)(x)), \ + _mm_loadu_si128((const __m128i *)(y))))) + +#define v128_xor_eq(z, x) \ + (_mm_storeu_si128((__m128i *)(z), \ + _mm_xor_si128(_mm_loadu_si128((const __m128i *)(x)), \ + _mm_loadu_si128((const __m128i *)(z))))) + +#else /* defined(__SSE2__) */ + +#define v128_set_to_zero(x) \ + ((x)->v32[0] = 0, (x)->v32[1] = 0, (x)->v32[2] = 0, (x)->v32[3] = 0) + +#define v128_copy(x, y) \ + ((x)->v32[0] = (y)->v32[0], (x)->v32[1] = (y)->v32[1], \ + (x)->v32[2] = (y)->v32[2], (x)->v32[3] = (y)->v32[3]) + +#define v128_xor(z, x, y) \ + ((z)->v32[0] = (x)->v32[0] ^ (y)->v32[0], \ + (z)->v32[1] = (x)->v32[1] ^ (y)->v32[1], \ + (z)->v32[2] = (x)->v32[2] ^ (y)->v32[2], \ + (z)->v32[3] = (x)->v32[3] ^ (y)->v32[3]) + +#define v128_xor_eq(z, x) \ + ((z)->v64[0] ^= (x)->v64[0], (z)->v64[1] ^= (x)->v64[1]) + +#endif /* defined(__SSE2__) */ + +/* NOTE! This assumes an odd ordering! */ +/* This will not be compatible directly with math on some processors */ +/* bit 0 is first 32-bit word, low order bit. in little-endian, that's + the first byte of the first 32-bit word. In big-endian, that's + the 3rd byte of the first 32-bit word */ +/* The get/set bit code is used by the replay code ONLY, and it doesn't + really care which bit is which. AES does care which bit is which, but + doesn't use the 128-bit get/set or 128-bit shifts */ + +#define v128_get_bit(x, bit) (((((x)->v32[(bit) >> 5]) >> ((bit)&31)) & 1)) + +#define v128_set_bit(x, bit) \ + ((((x)->v32[(bit) >> 5]) |= ((uint32_t)1 << ((bit)&31)))) + +#define v128_clear_bit(x, bit) \ + ((((x)->v32[(bit) >> 5]) &= ~((uint32_t)1 << ((bit)&31)))) + +/* + * srtp_octet_string_equal(a, b, len) returns true if the octet strings + * a and b are equal. It returns false otherwise. The running time of the + * comparison depends only on length, making this safe to use for (e.g.) + * verifying authentication tags. + */ + +bool srtp_octet_string_equal(const uint8_t *a, const uint8_t *b, size_t len); + +/* + * A portable way to zero out memory as recommended by + * https://cryptocoding.net/index.php/Coding_rules#Clean_memory_of_secret_data + * This is used to zero memory when OPENSSL_cleanse() is not available. + */ +void srtp_cleanse(void *s, size_t len); + +/* + * Functions as a wrapper that delegates to either srtp_cleanse() or + * OPENSSL_cleanse() if available to zero memory. + */ +void octet_string_set_to_zero(void *s, size_t len); + +#if defined(HAVE_CONFIG_H) + +/* + * Convert big endian integers to CPU byte order. + */ +#ifdef WORDS_BIGENDIAN +/* Nothing to do. */ +#define be32_to_cpu(x) (x) +#define be64_to_cpu(x) (x) +#elif defined(HAVE_BYTESWAP_H) +/* We have (hopefully) optimized versions in byteswap.h */ +#include +#define be32_to_cpu(x) bswap_32((x)) +#define be64_to_cpu(x) bswap_64((x)) +#elif defined(__APPLE__) +// Mac OS X / Darwin features +#include +#define be32_to_cpu(x) OSSwapInt32(x) +#define be64_to_cpu(x) OSSwapInt64(x) +#else /* WORDS_BIGENDIAN */ + +#if defined(__GNUC__) +/* Fall back. */ +static inline uint32_t be32_to_cpu(uint32_t v) +{ + return __builtin_bswap32(v); +} +#else /* HAVE_X86 */ +#ifdef HAVE_NETINET_IN_H +#include +#elif defined HAVE_WINSOCK2_H +#include +#endif /* HAVE_NETINET_IN_H */ +#define be32_to_cpu(x) ntohl((x)) +#endif /* HAVE_X86 */ + +static inline uint64_t be64_to_cpu(uint64_t v) +{ +#if defined(__GNUC__) + v = __builtin_bswap64(v); +#else + /* use the native 64-bit math */ + v = (uint64_t)((be32_to_cpu((uint32_t)(v >> 32))) | + (((uint64_t)be32_to_cpu((uint32_t)v)) << 32)); +#endif + return v; +} + +#endif /* WORDS_BIGENDIAN */ + +#endif /* HAVE_CONFIG_H */ + +/* + * functions manipulating bitvector_t + * + * A bitvector_t consists of an array of words and an integer + * representing the number of significant bits stored in the array. + * The bits are packed as follows: the least significant bit is that + * of word[0], while the most significant bit is the nth most + * significant bit of word[m], where length = bits_per_word * m + n. + * + */ + +#define bits_per_word 32 +#define bytes_per_word 4 + +typedef struct { + size_t length; + uint32_t *word; +} bitvector_t; + +#define bitvector_get_bit(v, bit_index) \ + (((((v)->word[((bit_index) >> 5)]) >> ((bit_index)&31)) & 1)) + +#define bitvector_set_bit(v, bit_index) \ + ((((v)->word[((bit_index) >> 5)] |= ((uint32_t)1 << ((bit_index)&31))))) + +#define bitvector_get_length(v) (((v)->length)) + +bool bitvector_alloc(bitvector_t *v, size_t length); + +void bitvector_dealloc(bitvector_t *v); + +void bitvector_set_to_zero(bitvector_t *x); + +void bitvector_left_shift(bitvector_t *x, size_t index); + +#ifdef __cplusplus +} +#endif + +#endif /* DATATYPES_H */ diff --git a/src/libs/libsrtp/crypto/include/err.h b/src/libs/libsrtp/crypto/include/err.h new file mode 100644 index 00000000..ff8d500d --- /dev/null +++ b/src/libs/libsrtp/crypto/include/err.h @@ -0,0 +1,171 @@ +/* + * err.h + * + * error status codes + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef ERR_H +#define ERR_H + +#include +#include + +#ifdef HAVE_CONFIG_H +#include +#endif +#include "srtp.h" + +#if defined(__clang__) || (defined(__GNUC__) && defined(__has_attribute)) +#if __has_attribute(format) +#define LIBSRTP_FORMAT_PRINTF(fmt, args) \ + __attribute__((format(__printf__, fmt, args))) +#else +#define LIBSRTP_FORMAT_PRINTF(fmt, args) +#endif +#else +#define LIBSRTP_FORMAT_PRINTF(fmt, args) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup Error Error Codes + * + * Error status codes are represented by the enumeration srtp_err_status_t. + * + * @{ + */ + +/** + * @} + */ + +typedef enum { + srtp_err_level_error, + srtp_err_level_warning, + srtp_err_level_info, + srtp_err_level_debug +} srtp_err_reporting_level_t; + +/* + * err_reporting_init prepares the error system. If + * ERR_REPORTING_STDOUT is defined, it will log to stdout. + * + */ + +srtp_err_status_t srtp_err_reporting_init(void); + +typedef void(srtp_err_report_handler_func_t)(srtp_err_reporting_level_t level, + const char *msg); + +srtp_err_status_t srtp_install_err_report_handler( + srtp_err_report_handler_func_t func); + +/* + * srtp_err_report reports a 'printf' formatted error + * string, followed by a an arg list. The level argument + * is one of srtp_err_reporting_level_t. + * + * Errors will be reported to stdout, if ERR_REPORTING_STDOUT + * is defined. + * + */ + +void srtp_err_report(srtp_err_reporting_level_t level, const char *format, ...) + LIBSRTP_FORMAT_PRINTF(2, 3); + +/* + * debug_module_t defines a debug module + */ + +typedef struct { + bool on; /* true if debugging is on, false if it is off */ + const char *name; /* printable name for debug module */ +} srtp_debug_module_t; + +#ifdef ENABLE_DEBUG_LOGGING + +#ifndef debug_print0 +#define debug_print0(mod, format) \ + srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name) +#endif + +#ifndef debug_print +#define debug_print(mod, format, arg) \ + srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name, arg) +#endif + +#ifndef debug_print2 +#define debug_print2(mod, format, arg1, arg2) \ + srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name, \ + arg1, arg2) +#endif + +#else + +#ifndef debug_print0 +#define debug_print0(mod, format) \ + if (mod.on) \ + srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name) +#endif + +#ifndef debug_print +#define debug_print(mod, format, arg) \ + if (mod.on) \ + srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name, arg) +#endif + +#ifndef debug_print2 +#define debug_print2(mod, format, arg1, arg2) \ + if (mod.on) \ + srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name, \ + arg1, arg2) +#endif + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ERR_H */ diff --git a/src/libs/libsrtp/crypto/include/hmac.h b/src/libs/libsrtp/crypto/include/hmac.h new file mode 100644 index 00000000..14881812 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/hmac.h @@ -0,0 +1,58 @@ +/* + * hmac.h + * + * interface to hmac srtp_auth_type_t + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HMAC_H +#define HMAC_H + +#include "auth.h" +#include "sha1.h" + +typedef struct { + uint8_t opad[64]; + srtp_sha1_ctx_t ctx; + srtp_sha1_ctx_t init_ctx; +} srtp_hmac_ctx_t; + +#endif /* HMAC_H */ diff --git a/src/libs/libsrtp/crypto/include/key.h b/src/libs/libsrtp/crypto/include/key.h new file mode 100644 index 00000000..4164722c --- /dev/null +++ b/src/libs/libsrtp/crypto/include/key.h @@ -0,0 +1,86 @@ +/* + * key.h + * + * key usage limits enforcement + * + * David A. Mcgrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef KEY_H +#define KEY_H + +#include "rdbx.h" /* for srtp_xtd_seq_num_t */ +#include "err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct srtp_key_limit_ctx_t *srtp_key_limit_t; + +typedef enum { + srtp_key_event_normal, + srtp_key_event_soft_limit, + srtp_key_event_hard_limit +} srtp_key_event_t; + +srtp_err_status_t srtp_key_limit_set(srtp_key_limit_t key, + const srtp_xtd_seq_num_t s); + +srtp_err_status_t srtp_key_limit_clone(srtp_key_limit_t original, + srtp_key_limit_t *new_key); + +srtp_key_event_t srtp_key_limit_update(srtp_key_limit_t key); + +typedef enum { + srtp_key_state_normal, + srtp_key_state_past_soft_limit, + srtp_key_state_expired +} srtp_key_state_t; + +typedef struct srtp_key_limit_ctx_t { + srtp_xtd_seq_num_t num_left; + srtp_key_state_t state; +} srtp_key_limit_ctx_t; + +#ifdef __cplusplus +} +#endif + +#endif /* KEY_H */ diff --git a/src/libs/libsrtp/crypto/include/null_auth.h b/src/libs/libsrtp/crypto/include/null_auth.h new file mode 100644 index 00000000..0e57d670 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/null_auth.h @@ -0,0 +1,62 @@ +/* + * null-auth.h + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef NULL_AUTH_H +#define NULL_AUTH_H + +#include "auth.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char foo; +} srtp_null_auth_ctx_t; + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_AUTH_H */ diff --git a/src/libs/libsrtp/crypto/include/null_cipher.h b/src/libs/libsrtp/crypto/include/null_cipher.h new file mode 100644 index 00000000..5e8c91c1 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/null_cipher.h @@ -0,0 +1,57 @@ +/* + * null-cipher.h + * + * header file for the null cipher + * + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef NULL_CIPHER_H +#define NULL_CIPHER_H + +#include "datatypes.h" +#include "cipher.h" + +typedef struct { + char foo; /* empty, for now */ +} srtp_null_cipher_ctx_t; + +#endif /* NULL_CIPHER_H */ diff --git a/src/libs/libsrtp/crypto/include/rdb.h b/src/libs/libsrtp/crypto/include/rdb.h new file mode 100644 index 00000000..f65925e4 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/rdb.h @@ -0,0 +1,122 @@ +/* + * replay-database.h + * + * interface for a replay database for packet security + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef REPLAY_DB_H +#define REPLAY_DB_H + +#include "datatypes.h" /* for v128_t */ +#include "err.h" /* for srtp_err_status_t */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * if the ith least significant bit is one, then the packet index + * window_end-i is in the database + */ + +typedef struct { + uint32_t window_start; /* packet index of the first bit in bitmask */ + v128_t bitmask; +} srtp_rdb_t; + +/* + * srtp_rdb_init + * + * initalizes rdb + * + * returns srtp_err_status_ok on success, srtp_err_status_t_fail otherwise + */ +srtp_err_status_t srtp_rdb_init(srtp_rdb_t *rdb); + +/* + * srtp_rdb_check + * + * checks to see if index appears in rdb + * + * returns srtp_err_status_fail if the index already appears in rdb, + * returns srtp_err_status_ok otherwise + */ +srtp_err_status_t srtp_rdb_check(const srtp_rdb_t *rdb, uint32_t rdb_index); + +/* + * srtp_rdb_add_index + * + * adds index to srtp_rdb_t (and does *not* check if index appears in db) + * + * returns srtp_err_status_ok on success, srtp_err_status_fail otherwise + * + */ +srtp_err_status_t srtp_rdb_add_index(srtp_rdb_t *rdb, uint32_t rdb_index); + +/* + * the functions srtp_rdb_increment() and srtp_rdb_get_value() are for use by + * senders, not receivers - DO NOT use these functions on the same + * srtp_rdb_t upon which srtp_rdb_add_index is used! + */ + +/* + * srtp_rdb_increment(db) increments the sequence number in db, if it is + * not too high + * + * return values: + * + * srtp_err_status_ok no problem + * srtp_err_status_key_expired sequence number too high + * + */ +srtp_err_status_t srtp_rdb_increment(srtp_rdb_t *rdb); + +/* + * srtp_rdb_get_value(db) returns the current sequence number of db + */ +uint32_t srtp_rdb_get_value(const srtp_rdb_t *rdb); + +#ifdef __cplusplus +} +#endif + +#endif /* REPLAY_DB_H */ diff --git a/src/libs/libsrtp/crypto/include/rdbx.h b/src/libs/libsrtp/crypto/include/rdbx.h new file mode 100644 index 00000000..2c0c370b --- /dev/null +++ b/src/libs/libsrtp/crypto/include/rdbx.h @@ -0,0 +1,209 @@ +/* + * rdbx.h + * + * replay database with extended packet indices, using a rollover counter + * + * David A. McGrew + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef RDBX_H +#define RDBX_H + +#include "datatypes.h" +#include "err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* #define ROC_TEST */ + +#ifndef ROC_TEST + +typedef uint16_t srtp_sequence_number_t; /* 16 bit sequence number */ +typedef uint32_t srtp_rollover_counter_t; /* 32 bit rollover counter */ + +#else /* use small seq_num and roc datatypes for testing purposes */ + +typedef uint8_t srtp_sequence_number_t; /* 8 bit sequence number */ +typedef uint16_t srtp_rollover_counter_t; /* 16 bit rollover counter */ + +#endif + +#define seq_num_median (1 << (8 * sizeof(srtp_sequence_number_t) - 1)) +#define seq_num_max (1 << (8 * sizeof(srtp_sequence_number_t))) + +/* + * An rtp_xtd_seq_num_t is a 64-bit unsigned integer used as an 'extended' + * sequence number. + */ +typedef uint64_t srtp_xtd_seq_num_t; + +/* + * An srtp_rdbx_t is a replay database with extended range; it uses an + * xtd_seq_num_t and a bitmask of recently received indices. + */ +typedef struct { + srtp_xtd_seq_num_t index; + bitvector_t bitmask; +} srtp_rdbx_t; + +/* + * srtp_rdbx_init(rdbx_ptr, ws) + * + * initializes the rdbx pointed to by its argument with the window size ws, + * setting the rollover counter and sequence number to zero + */ +srtp_err_status_t srtp_rdbx_init(srtp_rdbx_t *rdbx, size_t ws); + +/* + * srtp_rdbx_dealloc(rdbx_ptr) + * + * frees memory associated with the rdbx + */ +srtp_err_status_t srtp_rdbx_dealloc(srtp_rdbx_t *rdbx); + +/* + * srtp_rdbx_estimate_index(rdbx, guess, s) + * + * given an rdbx and a sequence number s (from a newly arrived packet), + * sets the contents of *guess to contain the best guess of the packet + * index to which s corresponds, and returns the difference between + * *guess and the locally stored synch info + */ +ssize_t srtp_rdbx_estimate_index(const srtp_rdbx_t *rdbx, + srtp_xtd_seq_num_t *guess, + srtp_sequence_number_t s); + +/* + * srtp_rdbx_check(rdbx, delta); + * + * srtp_rdbx_check(&r, delta) checks to see if the xtd_seq_num_t + * which is at rdbx->window_start + delta is in the rdb + * + */ +srtp_err_status_t srtp_rdbx_check(const srtp_rdbx_t *rdbx, ssize_t difference); + +/* + * srtp_replay_add_index(rdbx, delta) + * + * adds the srtp_xtd_seq_num_t at rdbx->window_start + delta to replay_db + * (and does *not* check if that xtd_seq_num_t appears in db) + * + * this function should be called *only* after replay_check has + * indicated that the index does not appear in the rdbx, and a mutex + * should protect the rdbx between these calls if necessary. + */ +srtp_err_status_t srtp_rdbx_add_index(srtp_rdbx_t *rdbx, ssize_t delta); + +/* + * srtp_rdbx_set_roc(rdbx, roc) initalizes the srtp_rdbx_t at the location rdbx + * to have the rollover counter value roc. If that value is less than + * the current rollover counter value, then the function returns + * srtp_err_status_replay_old; otherwise, srtp_err_status_ok is returned. + * + */ +srtp_err_status_t srtp_rdbx_set_roc(srtp_rdbx_t *rdbx, uint32_t roc); + +/* + * srtp_rdbx_get_packet_index(rdbx) returns the value of the rollover counter + * for + * the srtp_rdbx_t pointed to by rdbx + * + */ +srtp_xtd_seq_num_t srtp_rdbx_get_packet_index(const srtp_rdbx_t *rdbx); + +/* + * srtp_xtd_seq_num_t functions - these are *internal* functions of rdbx, and + * shouldn't be used to manipulate rdbx internal values. use the rdbx + * api instead! + */ + +/* + * srtp_rdbx_get_ws(rdbx_ptr) + * + * gets the window size which was used to initialize the rdbx + */ +size_t srtp_rdbx_get_window_size(const srtp_rdbx_t *rdbx); + +/* index_init(&pi) initializes a packet index pi (sets it to zero) */ +void srtp_index_init(srtp_xtd_seq_num_t *pi); + +/* index_advance(&pi, s) advances a xtd_seq_num_t forward by s */ +void srtp_index_advance(srtp_xtd_seq_num_t *pi, srtp_sequence_number_t s); + +/* + * srtp_index_guess(local, guess, s) + * + * given a srtp_xtd_seq_num_t local (which represents the highest + * known-to-be-good index) and a sequence number s (from a newly + * arrived packet), sets the contents of *guess to contain the best + * guess of the packet index to which s corresponds, and returns the + * difference between *guess and *local + */ +ssize_t srtp_index_guess(const srtp_xtd_seq_num_t *local, + srtp_xtd_seq_num_t *guess, + srtp_sequence_number_t s); + +/* + * srtp_rdbx_get_roc(rdbx) + * + * Get the current rollover counter + * + */ +uint32_t srtp_rdbx_get_roc(const srtp_rdbx_t *rdbx); + +/* + * srtp_rdbx_set_roc_seq(rdbx, roc, seq) initializes the srtp_rdbx_t at the + * location rdbx to have the rollover counter value roc and packet sequence + * number seq. If the new rollover counter value is less than the current + * rollover counter value, then the function returns + * srtp_err_status_replay_old, otherwise, srtp_err_status_ok is returned. + */ +srtp_err_status_t srtp_rdbx_set_roc_seq(srtp_rdbx_t *rdbx, + uint32_t roc, + uint16_t seq); + +#ifdef __cplusplus +} +#endif + +#endif /* RDBX_H */ diff --git a/src/libs/libsrtp/crypto/include/sha1.h b/src/libs/libsrtp/crypto/include/sha1.h new file mode 100644 index 00000000..ab33bb33 --- /dev/null +++ b/src/libs/libsrtp/crypto/include/sha1.h @@ -0,0 +1,90 @@ +/* + * sha1.h + * + * interface to the Secure Hash Algorithm v.1 (SHA-1), specified in + * FIPS 180-1 + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SHA1_H +#define SHA1_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "err.h" +#include "datatypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint32_t H[5]; /* state vector */ + uint32_t M[16]; /* message buffer */ + size_t octets_in_buffer; /* octets of message in buffer */ + uint32_t num_bits_in_msg; /* total number of bits in message */ +} srtp_sha1_ctx_t; + +/* + * srtp_sha1_init(&ctx) initializes the SHA1 context ctx + * + * srtp_sha1_update(&ctx, msg, len) hashes the len octets starting at msg + * into the SHA1 context + * + * srtp_sha1_final(&ctx, output) performs the final processing of the SHA1 + * context and writes the result to the 20 octets at output + * + */ +void srtp_sha1_init(srtp_sha1_ctx_t *ctx); + +void srtp_sha1_update(srtp_sha1_ctx_t *ctx, + const uint8_t *M, + size_t octets_in_msg); + +void srtp_sha1_final(srtp_sha1_ctx_t *ctx, uint32_t output[5]); + +#ifdef __cplusplus +} +#endif + +#endif /* SHA1_H */ diff --git a/src/libs/libsrtp/crypto/kernel/alloc.c b/src/libs/libsrtp/crypto/kernel/alloc.c new file mode 100644 index 00000000..d48aae55 --- /dev/null +++ b/src/libs/libsrtp/crypto/kernel/alloc.c @@ -0,0 +1,95 @@ +/* + * alloc.c + * + * memory allocation and deallocation + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "alloc.h" +#include "crypto_kernel.h" + +#include + +/* the debug module for memory allocation */ + +srtp_debug_module_t srtp_mod_alloc = { + false, /* debugging is off by default */ + "alloc" /* printable name for module */ +}; + +/* + * Nota bene: the debugging statements for srtp_crypto_alloc() and + * srtp_crypto_free() have identical prefixes, which include the addresses + * of the memory locations on which they are operating. This fact can + * be used to locate memory leaks, by turning on memory debugging, + * grepping for 'alloc', then matching alloc and free calls by + * address. + */ + +void *srtp_crypto_alloc(size_t size) +{ + void *ptr; + + if (!size) { + return NULL; + } + + ptr = calloc(1, size); + + if (ptr) { + debug_print(srtp_mod_alloc, "(location: %p) allocated", ptr); + } else { + debug_print(srtp_mod_alloc, "allocation failed (asked for %zu bytes)\n", + size); + } + + return ptr; +} + +void srtp_crypto_free(void *ptr) +{ + debug_print(srtp_mod_alloc, "(location: %p) freed", ptr); + + free(ptr); +} diff --git a/src/libs/libsrtp/crypto/kernel/crypto_kernel.c b/src/libs/libsrtp/crypto/kernel/crypto_kernel.c new file mode 100644 index 00000000..f85a5ffb --- /dev/null +++ b/src/libs/libsrtp/crypto/kernel/crypto_kernel.c @@ -0,0 +1,560 @@ +/* + * crypto_kernel.c + * + * header for the cryptographic kernel + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "crypto_kernel.h" +#include "cipher_types.h" +#include "alloc.h" + +#include + +/* the debug module for the crypto_kernel */ + +srtp_debug_module_t srtp_mod_crypto_kernel = { + false, /* debugging is off by default */ + "crypto kernel" /* printable name for module */ +}; + +/* crypto_kernel is a global variable, the only one of its datatype */ + +static srtp_crypto_kernel_t crypto_kernel = { + srtp_crypto_kernel_state_insecure, /* start off in insecure state */ + NULL, /* no cipher types yet */ + NULL, /* no auth types yet */ + NULL /* no debug modules yet */ +}; + +#define MAX_RNG_TRIALS 25 + +srtp_err_status_t srtp_crypto_kernel_init(void) +{ + srtp_err_status_t status; + + /* check the security state */ + if (crypto_kernel.state == srtp_crypto_kernel_state_secure) { + /* + * we're already in the secure state, but we've been asked to + * re-initialize, so we just re-run the self-tests and then return + */ + return srtp_crypto_kernel_status(); + } + + /* initialize error reporting system */ + status = srtp_err_reporting_init(); + if (status) { + return status; + } + + /* load debug modules */ + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_crypto_kernel); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_auth); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_cipher); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_alloc); + if (status) { + return status; + } + + /* load cipher types */ + status = srtp_crypto_kernel_load_cipher_type(&srtp_null_cipher, + SRTP_NULL_CIPHER); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_cipher_type(&srtp_aes_icm_128, + SRTP_AES_ICM_128); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_cipher_type(&srtp_aes_icm_256, + SRTP_AES_ICM_256); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_aes_icm); + if (status) { + return status; + } +#ifdef GCM + status = srtp_crypto_kernel_load_cipher_type(&srtp_aes_icm_192, + SRTP_AES_ICM_192); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_cipher_type(&srtp_aes_gcm_128, + SRTP_AES_GCM_128); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_cipher_type(&srtp_aes_gcm_256, + SRTP_AES_GCM_256); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_aes_gcm); + if (status) { + return status; + } +#endif + + /* load auth func types */ + status = srtp_crypto_kernel_load_auth_type(&srtp_null_auth, SRTP_NULL_AUTH); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_auth_type(&srtp_hmac, SRTP_HMAC_SHA1); + if (status) { + return status; + } + status = srtp_crypto_kernel_load_debug_module(&srtp_mod_hmac); + if (status) { + return status; + } + + /* change state to secure */ + crypto_kernel.state = srtp_crypto_kernel_state_secure; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_kernel_status(void) +{ + srtp_err_status_t status; + srtp_kernel_cipher_type_t *ctype = crypto_kernel.cipher_type_list; + srtp_kernel_auth_type_t *atype = crypto_kernel.auth_type_list; + + /* for each cipher type, describe and test */ + while (ctype != NULL) { + srtp_err_report(srtp_err_level_info, "cipher: %s\n", + ctype->cipher_type->description); + srtp_err_report(srtp_err_level_info, " self-test: "); + status = srtp_cipher_type_self_test(ctype->cipher_type); + if (status) { + srtp_err_report(srtp_err_level_error, "failed with error code %d\n", + status); + exit(status); + } + srtp_err_report(srtp_err_level_info, "passed\n"); + ctype = ctype->next; + } + + /* for each auth type, describe and test */ + while (atype != NULL) { + srtp_err_report(srtp_err_level_info, "auth func: %s\n", + atype->auth_type->description); + srtp_err_report(srtp_err_level_info, " self-test: "); + status = srtp_auth_type_self_test(atype->auth_type); + if (status) { + srtp_err_report(srtp_err_level_error, "failed with error code %d\n", + status); + exit(status); + } + srtp_err_report(srtp_err_level_info, "passed\n"); + atype = atype->next; + } + + srtp_crypto_kernel_list_debug_modules(); + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_kernel_list_debug_modules(void) +{ + srtp_kernel_debug_module_t *dm = crypto_kernel.debug_module_list; + + /* describe each debug module */ + srtp_err_report(srtp_err_level_info, "debug modules loaded:\n"); + while (dm != NULL) { + srtp_err_report(srtp_err_level_info, " %s ", dm->mod->name); + if (dm->mod->on) { + srtp_err_report(srtp_err_level_info, "(on)\n"); + } else { + srtp_err_report(srtp_err_level_info, "(off)\n"); + } + dm = dm->next; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_kernel_shutdown(void) +{ + /* + * free dynamic memory used in crypto_kernel at present + */ + + /* walk down cipher type list, freeing memory */ + while (crypto_kernel.cipher_type_list != NULL) { + srtp_kernel_cipher_type_t *ctype = crypto_kernel.cipher_type_list; + crypto_kernel.cipher_type_list = ctype->next; + debug_print(srtp_mod_crypto_kernel, "freeing memory for cipher %s", + ctype->cipher_type->description); + srtp_crypto_free(ctype); + } + + /* walk down authetication module list, freeing memory */ + while (crypto_kernel.auth_type_list != NULL) { + srtp_kernel_auth_type_t *atype = crypto_kernel.auth_type_list; + crypto_kernel.auth_type_list = atype->next; + debug_print(srtp_mod_crypto_kernel, + "freeing memory for authentication %s", + atype->auth_type->description); + srtp_crypto_free(atype); + } + + /* walk down debug module list, freeing memory */ + while (crypto_kernel.debug_module_list != NULL) { + srtp_kernel_debug_module_t *kdm = crypto_kernel.debug_module_list; + crypto_kernel.debug_module_list = kdm->next; + debug_print(srtp_mod_crypto_kernel, + "freeing memory for debug module %s", kdm->mod->name); + srtp_crypto_free(kdm); + } + + /* return to insecure state */ + crypto_kernel.state = srtp_crypto_kernel_state_insecure; + + return srtp_err_status_ok; +} + +static inline srtp_err_status_t srtp_crypto_kernel_do_load_cipher_type( + const srtp_cipher_type_t *new_ct, + srtp_cipher_type_id_t id, + bool replace) +{ + srtp_kernel_cipher_type_t *ctype; + srtp_kernel_cipher_type_t *new_ctype = NULL; + srtp_err_status_t status; + + /* defensive coding */ + if (new_ct == NULL) { + return srtp_err_status_bad_param; + } + + if (new_ct->id != id) { + return srtp_err_status_bad_param; + } + + /* check cipher type by running self-test */ + status = srtp_cipher_type_self_test(new_ct); + if (status) { + return status; + } + + /* walk down list, checking if this type is in the list already */ + ctype = crypto_kernel.cipher_type_list; + while (ctype != NULL) { + if (id == ctype->id) { + if (!replace) { + return srtp_err_status_bad_param; + } + status = + srtp_cipher_type_test(new_ct, ctype->cipher_type->test_data); + if (status) { + return status; + } + new_ctype = ctype; + break; + } else if (new_ct == ctype->cipher_type) { + return srtp_err_status_bad_param; + } + ctype = ctype->next; + } + + /* if not found, put new_ct at the head of the list */ + if (ctype == NULL) { + /* allocate memory */ + new_ctype = (srtp_kernel_cipher_type_t *)srtp_crypto_alloc( + sizeof(srtp_kernel_cipher_type_t)); + if (new_ctype == NULL) { + return srtp_err_status_alloc_fail; + } + new_ctype->next = crypto_kernel.cipher_type_list; + + /* set head of list to new cipher type */ + crypto_kernel.cipher_type_list = new_ctype; + } + + /* set fields */ + new_ctype->cipher_type = new_ct; + new_ctype->id = id; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_kernel_load_cipher_type( + const srtp_cipher_type_t *new_ct, + srtp_cipher_type_id_t id) +{ + return srtp_crypto_kernel_do_load_cipher_type(new_ct, id, false); +} + +srtp_err_status_t srtp_replace_cipher_type(const srtp_cipher_type_t *new_ct, + srtp_cipher_type_id_t id) +{ + return srtp_crypto_kernel_do_load_cipher_type(new_ct, id, true); +} + +srtp_err_status_t srtp_crypto_kernel_do_load_auth_type( + const srtp_auth_type_t *new_at, + srtp_auth_type_id_t id, + bool replace) +{ + srtp_kernel_auth_type_t *atype; + srtp_kernel_auth_type_t *new_atype = NULL; + srtp_err_status_t status; + + /* defensive coding */ + if (new_at == NULL) { + return srtp_err_status_bad_param; + } + + if (new_at->id != id) { + return srtp_err_status_bad_param; + } + + /* check auth type by running self-test */ + status = srtp_auth_type_self_test(new_at); + if (status) { + return status; + } + + /* walk down list, checking if this type is in the list already */ + atype = crypto_kernel.auth_type_list; + while (atype != NULL) { + if (id == atype->id) { + if (!replace) { + return srtp_err_status_bad_param; + } + status = srtp_auth_type_test(new_at, atype->auth_type->test_data); + if (status) { + return status; + } + new_atype = atype; + break; + } else if (new_at == atype->auth_type) { + return srtp_err_status_bad_param; + } + atype = atype->next; + } + + /* if not found, put new_at at the head of the list */ + if (atype == NULL) { + /* allocate memory */ + new_atype = (srtp_kernel_auth_type_t *)srtp_crypto_alloc( + sizeof(srtp_kernel_auth_type_t)); + if (new_atype == NULL) { + return srtp_err_status_alloc_fail; + } + + new_atype->next = crypto_kernel.auth_type_list; + /* set head of list to new auth type */ + crypto_kernel.auth_type_list = new_atype; + } + + /* set fields */ + new_atype->auth_type = new_at; + new_atype->id = id; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_kernel_load_auth_type( + const srtp_auth_type_t *new_at, + srtp_auth_type_id_t id) +{ + return srtp_crypto_kernel_do_load_auth_type(new_at, id, false); +} + +srtp_err_status_t srtp_replace_auth_type(const srtp_auth_type_t *new_at, + srtp_auth_type_id_t id) +{ + return srtp_crypto_kernel_do_load_auth_type(new_at, id, true); +} + +const srtp_cipher_type_t *srtp_crypto_kernel_get_cipher_type( + srtp_cipher_type_id_t id) +{ + srtp_kernel_cipher_type_t *ctype; + + /* walk down list, looking for id */ + ctype = crypto_kernel.cipher_type_list; + while (ctype != NULL) { + if (id == ctype->id) { + return ctype->cipher_type; + } + ctype = ctype->next; + } + + /* haven't found the right one, indicate failure by returning NULL */ + return NULL; +} + +srtp_err_status_t srtp_crypto_kernel_alloc_cipher(srtp_cipher_type_id_t id, + srtp_cipher_pointer_t *cp, + size_t key_len, + size_t tag_len) +{ + const srtp_cipher_type_t *ct; + + /* + * if the crypto_kernel is not yet initialized, we refuse to allocate + * any ciphers - this is a bit extra-paranoid + */ + if (crypto_kernel.state != srtp_crypto_kernel_state_secure) { + return srtp_err_status_init_fail; + } + + ct = srtp_crypto_kernel_get_cipher_type(id); + if (!ct) { + return srtp_err_status_fail; + } + + return ((ct)->alloc(cp, key_len, tag_len)); +} + +const srtp_auth_type_t *srtp_crypto_kernel_get_auth_type(srtp_auth_type_id_t id) +{ + srtp_kernel_auth_type_t *atype; + + /* walk down list, looking for id */ + atype = crypto_kernel.auth_type_list; + while (atype != NULL) { + if (id == atype->id) { + return atype->auth_type; + } + atype = atype->next; + } + + /* haven't found the right one, indicate failure by returning NULL */ + return NULL; +} + +srtp_err_status_t srtp_crypto_kernel_alloc_auth(srtp_auth_type_id_t id, + srtp_auth_pointer_t *ap, + size_t key_len, + size_t tag_len) +{ + const srtp_auth_type_t *at; + + /* + * if the crypto_kernel is not yet initialized, we refuse to allocate + * any auth functions - this is a bit extra-paranoid + */ + if (crypto_kernel.state != srtp_crypto_kernel_state_secure) { + return srtp_err_status_init_fail; + } + + at = srtp_crypto_kernel_get_auth_type(id); + if (!at) { + return srtp_err_status_fail; + } + + return ((at)->alloc(ap, key_len, tag_len)); +} + +srtp_err_status_t srtp_crypto_kernel_load_debug_module( + srtp_debug_module_t *new_dm) +{ + srtp_kernel_debug_module_t *kdm, *new; + + /* defensive coding */ + if (new_dm == NULL || new_dm->name == NULL) { + return srtp_err_status_bad_param; + } + + /* walk down list, checking if this type is in the list already */ + kdm = crypto_kernel.debug_module_list; + while (kdm != NULL) { + if (strncmp(new_dm->name, kdm->mod->name, 64) == 0) { + return srtp_err_status_bad_param; + } + kdm = kdm->next; + } + + /* put new_dm at the head of the list */ + /* allocate memory */ + new = (srtp_kernel_debug_module_t *)srtp_crypto_alloc( + sizeof(srtp_kernel_debug_module_t)); + if (new == NULL) { + return srtp_err_status_alloc_fail; + } + + /* set fields */ + new->mod = new_dm; + new->next = crypto_kernel.debug_module_list; + + /* set head of list to new cipher type */ + crypto_kernel.debug_module_list = new; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_kernel_set_debug_module(const char *name, bool on) +{ + srtp_kernel_debug_module_t *kdm; + + /* walk down list, checking if this type is in the list already */ + kdm = crypto_kernel.debug_module_list; + while (kdm != NULL) { + if (strncmp(name, kdm->mod->name, 64) == 0) { + kdm->mod->on = on; + return srtp_err_status_ok; + } + kdm = kdm->next; + } + + return srtp_err_status_fail; +} diff --git a/src/libs/libsrtp/crypto/kernel/err.c b/src/libs/libsrtp/crypto/kernel/err.c new file mode 100644 index 00000000..cfdf9851 --- /dev/null +++ b/src/libs/libsrtp/crypto/kernel/err.c @@ -0,0 +1,108 @@ +/* + * err.c + * + * error status reporting functions + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "err.h" +#include "datatypes.h" +#include + +/* srtp_err_file is the FILE to which errors are reported */ + +static FILE *srtp_err_file = NULL; + +srtp_err_status_t srtp_err_reporting_init(void) +{ +#ifdef ERR_REPORTING_STDOUT + srtp_err_file = stdout; +#elif defined(ERR_REPORTING_FILE) + /* open file for error reporting */ + srtp_err_file = fopen(ERR_REPORTING_FILE, "w"); + if (srtp_err_file == NULL) { + return srtp_err_status_init_fail; + } +#endif + + return srtp_err_status_ok; +} + +static srtp_err_report_handler_func_t *srtp_err_report_handler = NULL; + +srtp_err_status_t srtp_install_err_report_handler( + srtp_err_report_handler_func_t func) +{ + srtp_err_report_handler = func; + return srtp_err_status_ok; +} + +void srtp_err_report(srtp_err_reporting_level_t level, const char *format, ...) +{ + char msg[512]; + va_list args; + if (srtp_err_file != NULL) { + va_start(args, format); + vfprintf(srtp_err_file, format, args); + va_end(args); + } + if (srtp_err_report_handler != NULL) { + va_start(args, format); + if (vsnprintf(msg, sizeof(msg), format, args) > 0) { + /* strip trailing \n, callback should not have one */ + size_t l = strlen(msg); + if (l && msg[l - 1] == '\n') { + msg[l - 1] = '\0'; + } + srtp_err_report_handler(level, msg); + /* + * NOTE, need to be carefull, there is a potential that + * octet_string_set_to_zero() could + * call srtp_err_report() in the future, leading to recursion + */ + octet_string_set_to_zero(msg, sizeof(msg)); + } + va_end(args); + } +} diff --git a/src/libs/libsrtp/crypto/kernel/key.c b/src/libs/libsrtp/crypto/kernel/key.c new file mode 100644 index 00000000..937ea38d --- /dev/null +++ b/src/libs/libsrtp/crypto/kernel/key.c @@ -0,0 +1,90 @@ +/* + * key.c + * + * key usage limits enforcement + * + * David A. Mcgrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "key.h" + +#define soft_limit 0x10000 + +srtp_err_status_t srtp_key_limit_set(srtp_key_limit_t key, + const srtp_xtd_seq_num_t s) +{ + if (s < soft_limit) { + return srtp_err_status_bad_param; + } + key->num_left = s; + key->state = srtp_key_state_normal; + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_key_limit_clone(srtp_key_limit_t original, + srtp_key_limit_t *new_key) +{ + if (original == NULL) { + return srtp_err_status_bad_param; + } + *new_key = original; + return srtp_err_status_ok; +} + +srtp_key_event_t srtp_key_limit_update(srtp_key_limit_t key) +{ + key->num_left--; + if (key->num_left >= soft_limit) { + return srtp_key_event_normal; /* we're above the soft limit */ + } + if (key->state == srtp_key_state_normal) { + /* we just passed the soft limit, so change the state */ + key->state = srtp_key_state_past_soft_limit; + } + if (key->num_left < 1) { + /* we just hit the hard limit */ + key->state = srtp_key_state_expired; + return srtp_key_event_hard_limit; + } + return srtp_key_event_soft_limit; +} diff --git a/src/libs/libsrtp/crypto/math/datatypes.c b/src/libs/libsrtp/crypto/math/datatypes.c new file mode 100644 index 00000000..5daaf125 --- /dev/null +++ b/src/libs/libsrtp/crypto/math/datatypes.c @@ -0,0 +1,509 @@ +/* + * datatypes.c + * + * data types for finite fields and functions for input, output, and + * manipulation + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "datatypes.h" +#include "alloc.h" + +#ifdef OPENSSL +#include +#endif + +#if defined(__SSE2__) +#include +#endif + +#if defined(_MSC_VER) +#define ALIGNMENT(N) __declspec(align(N)) +#else +#define ALIGNMENT(N) __attribute__((aligned(N))) +#endif + +/* + * bit_string is a buffer that is used to hold output strings, e.g. + * for printing. + */ + +/* the value MAX_PRINT_STRING_LEN is defined in datatypes.h */ +/* include space for null terminator */ +static char bit_string[MAX_PRINT_STRING_LEN + 1]; + +static uint8_t srtp_nibble_to_hex_char(uint8_t nibble) +{ + static const char buf[16] = { '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + return buf[nibble & 0xF]; +} + +char *srtp_octet_string_hex_string(const void *s, size_t length) +{ + const uint8_t *str = (const uint8_t *)s; + size_t i; + + /* double length, since one octet takes two hex characters */ + length *= 2; + + /* truncate string if it would be too long */ + if (length > MAX_PRINT_STRING_LEN) { + length = MAX_PRINT_STRING_LEN - 2; + } + + for (i = 0; i < length; i += 2) { + bit_string[i] = srtp_nibble_to_hex_char(*str >> 4); + bit_string[i + 1] = srtp_nibble_to_hex_char(*str++ & 0xF); + } + bit_string[i] = 0; /* null terminate string */ + return bit_string; +} + +char *v128_hex_string(v128_t *x) +{ + size_t i, j; + + for (i = j = 0; i < 16; i++) { + bit_string[j++] = srtp_nibble_to_hex_char(x->v8[i] >> 4); + bit_string[j++] = srtp_nibble_to_hex_char(x->v8[i] & 0xF); + } + + bit_string[j] = 0; /* null terminate string */ + return bit_string; +} + +char *v128_bit_string(v128_t *x) +{ + size_t j, i; + uint32_t mask; + + for (j = i = 0; j < 4; j++) { + for (mask = 0x80000000; mask > 0; mask >>= 1) { + if (x->v32[j] & mask) { + bit_string[i] = '1'; + } else { + bit_string[i] = '0'; + } + ++i; + } + } + bit_string[128] = 0; /* null terminate string */ + + return bit_string; +} + +void v128_copy_octet_string(v128_t *x, const uint8_t s[16]) +{ +#if defined(__SSE2__) + _mm_storeu_si128((__m128i *)(x), _mm_loadu_si128((const __m128i *)(s))); +#else +#ifdef ALIGNMENT_32BIT_REQUIRED + if ((((uint32_t)&s[0]) & 0x3) != 0) +#endif + { + x->v8[0] = s[0]; + x->v8[1] = s[1]; + x->v8[2] = s[2]; + x->v8[3] = s[3]; + x->v8[4] = s[4]; + x->v8[5] = s[5]; + x->v8[6] = s[6]; + x->v8[7] = s[7]; + x->v8[8] = s[8]; + x->v8[9] = s[9]; + x->v8[10] = s[10]; + x->v8[11] = s[11]; + x->v8[12] = s[12]; + x->v8[13] = s[13]; + x->v8[14] = s[14]; + x->v8[15] = s[15]; + } +#ifdef ALIGNMENT_32BIT_REQUIRED + else { + v128_t *v = (v128_t *)&s[0]; + + v128_copy(x, v); + } +#endif +#endif /* defined(__SSE2__) */ +} + +#if defined(__SSSE3__) + +/* clang-format off */ + +ALIGNMENT(16) +static const uint8_t right_shift_masks[5][16] = { + { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u }, + { 0x80, 0x80, 0x80, 0x80, 0u, 1u, 2u, 3u, + 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u }, + { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u }, + { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0u, 1u, 2u, 3u }, + /* needed for bitvector_left_shift */ + { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } +}; + +ALIGNMENT(16) +static const uint8_t left_shift_masks[4][16] = { + { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u }, + { 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, + 12u, 13u, 14u, 15u, 0x80, 0x80, 0x80, 0x80 }, + { 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }, + { 12u, 13u, 14u, 15u, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } +}; + +/* clang-format on */ + +void v128_left_shift(v128_t *x, size_t shift) +{ + if (shift > 127) { + v128_set_to_zero(x); + return; + } + + const int base_index = shift >> 5; + const int bit_index = shift & 31; + + __m128i mm = _mm_loadu_si128((const __m128i *)x); + __m128i mm_shift_right = _mm_cvtsi32_si128(bit_index); + __m128i mm_shift_left = _mm_cvtsi32_si128(32 - bit_index); + mm = _mm_shuffle_epi8(mm, ((const __m128i *)left_shift_masks)[base_index]); + + __m128i mm1 = _mm_srl_epi32(mm, mm_shift_right); + __m128i mm2 = _mm_sll_epi32(mm, mm_shift_left); + mm2 = _mm_srli_si128(mm2, 4); + mm1 = _mm_or_si128(mm1, mm2); + + _mm_storeu_si128((__m128i *)x, mm1); +} + +#else /* defined(__SSSE3__) */ + +void v128_left_shift(v128_t *x, size_t shift) +{ + const size_t base_index = shift >> 5; + const size_t bit_index = shift & 31; + + if (shift > 127) { + v128_set_to_zero(x); + return; + } + + if (bit_index == 0) { + for (size_t i = 0; i < 4 - base_index; i++) { + x->v32[i] = x->v32[i + base_index]; + } + } else { + for (size_t i = 0; i < 4 - base_index - 1; i++) { + x->v32[i] = (x->v32[i + base_index] >> bit_index) ^ + (x->v32[i + base_index + 1] << (32 - bit_index)); + } + x->v32[4 - base_index - 1] = x->v32[4 - 1] >> bit_index; + } + + /* now wrap up the final portion */ + for (size_t i = 4 - base_index; i < 4; i++) { + x->v32[i] = 0; + } +} + +#endif /* defined(__SSSE3__) */ + +/* functions manipulating bitvector_t */ + +bool bitvector_alloc(bitvector_t *v, size_t length) +{ + size_t l; + + /* Round length up to a multiple of bits_per_word */ + length = (length + bits_per_word - 1) & ~(size_t)((bits_per_word - 1)); + + l = length / bits_per_word * bytes_per_word; + l = (l + 15ul) & ~15ul; + + /* allocate memory, then set parameters */ + if (l == 0) { + v->word = NULL; + v->length = 0; + return false; + } else { + v->word = (uint32_t *)srtp_crypto_alloc(l); + if (v->word == NULL) { + v->length = 0; + return false; + } + } + v->length = length; + + /* initialize bitvector to zero */ + bitvector_set_to_zero(v); + + return true; +} + +void bitvector_dealloc(bitvector_t *v) +{ + if (v->word != NULL) { + srtp_crypto_free(v->word); + } + v->word = NULL; + v->length = 0; +} + +void bitvector_set_to_zero(bitvector_t *x) +{ + /* C99 guarantees that memset(0) will set the value 0 for uint32_t */ + memset(x->word, 0, x->length >> 3); +} + +#if defined(__SSSE3__) + +void bitvector_left_shift(bitvector_t *x, size_t shift) +{ + if ((uint32_t)shift >= x->length) { + bitvector_set_to_zero(x); + return; + } + + const size_t base_index = shift >> 5; + const size_t bit_index = shift & 31; + const size_t vec_length = (x->length + 127u) >> 7; + const __m128i *from = ((const __m128i *)x->word) + (base_index >> 2); + __m128i *to = (__m128i *)x->word; + __m128i *const end = to + vec_length; + + __m128i mm_right_shift_mask = + ((const __m128i *)right_shift_masks)[4u - (base_index & 3u)]; + __m128i mm_left_shift_mask = + ((const __m128i *)left_shift_masks)[base_index & 3u]; + __m128i mm_shift_right = _mm_cvtsi32_si128(bit_index); + __m128i mm_shift_left = _mm_cvtsi32_si128(32 - bit_index); + + __m128i mm_current = _mm_loadu_si128(from); + __m128i mm_current_r = _mm_srl_epi32(mm_current, mm_shift_right); + __m128i mm_current_l = _mm_sll_epi32(mm_current, mm_shift_left); + + while ((end - from) >= 2) { + ++from; + __m128i mm_next = _mm_loadu_si128(from); + + __m128i mm_next_r = _mm_srl_epi32(mm_next, mm_shift_right); + __m128i mm_next_l = _mm_sll_epi32(mm_next, mm_shift_left); + mm_current_l = _mm_alignr_epi8(mm_next_l, mm_current_l, 4); + mm_current = _mm_or_si128(mm_current_r, mm_current_l); + + mm_current = _mm_shuffle_epi8(mm_current, mm_left_shift_mask); + + __m128i mm_temp_next = _mm_srli_si128(mm_next_l, 4); + mm_temp_next = _mm_or_si128(mm_next_r, mm_temp_next); + + mm_temp_next = _mm_shuffle_epi8(mm_temp_next, mm_right_shift_mask); + mm_current = _mm_or_si128(mm_temp_next, mm_current); + + _mm_storeu_si128(to, mm_current); + ++to; + + mm_current_r = mm_next_r; + mm_current_l = mm_next_l; + } + + mm_current_l = _mm_srli_si128(mm_current_l, 4); + mm_current = _mm_or_si128(mm_current_r, mm_current_l); + + mm_current = _mm_shuffle_epi8(mm_current, mm_left_shift_mask); + + _mm_storeu_si128(to, mm_current); + ++to; + + while (to < end) { + _mm_storeu_si128(to, _mm_setzero_si128()); + ++to; + } +} + +#else /* defined(__SSSE3__) */ + +void bitvector_left_shift(bitvector_t *x, size_t shift) +{ + const size_t base_index = shift >> 5; + const size_t bit_index = shift & 31; + const size_t word_length = x->length >> 5; + + if (shift >= x->length) { + bitvector_set_to_zero(x); + return; + } + + if (bit_index == 0) { + for (size_t i = 0; i < word_length - base_index; i++) { + x->word[i] = x->word[i + base_index]; + } + } else { + for (size_t i = 0; i < word_length - base_index - 1; i++) { + x->word[i] = (x->word[i + base_index] >> bit_index) ^ + (x->word[i + base_index + 1] << (32 - bit_index)); + } + x->word[word_length - base_index - 1] = + x->word[word_length - 1] >> bit_index; + } + + /* now wrap up the final portion */ + for (size_t i = word_length - base_index; i < word_length; i++) { + x->word[i] = 0; + } +} + +#endif /* defined(__SSSE3__) */ + +bool srtp_octet_string_equal(const uint8_t *a, const uint8_t *b, size_t length) +{ + /* + * We use this somewhat obscure implementation to try to ensure the running + * time only depends on len, even accounting for compiler optimizations. + * The accumulator ends up zero iff the strings are equal. + */ + const uint8_t *end = b + length; + uint32_t accumulator = 0; + +#if defined(__SSE2__) + __m128i mm_accumulator1 = _mm_setzero_si128(); + __m128i mm_accumulator2 = _mm_setzero_si128(); + for (size_t i = 0, n = length >> 5; i < n; ++i, a += 32, b += 32) { + __m128i mm_a1 = _mm_loadu_si128((const __m128i *)a); + __m128i mm_b1 = _mm_loadu_si128((const __m128i *)b); + __m128i mm_a2 = _mm_loadu_si128((const __m128i *)(a + 16)); + __m128i mm_b2 = _mm_loadu_si128((const __m128i *)(b + 16)); + mm_a1 = _mm_xor_si128(mm_a1, mm_b1); + mm_a2 = _mm_xor_si128(mm_a2, mm_b2); + mm_accumulator1 = _mm_or_si128(mm_accumulator1, mm_a1); + mm_accumulator2 = _mm_or_si128(mm_accumulator2, mm_a2); + } + + mm_accumulator1 = _mm_or_si128(mm_accumulator1, mm_accumulator2); + + if ((end - b) >= 16) { + __m128i mm_a1 = _mm_loadu_si128((const __m128i *)a); + __m128i mm_b1 = _mm_loadu_si128((const __m128i *)b); + mm_a1 = _mm_xor_si128(mm_a1, mm_b1); + mm_accumulator1 = _mm_or_si128(mm_accumulator1, mm_a1); + a += 16; + b += 16; + } + + if ((end - b) >= 8) { + __m128i mm_a1 = _mm_loadl_epi64((const __m128i *)a); + __m128i mm_b1 = _mm_loadl_epi64((const __m128i *)b); + mm_a1 = _mm_xor_si128(mm_a1, mm_b1); + mm_accumulator1 = _mm_or_si128(mm_accumulator1, mm_a1); + a += 8; + b += 8; + } + + mm_accumulator1 = _mm_or_si128( + mm_accumulator1, _mm_unpackhi_epi64(mm_accumulator1, mm_accumulator1)); + mm_accumulator1 = + _mm_or_si128(mm_accumulator1, _mm_srli_si128(mm_accumulator1, 4)); + accumulator = _mm_cvtsi128_si32(mm_accumulator1); +#else + uint32_t accumulator2 = 0; + for (size_t i = 0, n = length >> 3; i < n; ++i, a += 8, b += 8) { + uint32_t a_val1, b_val1; + uint32_t a_val2, b_val2; + memcpy(&a_val1, a, sizeof(a_val1)); + memcpy(&b_val1, b, sizeof(b_val1)); + memcpy(&a_val2, a + 4, sizeof(a_val2)); + memcpy(&b_val2, b + 4, sizeof(b_val2)); + accumulator |= a_val1 ^ b_val1; + accumulator2 |= a_val2 ^ b_val2; + } + + accumulator |= accumulator2; + + if ((end - b) >= 4) { + uint32_t a_val, b_val; + memcpy(&a_val, a, sizeof(a_val)); + memcpy(&b_val, b, sizeof(b_val)); + accumulator |= a_val ^ b_val; + a += 4; + b += 4; + } +#endif + + while (b < end) { + accumulator |= (*a++ ^ *b++); + } + + /* Return true if equal */ + return accumulator == 0; +} + +void srtp_cleanse(void *s, size_t len) +{ +#if defined(__GNUC__) + memset(s, 0, len); + __asm__ __volatile__("" : : "r"(s) : "memory"); +#else + volatile uint8_t *p = (volatile uint8_t *)s; + while (len--) { + *p++ = 0; + } +#endif +} + +void octet_string_set_to_zero(void *s, size_t len) +{ +#if defined(OPENSSL) + OPENSSL_cleanse(s, len); +#else + srtp_cleanse(s, len); +#endif +} diff --git a/src/libs/libsrtp/crypto/replay/rdb.c b/src/libs/libsrtp/crypto/replay/rdb.c new file mode 100644 index 00000000..d087c8e1 --- /dev/null +++ b/src/libs/libsrtp/crypto/replay/rdb.c @@ -0,0 +1,140 @@ +/* + * rdb.c + * + * Implements a replay database for packet security + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "rdb.h" + +#define rdb_bits_in_bitmask (8 * sizeof(v128_t)) + +/* + * this implementation of a replay database works as follows: + * + * window_start is the index of the first packet in the window + * bitmask a bit-buffer, containing the most recently entered + * index as the leftmost bit + * + */ + +/* srtp_rdb_init initalizes rdb */ +srtp_err_status_t srtp_rdb_init(srtp_rdb_t *rdb) +{ + v128_set_to_zero(&rdb->bitmask); + rdb->window_start = 0; + return srtp_err_status_ok; +} + +/* + * srtp_rdb_check checks to see if index appears in rdb + */ +srtp_err_status_t srtp_rdb_check(const srtp_rdb_t *rdb, uint32_t p_index) +{ + /* if the index appears after (or at very end of) the window, its good */ + if (p_index >= rdb->window_start + rdb_bits_in_bitmask) { + return srtp_err_status_ok; + } + + /* if the index appears before the window, its bad */ + if (p_index < rdb->window_start) { + return srtp_err_status_replay_old; + } + + /* otherwise, the index appears within the window, so check the bitmask */ + if (v128_get_bit(&rdb->bitmask, (p_index - rdb->window_start)) == 1) { + return srtp_err_status_replay_fail; + } + + /* otherwise, the index is okay */ + return srtp_err_status_ok; +} + +/* + * srtp_rdb_add_index adds index to srtp_rdb_t (and does *not* check if + * index appears in db) + * + * this function should be called only after srtp_rdb_check has + * indicated that the index does not appear in the rdb, e.g., a mutex + * should protect the rdb between these calls + */ +srtp_err_status_t srtp_rdb_add_index(srtp_rdb_t *rdb, uint32_t p_index) +{ + uint32_t delta; + + if (p_index < rdb->window_start) { + return srtp_err_status_replay_fail; + } + + delta = (p_index - rdb->window_start); + if (delta < rdb_bits_in_bitmask) { + /* if the p_index is within the window, set the appropriate bit */ + v128_set_bit(&rdb->bitmask, delta); + + } else { + delta -= rdb_bits_in_bitmask - 1; + + /* shift the window forward by delta bits*/ + v128_left_shift(&rdb->bitmask, delta); + v128_set_bit(&rdb->bitmask, rdb_bits_in_bitmask - 1); + rdb->window_start += delta; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_rdb_increment(srtp_rdb_t *rdb) +{ + if (rdb->window_start >= 0x7fffffff) { + return srtp_err_status_key_expired; + } + ++rdb->window_start; + return srtp_err_status_ok; +} + +uint32_t srtp_rdb_get_value(const srtp_rdb_t *rdb) +{ + return rdb->window_start; +} diff --git a/src/libs/libsrtp/crypto/replay/rdbx.c b/src/libs/libsrtp/crypto/replay/rdbx.c new file mode 100644 index 00000000..36d50ed4 --- /dev/null +++ b/src/libs/libsrtp/crypto/replay/rdbx.c @@ -0,0 +1,338 @@ +/* + * rdbx.c + * + * a replay database with extended range, using a rollover counter + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "rdbx.h" + +/* + * from RFC 3711: + * + * A receiver reconstructs the index i of a packet with sequence + * number SEQ using the estimate + * + * i = 2^16 * v + SEQ, + * + * where v is chosen from the set { ROC-1, ROC, ROC+1 } such that i is + * closest to the value 2^16 * ROC + s_l. If the value r+1 is used, + * then the rollover counter r in the cryptographic context is + * incremented by one (if the packet containing s is authentic). + */ + +/* + * rdbx implementation notes + * + * A srtp_xtd_seq_num_t is essentially a sequence number for which some of + * the data on the wire are implicit. It logically consists of a + * rollover counter and a sequence number; the sequence number is the + * explicit part, and the rollover counter is the implicit part. + * + * Upon receiving a sequence_number (e.g. in a newly received SRTP + * packet), the complete srtp_xtd_seq_num_t can be estimated by using a + * local srtp_xtd_seq_num_t as a basis. This is done using the function + * srtp_index_guess(&local, &guess, seq_from_packet). This function + * returns the difference of the guess and the local value. The local + * srtp_xtd_seq_num_t can be moved forward to the guess using the function + * srtp_index_advance(&guess, delta), where delta is the difference. + * + * + * A srtp_rdbx_t consists of a srtp_xtd_seq_num_t and a bitmask. The index is + * highest sequence number that has been received, and the bitmask indicates + * which of the recent indicies have been received as well. The + * highest bit in the bitmask corresponds to the index in the bitmask. + */ + +void srtp_index_init(srtp_xtd_seq_num_t *pi) +{ + *pi = 0; +} + +void srtp_index_advance(srtp_xtd_seq_num_t *pi, srtp_sequence_number_t s) +{ + *pi += s; +} + +/* + * srtp_index_guess(local, guess, s) + * + * given a srtp_xtd_seq_num_t local (which represents the last + * known-to-be-good received srtp_xtd_seq_num_t) and a sequence number s + * (from a newly arrived packet), sets the contents of *guess to + * contain the best guess of the packet index to which s corresponds, + * and returns the difference between *guess and *local + * + * nota bene - the output is a signed integer, DON'T cast it to a + * unsigned integer! + */ + +ssize_t srtp_index_guess(const srtp_xtd_seq_num_t *local, + srtp_xtd_seq_num_t *guess, + srtp_sequence_number_t s) +{ + uint32_t local_roc = (uint32_t)(*local >> 16); + uint16_t local_seq = (uint16_t)*local; + uint32_t guess_roc; + uint16_t guess_seq; + ssize_t difference; + + if (local_seq < seq_num_median) { + if (s - local_seq > seq_num_median) { + guess_roc = local_roc - 1; + difference = s - local_seq - seq_num_max; + } else { + guess_roc = local_roc; + difference = s - local_seq; + } + } else { + if (local_seq - seq_num_median > s) { + guess_roc = local_roc + 1; + difference = s - local_seq + seq_num_max; + } else { + guess_roc = local_roc; + difference = s - local_seq; + } + } + guess_seq = s; + + /* Note: guess_roc is 32 bits, so this generates a 48-bit result! */ + *guess = (((uint64_t)guess_roc) << 16) | guess_seq; + + return difference; +} + +/* + * rdbx + * + */ + +/* + * srtp_rdbx_init(&r, ws) initializes the srtp_rdbx_t pointed to by r with + * window size ws + */ +srtp_err_status_t srtp_rdbx_init(srtp_rdbx_t *rdbx, size_t ws) +{ + if (ws == 0) { + return srtp_err_status_bad_param; + } + + if (!bitvector_alloc(&rdbx->bitmask, ws)) { + return srtp_err_status_alloc_fail; + } + + srtp_index_init(&rdbx->index); + + return srtp_err_status_ok; +} + +/* + * srtp_rdbx_dealloc(&r) frees memory for the srtp_rdbx_t pointed to by r + */ +srtp_err_status_t srtp_rdbx_dealloc(srtp_rdbx_t *rdbx) +{ + bitvector_dealloc(&rdbx->bitmask); + + return srtp_err_status_ok; +} + +/* + * srtp_rdbx_set_roc(rdbx, roc) initializes the srtp_rdbx_t at the location rdbx + * to have the rollover counter value roc. If that value is less than + * the current rollover counter value, then the function returns + * srtp_err_status_replay_old; otherwise, srtp_err_status_ok is returned. + * + */ +srtp_err_status_t srtp_rdbx_set_roc(srtp_rdbx_t *rdbx, uint32_t roc) +{ + bitvector_set_to_zero(&rdbx->bitmask); + + /* make sure that we're not moving backwards */ + if (roc < (rdbx->index >> 16)) { + return srtp_err_status_replay_old; + } + + rdbx->index &= 0xffff; /* retain lowest 16 bits */ + rdbx->index |= ((uint64_t)roc) << 16; /* set ROC */ + + return srtp_err_status_ok; +} + +/* + * srtp_rdbx_get_packet_index(rdbx) returns the value of the packet index + * for the srtp_rdbx_t pointed to by rdbx + * + */ +srtp_xtd_seq_num_t srtp_rdbx_get_packet_index(const srtp_rdbx_t *rdbx) +{ + return rdbx->index; +} + +/* + * srtp_rdbx_get_window_size(rdbx) returns the value of the window size + * for the srtp_rdbx_t pointed to by rdbx + * + */ +size_t srtp_rdbx_get_window_size(const srtp_rdbx_t *rdbx) +{ + return bitvector_get_length(&rdbx->bitmask); +} + +/* + * srtp_rdbx_check(&r, delta) checks to see if the srtp_xtd_seq_num_t + * which is at rdbx->index + delta is in the rdb + */ +srtp_err_status_t srtp_rdbx_check(const srtp_rdbx_t *rdbx, ssize_t delta) +{ + if (delta > 0) { /* if delta is positive, it's good */ + return srtp_err_status_ok; + } else if ((int)(bitvector_get_length(&rdbx->bitmask) - 1) + delta < 0) { + /* if delta is lower than the bitmask, it's bad */ + return srtp_err_status_replay_old; + } else if (bitvector_get_bit(&rdbx->bitmask, + (bitvector_get_length(&rdbx->bitmask) - 1) + + delta) == 1) { + /* delta is within the window, so check the bitmask */ + return srtp_err_status_replay_fail; + } + /* otherwise, the index is okay */ + + return srtp_err_status_ok; +} + +/* + * srtp_rdbx_add_index adds the srtp_xtd_seq_num_t at rdbx->window_start + d to + * replay_db (and does *not* check if that srtp_xtd_seq_num_t appears in db) + * + * this function should be called only after replay_check has + * indicated that the index does not appear in the rdbx, e.g., a mutex + * should protect the rdbx between these calls if need be + */ +srtp_err_status_t srtp_rdbx_add_index(srtp_rdbx_t *rdbx, ssize_t delta) +{ + if (delta > 0) { + /* shift forward by delta */ + srtp_index_advance(&rdbx->index, (srtp_sequence_number_t)delta); + bitvector_left_shift(&rdbx->bitmask, delta); + bitvector_set_bit(&rdbx->bitmask, + bitvector_get_length(&rdbx->bitmask) - 1); + } else { + /* delta is in window */ + bitvector_set_bit(&rdbx->bitmask, + bitvector_get_length(&rdbx->bitmask) - 1 + delta); + } + + /* note that we need not consider the case that delta == 0 */ + + return srtp_err_status_ok; +} + +/* + * srtp_rdbx_estimate_index(rdbx, guess, s) + * + * given an rdbx and a sequence number s (from a newly arrived packet), + * sets the contents of *guess to contain the best guess of the packet + * index to which s corresponds, and returns the difference between + * *guess and the locally stored synch info + */ +ssize_t srtp_rdbx_estimate_index(const srtp_rdbx_t *rdbx, + srtp_xtd_seq_num_t *guess, + srtp_sequence_number_t s) +{ + /* + * if the sequence number and rollover counter in the rdbx are + * non-zero, then use the srtp_index_guess(...) function, otherwise, just + * set the rollover counter to zero (since the srtp_index_guess(...) + * function might incorrectly guess that the rollover counter is + * 0xffffffff) + */ + + if (rdbx->index > seq_num_median) { + return srtp_index_guess(&rdbx->index, guess, s); + } + + *guess = s; + + return s - rdbx->index; +} + +/* + * srtp_rdbx_get_roc(rdbx) + * + * Get the current rollover counter + * + */ +uint32_t srtp_rdbx_get_roc(const srtp_rdbx_t *rdbx) +{ + uint32_t roc; + + roc = (uint32_t)(rdbx->index >> 16); + + return roc; +} + +/* + * srtp_rdbx_set_roc_seq(rdbx, roc, seq) initializes the srtp_rdbx_t at the + * location rdbx to have the rollover counter value roc and packet sequence + * number seq. If the new rollover counter value is less than the current + * rollover counter value, then the function returns + * srtp_err_status_replay_old, otherwise, srtp_err_status_ok is returned. + */ +srtp_err_status_t srtp_rdbx_set_roc_seq(srtp_rdbx_t *rdbx, + uint32_t roc, + uint16_t seq) +{ + /* make sure that we're not moving backwards */ + if (roc < (rdbx->index >> 16)) { + return srtp_err_status_replay_old; + } + + rdbx->index = seq; + rdbx->index |= ((uint64_t)roc) << 16; /* set ROC */ + + bitvector_set_to_zero(&rdbx->bitmask); + + return srtp_err_status_ok; +} diff --git a/src/libs/libsrtp/crypto/test/aes_calc.c b/src/libs/libsrtp/crypto/test/aes_calc.c new file mode 100644 index 00000000..9aaa54f3 --- /dev/null +++ b/src/libs/libsrtp/crypto/test/aes_calc.c @@ -0,0 +1,179 @@ +/* + * aes_calc.c + * + * A simple AES calculator for generating AES encryption values + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* + + Example usage (with first NIST FIPS 197 test case): + + [sh]$ test/aes_calc 000102030405060708090a0b0c0d0e0f \ + 00112233445566778899aabbccddeeff -v + + plaintext: 00112233445566778899aabbccddeeff + key: 000102030405060708090a0b0c0d0e0f + ciphertext: 69c4e0d86a7b0430d8cdb78070b4c55a + + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "aes.h" +#include "util.h" + +#include +#include +#include + +void usage(char *prog_name) +{ + printf("usage: %s [<ciphertext>] [-v]\n", prog_name); + exit(255); +} + +#define AES_MAX_KEY_LEN 32 + +int main(int argc, char *argv[]) +{ + const char *expected_ciphertext = NULL; + const char *ciphertext = NULL; + v128_t data; + uint8_t key[AES_MAX_KEY_LEN]; + srtp_aes_expanded_key_t exp_key; + size_t key_len, len; + bool verbose = false; + srtp_err_status_t status; + + /* -v must be last if it's passed */ + if (argc > 0 && strncmp(argv[argc - 1], "-v", 2) == 0) { + /* we're in verbose mode */ + verbose = true; + --argc; + } + + if (argc < 3 || argc > 4) { + /* we've been fed the wrong number of arguments - compain and exit */ + usage(argv[0]); + } + + if (argc == 4) { + /* we're being passed the ciphertext to check (in unit test mode) */ + expected_ciphertext = argv[3]; + if (strlen(expected_ciphertext) != 16 * 2) { + usage(argv[0]); + } + } + + /* read in key, checking length */ + if (strlen(argv[1]) > AES_MAX_KEY_LEN * 2) { + fprintf(stderr, + "error: too many digits in key " + "(should be at most %d hexadecimal digits, found %zu)\n", + AES_MAX_KEY_LEN * 2, strlen(argv[1])); + exit(1); + } + len = hex_string_to_octet_string(key, argv[1], AES_MAX_KEY_LEN * 2); + /* check that hex string is the right length */ + if (len != 32 && len != 48 && len != 64) { + fprintf(stderr, + "error: bad number of digits in key " + "(should be 32/48/64 hexadecimal digits, found %zu)\n", + len); + exit(1); + } + key_len = len / 2; + + /* read in plaintext, checking length */ + if (strlen(argv[2]) > 16 * 2) { + fprintf(stderr, + "error: too many digits in plaintext " + "(should be %d hexadecimal digits, found %zu)\n", + 16 * 2, strlen(argv[2])); + exit(1); + } + len = hex_string_to_octet_string((uint8_t *)&data, argv[2], 16 * 2); + /* check that hex string is the right length */ + if (len < 16 * 2) { + fprintf(stderr, + "error: too few digits in plaintext " + "(should be %d hexadecimal digits, found %zu)\n", + 16 * 2, len); + exit(1); + } + + if (verbose) { + /* print out plaintext */ + printf("plaintext:\t%s\n", + octet_string_hex_string((uint8_t *)&data, 16)); + } + + /* encrypt plaintext */ + status = srtp_aes_expand_encryption_key(key, key_len, &exp_key); + if (status) { + fprintf(stderr, "error: AES key expansion failed.\n"); + exit(1); + } + + srtp_aes_encrypt(&data, &exp_key); + + /* write ciphertext to output */ + if (verbose) { + printf("key:\t\t%s\n", octet_string_hex_string(key, key_len)); + printf("ciphertext:\t"); + } + + ciphertext = v128_hex_string(&data); + printf("%s\n", ciphertext); + + if (expected_ciphertext && strcmp(ciphertext, expected_ciphertext) != 0) { + fprintf(stderr, + "error: calculated ciphertext %s does not match " + "expected ciphertext %s\n", + ciphertext, expected_ciphertext); + exit(1); + } + + return 0; +} diff --git a/src/libs/libsrtp/crypto/test/cipher_driver.c b/src/libs/libsrtp/crypto/test/cipher_driver.c new file mode 100644 index 00000000..ea64636a --- /dev/null +++ b/src/libs/libsrtp/crypto/test/cipher_driver.c @@ -0,0 +1,1159 @@ +/* + * cipher_driver.c + * + * A driver for the generic cipher type + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "getopt_s.h" +#include "cipher.h" +#include "cipher_priv.h" +#include "datatypes.h" +#include "alloc.h" +#include "util.h" + +#include <stdio.h> +#include <stdlib.h> + +#define PRINT_DEBUG 0 + +void cipher_driver_test_throughput(srtp_cipher_t *c); + +srtp_err_status_t cipher_driver_self_test(srtp_cipher_type_t *ct); + +srtp_err_status_t cipher_driver_test_api(srtp_cipher_type_t *ct, + size_t key_len, + size_t tag_len); + +srtp_err_status_t cipher_driver_test_multi_aes_icm_128(void); +#ifdef GCM +srtp_err_status_t cipher_driver_test_multi_aes_gcm_128(void); +#endif + +/* + * cipher_driver_test_buffering(ct) tests the cipher's output + * buffering for correctness by checking the consistency of successive + * calls + */ + +srtp_err_status_t cipher_driver_test_buffering(srtp_cipher_t *c); + +/* + * functions for testing cipher cache thrash + */ +srtp_err_status_t cipher_driver_test_array_throughput(srtp_cipher_type_t *ct, + size_t klen, + size_t num_cipher); + +void cipher_array_test_throughput(srtp_cipher_t *ca[], size_t num_cipher); + +uint64_t cipher_array_bits_per_second(srtp_cipher_t *cipher_array[], + size_t num_cipher, + size_t octets_in_buffer, + size_t num_trials); + +srtp_err_status_t cipher_array_delete(srtp_cipher_t *cipher_array[], + size_t num_cipher); + +srtp_err_status_t cipher_array_alloc_init(srtp_cipher_t ***cipher_array, + size_t num_ciphers, + srtp_cipher_type_t *ctype, + size_t klen); + +void usage(char *prog_name) +{ + printf("usage: %s [ -t | -v | -a ]\n", prog_name); + exit(255); +} + +/* + * null_cipher and srtp_aes_icm are the cipher meta-objects + * defined in the files in crypto/cipher subdirectory. these are + * declared external so that we can use these cipher types here + */ + +extern srtp_cipher_type_t srtp_null_cipher; +extern srtp_cipher_type_t srtp_aes_icm_128; +extern srtp_cipher_type_t srtp_aes_icm_256; +#ifdef GCM +extern srtp_cipher_type_t srtp_aes_icm_192; +extern srtp_cipher_type_t srtp_aes_gcm_128; +extern srtp_cipher_type_t srtp_aes_gcm_256; +#endif + +int main(int argc, char *argv[]) +{ + srtp_cipher_t *c = NULL; + srtp_err_status_t status; + /* clang-format off */ + uint8_t test_key[48] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + }; + /* clang-format on */ + int q; + bool do_timing_test = false; + bool do_validation = false; + bool do_array_timing_test = false; + + /* process input arguments */ + while (1) { + q = getopt_s(argc, argv, "tva"); + if (q == -1) { + break; + } + switch (q) { + case 't': + do_timing_test = true; + break; + case 'v': + do_validation = true; + break; + case 'a': + do_array_timing_test = true; + break; + default: + usage(argv[0]); + } + } + + printf("cipher test driver\n" + "David A. McGrew\n" + "Cisco Systems, Inc.\n"); + + if (!do_validation && !do_timing_test && !do_array_timing_test) { + usage(argv[0]); + } + + /* array timing (cache thrash) test */ + if (do_array_timing_test) { + size_t max_num_cipher = 1 << 16; /* number of ciphers in cipher_array */ + size_t num_cipher; + + for (num_cipher = 1; num_cipher < max_num_cipher; num_cipher *= 8) { + cipher_driver_test_array_throughput(&srtp_null_cipher, 0, + num_cipher); + } + + for (num_cipher = 1; num_cipher < max_num_cipher; num_cipher *= 8) { + cipher_driver_test_array_throughput( + &srtp_aes_icm_128, SRTP_AES_ICM_128_KEY_LEN_WSALT, num_cipher); + } + + for (num_cipher = 1; num_cipher < max_num_cipher; num_cipher *= 8) { + cipher_driver_test_array_throughput( + &srtp_aes_icm_256, SRTP_AES_ICM_256_KEY_LEN_WSALT, num_cipher); + } + +#ifdef GCM + for (num_cipher = 1; num_cipher < max_num_cipher; num_cipher *= 8) { + cipher_driver_test_array_throughput( + &srtp_aes_icm_192, SRTP_AES_ICM_192_KEY_LEN_WSALT, num_cipher); + } + + for (num_cipher = 1; num_cipher < max_num_cipher; num_cipher *= 8) { + cipher_driver_test_array_throughput( + &srtp_aes_gcm_128, SRTP_AES_GCM_128_KEY_LEN_WSALT, num_cipher); + } + + for (num_cipher = 1; num_cipher < max_num_cipher; num_cipher *= 8) { + cipher_driver_test_array_throughput( + &srtp_aes_gcm_256, SRTP_AES_GCM_256_KEY_LEN_WSALT, num_cipher); + } +#endif + } + + if (do_validation) { + cipher_driver_self_test(&srtp_null_cipher); + cipher_driver_self_test(&srtp_aes_icm_128); + cipher_driver_self_test(&srtp_aes_icm_256); +#ifdef GCM + cipher_driver_self_test(&srtp_aes_icm_192); + cipher_driver_self_test(&srtp_aes_gcm_128); + cipher_driver_self_test(&srtp_aes_gcm_256); +#endif + cipher_driver_test_api(&srtp_aes_icm_128, + SRTP_AES_ICM_128_KEY_LEN_WSALT, 0); +#ifdef GCM + cipher_driver_test_api(&srtp_aes_gcm_128, + SRTP_AES_GCM_128_KEY_LEN_WSALT, 16); +#endif + cipher_driver_test_multi_aes_icm_128(); +#ifdef GCM + cipher_driver_test_multi_aes_gcm_128(); +#endif + } + + /* do timing and/or buffer_test on srtp_null_cipher */ + status = srtp_cipher_type_alloc(&srtp_null_cipher, &c, 0, 0); + CHECK_OK(status); + + status = srtp_cipher_init(c, NULL); + CHECK_OK(status); + + if (do_timing_test) { + cipher_driver_test_throughput(c); + } + if (do_validation) { + status = cipher_driver_test_buffering(c); + CHECK_OK(status); + } + status = srtp_cipher_dealloc(c); + CHECK_OK(status); + + /* run the throughput test on the aes_icm cipher (128-bit key) */ + status = srtp_cipher_type_alloc(&srtp_aes_icm_128, &c, + SRTP_AES_ICM_128_KEY_LEN_WSALT, 0); + if (status) { + fprintf(stderr, "error: can't allocate cipher\n"); + exit(status); + } + + status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + + if (do_timing_test) { + cipher_driver_test_throughput(c); + } + + if (do_validation) { + status = cipher_driver_test_buffering(c); + CHECK_OK(status); + } + + status = srtp_cipher_dealloc(c); + CHECK_OK(status); + + /* repeat the tests with 256-bit keys */ + status = srtp_cipher_type_alloc(&srtp_aes_icm_256, &c, + SRTP_AES_ICM_256_KEY_LEN_WSALT, 0); + if (status) { + fprintf(stderr, "error: can't allocate cipher\n"); + exit(status); + } + + status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + + if (do_timing_test) { + cipher_driver_test_throughput(c); + } + + if (do_validation) { + status = cipher_driver_test_buffering(c); + CHECK_OK(status); + } + + status = srtp_cipher_dealloc(c); + CHECK_OK(status); + +#ifdef GCM + /* run the throughput test on the aes_gcm_128 cipher */ + status = srtp_cipher_type_alloc(&srtp_aes_gcm_128, &c, + SRTP_AES_GCM_128_KEY_LEN_WSALT, 8); + if (status) { + fprintf(stderr, "error: can't allocate GCM 128 cipher\n"); + exit(status); + } + status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + if (do_timing_test) { + cipher_driver_test_throughput(c); + } + + // GCM ciphers don't do buffering; they're "one shot" + + status = srtp_cipher_dealloc(c); + CHECK_OK(status); + + /* run the throughput test on the aes_gcm_256 cipher */ + status = srtp_cipher_type_alloc(&srtp_aes_gcm_256, &c, + SRTP_AES_GCM_256_KEY_LEN_WSALT, 16); + if (status) { + fprintf(stderr, "error: can't allocate GCM 256 cipher\n"); + exit(status); + } + status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + if (do_timing_test) { + cipher_driver_test_throughput(c); + } + + // GCM ciphers don't do buffering; they're "one shot" + + status = srtp_cipher_dealloc(c); + CHECK_OK(status); +#endif + + return 0; +} + +void cipher_driver_test_throughput(srtp_cipher_t *c) +{ + size_t min_enc_len = 32; + size_t max_enc_len = 2048; /* should be a power of two */ + size_t num_trials = 1000000; + + printf("timing %s throughput, key length %zu:\n", c->type->description, + c->key_len); + fflush(stdout); + for (size_t i = min_enc_len; i <= max_enc_len; i = i * 2) { + uint64_t bits_per_second = + srtp_cipher_bits_per_second(c, i, num_trials); + if (bits_per_second == 0) { + printf("error: throughput test failed\n"); + exit(1); + } + printf("msg len: %zu\tgigabits per second: %f\n", i, + bits_per_second / 1e9); + } +} + +srtp_err_status_t cipher_driver_self_test(srtp_cipher_type_t *ct) +{ + srtp_err_status_t status; + + printf("running cipher self-test for %s...", ct->description); + status = srtp_cipher_type_self_test(ct); + CHECK_OK(status); + printf("passed\n"); + + return srtp_err_status_ok; +} + +void reint_cipher(srtp_cipher_t *c, + uint8_t *test_key, + uint8_t *iv, + srtp_cipher_direction_t direction) +{ + srtp_err_status_t status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + + status = srtp_cipher_set_iv(c, iv, direction); + CHECK_OK(status); +} + +srtp_err_status_t cipher_driver_test_api(srtp_cipher_type_t *ct, + size_t key_len, + size_t tag_len) +{ + srtp_err_status_t status; + srtp_cipher_t *c = NULL; + + /* clang-format off */ + uint8_t test_key[48] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + }; + uint8_t iv[16] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}; + uint8_t plaintext[64] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + }; + uint8_t encrypted[96] = {0}; + uint8_t decrypted[96] = {0}; + /* clang-format on */ + + printf("testing cipher api for %s...", ct->description); + fflush(stdout); + + if (key_len > sizeof(test_key)) { + return srtp_err_status_bad_param; + } + + status = srtp_cipher_type_alloc(ct, &c, key_len, tag_len); + CHECK_OK(status); + + status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + + status = srtp_cipher_set_iv(c, iv, srtp_direction_encrypt); + CHECK_OK(status); + + size_t src_len; + size_t dst_len; + + // test dst len zero + src_len = sizeof(plaintext); + dst_len = 0; + status = srtp_cipher_encrypt(c, plaintext, src_len, encrypted, &dst_len); + CHECK_RETURN(status, srtp_err_status_buffer_small); + + reint_cipher(c, test_key, iv, srtp_direction_encrypt); + + // test dst len smaller than expected + src_len = sizeof(plaintext); + dst_len = src_len + tag_len - 1; + status = srtp_cipher_encrypt(c, plaintext, src_len, encrypted, &dst_len); + CHECK_RETURN(status, srtp_err_status_buffer_small); + + reint_cipher(c, test_key, iv, srtp_direction_encrypt); + + // test dst len exact size + src_len = sizeof(plaintext); + dst_len = src_len + tag_len; + status = srtp_cipher_encrypt(c, plaintext, src_len, encrypted, &dst_len); + CHECK_OK(status); + CHECK(dst_len == src_len + tag_len); + + reint_cipher(c, test_key, iv, srtp_direction_encrypt); + + // dst len larger than src len + src_len = sizeof(plaintext); + dst_len = sizeof(encrypted); + status = srtp_cipher_encrypt(c, plaintext, src_len, encrypted, &dst_len); + CHECK_OK(status); + CHECK(dst_len == src_len + tag_len); + + reint_cipher(c, test_key, iv, srtp_direction_encrypt); + + size_t encrypted_len = dst_len; + + // init for decrypt + status = srtp_cipher_init(c, test_key); + CHECK_OK(status); + + status = srtp_cipher_set_iv(c, iv, srtp_direction_decrypt); + CHECK_OK(status); + + if (tag_len != 0) { + // test src less than tag len + src_len = tag_len - 1; + dst_len = sizeof(decrypted); + status = + srtp_cipher_decrypt(c, encrypted, src_len, decrypted, &dst_len); + CHECK_RETURN(status, srtp_err_status_bad_param); + + reint_cipher(c, test_key, iv, srtp_direction_decrypt); + } + + // test dst len zero + src_len = encrypted_len; + dst_len = 0; + status = srtp_cipher_decrypt(c, encrypted, src_len, decrypted, &dst_len); + CHECK_RETURN(status, srtp_err_status_buffer_small); + + reint_cipher(c, test_key, iv, srtp_direction_decrypt); + + // test dst len smaller than expected + src_len = encrypted_len; + dst_len = src_len - tag_len - 1; + status = srtp_cipher_decrypt(c, encrypted, src_len, decrypted, &dst_len); + CHECK_RETURN(status, srtp_err_status_buffer_small); + + reint_cipher(c, test_key, iv, srtp_direction_decrypt); + + // test dst len exact + src_len = encrypted_len; + dst_len = src_len - tag_len; + status = srtp_cipher_decrypt(c, encrypted, src_len, decrypted, &dst_len); + CHECK_OK(status); + CHECK(dst_len == sizeof(plaintext)); + CHECK_BUFFER_EQUAL(plaintext, decrypted, sizeof(plaintext)); + + reint_cipher(c, test_key, iv, srtp_direction_decrypt); + + // dst len larger than src len + src_len = encrypted_len; + dst_len = sizeof(decrypted); + status = srtp_cipher_decrypt(c, encrypted, src_len, decrypted, &dst_len); + CHECK_OK(status); + CHECK(dst_len == sizeof(plaintext)); + CHECK_BUFFER_EQUAL(plaintext, decrypted, sizeof(plaintext)); + + reint_cipher(c, test_key, iv, srtp_direction_decrypt); + + status = srtp_cipher_dealloc(c); + CHECK_OK(status); + + printf("passed\n"); + + return srtp_err_status_ok; +} + +srtp_err_status_t cipher_driver_test_multi_aes_icm_128(void) +{ + /* clang-format off */ + uint8_t key[30] = { + 0xc6, 0x1e, 0x7a, 0x93, 0x74, 0x4f, 0x39, 0xee, + 0x10, 0x73, 0x4a, 0xfe, 0x3f, 0xf7, 0xa0, 0x87, + 0x30, 0xcb, 0xbc, 0x08, 0x86, 0x3d, 0x8c, 0x85, + 0xd4, 0x9d, 0xb3, 0x4a, 0x9a, 0xe1 + }; + uint8_t iv_0[16] = { + 0x00, 0x00, 0x00, 0x00, 0xca, 0xfe, 0xba, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x35, 0x00, 0x00 + }; + uint8_t plain_text_0[] = { + 0x51, 0x00, 0x02, 0x00, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_0[] = { + 0xeb, 0x92, 0x36, 0x52, 0x51, 0xc3, 0xe0, 0x36, + 0xf8, 0xde, 0x27, 0xe9, 0xc2, 0x7e, 0xe3, 0xe0, + 0xb4, 0x65, 0x1d, 0x9f + }; + uint8_t iv_1[16] = { + 0x00, 0x00, 0x00, 0x00, 0xca, 0xfe, 0xba, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x36, 0x00, 0x00 + }; + uint8_t plain_text_1[] = { + 0x05, 0x02, 0x00, 0x02, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_1[] = { + 0x4e, 0xd9, 0xcc, 0x4e, 0x6a, 0x71, 0x2b, 0x30, + 0x96, 0xc5, 0xca, 0x77, 0x33, 0x9d, 0x42, 0x04, + 0xce, 0x0d, 0x77, 0x39 + }; + uint8_t iv_2[16] = { + 0x00, 0x00, 0x00, 0x00, 0xca, 0xfe, 0xba, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x38, 0x00, 0x00 + }; + uint8_t plain_text_2[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0x51, 0x00, 0x02, 0x00, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_2[] = { + 0x8b, 0xb6, 0xe1, 0x2b, 0x5c, 0xff, 0x16, 0xdd, + 0x92, 0x83, 0x8c, 0x8c, 0x09, 0xe5, 0x83, 0x93, + 0xe1, 0xde, 0x3a, 0x9a, 0x74, 0x73, 0x4d, 0x67, + 0x45, 0x67, 0x13, 0x38 + }; + uint8_t iv_3[16] = { + 0x00, 0x00, 0x00, 0x00, 0xca, 0xfe, 0xba, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x39, 0x00, 0x00 + }; + uint8_t plain_text_3[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0x05, 0x02, 0x00, 0x02, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_3[] = { + 0xf7, 0x0e, 0x51, 0x3e, 0xb9, 0x0b, 0x9b, 0x25, + 0xbb, 0xed, 0x48, 0x48, 0xfa, 0xa6, 0x44, 0x66, + 0x5f, 0x3d, 0x7f, 0x34, 0x12, 0x59, 0x14, 0xe9, + 0xf4, 0xd0, 0xae, 0x92 + }; + uint8_t iv_4[16] = { + 0x00, 0x00, 0x00, 0x00, 0xca, 0xfe, 0xba, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x3a, 0x00, 0x00 + }; + uint8_t plain_text_4[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_4[] = { + 0x71, 0x30, 0xb6, 0xab, 0xfe, 0x2a, 0xb0, 0xe3, + 0xe3, 0xd9, 0xf6, 0x4b, 0x25, 0xc9, 0xe7, 0x4c, + 0xb4, 0xcf, 0x8e, 0x43, 0xfb, 0x92, 0xe3, 0x78 + }; + uint8_t iv_5[16] = { + 0x00, 0x00, 0x00, 0x00, 0xca, 0xfe, 0xba, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x3b, 0x00, 0x00 + }; + uint8_t plain_text_5[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_5[] = { + 0xcb, 0xf2, 0x4c, 0x12, 0x43, 0x30, 0xe1, 0xc8, + 0x59, 0x9d, 0xd4, 0x5b, 0xc9, 0xd6, 0x87, 0xb6, + 0x03, 0xe8, 0xb5, 0x9d, 0x77, 0x1f, 0xd3, 0x8e + }; + + uint8_t *ivs[] = { + iv_0, iv_1, iv_2, iv_3, iv_4, iv_5 + }; + uint8_t *plain_texts[] = { + plain_text_0, plain_text_1, plain_text_2, + plain_text_3, plain_text_4, plain_text_5 + }; + size_t plain_text_lengths[] = { + sizeof(plain_text_0), sizeof(plain_text_1), + sizeof(plain_text_2), sizeof(plain_text_3), + sizeof(plain_text_4), sizeof(plain_text_5) + }; + uint8_t *cipher_texts[] = { + cipher_text_0, cipher_text_1, cipher_text_2, + cipher_text_3, cipher_text_4, cipher_text_5 + }; + size_t cipher_text_lengths[] = { + sizeof(cipher_text_0), sizeof(cipher_text_1), + sizeof(cipher_text_2), sizeof(cipher_text_3), + sizeof(cipher_text_4), sizeof(cipher_text_5) + }; + size_t num_tests = sizeof(plain_texts) / sizeof(plain_texts[0]); + /* clang-format on */ + + srtp_cipher_type_t *ct = &srtp_aes_icm_128; + srtp_cipher_t *c = NULL; + + printf("testing cipher multi for %s e[", ct->description); + + CHECK_OK(srtp_cipher_type_alloc(ct, &c, 30, 0)); + CHECK_OK(srtp_cipher_init(c, key)); + for (size_t i = 0; i < num_tests; ++i) { + printf("%zu,", i); + CHECK_OK(srtp_cipher_set_iv(c, ivs[i], srtp_direction_encrypt)); + uint8_t dst[1024] = { 0 }; + size_t dst_len = sizeof(dst); + CHECK_OK(srtp_cipher_encrypt(c, plain_texts[i], plain_text_lengths[i], + dst, &dst_len)); + CHECK(dst_len == cipher_text_lengths[i]); + CHECK_BUFFER_EQUAL(cipher_texts[i], dst, dst_len); + } + CHECK_OK(srtp_cipher_dealloc(c)); + + printf("] d["); + + CHECK_OK(srtp_cipher_type_alloc(ct, &c, 30, 0)); + CHECK_OK(srtp_cipher_init(c, key)); + for (size_t i = 0; i < num_tests; ++i) { + printf("%zu,", i); + CHECK_OK(srtp_cipher_set_iv(c, ivs[i], srtp_direction_decrypt)); + uint8_t dst[1024] = { 0 }; + size_t dst_len = sizeof(dst); + CHECK_OK(srtp_cipher_decrypt(c, cipher_texts[i], cipher_text_lengths[i], + dst, &dst_len)); + CHECK(dst_len == plain_text_lengths[i]); + CHECK_BUFFER_EQUAL(plain_texts[i], dst, dst_len); + } + CHECK_OK(srtp_cipher_dealloc(c)); + + printf("]...passed\n"); + + return srtp_err_status_ok; +} + +#ifdef GCM +srtp_err_status_t cipher_driver_test_multi_aes_gcm_128(void) +{ + /* clang-format off */ + uint8_t key[16] = { + 0x07, 0x7c, 0x61, 0x43, 0xcb, 0x22, 0x1b, 0xc3, + 0x55, 0xff, 0x23, 0xd5, 0xf9, 0x84, 0xa1, 0x6e + }; + uint8_t iv_0[16] = { + 0x9a, 0xf3, 0x23, 0xad, 0xde, 0x55, 0xac, 0x9c, + 0x99, 0xc5, 0xb5, 0xf1 + }; + uint8_t aad_0[] = { + 0x90, 0x0f, 0x12, 0x35, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc0, 0xde, 0x00, 0x01 + }; + uint8_t plain_text_0[] = { + 0x51, 0x00, 0x02, 0x00, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_0[] = { + 0x39, 0x97, 0x2d, 0xc9, 0x57, 0x2c, 0x4d, 0x99, + 0xe8, 0xfc, 0x35, 0x5d, 0xe7, 0x43, 0xfb, 0x2e, + 0x94, 0xf9, 0xd8, 0xff, 0x54, 0xe7, 0x2f, 0x41, + 0x93, 0xbb, 0xc5, 0xc7, 0x4f, 0xfa, 0xb0, 0xfa, + 0x9f, 0xa0, 0xfb, 0xeb + }; + uint8_t iv_1[16] = { + 0x9a, 0xf3, 0x23, 0xad, 0xde, 0x55, 0xac, 0x9c, + 0x99, 0xc5, 0xb5, 0xf2 + }; + uint8_t aad_1[] = { + 0x90, 0x0f, 0x12, 0x36, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc2, 0xde, 0x00, 0x01 + }; + uint8_t plain_text_1[] = { + 0x05, 0x02, 0x00, 0x02, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_1[] = { + 0xbb, 0x75, 0xa4, 0xc5, 0x45, 0xcd, 0x1f, 0x41, + 0x3b, 0xdb, 0x7d, 0xaa, 0x2b, 0x1e, 0x32, 0x63, + 0xde, 0x31, 0x36, 0x67, 0xc9, 0x63, 0x24, 0x90, + 0x81, 0xb3, 0x5a, 0x65, 0xf5, 0xcb, 0x6c, 0x88, + 0xb3, 0x94, 0x23, 0x5f + }; + uint8_t iv_2[16] = { + 0x9a, 0xf3, 0x23, 0xad, 0xde, 0x55, 0xac, 0x9c, + 0x99, 0xc5, 0xb5, 0xfc + }; + uint8_t aad_2[] = { + 0x92, 0x0f, 0x12, 0x38, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc0, 0xde, 0x00, 0x01 + }; + uint8_t plain_text_2[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0x51, 0x00, 0x02, 0x00, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_2[] = { + 0x63, 0xbb, 0xcc, 0xc4, 0xa7, 0xf6, 0x95, 0xc4, + 0x8a, 0xd7, 0xc7, 0x1f, 0xac, 0x70, 0xa8, 0x0c, + 0x92, 0x86, 0x6b, 0x4c, 0x6b, 0xa9, 0x85, 0x46, + 0xef, 0x91, 0x35, 0x86, 0xe9, 0x5f, 0xfa, 0xaf, + 0xfe, 0x95, 0x68, 0x85, 0xbb, 0x06, 0x47, 0xa8, + 0xbc, 0x09, 0x4a, 0xc8 + }; + uint8_t iv_3[16] = { + 0x9a, 0xf3, 0x23, 0xad, 0xde, 0x55, 0xac, 0x9c, + 0x99, 0xc5, 0xb5, 0xfd + }; + uint8_t aad_3[] = { + 0x92, 0x0f, 0x12, 0x39, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc2, 0xde, 0x00, 0x01 + }; + uint8_t plain_text_3[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0x05, 0x02, 0x00, 0x02, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_3[] = { + 0x36, 0x80, 0x52, 0x4f, 0x8d, 0x31, 0x2b, 0x00, + 0xc7, 0x8d, 0x12, 0x00, 0x38, 0x42, 0x2b, 0xc1, + 0x11, 0xa7, 0x18, 0x7a, 0x18, 0x24, 0x6f, 0x98, + 0x0c, 0x05, 0x9c, 0xc6, 0xbc, 0x9d, 0xf8, 0xb6, + 0x26, 0x39, 0x4e, 0xca, 0x34, 0x4e, 0x4b, 0x05, + 0xd8, 0x0f, 0xea, 0x83 + }; + uint8_t iv_4[16] = { + 0x9a, 0xf3, 0x23, 0xad, 0xde, 0x55, 0xac, 0x9c, + 0x99, 0xc5, 0xb5, 0xfe + }; + uint8_t aad_4[] = { + 0x92, 0x0f, 0x12, 0x3a, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc0, 0xde, 0x00, 0x00 + }; + uint8_t plain_text_4[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_4[] = { + 0x15, 0xb6, 0xbb, 0x43, 0x37, 0x90, 0x6f, 0xff, + 0xb7, 0xb9, 0x64, 0x53, 0x7a, 0x2b, 0x03, 0xab, + 0x7b, 0xa5, 0x38, 0x9c, 0xe9, 0x33, 0x17, 0x12, + 0x6b, 0x5d, 0x97, 0x4d, 0xf3, 0x0c, 0x68, 0x84, + 0xdc, 0xb6, 0x51, 0xc5, 0xe1, 0x20, 0xc1, 0xda + }; + uint8_t iv_5[16] = { + 0x9a, 0xf3, 0x23, 0xad, 0xde, 0x55, 0xac, 0x9c, + 0x99, 0xc5, 0xb5, 0xff + }; + uint8_t aad_5[] = { + 0x92, 0x0f, 0x12, 0x3b, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc2, 0xde, 0x00, 0x00 + }; + uint8_t plain_text_5[] = { + 0x00, 0x01, 0xe2, 0x40, 0x00, 0x00, 0xb2, 0x6e, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab + }; + uint8_t cipher_text_5[] = { + 0xdc, 0xb3, 0x8c, 0x9e, 0x48, 0xbf, 0x95, 0xf4, + 0x61, 0xee, 0x43, 0x2c, 0xf9, 0x20, 0x31, 0x70, + 0x76, 0x61, 0x32, 0x58, 0xd3, 0xce, 0x42, 0x36, + 0xc0, 0x6a, 0xc4, 0x29, 0x68, 0x1a, 0xd0, 0x84, + 0x13, 0x51, 0x2d, 0xc9, 0x8b, 0x52, 0x07, 0xd8 + }; + + uint8_t *ivs[] = { + iv_0, iv_1, iv_2, iv_3, iv_4, iv_5 + }; + uint8_t *aads[] = { + aad_0, aad_1, aad_2, aad_3, aad_4, aad_5 + }; + size_t aad_lengths[] = { + sizeof(aad_0), sizeof(aad_1), + sizeof(aad_2), sizeof(aad_3), + sizeof(aad_4), sizeof(aad_5) + }; + uint8_t *plain_texts[] = { + plain_text_0, plain_text_1, plain_text_2, + plain_text_3, plain_text_4, plain_text_5 + }; + size_t plain_text_lengths[] = { + sizeof(plain_text_0), sizeof(plain_text_1), + sizeof(plain_text_2), sizeof(plain_text_3), + sizeof(plain_text_4), sizeof(plain_text_5) + }; + uint8_t *cipher_texts[] = { + cipher_text_0, cipher_text_1, cipher_text_2, + cipher_text_3, cipher_text_4, cipher_text_5 + }; + size_t cipher_text_lengths[] = { + sizeof(cipher_text_0), sizeof(cipher_text_1), + sizeof(cipher_text_2), sizeof(cipher_text_3), + sizeof(cipher_text_4), sizeof(cipher_text_5) + }; + size_t num_tests = sizeof(plain_texts) / sizeof(plain_texts[0]); + /* clang-format on */ + + srtp_cipher_type_t *ct = &srtp_aes_gcm_128; + srtp_cipher_t *c = NULL; + + printf("testing cipher multi for %s e[", ct->description); + + CHECK_OK(srtp_cipher_type_alloc(ct, &c, 28, 16)); + CHECK_OK(srtp_cipher_init(c, key)); + for (size_t i = 0; i < num_tests; ++i) { + printf("%zu,", i); + CHECK_OK(srtp_cipher_set_iv(c, ivs[i], srtp_direction_encrypt)); + CHECK_OK(srtp_cipher_set_aad(c, aads[i], aad_lengths[i])); + uint8_t dst[1024] = { 0 }; + size_t dst_len = sizeof(dst); + CHECK_OK(srtp_cipher_encrypt(c, plain_texts[i], plain_text_lengths[i], + dst, &dst_len)); + CHECK(dst_len == cipher_text_lengths[i]); + CHECK_BUFFER_EQUAL(cipher_texts[i], dst, dst_len); + } + CHECK_OK(srtp_cipher_dealloc(c)); + + printf("] d["); + + CHECK_OK(srtp_cipher_type_alloc(ct, &c, 28, 16)); + CHECK_OK(srtp_cipher_init(c, key)); + for (size_t i = 0; i < num_tests; ++i) { + printf("%zu,", i); + CHECK_OK(srtp_cipher_set_iv(c, ivs[i], srtp_direction_decrypt)); + CHECK_OK(srtp_cipher_set_aad(c, aads[i], aad_lengths[i])); + uint8_t dst[1024] = { 0 }; + size_t dst_len = sizeof(dst); + CHECK_OK(srtp_cipher_decrypt(c, cipher_texts[i], cipher_text_lengths[i], + dst, &dst_len)); + CHECK(dst_len == plain_text_lengths[i]); + CHECK_BUFFER_EQUAL(plain_texts[i], dst, dst_len); + } + CHECK_OK(srtp_cipher_dealloc(c)); + + printf("]...passed\n"); + + return srtp_err_status_ok; +} +#endif + +/* + * cipher_driver_test_buffering(ct) tests the cipher's output + * buffering for correctness by checking the consistency of successive + * calls + */ + +#define INITIAL_BUFLEN 1024 +srtp_err_status_t cipher_driver_test_buffering(srtp_cipher_t *c) +{ + size_t num_trials = 1000; + size_t len, buflen = INITIAL_BUFLEN; + uint8_t buffer0[INITIAL_BUFLEN], buffer1[INITIAL_BUFLEN], *current, *end; + uint8_t idx[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x34 }; + srtp_err_status_t status; + + printf("testing output buffering for cipher %s...", c->type->description); + + for (size_t i = 0; i < num_trials; i++) { + /* set buffers to zero */ + for (size_t j = 0; j < buflen; j++) { + buffer0[j] = buffer1[j] = 0; + } + + /* initialize cipher */ + status = srtp_cipher_set_iv(c, idx, srtp_direction_encrypt); + if (status) { + return status; + } + + /* generate 'reference' value by encrypting all at once */ + status = srtp_cipher_encrypt(c, buffer0, buflen, buffer0, &buflen); + if (status) { + return status; + } + + /* re-initialize cipher */ + status = srtp_cipher_set_iv(c, idx, srtp_direction_encrypt); + if (status) { + return status; + } + + /* now loop over short lengths until buffer1 is encrypted */ + current = buffer1; + end = buffer1 + buflen; + while (current < end) { + /* choose a short length */ + len = srtp_cipher_rand_u32_for_tests() & 0x01f; + + /* make sure that len doesn't cause us to overreach the buffer */ + if (current + len > end) { + len = end - current; + } + + status = srtp_cipher_encrypt(c, current, len, current, &len); + if (status) { + return status; + } + + /* advance pointer into buffer1 to reflect encryption */ + current += len; + + /* if buffer1 is all encrypted, break out of loop */ + if (current == end) { + break; + } + } + + /* compare buffers */ + CHECK_BUFFER_EQUAL(buffer0, buffer1, buflen); + } + + printf("passed\n"); + + return srtp_err_status_ok; +} + +/* + * The function cipher_test_throughput_array() tests the effect of CPU + * cache thrash on cipher throughput. + * + * cipher_array_alloc_init(ctype, array, num_ciphers) creates an array + * of srtp_cipher_t of type ctype + */ + +srtp_err_status_t cipher_array_alloc_init(srtp_cipher_t ***ca, + size_t num_ciphers, + srtp_cipher_type_t *ctype, + size_t klen) +{ + srtp_err_status_t status; + uint8_t *key = NULL; + srtp_cipher_t **cipher_array; + /* pad klen allocation, to handle aes_icm reading 16 bytes for the + 14-byte salt */ + size_t klen_pad = ((klen + 15) >> 4) << 4; + + /* allocate array of pointers to ciphers */ + cipher_array = (srtp_cipher_t **)srtp_crypto_alloc(sizeof(srtp_cipher_t *) * + num_ciphers); + if (cipher_array == NULL) { + return srtp_err_status_alloc_fail; + } + + /* set ca to location of cipher_array */ + *ca = cipher_array; + + /* allocate key , allow zero key for example null cipher */ + if (klen_pad > 0) { + key = srtp_crypto_alloc(klen_pad); + if (key == NULL) { + srtp_crypto_free(cipher_array); + return srtp_err_status_alloc_fail; + } + } + + /* allocate and initialize an array of ciphers */ + for (size_t i = 0; i < num_ciphers; i++) { + /* allocate cipher */ + status = srtp_cipher_type_alloc(ctype, cipher_array, klen, 16); + if (status) { + return status; + } + + /* generate random key and initialize cipher */ + srtp_cipher_rand_for_tests(key, klen); + for (size_t j = klen; j < klen_pad; j++) { + key[j] = 0; + } + status = srtp_cipher_init(*cipher_array, key); + if (status) { + return status; + } + + /* printf("%dth cipher is at %p\n", i, *cipher_array); */ + /* printf("%dth cipher description: %s\n", i, */ + /* (*cipher_array)->type->description); */ + + /* advance cipher array pointer */ + cipher_array++; + } + + srtp_crypto_free(key); + + return srtp_err_status_ok; +} + +srtp_err_status_t cipher_array_delete(srtp_cipher_t *cipher_array[], + size_t num_cipher) +{ + for (size_t i = 0; i < num_cipher; i++) { + srtp_cipher_dealloc(cipher_array[i]); + } + + srtp_crypto_free(cipher_array); + + return srtp_err_status_ok; +} + +/* + * cipher_array_bits_per_second(c, l, t) computes (an estimate of) the + * number of bits that a cipher implementation can encrypt in a second + * when distinct keys are used to encrypt distinct messages + * + * c is a cipher (which MUST be allocated an initialized already), l + * is the length in octets of the test data to be encrypted, and t is + * the number of trials + * + * if an error is encountered, the value 0 is returned + */ + +uint64_t cipher_array_bits_per_second(srtp_cipher_t *cipher_array[], + size_t num_cipher, + size_t octets_in_buffer, + size_t num_trials) +{ + v128_t nonce; + clock_t timer; + uint8_t *enc_buf; + + /* Constrain the number of ciphers */ + if (num_cipher > UINT32_MAX) { + num_cipher = UINT32_MAX; + } + size_t cipher_index = srtp_cipher_rand_u32_for_tests() % num_cipher; + + /* Over-alloc, for NIST CBC padding */ + enc_buf = srtp_crypto_alloc(octets_in_buffer + 17); + if (enc_buf == NULL) { + return 0; /* indicate bad parameters by returning null */ + } + + /* time repeated trials */ + v128_set_to_zero(&nonce); + timer = clock(); + for (size_t i = 0; i < num_trials; i++, nonce.v32[3] = (uint32_t)i) { + /* length parameter to srtp_cipher_encrypt is in/out -- out is total, + * padded + * length -- so reset it each time. */ + size_t octets_to_encrypt = octets_in_buffer; + + /* encrypt buffer with cipher */ + srtp_cipher_set_iv(cipher_array[cipher_index], (uint8_t *)&nonce, + srtp_direction_encrypt); + srtp_cipher_encrypt(cipher_array[cipher_index], enc_buf, + octets_to_encrypt, enc_buf, &octets_to_encrypt); + + /* choose a cipher at random from the array*/ + cipher_index = (*((size_t *)enc_buf)) % num_cipher; + } + timer = clock() - timer; + + srtp_crypto_free(enc_buf); + + if (timer == 0) { + /* Too fast! */ + return 0; + } + + return (uint64_t)CLOCKS_PER_SEC * num_trials * 8 * octets_in_buffer / timer; +} + +void cipher_array_test_throughput(srtp_cipher_t *ca[], size_t num_cipher) +{ + size_t min_enc_len = 16; + size_t max_enc_len = 2048; /* should be a power of two */ + size_t num_trials = 1000000; + + printf("timing %s throughput with key length %zu, array size %zu:\n", + (ca[0])->type->description, (ca[0])->key_len, num_cipher); + fflush(stdout); + for (size_t i = min_enc_len; i <= max_enc_len; i = i * 4) { + printf("msg len: %zd\tgigabits per second: %f\n", i, + cipher_array_bits_per_second(ca, num_cipher, i, num_trials) / + 1e9); + } +} + +srtp_err_status_t cipher_driver_test_array_throughput(srtp_cipher_type_t *ct, + size_t klen, + size_t num_cipher) +{ + srtp_cipher_t **ca = NULL; + srtp_err_status_t status; + + status = cipher_array_alloc_init(&ca, num_cipher, ct, klen); + if (status) { + printf("error: cipher_array_alloc_init() failed with error code %d\n", + status); + return status; + } + + cipher_array_test_throughput(ca, num_cipher); + + cipher_array_delete(ca, num_cipher); + + return srtp_err_status_ok; +} diff --git a/src/libs/libsrtp/crypto/test/datatypes_driver.c b/src/libs/libsrtp/crypto/test/datatypes_driver.c new file mode 100644 index 00000000..f4b61360 --- /dev/null +++ b/src/libs/libsrtp/crypto/test/datatypes_driver.c @@ -0,0 +1,226 @@ +/* + * datatypes_driver.c + * + * a test driver for crypto/math datatypes + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "datatypes.h" +#include "util.h" + +#include <stdio.h> /* for printf() */ +#include <string.h> /* for strlen() */ +#include <stdlib.h> + +void byte_order(void); + +void test_hex_string_funcs(void); + +void print_string(char *s); + +void test_bswap(void); + +void test_set_to_zero(void); + +int main(void) +{ + /* + * this program includes various and sundry tests for fundamental + * datatypes. it's a grab-bag of throwaway code, retained only in + * case of future problems + */ + + v128_t x; + char *r = "The Moving Finger writes; and, having writ,\n" + "Moves on: nor all thy Piety nor Wit\n" + "Shall lure it back to cancel half a Line,\n" + "Nor all thy Tears wash out a Word of it."; + char *s = "incomplet"; + + print_string(r); + print_string(s); + + byte_order(); + test_hex_string_funcs(); + + for (size_t j = 0; j < 128; j++) { + v128_set_to_zero(&x); + /* x.v32[0] = (1 << j); */ + v128_set_bit(&x, j); + printf("%s\n", v128_bit_string(&x)); + v128_clear_bit(&x, j); + printf("%s\n", v128_bit_string(&x)); + } + + printf("----------------------------------------------\n"); + v128_set_to_zero(&x); + for (size_t i = 0; i < 128; i++) { + v128_set_bit(&x, i); + } + printf("%s\n", v128_bit_string(&x)); + + printf("----------------------------------------------\n"); + v128_set_to_zero(&x); + v128_set_bit(&x, 127); + for (size_t i = 0; i < 128; i++) { + printf("%s\n", v128_bit_string(&x)); + v128_left_shift(&x, 1); + } + printf("----------------------------------------------\n"); + for (size_t i = 0; i < 128; i++) { + v128_set_to_zero(&x); + v128_set_bit(&x, 127); + v128_left_shift(&x, i); + printf("%s\n", v128_bit_string(&x)); + } + printf("----------------------------------------------\n"); + v128_set_to_zero(&x); + for (size_t i = 0; i < 128; i += 2) { + v128_set_bit(&x, i); + } + printf("bit_string: { %s }\n", v128_bit_string(&x)); + printf("get_bit: { "); + for (size_t i = 0; i < 128; i++) { + if (v128_get_bit(&x, i) == 1) { + printf("1"); + } else { + printf("0"); + } + } + printf(" } \n"); + + test_bswap(); + test_set_to_zero(); + + return 0; +} + +/* byte_order() prints out byte ordering of datatypes */ + +void byte_order(void) +{ + size_t i; + v128_t e; + + printf("byte ordering of crypto/math datatypes:\n"); + for (i = 0; i < sizeof(e); i++) { + e.v8[i] = (uint8_t)i; + } + printf("v128_t: %s\n", v128_hex_string(&e)); +} + +void test_hex_string_funcs(void) +{ + char hex1[] = "abadcafe"; + char hex2[] = "0123456789abcdefqqqqq"; + uint8_t raw[10]; + size_t len; + + len = hex_string_to_octet_string(raw, hex1, strlen(hex1)); + printf("computed length: %zu\tstring: %s\n", len, + octet_string_hex_string(raw, len / 2)); + printf("expected length: %zu\tstring: %s\n", strlen(hex1), hex1); + + len = hex_string_to_octet_string(raw, hex2, strlen(hex2)); + printf("computed length: %zu\tstring: %s\n", len, + octet_string_hex_string(raw, len / 2)); + printf("expected length: %d\tstring: %s\n", 16, "0123456789abcdef"); +} + +void print_string(char *s) +{ + size_t i; + printf("%s\n", s); + printf("strlen(s) = %zu\n", strlen(s)); + printf("{ "); + for (i = 0; i < strlen(s); i++) { + printf("0x%x, ", s[i]); + if (((i + 1) % 8) == 0) { + printf("\n "); + } + } + printf("}\n"); +} + +void test_bswap(void) +{ + uint32_t x = 0x11223344; + uint64_t y = 0x1122334455667788LL; + + printf("before: %0x\nafter: %0x\n", x, (unsigned int)be32_to_cpu(x)); + printf("before: %0llx\nafter: %0llx\n", (unsigned long long)y, + (unsigned long long)be64_to_cpu(y)); + + y = 1234; + + printf("1234: %0llx\n", (unsigned long long)y); + printf("as octet string: %s\n", octet_string_hex_string((uint8_t *)&y, 8)); + y = be64_to_cpu(y); + printf("bswapped octet string: %s\n", + octet_string_hex_string((uint8_t *)&y, 8)); +} + +void test_set_to_zero(void) +{ +#define BUFFER_SIZE (16) + uint8_t buffer[BUFFER_SIZE]; + size_t i; + + for (i = 0; i < BUFFER_SIZE; i++) { + buffer[i] = i & 0xff; + } + printf("Buffer before: %s\n", octet_string_hex_string(buffer, BUFFER_SIZE)); + octet_string_set_to_zero(buffer, BUFFER_SIZE); + printf("Buffer after: %s\n", octet_string_hex_string(buffer, BUFFER_SIZE)); + for (i = 0; i < BUFFER_SIZE; i++) { + if (buffer[i]) { + fprintf(stderr, + "Buffer contents not zero at position %zu (is %d)\n", i, + buffer[i]); + abort(); + } + } +#undef BUFFER_SIZE +} diff --git a/src/libs/libsrtp/crypto/test/env.c b/src/libs/libsrtp/crypto/test/env.c new file mode 100644 index 00000000..0dfa88f6 --- /dev/null +++ b/src/libs/libsrtp/crypto/test/env.c @@ -0,0 +1,84 @@ +/* + * env.c + * + * prints out a brief report on the build environment + * + * David McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <stdio.h> +#include <string.h> /* for srtcmp() */ +#include "config.h" + +int main(void) +{ + size_t err_count = 0; + +#ifdef WORDS_BIGENDIAN + printf("CPU set to big-endian\t\t\t(WORDS_BIGENDIAN == 1)\n"); +#else + printf("CPU set to little-endian\t\t(WORDS_BIGENDIAN == 0)\n"); +#endif + +#ifdef CPU_RISC + printf("CPU set to RISC\t\t\t\t(CPU_RISC == 1)\n"); +#elif defined(CPU_CISC) + printf("CPU set to CISC\t\t\t\t(CPU_CISC == 1)\n"); +#else + printf( + "CPU set to an unknown type, probably due to a configuration error\n"); + err_count++; +#endif + +#ifdef CPU_ALTIVEC + printf("CPU set to ALTIVEC\t\t\t\t(CPU_ALTIVEC == 0)\n"); +#endif + +#ifdef ERR_REPORTING_STDOUT + printf("using stdout for error reporting\t(ERR_REPORTING_STDOUT == 1)\n"); +#endif + + if (err_count) { + printf("warning: configuration is probably in error " + "(found %zu problems)\n", + err_count); + } + + return err_count; +} diff --git a/src/libs/libsrtp/crypto/test/kernel_driver.c b/src/libs/libsrtp/crypto/test/kernel_driver.c new file mode 100644 index 00000000..e305b6d3 --- /dev/null +++ b/src/libs/libsrtp/crypto/test/kernel_driver.c @@ -0,0 +1,119 @@ +/* + * kernel_driver.c + * + * a test driver for the crypto_kernel + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright(c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "getopt_s.h" +#include "crypto_kernel.h" + +#include <stdio.h> /* for printf() */ +#include <stdlib.h> + +void usage(char *prog_name) +{ + printf("usage: %s [ -v ][ -d debug_module ]*\n", prog_name); + exit(255); +} + +int main(int argc, char *argv[]) +{ + int q; + int do_validation = 0; + srtp_err_status_t status; + + if (argc == 1) { + usage(argv[0]); + } + + /* initialize kernel - we need to do this before anything else */ + status = srtp_crypto_kernel_init(); + if (status) { + printf("error: srtp_crypto_kernel init failed\n"); + exit(1); + } + printf("srtp_crypto_kernel successfully initalized\n"); + + /* process input arguments */ + while (1) { + q = getopt_s(argc, argv, "vd:"); + if (q == -1) { + break; + } + switch (q) { + case 'v': + do_validation = 1; + break; + case 'd': + status = srtp_crypto_kernel_set_debug_module(optarg_s, true); + if (status) { + printf("error: set debug module (%s) failed\n", optarg_s); + exit(1); + } + break; + default: + usage(argv[0]); + } + } + + if (do_validation) { + printf("checking srtp_crypto_kernel status...\n"); + status = srtp_crypto_kernel_status(); + if (status) { + printf("failed\n"); + exit(1); + } + printf("srtp_crypto_kernel passed self-tests\n"); + } + + status = srtp_crypto_kernel_shutdown(); + if (status) { + printf("error: srtp_crypto_kernel shutdown failed\n"); + exit(1); + } + printf("srtp_crypto_kernel successfully shut down\n"); + + return 0; +} diff --git a/src/libs/libsrtp/crypto/test/meson.build b/src/libs/libsrtp/crypto/test/meson.build new file mode 100644 index 00000000..3528e288 --- /dev/null +++ b/src/libs/libsrtp/crypto/test/meson.build @@ -0,0 +1,41 @@ +# crypto test suite + +test_apps = [ + 'cipher_driver', + 'datatypes_driver', + 'kernel_driver', + 'env', +] + +if not use_openssl and not use_wolfssl and not use_nss and not use_mbedtls + test_apps += ['sha1_driver'] +endif + +foreach test_name : test_apps + test_exe = executable(test_name, + '@0@.c'.format(test_name), '../../test/getopt_s.c', '../../test/util.c', + include_directories: [config_incs, crypto_incs, srtp3_incs, test_incs], + dependencies: [srtp3_deps, syslibs], + link_with: libsrtp3_for_tests) + test(test_name, test_exe, args: ['-v']) +endforeach + +if not use_openssl and not use_wolfssl and not use_nss and not use_mbedtls + test_exe = executable('aes_calc', + 'aes_calc.c', '../../test/getopt_s.c', '../../test/util.c', + include_directories: [config_incs, crypto_incs, srtp3_incs, test_incs], + dependencies: [srtp3_deps, syslibs], + link_with: libsrtp3_for_tests) + + # data values used to test the aes_calc application for AES-128 + k128 = '000102030405060708090a0b0c0d0e0f' + p128 = '00112233445566778899aabbccddeeff' + c128 = '69c4e0d86a7b0430d8cdb78070b4c55a' + test('aes_calc_128', test_exe, args: [k128, p128, c128]) + + # data values used to test the aes_calc application for AES-256 + k256 = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f' + p256 = '00112233445566778899aabbccddeeff' + c256 = '8ea2b7ca516745bfeafc49904b496089' + test('aes_calc_256', test_exe, args: [k256, p256, c256]) +endif diff --git a/src/libs/libsrtp/crypto/test/sha1_driver.c b/src/libs/libsrtp/crypto/test/sha1_driver.c new file mode 100644 index 00000000..858bedc8 --- /dev/null +++ b/src/libs/libsrtp/crypto/test/sha1_driver.c @@ -0,0 +1,424 @@ +/* + * sha1_driver.c + * + * a test driver for SHA-1 + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "sha1.h" +#include "util.h" + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#define SHA_PASS 0 +#define SHA_FAIL 1 + +#define MAX_HASH_DATA_LEN 1024 +#define MAX_HASH_OUT_LEN 20 + +typedef struct hash_test_case_t { + size_t data_len; /* number of octets in data */ + size_t hash_len; /* number of octets output by hash */ + uint8_t data[MAX_HASH_DATA_LEN]; /* message data */ + uint8_t hash[MAX_HASH_OUT_LEN]; /* expected hash output */ + struct hash_test_case_t *next_test_case; +} hash_test_case_t; + +hash_test_case_t *sha1_test_case_list; + +srtp_err_status_t hash_test_case_add(hash_test_case_t **list_ptr, + char *hex_data, + size_t data_len, + char *hex_hash, + size_t hash_len) +{ + hash_test_case_t *list_head = *list_ptr; + hash_test_case_t *test_case; + size_t tmp_len; + + test_case = malloc(sizeof(hash_test_case_t)); + if (test_case == NULL) { + return srtp_err_status_alloc_fail; + } + + tmp_len = + hex_string_to_octet_string(test_case->data, hex_data, data_len * 2); + if (tmp_len != data_len * 2) { + free(test_case); + return srtp_err_status_parse_err; + } + + tmp_len = + hex_string_to_octet_string(test_case->hash, hex_hash, hash_len * 2); + if (tmp_len != hash_len * 2) { + free(test_case); + return srtp_err_status_parse_err; + } + + test_case->data_len = data_len; + test_case->hash_len = hash_len; + + /* add the new test case to the head of the list */ + test_case->next_test_case = list_head; + *list_ptr = test_case; + + return srtp_err_status_ok; +} + +srtp_err_status_t sha1_test_case_validate(const hash_test_case_t *test_case) +{ + srtp_sha1_ctx_t ctx; + uint32_t hash_value[5]; + + if (test_case == NULL) { + return srtp_err_status_bad_param; + } + + if (test_case->hash_len != 20) { + return srtp_err_status_bad_param; + } + if (test_case->data_len > MAX_HASH_DATA_LEN) { + return srtp_err_status_bad_param; + } + + srtp_sha1_init(&ctx); + srtp_sha1_update(&ctx, test_case->data, test_case->data_len); + srtp_sha1_final(&ctx, hash_value); + if (0 == memcmp(test_case->hash, hash_value, 20)) { +#if VERBOSE + printf("PASSED: reference value: %s\n", + octet_string_hex_string((const uint8_t *)test_case->hash, 20)); + printf("PASSED: computed value: %s\n", + octet_string_hex_string((const uint8_t *)hash_value, 20)); +#endif + return srtp_err_status_ok; + } + + printf("reference value: %s\n", + octet_string_hex_string((const uint8_t *)test_case->hash, 20)); + printf("computed value: %s\n", + octet_string_hex_string((const uint8_t *)hash_value, 20)); + + return srtp_err_status_algo_fail; +} + +struct hex_sha1_test_case_t { + size_t bit_len; + char hex_data[MAX_HASH_DATA_LEN * 2]; + char hex_hash[40 + 1]; +}; + +srtp_err_status_t sha1_add_test_cases(void) +{ + srtp_err_status_t err; + + /* + * these test cases are taken from the "SHA-1 Sample Vectors" + * provided by NIST at http://csrc.nist.gov/cryptval/shs.html + */ + + struct hex_sha1_test_case_t tc[] = { + { 0, "", "da39a3ee5e6b4b0d3255bfef95601890afd80709" }, + { 8, "a8", "99f2aa95e36f95c2acb0eaf23998f030638f3f15" }, + { 16, "3000", "f944dcd635f9801f7ac90a407fbc479964dec024" }, + { 24, "42749e", "a444319e9b6cc1e8464c511ec0969c37d6bb2619" }, + { 32, "9fc3fe08", "16a0ff84fcc156fd5d3ca3a744f20a232d172253" }, + { 40, "b5c1c6f1af", "fec9deebfcdedaf66dda525e1be43597a73a1f93" }, + { 48, "e47571e5022e", "8ce051181f0ed5e9d0c498f6bc4caf448d20deb5" }, + { 56, "3e1b28839fb758", "67da53837d89e03bf652ef09c369a3415937cfd3" }, + { 64, "a81350cbb224cb90", "305e4ff9888ad855a78573cddf4c5640cce7e946" }, + { 72, "c243d167923dec3ce1", + "5902b77b3265f023f9bbc396ba1a93fa3509bde7" }, + { 80, "50ac18c59d6a37a29bf4", + "fcade5f5d156bf6f9af97bdfa9c19bccfb4ff6ab" }, + { 88, "98e2b611ad3b1cccf634f6", + "1d20fbe00533c10e3cbd6b27088a5de0c632c4b5" }, + { 96, "73fe9afb68e1e8712e5d4eec", + "7e1b7e0f7a8f3455a9c03e9580fd63ae205a2d93" }, + { 104, "9e701ed7d412a9226a2a130e66", + "706f0677146307b20bb0e8d6311e329966884d13" }, + { 112, "6d3ee90413b0a7cbf69e5e6144ca", + "a7241a703aaf0d53fe142f86bf2e849251fa8dff" }, + { 120, "fae24d56514efcb530fd4802f5e71f", + "400f53546916d33ad01a5e6df66822dfbdc4e9e6" }, + { 128, "c5a22dd6eda3fe2bdc4ddb3ce6b35fd1", + "fac8ab93c1ae6c16f0311872b984f729dc928ccd" }, + { 136, "d98cded2adabf08fda356445c781802d95", + "fba6d750c18da58f6e2aab10112b9a5ef3301b3b" }, + { 144, "bcc6d7087a84f00103ccb32e5f5487a751a2", + "29d27c2d44c205c8107f0351b05753ac708226b6" }, + { 152, "36ecacb1055434190dbbc556c48bafcb0feb0d", + "b971bfc1ebd6f359e8d74cb7ecfe7f898d0ba845" }, + { 160, "5ff9edb69e8f6bbd498eb4537580b7fba7ad31d0", + "96d08c430094b9fcc164ad2fb6f72d0a24268f68" }, + { 168, "c95b441d8270822a46a798fae5defcf7b26abace36", + "a287ea752a593d5209e287881a09c49fa3f0beb1" }, + { 176, "83104c1d8a55b28f906f1b72cb53f68cbb097b44f860", + "a06c713779cbd88519ed4a585ac0cb8a5e9d612b" }, + { 184, "755175528d55c39c56493d697b790f099a5ce741f7754b", + "bff7d52c13a3688132a1d407b1ab40f5b5ace298" }, + { 192, "088fc38128bbdb9fd7d65228b3184b3faac6c8715f07272f", + "c7566b91d7b6f56bdfcaa9781a7b6841aacb17e9" }, + { 200, "a4a586eb9245a6c87e3adf1009ac8a49f46c07e14185016895", + "ffa30c0b5c550ea4b1e34f8a60ec9295a1e06ac1" }, + { 208, "8e7c555270c006092c2a3189e2a526b873e2e269f0fb28245256", + "29e66ed23e914351e872aa761df6e4f1a07f4b81" }, + { 216, "a5f3bfa6bb0ba3b59f6b9cbdef8a558ec565e8aa3121f405e7f2f0", + "b28cf5e5b806a01491d41f69bd9248765c5dc292" }, + { 224, "589054f0d2bd3c2c85b466bfd8ce18e6ec3e0b87d944cd093ba36469", + "60224fb72c46069652cd78bcd08029ef64da62f3" }, + { 232, "a0abb12083b5bbc78128601bf1cbdbc0fdf4b862b24d899953d8da0ff3", + "b72c4a86f72608f24c05f3b9088ef92fba431df7" }, + { 240, "82143f4cea6fadbf998e128a8811dc75301cf1db4f079501ea568da68eeb", + "73779ad5d6b71b9b8328ef7220ff12eb167076ac" }, + { 248, "9f1231dd6df1ff7bc0b0d4f989d048672683ce35d956d2f57913046267e6f3", + "a09671d4452d7cf50015c914a1e31973d20cc1a0" }, + { 256, + "041c512b5eed791f80d3282f3a28df263bb1df95e1239a7650e5670fc2187919", + "e88cdcd233d99184a6fd260b8fca1b7f7687aee0" }, + { 264, + "17e81f6ae8c2e5579d69dafa6e070e7111461552d314b691e7a3e7a4feb3fae418", + "010def22850deb1168d525e8c84c28116cb8a269" }, + { 272, + "d15976b23a1d712ad28fad04d805f572026b54dd64961fda94d5355a0cc9862" + "0cf77", + "aeaa40ba1717ed5439b1e6ea901b294ba500f9ad" }, + { 280, + "09fce4d434f6bd32a44e04b848ff50ec9f642a8a85b37a264dc73f130f22838" + "443328f", + "c6433791238795e34f080a5f1f1723f065463ca0" }, + { 288, + "f17af27d776ec82a257d8d46d2b46b639462c56984cc1be9c1222eadb8b2659" + "4a25c709d", + "e21e22b89c1bb944a32932e6b2a2f20d491982c3" }, + { 296, + "b13ce635d6f8758143ffb114f2f601cb20b6276951416a2f94fbf4ad081779d" + "79f4f195b22", + "575323a9661f5d28387964d2ba6ab92c17d05a8a" }, + { 304, + "5498793f60916ff1c918dde572cdea76da8629ba4ead6d065de3dfb48de94d2" + "34cc1c5002910", + "feb44494af72f245bfe68e86c4d7986d57c11db7" }, + { 312, + "498a1e0b39fa49582ae688cd715c86fbaf8a81b8b11b4d1594c49c902d197c8" + "ba8a621fd6e3be5", + "cff2290b3648ba2831b98dde436a72f9ebf51eee" }, + { 320, + "3a36ae71521f9af628b3e34dcb0d4513f84c78ee49f10416a98857150b8b15c" + "b5c83afb4b570376e", + "9b4efe9d27b965905b0c3dab67b8d7c9ebacd56c" }, + { 328, + "dcc76b40ae0ea3ba253e92ac50fcde791662c5b6c948538cffc2d95e9de99ca" + "c34dfca38910db2678f", + "afedb0ff156205bcd831cbdbda43db8b0588c113" }, + { 336, + "5b5ec6ec4fd3ad9c4906f65c747fd4233c11a1736b6b228b92e90cddabb0c7c" + "2fcf9716d3fad261dff33", + "8deb1e858f88293a5e5e4d521a34b2a4efa70fc4" }, + { 344, + "df48a37b29b1d6de4e94717d60cdb4293fcf170bba388bddf7a9035a15d433f" + "20fd697c3e4c8b8c5f590ab", + "95cbdac0f74afa69cebd0e5c7defbc6faf0cbeaf" }, + { 352, + "1f179b3b82250a65e1b0aee949e218e2f45c7a8dbfd6ba08de05c55acfc226b" + "48c68d7f7057e5675cd96fcfc", + "f0307bcb92842e5ae0cd4f4f14f3df7f877fbef2" }, + { 360, + "ee3d72da3a44d971578972a8e6780ce64941267e0f7d0179b214fa97855e179" + "0e888e09fbe3a70412176cb3b54", + "7b13bb0dbf14964bd63b133ac85e22100542ef55" }, + { 368, + "d4d4c7843d312b30f610b3682254c8be96d5f6684503f8fbfbcd15774fc1b08" + "4d3741afb8d24aaa8ab9c104f7258", + "c314d2b6cf439be678d2a74e890d96cfac1c02ed" }, + { 376, + "32c094944f5936a190a0877fb9178a7bf60ceae36fd530671c5b38c5dbd5e6a" + "6c0d615c2ac8ad04b213cc589541cf6", + "4d0be361e410b47a9d67d8ce0bb6a8e01c53c078" }, + { 384, + "e5d3180c14bf27a5409fa12b104a8fd7e9639609bfde6ee82bbf9648be2546d" + "29688a65e2e3f3da47a45ac14343c9c02", + "e5353431ffae097f675cbf498869f6fbb6e1c9f2" }, + { 392, + "e7b6e4b69f724327e41e1188a37f4fe38b1dba19cbf5a7311d6e32f1038e97a" + "b506ee05aebebc1eed09fc0e357109818b9", + "b8720a7068a085c018ab18961de2765aa6cd9ac4" }, + { 400, + "bc880cb83b8ac68ef2fedc2da95e7677ce2aa18b0e2d8b322701f67af7d5e7a" + "0d96e9e33326ccb7747cfff0852b961bfd475", + "b0732181568543ba85f2b6da602b4b065d9931aa" }, + { 408, + "235ea9c2ba7af25400f2e98a47a291b0bccdaad63faa2475721fda5510cc7da" + "d814bce8dabb611790a6abe56030b798b75c944", + "9c22674cf3222c3ba921672694aafee4ce67b96b" }, + { 416, + "07e3e29fed63104b8410f323b975fd9fba53f636af8c4e68a53fb202ca35dd9" + "ee07cb169ec5186292e44c27e5696a967f5e67709", + "d128335f4cecca9066cdae08958ce656ff0b4cfc" }, + { 424, + "65d2a1dd60a517eb27bfbf530cf6a5458f9d5f4730058bd9814379547f34241" + "822bf67e6335a6d8b5ed06abf8841884c636a25733f", + "0b67c57ac578de88a2ae055caeaec8bb9b0085a0" }, + { 432, + "dcc86b3bd461615bab739d8daafac231c0f462e819ad29f9f14058f3ab5b759" + "41d4241ea2f17ebb8a458831b37a9b16dead4a76a9b0e", + "c766f912a89d4ccda88e0cce6a713ef5f178b596" }, + { 440, + "4627d54f0568dc126b62a8c35fb46a9ac5024400f2995e51635636e1afc4373" + "dbb848eb32df23914230560b82477e9c3572647a7f2bb92", + "9aa3925a9dcb177b15ccff9b78e70cf344858779" }, + { 448, + "ba531affd4381168ef24d8b275a84d9254c7f5cc55fded53aa8024b2c5c5c8a" + "a7146fe1d1b83d62b70467e9a2e2cb67b3361830adbab28d7", + "4811fa30042fc076acf37c8e2274d025307e5943" }, + { 456, + "8764dcbcf89dcf4282eb644e3d568bdccb4b13508bfa7bfe0ffc05efd1390be" + "22109969262992d377691eb4f77f3d59ea8466a74abf57b2ef4", + "6743018450c9730761ee2b130df9b91c1e118150" }, + { 464, + "497d9df9ddb554f3d17870b1a31986c1be277bc44feff713544217a9f579623" + "d18b5ffae306c25a45521d2759a72c0459b58957255ab592f3be4", + "71ad4a19d37d92a5e6ef3694ddbeb5aa61ada645" }, + { 472, + "72c3c2e065aefa8d9f7a65229e818176eef05da83f835107ba90ec2e95472e7" + "3e538f783b416c04654ba8909f26a12db6e5c4e376b7615e4a25819", + "a7d9dc68dacefb7d6116186048cb355cc548e11d" }, + { 480, + "7cc9894454d0055ab5069a33984e2f712bef7e3124960d33559f5f3b81906bb" + "66fe64da13c153ca7f5cabc89667314c32c01036d12ecaf5f9a78de98", + "142e429f0522ba5abf5131fa81df82d355b96909" }, + { 488, + "74e8404d5a453c5f4d306f2cfa338ca65501c840ddab3fb82117933483afd69" + "13c56aaf8a0a0a6b2a342fc3d9dc7599f4a850dfa15d06c61966d74ea59", + "ef72db70dcbcab991e9637976c6faf00d22caae9" }, + { 496, + "46fe5ed326c8fe376fcc92dc9e2714e2240d3253b105adfbb256ff7a19bc409" + "75c604ad7c0071c4fd78a7cb64786e1bece548fa4833c04065fe593f6fb10", + "f220a7457f4588d639dc21407c942e9843f8e26b" }, + { 504, + "836dfa2524d621cf07c3d2908835de859e549d35030433c796b81272fd8bc03" + "48e8ddbc7705a5ad1fdf2155b6bc48884ac0cd376925f069a37849c089c864" + "5", + "ddd2117b6e309c233ede85f962a0c2fc215e5c69" }, + { 512, + "7e3a4c325cb9c52b88387f93d01ae86d42098f5efa7f9457388b5e74b6d28b2" + "438d42d8b64703324d4aa25ab6aad153ae30cd2b2af4d5e5c00a8a2d0220c61" + "16", + "a3054427cdb13f164a610b348702724c808a0dcc" } + }; + + for (size_t i = 0; i < 65; i++) { + err = hash_test_case_add(&sha1_test_case_list, tc[i].hex_data, + tc[i].bit_len / 8, tc[i].hex_hash, 20); + if (err) { + printf("error adding hash test case (code %d)\n", err); + return err; + } + } + + return srtp_err_status_ok; +} + +srtp_err_status_t sha1_dealloc_test_cases(void) +{ + hash_test_case_t *t, *next; + + for (t = sha1_test_case_list; t != NULL; t = next) { + next = t->next_test_case; + free(t); + } + + sha1_test_case_list = NULL; + + return srtp_err_status_ok; +} + +srtp_err_status_t sha1_validate(void) +{ + hash_test_case_t *test_case; + srtp_err_status_t err; + + err = sha1_add_test_cases(); + if (err) { + printf("error adding SHA1 test cases (error code %d)\n", err); + return err; + } + + if (sha1_test_case_list == NULL) { + return srtp_err_status_cant_check; + } + + test_case = sha1_test_case_list; + while (test_case != NULL) { + err = sha1_test_case_validate(test_case); + if (err) { + printf("error validating hash test case (error code %d)\n", err); + return err; + } + test_case = test_case->next_test_case; + } + + sha1_dealloc_test_cases(); + + return srtp_err_status_ok; +} + +int main(void) +{ + srtp_err_status_t err; + + printf("sha1 test driver\n"); + + err = sha1_validate(); + if (err) { + printf("SHA1 did not pass validation testing\n"); + return 1; + } + printf("SHA1 passed validation tests\n"); + + return 0; +} diff --git a/src/libs/libsrtp/doc/Doxyfile.in b/src/libs/libsrtp/doc/Doxyfile.in new file mode 100644 index 00000000..69c6ef68 --- /dev/null +++ b/src/libs/libsrtp/doc/Doxyfile.in @@ -0,0 +1,2412 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = libSRTP + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = @LIBSRTPVERSIONNUMBER@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if <section_label> ... \endif and \cond <section_label> +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = ../README.md \ + ../include/srtp.h \ + ../crypto/include/auth.h \ + ../crypto/include/cipher.h \ + ../crypto/include/crypto_types.h \ + ../crypto/include/err.h \ + crypto_kernel.txt + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# <filter> <input-file> +# +# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = README.md + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = docs.css + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use <access key> + S +# (what the <access key> is depends on the OS and browser, but it is typically +# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down +# key> to jump into the search results window, the results can be navigated +# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> +# to select a filter and <Enter> or <escape> to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. There +# are two flavors of web server based searching depending on the EXTERNAL_SEARCH +# setting. When disabled, doxygen will generate a PHP script for searching and +# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing +# and searching needs to be provided by external tools. See the section +# "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Searching" for details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# Note that when enabling USE_PDFLATEX this option is only used for generating +# bitmaps for formulas in the HTML output, but not in the Makefile that is +# written to the output directory. +# The default file is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used by the +# printer. +# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = letter + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the +# generated LaTeX document. The header should contain everything until the first +# chapter. If it is left blank doxygen will generate a standard header. See +# section "Doxygen usage" for information on how to let doxygen write the +# default header to a separate file. +# +# Note: Only use a user-defined header if you know what you are doing! The +# following commands have a special meaning inside the header: $title, +# $datetime, $date, $doxygenversion, $projectname, $projectnumber, +# $projectbrief, $projectlogo. Doxygen will replace $title with the empty +# string, for the replacement values of the other commands the user is referred +# to HTML_HEADER. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the +# generated LaTeX document. The footer should contain everything after the last +# chapter. If it is left blank doxygen will generate a standard footer. See +# LATEX_HEADER for more information on how to generate a default footer and what +# special commands can be used inside the footer. +# +# Note: Only use a user-defined footer if you know what you are doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_STYLESHEET = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will +# contain links (just like the HTML output) instead of page references. This +# makes the output suitable for online browsing using a PDF viewer. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate +# the PDF file directly from the LaTeX files. Set this option to YES, to get a +# higher quality PDF documentation. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode +# command to the generated LaTeX files. This will instruct LaTeX to keep running +# if errors occur, instead of asking the user for help. This option is also used +# when generating formulas in HTML. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source +# code with syntax highlighting in the LaTeX output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. See +# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# RTF output is optimized for Word 97 and may not look too pretty with other RTF +# readers/editors. +# The default value is: NO. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will +# contain hyperlink fields. The RTF file will contain links (just like the HTML +# output) instead of page references. This makes the output suitable for online +# browsing using Word or some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's config +# file, i.e. a series of assignments. You only have to provide replacements, +# missing definitions are set to their default value. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's config file. A template extensions file can be generated +# using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code +# with syntax highlighting in the RTF output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# The MAN_SUBDIR tag determines the name of the directory created within +# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +# MAN_EXTENSION with the initial . removed. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_SUBDIR = + +# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# will generate one additional man file for each entity documented in the real +# man page(s). These additional files only source the real man page, but without +# them the man command would be unable to find the correct page. +# The default value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# captures the structure of the code including all documentation. +# The default value is: NO. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# listings (including syntax highlighting and cross-referencing information) to +# the XML output. Note that enabling this will significantly increase the size +# of the XML output. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the +# program listings (including syntax highlighting and cross-referencing +# information) to the DOCBOOK output. Note that enabling this will significantly +# increase the size of the DOCBOOK output. +# The default value is: NO. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_PROGRAMLISTING = NO + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://autogen.sf.net) file that captures the +# structure of the code including all documentation. Note that this feature is +# still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# file that captures the structure of the code including all documentation. +# +# Note that this feature is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI +# output from the Perl module output. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely +# formatted so it can be parsed by a human reader. This is useful if you want to +# understand what is going on. On the other hand, if this tag is set to NO, the +# size of the Perl module output will be much smaller and Perl will parse it +# just the same. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file are +# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful +# so different doxyrules.make files included by the same Makefile don't +# overwrite each other's variables. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# in the source code. If set to NO, only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then +# the macro expansion is limited to the macros specified with the PREDEFINED and +# EXPAND_AS_DEFINED tags. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES, the include files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by the +# preprocessor. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will be +# used. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that are +# defined before the preprocessor is started (similar to the -D option of e.g. +# gcc). The argument of the tag is a list of macros of the form: name or +# name=definition (no spaces). If the definition and the "=" are omitted, "=1" +# is assumed. To prevent a macro definition from being undefined via #undef or +# recursively expanded use the := operator instead of the = operator. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this +# tag can be used to specify a list of macro names that should be expanded. The +# macro definition that is found in the sources will be used. Use the PREDEFINED +# tag if you want to use a different macro definition that overrules the +# definition found in the source code. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# remove all references to function-like macros that are alone on a line, have +# an all uppercase name, and do not end with a semicolon. Such function macros +# are typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. For each tag +# file the location of the external documentation should be added. The format of +# a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where loc1 and loc2 can be relative or absolute paths or URLs. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: Each tag file must have a unique name (where the name does NOT include +# the path). If a tag file is not located in the directory in which doxygen is +# run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# tag file that is based on the input files it reads. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. +# The default value is: NO. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will be +# listed. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of 'which perl'). +# The default file (with absolute path) is: /usr/bin/perl. + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram +# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to +# NO turns the diagrams off. Note that this option also works with HAVE_DOT +# disabled, but it is recommended to install and use dot, since it yields more +# powerful graphs. +# The default value is: YES. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see: +# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_PATH = + +# If set to YES the inheritance and collaboration graphs will hide inheritance +# and usage relations if the target is undocumented or is not a class. +# The default value is: YES. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz (see: +# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# Bell Labs. The other options in this section have no effect if this option is +# set to NO +# The default value is: NO. + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 doxygen will base this on the number of +# processors available in the system. You can set it explicitly to a value +# larger than 0 to get control over the balance between CPU load and processing +# speed. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# When you want a differently looking font in the dot files that doxygen +# generates you can specify the font name using DOT_FONTNAME. You need to make +# sure dot is able to find the font, which can be done by putting it in a +# standard location or by setting the DOTFONTPATH environment variable or by +# setting DOT_FONTPATH to the directory containing the font. +# The default value is: Helvetica. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of +# dot graphs. +# Minimum value: 4, maximum value: 24, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the default font as specified with +# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set +# the path where dot can find it using this tag. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for +# each documented class showing the direct and indirect inheritance relations. +# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = YES + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file. If left blank, it is assumed +# PlantUML is not used or called during a preprocessing step. Doxygen will +# generate a warning when it encounters a \startuml command in this case and +# will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not seem +# to support this out of the box. +# +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# files that are used to generate the various graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_CLEANUP = YES diff --git a/src/libs/libsrtp/doc/Makefile.in b/src/libs/libsrtp/doc/Makefile.in new file mode 100644 index 00000000..4b1ee9f1 --- /dev/null +++ b/src/libs/libsrtp/doc/Makefile.in @@ -0,0 +1,32 @@ +# Makefile for libSRTP documentation +# +# David A. McGrew +# Cisco Systems, Inc. +# +# This makefile does not use the autoconf system; we don't really need +# it. We just run doxygen. +# The most up to date documentation can be found at www.github.com/cisco/libsrtp + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @top_builddir@ +VPATH = @srcdir@ + +# Determine the version of the library + +version = @PACKAGE_VERSION@ + +.PHONY: libsrtpdoc clean +libsrtpdoc: + @if test ! -e Doxyfile.in; then \ + echo "*** Sorry, can't build doc outside source dir"; exit 1; \ + fi + sed 's/@LIBSRTPVERSIONNUMBER@/$(version)/' Doxyfile.in > Doxyfile + doxygen + +clean: + + rm -rf html/ Doxyfile + for a in * ; do \ + if [ -f "$$a~" ] ; then rm -f $$a~; fi; \ + done; diff --git a/src/libs/libsrtp/doc/crypto_kernel.txt b/src/libs/libsrtp/doc/crypto_kernel.txt new file mode 100644 index 00000000..19e3fc12 --- /dev/null +++ b/src/libs/libsrtp/doc/crypto_kernel.txt @@ -0,0 +1,74 @@ +/** + +@defgroup CryptoKernel Cryptographic Kernel + +All of the cryptographic functions are contained in a kernel. + +*/ + +/** + +@defgroup CipherImplementations Ciphers +@ingroup CryptoKernel + +@brief A generic cipher type enables cipher agility, that is, the +ability to write code that runs with multiple cipher types. +Ciphers can be used through the crypto kernel, or can be accessed +directly, if need be. + +@{ + +*/ + +/** + * @brief Allocates a cipher of a particular type. + * @warning May be implemented as a macro. + */ +srtp_err_status_t srtp_cipher_type_alloc(const srtp_cipher_type_t *ct, + srtp_cipher_t **c, + size_t key_len, + size_t tlen); + +/** + * @brief Initialized a cipher to use a particular key. May + * be invoked more than once on the same cipher. + * @warning May be implemented as a macro. + */ +srtp_err_status_t srtp_cipher_init(srtp_cipher_t *c, const uint8_t *key); + +/** + * @brief Sets the initialization vector of a given cipher. + * @warning May be implemented as a macro. + */ +srtp_err_status_t srtp_cipher_set_iv(srtp_cipher_t *c, + uint8_t *iv, + srtp_cipher_direction_t direction); + +/** + * @brief Encrypts a buffer with a given cipher. + * @warning May be implemented as a macro. + */ +srtp_err_status_t srtp_cipher_encrypt(srtp_cipher_t *c, + uint8_t *buffer, + size_t *num_octets_to_output); + +/** + * @brief Sets a buffer to the keystream generated by the cipher. + * @warning May be implemented as a macro. + */ +srtp_err_status_t srtp_cipher_output(srtp_cipher_t *c, + uint8_t *buffer, + size_t *num_octets_to_output); + +/** + * @brief Deallocates a cipher. + * @warning May be implemented as a macro. + */ +srtp_err_status_t srtp_cipher_dealloc(srtp_cipher_t *c); + + +/** + * @} + */ + + */ diff --git a/src/libs/libsrtp/doc/docs.css b/src/libs/libsrtp/doc/docs.css new file mode 100644 index 00000000..03611162 --- /dev/null +++ b/src/libs/libsrtp/doc/docs.css @@ -0,0 +1,1479 @@ +/* The standard CSS for doxygen 1.8.11 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +body { + max-width: 800px; + margin: 0 auto; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + + +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} + + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/src/libs/libsrtp/doc/meson.build b/src/libs/libsrtp/doc/meson.build new file mode 100644 index 00000000..f1bcf18a --- /dev/null +++ b/src/libs/libsrtp/doc/meson.build @@ -0,0 +1,22 @@ +# libSRTP documentation + +doxygen = find_program('doxygen', required: get_option('doc')) + +if not doxygen.found() + subdir_done() +endif + +doc_config = configuration_data() +doc_config.set('LIBSRTPVERSIONNUMBER', meson.project_version()) + +doxyfile = configure_file(input: 'Doxyfile.in', + output: 'Doxyfile', + configuration: doc_config) + +# can be built on demand with ninja -C builddir doc/html +doxygen_html_docs = custom_target('doc', + build_by_default: false, + command: [doxygen, doxyfile], + output: ['html']) + +alias_target('libsrtp3doc', doxygen_html_docs) diff --git a/src/libs/libsrtp/format.sh b/src/libs/libsrtp/format.sh new file mode 100755 index 00000000..5e85dfce --- /dev/null +++ b/src/libs/libsrtp/format.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# +# format.sh +# +# run clang-format on each .c & .h file +# +# assumes git tree is clean when reporting status + +if [ -z "${CLANG_FORMAT}" ]; then + CLANG_FORMAT=clang-format-14 +fi + +a=`git ls-files '*.h' '*.c'` +for x in $a; do + if [ $x != "config_in.h" ]; then + $CLANG_FORMAT -i -style=file $x + fi +done + +m=`git ls-files -m` +if [ -n "$m" ]; then + v=`$CLANG_FORMAT -version` + echo "Formatting required when checking with $v" + echo + echo "The following files required formatting:" + for f in $m; do + echo $f + done + if [ "$1" = "-d" ]; then + echo + git diff + fi + exit 1 +fi +exit 0 diff --git a/src/libs/libsrtp/fuzzer/Makefile.in b/src/libs/libsrtp/fuzzer/Makefile.in new file mode 100644 index 00000000..964f25f3 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/Makefile.in @@ -0,0 +1,34 @@ +# Makefile for libSRTP fuzzer + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @top_builddir@ +VPATH = @srcdir@ + +CC = @CC@ +CXX = @CXX@ +INCDIR = -Iinclude -I$(srcdir)/include -I$(top_srcdir)/include -I$(top_srcdir)/crypto/include/ +DEFS = @DEFS@ +CPPFLAGS= @CPPFLAGS@ -g +CXXFLAGS= @CXXFLAGS@ -g +CFLAGS = @CFLAGS@ -g +LIBS = @LIBS@ +COMPILE = $(CC) $(DEFS) $(INCDIR) $(CPPFLAGS) $(CFLAGS) +COMPILECXX = $(CXX) $(DEFS) $(INCDIR) $(CPPFLAGS) $(CXXFLAGS) +CRYPTOLIB = -lsrtp3 + +.PHONY: clean + +all : srtp-fuzzer + +mt19937.o: mt19937.cpp + $(COMPILECXX) -c -std=c++11 mt19937.cpp -o mt19937.o +fuzzer.o: fuzzer.c fuzzer.h testmem.h + $(COMPILE) fuzzer.c -c -o fuzzer.o +testmem.o: testmem.c + $(COMPILE) -O0 testmem.c -c -o testmem.o +srtp-fuzzer: fuzzer.o mt19937.o testmem.o + $(COMPILECXX) -L. -L.. fuzzer.o mt19937.o testmem.o $(LIBFUZZER) $(CRYPTOLIB) $(LIBS) -o srtp-fuzzer + +clean: + rm -rf srtp-fuzzer *.o diff --git a/src/libs/libsrtp/fuzzer/README.md b/src/libs/libsrtp/fuzzer/README.md new file mode 100644 index 00000000..eee95797 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/README.md @@ -0,0 +1,88 @@ +# libsrt fuzzer + +By Guido Vranken <guidovranken@gmail.com> -- https://guidovranken.wordpress.com/ + +This is an advanced fuzzer for libSRTP (https://github.com/cisco/libsrtp). It implements several special techniques, described below, that are not often found in fuzzers or elsewhere. All are encouraged to transpose these ideas to their own fuzzers for the betterment of software security. + +Feel free to contact me for business enquiries. + +## Building + +From the repository's root directory: + +```sh +CC=clang CXX=clang++ CXXFLAGS="-fsanitize=fuzzer-no-link,address,undefined -g -O3" CFLAGS="-fsanitize=fuzzer-no-link,address,undefined -g -O3" LDFLAGS="-fsanitize=fuzzer-no-link,address,undefined" ./configure +LIBFUZZER="-fsanitize=fuzzer" make srtp-fuzzer +``` + +## Features + +### Portable PRNG + +```mt19937.c``` exports the C++11 Mersenne Twister implementaton. Hence, a modern C++ compiler is required to compile this file. + +This approach has the following advantages: + +- rand() is fickle -- its behavior eg. the sequence of numbers that it generates for a given seed, may differ across systems and libc's. +- C++11 mt19937 is portable, meaning that its behavior will be consistent across platforms. This is important to keep the fuzzing corpus portable. +- No need to implement a portable PRNG ourselves, or risk license incompatability by importing it from other projects. + +### Size 0 allocations + +To test whether allocations of size 0 eg. ```malloc(0)``` are ever dereferenced and written to, the custom allocater will return an intentionally invalid pointer pointer address for these requests. + +For more information, see the comments in ```fuzz_alloc()```. + +### Random allocation failures + +The custom allocator will periodically return ```NULL``` for heap requests. This tests the library's resilience and correct operation in the event of global memory shortages. + +The interval of ```NULL``` return values is deterministic as it relies on the PRNG, so for a given fuzzer input (that encodes the PRNG seed as well), behavior of that input with regards to allocator behaviour is consistent, allowing for reliable reproduction of bugs. + +### Detecting inadequate pointer arithmetic + +This feature is only available on 32 bit builds. + +Unless the ```--no_mmap``` flag is given, the fuzzer will use a special allocation technique for some of the allocation requests. It will use ```mmap()``` to reserve memory at the extremities of the virtual address space -- sometimes at 0x00010000 and sometimes at 0xFFFF0000. This approach can assist in detecting invalid or inadequate pointer arithmetic. For example, consider the following code: + +```c +if ( start + n < end ) { + memset(start, 0, n); +} +``` + +where ```start``` and ```end``` demarcate a memory region, and ```n``` is some positive integer. +If ```n``` is a sufficiently large value, a pointer addition overflow will occur, leading to a page fault. By routinely placing allocations at the high virtual address ```0xFFFF0000```, the chances of detecting this bug are increased. So let's say ```start``` was previously allocated at ```0xFFFF0000```, and ```end``` is ```0xFFFF1000```, and ```n``` is 0xFFFFF. Then the expression effectively becomes: + +```c +if ( 0xFFFF0000 + 0x000FFFFF < 0xFFFF1000 ) { + memset(0xFFFF0000, 0, 0x000FFFF); +} +``` + +The addition ```0xFFFF0000 + 0x000FFFFF``` overflows so the result is ```0x000EFFFF```. Hence: + +```c +if ( 0x000EFFFF < 0xFFFF1000 ) { // Expression resolves as true ! +``` + +The subsequent ```memset``` is executed contrary to the programmer's intentions, and a segmentation fault will occur. + +While this is a corner case, it can not be ruled out that it might occur in a production environment. What's more, the analyst examining the crash can reason about how the value of ```n``` comes about in the first place, and concoct a crafted input that leads to a very high ```n``` value, making the "exploit" succeed even with average virtual addresses. + +Aside from using ```mmap``` to allocate at address ```0xFFFF0000```, the fuzzer will also place allocations at the low virtual address ```0x00010000``` to detect invalid pointer arithmetic involving subtraction: + +```c +if ( end - n > start ) { +``` + +### Output memory testing + +```testmem.c``` exports ```fuzz_testmem```. All this function does is copy the input buffer to a newly allocated heap region, and then free that heap region. If AddressSanitizer is enabled, this ensures that the input buffer to ```fuzz_testmem``` is a legal memory region. +If MemorySanitizer is enabled, then ``fuzz_testmem``` calls ```fuzz_testmem_msan````. The latter function writes the data at hand to ```/dev/null```. This is an nice trick to make MemorySanitizer evaluate this data, and crash if it contains uninitialized bytes. +This function has been implemented in a separate file for a reason: from the perspective of an optimizing compiler, this is a meaningless operation, and as such it might be optimized away. Hence, this file must be compiled without optimizations (```-O0``` flag). + +## Contributing + +When extending the current fuzzer, use variable types whose width is consistent across systems where possible. This is necessary to retain corpus portability. For example, use ```uint64_t``` rather than ```unsigned long```. + diff --git a/src/libs/libsrtp/fuzzer/corpus/002478e8528b7057018106308a03382f9c60dd62 b/src/libs/libsrtp/fuzzer/corpus/002478e8528b7057018106308a03382f9c60dd62 new file mode 100644 index 0000000000000000000000000000000000000000..75e7f8758ad4ca48c335bb58d1747ee44d3d8755 GIT binary patch literal 142 zcmZQ*U@$1DXJB9`%H&7~(LnIu(Hg>FVBln6kY!+GV5lwz$z>LCq+(SAQZPpdtZ5ER rYr8Oz#R1aHz#zl04@5CBFcg5yREq_2jQ;=s&sdb2$pJG_mVp5PlNc0@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/003573bfa48939dd1c2b3e875f1906b082662ea7 b/src/libs/libsrtp/fuzzer/corpus/003573bfa48939dd1c2b3e875f1906b082662ea7 new file mode 100644 index 0000000000000000000000000000000000000000..4eade05e80140ca3e8258d9ba66ad51fc231aab4 GIT binary patch literal 298 zcmZXOF$%&^5JYE<h-Dz1O**j%0c-IHxq%RyfN3l=-EZ|IR%tzf2e7vi1#e(!Gw$Cc z1aY?c%+7y1dAdcFV=nK4Q3(^t3~&yR?h%*~Kw=C+^*0(!hv<{UnYV*};gd5>s01vH zvQ)~<a53)T)Rul1Y5M<Edjh@|WEY|E*$lLSgBvrGrXN38U$DBqBvz7_E*edc0*@bj c-=WQP9e~rqtgt%DC<)x&Fp0X}uTj_J7lzkSLjV8( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0063584d99e559d95f7574303efaaa7d66aa1043 b/src/libs/libsrtp/fuzzer/corpus/0063584d99e559d95f7574303efaaa7d66aa1043 new file mode 100644 index 0000000000000000000000000000000000000000..cbc8e40c7070b1077cdd9c16597fafb79085b306 GIT binary patch literal 394 zcma!LWMBwjVBEl1l$yy=&j1Gh|Nr-8V63iYWZ?b-7T5;?5LvwB|9>FqhT=Iw4B-%k za~O^T8FLugg&8=25DXN6B&wQrkP?KN|3LK&4FCUwRi6Ws*vtV*pqc}<O9){XrW!Q6 d7>IK-#GI732!ElOLxP);f(K+QLlF>H0|1+?KKK9t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0068209ec44b5bcc76df5fd390bee3451a931f75 b/src/libs/libsrtp/fuzzer/corpus/0068209ec44b5bcc76df5fd390bee3451a931f75 new file mode 100644 index 0000000000000000000000000000000000000000..4d03e32d46203461c40a9e5731225865bd0e2fe4 GIT binary patch literal 135 zcmZQzh<8T@3=At77>eVo>luw17#J#zbpA3NJ62uKz|6=9<TEf-gNb5BAfuWQC?!*z z8qfIu|NrXh#|aD!CJe=?44Luq)r?wO|NjRmWnd7k=g`${XJAlEt$tZ;1`z|2Ks^uz J)j-4k0|0PlB@F-o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/00aba68e0b49a70a5d9bd4ee363eacf106519586 b/src/libs/libsrtp/fuzzer/corpus/00aba68e0b49a70a5d9bd4ee363eacf106519586 new file mode 100644 index 0000000000000000000000000000000000000000..b3bdad124af9f5e1c65edc14294b4789020442dd GIT binary patch literal 35 kcmXR;WsHw!_`@JjoXVp1zlx<e-k_e50SZJJ3>efH0H}or5C8xG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/00f65461899db1e20bcfbc27a9f6a0c2e563a70f b/src/libs/libsrtp/fuzzer/corpus/00f65461899db1e20bcfbc27a9f6a0c2e563a70f new file mode 100644 index 0000000000000000000000000000000000000000..04b8a797e7eaa74963c835ad85ffdc963b2e5611 GIT binary patch literal 364 zcma!NU|{fw2NFe@9I5p{8VLUX|L@DdP+iTyzzF1}#+M~p<&?U{7jQCg$by905Q;jG z6y=nrBGfbhRWryk#H;5ql*Il2#gJLVk(v)NkYNr(JJ19mDGV|QY-Dxu93ch<4n_th zU9jN@`_Y{Ov<2=Es3nXH0t`POhB|_D1Ho^Rcs-!as2=<OpC4f^SXs3y381)|k)fCo i6fOpRKoFOb3i5_J*dPW5Ybeda0QNXAn9%%GT?_ym3PPp; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/01093511ce21ba2143348f1eb6cdc390b9d900ce b/src/libs/libsrtp/fuzzer/corpus/01093511ce21ba2143348f1eb6cdc390b9d900ce new file mode 100644 index 0000000000000000000000000000000000000000..191e57f01e6fbec01dfe6cc23477bb7ced6db02b GIT binary patch literal 108 zcma!-U|^7pXJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n1$QVqoB8 pV2}kWVW{>fo+HFy%)pS7nirp(pI1_p@4&#o1XLu&-~<9tJpf#?6HWjC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0191a956146c2b6eea8b009efb0f16589d44a856 b/src/libs/libsrtp/fuzzer/corpus/0191a956146c2b6eea8b009efb0f16589d44a856 new file mode 100644 index 0000000000000000000000000000000000000000..5e3fd654173a0b64e542c31ec5487dcb9823d839 GIT binary patch literal 106 zcmdl#@h{iQm(>gm4Bylpq<|C<C@@Sa22$0GKmv%Xiy0ZJfhs^u7zt#+5k#B;qy;3% Uu>UED1u}-A7{sr(0x7Kq0BREw$p8QV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/01980dea5a010187f31ea505fdf1b3f7e3e2c559 b/src/libs/libsrtp/fuzzer/corpus/01980dea5a010187f31ea505fdf1b3f7e3e2c559 new file mode 100644 index 0000000000000000000000000000000000000000..053cc6c81f91e795b5d3a7458f3001d09e3162f2 GIT binary patch literal 781 zcmbtSO-lk%6g^Ln)P+cbi^7Pc4<SPkX<>naZH(Hq4hazwq{7kFgK81frl6%ToBqTs zjed@QU<wjn=RSu-+Y}v`cjvyj_nv#_T$q|MbpV}Kq<KS27-Np``fOrDJ)}D}<t2L` zTJzy(K+&tnsT~Df?hCg2{RZBEZv6t->9ihRSZvRxmF&s1=mOF(AJBPs(cUHR0XG7b zre~r-m^GE_Y5+Cm$A*tazz<ccGEyDbu%33lOCFzei|xzCS-V**u*ZTg)d@R;jvzE~ zaZ9T)&0{M_Yz_Q(C~}-il*(BS{NS*$7|c~8NBqBdijVpG1+$f;of$gn<EK)04D=D` zgH@5vAj+{t9;F><&La4nm`9BEohH>IMhM3s(hFAR^_NV~^A7oV9s_pm%k;>3q)@UB z;dS|u!P+42W{}Am+lh4Zd$7cxCR}EMT|sO0rWm3$F+ddO&Gr>nPNAo>E=@?*&P_;w P9Uh`~B+oBNUMc+r0SV4! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/01b951775bc6cd4f54461597e65b84e44c292402 b/src/libs/libsrtp/fuzzer/corpus/01b951775bc6cd4f54461597e65b84e44c292402 new file mode 100644 index 0000000000000000000000000000000000000000..f5e2342562444dc1bd5b4bf222bda14c2652ae25 GIT binary patch literal 1556 zcmd5+yH3L}6g>`+NH(AoLluOI5JHU@*x(l`#1~}h&;f?Rge91u3!l)9kKk)~d<GH% zb8qa#4@g6yNZcr~uXAM|pL6UY$HjR8U_45OSJYA{r3QeMfY1YwXF|U;#sx<>(0}?! zQ%quP{yvKQ6pTcShpIEu(_184HKYvd`e&>g``xzP1@t~a5DtWBg;oeF`gKK`p{#(} z$s1Ha&;kHDQv{Q{snxO#K7_b0WsgMw-?Kz8O>as#VkGnkEI(87VtgZa$uzPOg$?sg zda4BImd2{t5{Qt27`?t#OY)>No!-LSo}fkisFwFf+p@=o0;~9qIUoTWt)5^8C{}^X zzx9OA^)YQ|Cf~f_yTiD<M(sw_nE)j0l(T)9jAb5>E_nLxanD^N+WtJMY9$QsjTrYl vjBxP%11l5i25NoSOf5Y>h_4APPvs6RZm$5oJ0D&dP~~L0&}(1t8Rqx^)Z^lr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/01cf3f39acd95472695e7a92b27b69e7cf1aff88 b/src/libs/libsrtp/fuzzer/corpus/01cf3f39acd95472695e7a92b27b69e7cf1aff88 new file mode 100644 index 0000000000000000000000000000000000000000..c53202d117a418cee08adb1ea8ef48d84bd30eda GIT binary patch literal 114 zcma#o%VUs?XJB9`s_aOu2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(X5DxjF-b4M@m< tq2VQ1ij#rC1jvwOVEDsO&B(yuQ#?lqXj&%Rw0wJzIx!$lW&j$g1^_1{6l(wg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02137ddc6d4c8a03cce587f0f295f8a14dc0e960 b/src/libs/libsrtp/fuzzer/corpus/02137ddc6d4c8a03cce587f0f295f8a14dc0e960 new file mode 100644 index 0000000000000000000000000000000000000000..1449439f49148f058f77c68c630da8e1644adf1e GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkonS h31)IKFvv0#&k<ty_y7OD@BiQD=am%YLlwa&MgWVC7OnsQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0225aedaaba06224630e8c7b641f9f987d38c29d b/src/libs/libsrtp/fuzzer/corpus/0225aedaaba06224630e8c7b641f9f987d38c29d new file mode 100644 index 0000000000000000000000000000000000000000..80899db78ed485c7f982ba738061be0fe6e82bcb GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu>$#t5Mq7(k5F__D;D($x3@P6h^9kVr%E93h5qh>|%B Z6M&344DG@|iUTJ0|9d-75QtGgH2}|U5e@(V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02274d492863405f178860185520e380b9253dd1 b/src/libs/libsrtp/fuzzer/corpus/02274d492863405f178860185520e380b9253dd1 new file mode 100644 index 0000000000000000000000000000000000000000..814227c1a2f9bb03dee32f88f64747e0c7b59125 GIT binary patch literal 265 zcmazqEl!P(XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YjHh&)FjU|{G`W2i1>1e&Z4 zG7QYOWN2V`2{N6Nfk75%A5g&@A)~yURFD`$k^)m6LrFYC5eo-HY6$~_AHyYb00V;n LBOaX~oBjg;aL$a4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02329129eb1b3647fcc65b670413e36fa6ffacd9 b/src/libs/libsrtp/fuzzer/corpus/02329129eb1b3647fcc65b670413e36fa6ffacd9 new file mode 100644 index 0000000000000000000000000000000000000000..58bb2a5fd313f0986d9aafac5d3902fa079f3890 GIT binary patch literal 70 zcmbREUzzLW%W4KN@P|+e5DG{pR5zTQ#=xK&4`f#tGeR&(aWz9b17kHqJQM5x|D{^R E00EH?fB*mh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0242c184029780608bd52c49883a188f333b90f5 b/src/libs/libsrtp/fuzzer/corpus/0242c184029780608bd52c49883a188f333b90f5 new file mode 100644 index 0000000000000000000000000000000000000000..f2e4e5425046c745fcc0a8ef2500ee5f09ade1a1 GIT binary patch literal 211 zcma#o%VQ{sXJSAG|NsB@Rb{TOW?*0h3a7@GCFYcJGH}R(5KyF{fRlj%%wk}e!_W>? z0wjfj6bHzVNgx8G38)ARfI5m&IWp_PYB(5xhBFBOC5|%`fs_(s4#*W?fXf_^0w$n^ L9J2fWGcW=GGu9)S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/029c1bc38ee3a6a9e6d1cf95b421f06e868a8cc0 b/src/libs/libsrtp/fuzzer/corpus/029c1bc38ee3a6a9e6d1cf95b421f06e868a8cc0 new file mode 100644 index 0000000000000000000000000000000000000000..abd3c5fdd5089fea6b9422dc8b8be8c0af581fc5 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tI2kx(K_U%676X{Y zz%YlQ9jF9I3Iizy4j^v(1|;f18bJo>_=4!7)J%?gkeVk99G`)r|2-IhHh^RhY8V&* DFJ>N- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02bed7d1b482d7b62be531eed715763b0872d6a5 b/src/libs/libsrtp/fuzzer/corpus/02bed7d1b482d7b62be531eed715763b0872d6a5 new file mode 100644 index 0000000000000000000000000000000000000000..d1920d82e647ab8c79c2455fec700cca4a11daf1 GIT binary patch literal 174 zcma!NWB>#4qD+p|dI<af|Np)W4As>P4Dot-3^nmUQIM<}x-5jxkeE}NS|H28z!}c~ zG_13LlYv1N$Z}-(F^8cYs0K(1GaO^!04Z<#1|&e%<fay-r^YAe=am%Y=ftPwWTpx; WFfnjcF#s)hWW0qA1Q>ci4gvtM7Bh4J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02c705f93c1f075b5e473909f35b652a1fe5bf80 b/src/libs/libsrtp/fuzzer/corpus/02c705f93c1f075b5e473909f35b652a1fe5bf80 new file mode 100644 index 0000000000000000000000000000000000000000..9f03502c70d855b9b7fba3428c10f972f426e255 GIT binary patch literal 93 zcmcE4W2h>LXJB9`%H&9`2hu?B|M!1i28JAc1_nlm07G>#BSW<VBLibK0|O8-1~6Dd eWONxg85r7G80K&={9|JH&+z~Me<r9Nph^Hk;1O&9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02e43835c3874d724b186b0d024add681b1f9219 b/src/libs/libsrtp/fuzzer/corpus/02e43835c3874d724b186b0d024add681b1f9219 new file mode 100644 index 0000000000000000000000000000000000000000..6763e20945e503687dc221c359f3b284bcbb6fa3 GIT binary patch literal 171 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI ulndlc#L#yMC<&B^2I+v>_zz~I8qkJfuskC(1A_uk3D7za?G6F#U<v?Wu^qes literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/02fb62ce864b7637f14818c411348cae30392a9e b/src/libs/libsrtp/fuzzer/corpus/02fb62ce864b7637f14818c411348cae30392a9e new file mode 100644 index 0000000000000000000000000000000000000000..01b6c8bd625e826e65b0cfe956f1a881ac5947ce GIT binary patch literal 221 zcmZXOF$%&^3_zcXn!gFof-a73?s@<hFHju*P>@m-msYTwmuOGr4LpPj4l)0$gP0*C z;pHXCEaRBKIz{}H7@FydMOj+YkAuzj;FJ8R_bV-^at9-;20UucMpz!wMFKp(b>I}& zP&JWtf+yV>qZEiL%N}p1LxO2sx%}(Y8api)Tl@h7_jfyvK3|C8O#^LnPxfjrzW`h5 BG_C*u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/030481afcfe047f8584391dc64b9307273590b6f b/src/libs/libsrtp/fuzzer/corpus/030481afcfe047f8584391dc64b9307273590b6f new file mode 100644 index 0000000000000000000000000000000000000000..abf8334c6865c5ae25b2b53b76cb712c7062caea GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_s9eKfof@#cB-I#f(5PbugcS!IFXD uC78*{z#z-O2vlA?M~K0gfgvX~FFrr7q$uBkfeEPK6VR~#|BD$#{{sN?Z5uKG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/031e311800ff4e60382f18f854418870fd4aef13 b/src/libs/libsrtp/fuzzer/corpus/031e311800ff4e60382f18f854418870fd4aef13 new file mode 100644 index 0000000000000000000000000000000000000000..e705b6eb12689db50adf08fea060f4b065a035e5 GIT binary patch literal 164 zcmdl#@jutgm(>gm4FCTBl>$;gp!AKQxOzE+&B(x@Sj@;!?JyGvZh{CH0O|osDu9$# n16BO{?;yoc2NZz=HJ~vJ3`UF%GiO58BB{Vs3)cr{z)S-Gpq3$^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0320551674956cf13d9827f99490b0339d59e672 b/src/libs/libsrtp/fuzzer/corpus/0320551674956cf13d9827f99490b0339d59e672 new file mode 100644 index 0000000000000000000000000000000000000000..56c04231443fbd57baddff44199f945a58a58c87 GIT binary patch literal 103 zcma#o%VUs?XRu)?%4B1Jg8%>j`!X<8S2Hj$GAMw>s*BYas*4$cV(L&e<_rukLCiW% k1_oJ%;yFSL#taNOsd@3q`FSNp`3_)ZOj00<g&~;%0PG+VAOHXW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0339be7ee6c0a259d62bd533cc6bc1d94612d5ae b/src/libs/libsrtp/fuzzer/corpus/0339be7ee6c0a259d62bd533cc6bc1d94612d5ae new file mode 100644 index 0000000000000000000000000000000000000000..3a137d5303ec3edcd03e11f5d02e18a5e54cac11 GIT binary patch literal 532 zcmah_Jxjwt7=988rdzR4P!TeS4$`9FCPEg+6pD+BoK+$OGDwqJ@P>3y@*4`B{Q(YH z`&axEI;eO)?_CORKHR-uckgr0d#fHCwi<s4e3)q4Wg(C=8hJF_I`@u^IfT|OUE3Lt z)=REQv)p;U@ZWpAr++AIg9kOZL!sC?NrR*m3PR5;u`wogl%hmHDQ@cnSHLO#x5RCD zyW(}e+_b7C5k%bzSO%mRT6tC{Y$MP?)JC*eXdRnB^mZ^_^blGOJ-4pUS5URch94hn z0H#NYdKhO@Y8_sk%S()iYdH*FsU>6}684tO6fM$jys`Qz3}md&>V7ScWlEPpg@MLb zNv$HuVMp9eDwf<a=KSaSr54=#QYA?P4_!&+r-)TvjEk^fG`SsT$%)iBb*>)achvqQ LNrMtqm$Rr}on>y$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/034276781b173338c670d819af0ab4321d6aa50d b/src/libs/libsrtp/fuzzer/corpus/034276781b173338c670d819af0ab4321d6aa50d new file mode 100644 index 0000000000000000000000000000000000000000..6ca109c948bd1ce965c2b335d6d8dbccc20a8818 GIT binary patch literal 442 zcmdnb7{K-NWi<l>!?%A9QViTc1`x;<D=;urGXhzR4DKL->S7><p{HO5P!=u%VFSr% zBtf7ovKk;4q7g1mq<S<%;M#!<2m%@#4P%2u7#XU8)Nim5vK?p!(a0OfHiBG(BNUJw M17Q=d5#&V<0J@4lbpQYW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/03454e15dbc51d7de1126d1dfbaba101b483309c b/src/libs/libsrtp/fuzzer/corpus/03454e15dbc51d7de1126d1dfbaba101b483309c new file mode 100644 index 0000000000000000000000000000000000000000..5d7e3304e30ba7d6de95a24ce1a8e3b3bb29d586 GIT binary patch literal 225 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43``6Rgj5KCwCe%Yp%?%+Lz;mJ ztfIAqjk&s*k%55?Y~5mOFeLyK0E24ne?ZICfozBbkip5oAj<%fXZ#Oz2*?ni75{-0 U1A`8__LU4PfuIsB`S1UK0C+1dH2?qr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0385a3ffe2e5c799e479400669be2c29d6276531 b/src/libs/libsrtp/fuzzer/corpus/0385a3ffe2e5c799e479400669be2c29d6276531 new file mode 100644 index 0000000000000000000000000000000000000000..09b6af774217094ceb531ec7f695c0b899d65754 GIT binary patch literal 69 zcmbREe?QmDm(>i&KmpE4sBSnpje#LE9w<^>%m~3C#nlY$42;zb@k|W=|Cg2m01{6R A<NyEw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/039d62fcc18ecd8a91e8ba631c179911a8db340e b/src/libs/libsrtp/fuzzer/corpus/039d62fcc18ecd8a91e8ba631c179911a8db340e new file mode 100644 index 0000000000000000000000000000000000000000..ac1c2afdb5c0137f8f574eabf8eca88835a71195 GIT binary patch literal 108 zcma#o%VQ{EU=Z_UC}N0bfPnx1|NAm9R97=FFfu5Bg{q4g8H#}d)r{%_5H%(|5SoFL mfkBp`c#aT*3?ozoNC~$yFw9W_GB{J?%Mx=+;|sVL81w+a!Vs1K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/03b310f8e1c16c57e8f263c3d20448a9c0a1d00e b/src/libs/libsrtp/fuzzer/corpus/03b310f8e1c16c57e8f263c3d20448a9c0a1d00e new file mode 100644 index 0000000000000000000000000000000000000000..4030139164cd5569b4458ce2233420379ac4baea GIT binary patch literal 164 zcmZQ%V5lx;WNWQvWZ(>tVgQ4O{~3yb44@DLgF6u0g4HloS2HjGg&-tIA<N2@EB(X5 z{{R24-N?XTz{v3Oe>D@se8%GVYQNwTvz+|o#GF*q?=3A1D_2&xfOIM_sQUwzBLk2@ L3|MW1>1hW5$k{TJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/03b7bc0ef864657df7756e2f38fc9c108f4edfa0 b/src/libs/libsrtp/fuzzer/corpus/03b7bc0ef864657df7756e2f38fc9c108f4edfa0 new file mode 100644 index 0000000000000000000000000000000000000000..deb391d2e47bf1b6acb1940a90c84815be8d4f73 GIT binary patch literal 160 zcmY$M_@C?L%W4J&hJXJZq<|C<D1Bonu3ipe$sqs(10w^2Vlg8_wZlvxxC!JbfRt1N xg}_?tfFf|91~h_!!HBV8=1ic*Y6XY{KDAnm4PYy@{SC5#s!ak*7#NBe7yv*EA6)<d literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/04dfe903049df3eb0701a4785f5617a7a2d4735c b/src/libs/libsrtp/fuzzer/corpus/04dfe903049df3eb0701a4785f5617a7a2d4735c new file mode 100644 index 0000000000000000000000000000000000000000..7e3cf24c8760ba49cef1109c3be7f21a800a9e67 GIT binary patch literal 46 mcmexd%@FvK;bnC-0}xb0Krthj1EfI0a~K#DfKp6APB8#p!3^L4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/04e6dd5a888667bc225e7d9eac4e58b65045b42b b/src/libs/libsrtp/fuzzer/corpus/04e6dd5a888667bc225e7d9eac4e58b65045b42b new file mode 100644 index 0000000000000000000000000000000000000000..65b7e4d80849acfe791127b5283766c39b3b44c7 GIT binary patch literal 378 zcmZ{gF-rqM5QV=z3|Xv#sZ@kOK+wW~T39Ni67m}kAy)`u;TZ`Gm~^Qu?DJRDzhWD( zzC;VhnT?1BoMPVW<L!I1n+G__ft$-%j0~+*KN4n%k>lw`IyNU6{W)O=9x`WA^Wp5i z`(1%gJ>7B+b}LE&3n0`8=UpF2!hw`OrZA<!b2TR(nf9RC_REl5Bra1LFg8xipk)Y~ zt2;kwzJGnY%BuEY@uwueb5f)X$i>y5FgJCbs!ji_*{00`hHs{H{kzr;P|Bj{d+6cs d?;G`adDQjU%%1NbVttL+iMD<Hl|2K?`vR+VU{(MC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0500cd32ae315af1bf538eecd4572cc74ab94905 b/src/libs/libsrtp/fuzzer/corpus/0500cd32ae315af1bf538eecd4572cc74ab94905 new file mode 100644 index 0000000000000000000000000000000000000000..637ef511780e2bc6710290feee8515c8f69b9c49 GIT binary patch literal 161 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j&int=nP00gRw j*+AM&8R~!>kU1=1VXWqWWk7@)&=v-UiU09|>VFIX@D@K+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/050e91306cebc8f11b032eb9e9d662e862e92a3c b/src/libs/libsrtp/fuzzer/corpus/050e91306cebc8f11b032eb9e9d662e862e92a3c new file mode 100644 index 0000000000000000000000000000000000000000..33203de1d5a77ec16280e9f3016dc8b58e5e5ac6 GIT binary patch literal 108 zcmdl#;Xl{Qm(>gm4FCQ+FfuRzS%yGPF(X6uG$73Y5(066;&54z8WavlA$GtBR96f# H9b_5+nimhQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/051781418c3b4c91c3e84fe1c262d2a7e5aedf1b b/src/libs/libsrtp/fuzzer/corpus/051781418c3b4c91c3e84fe1c262d2a7e5aedf1b new file mode 100644 index 0000000000000000000000000000000000000000..339158899655027c49f2cdaba76df8ea114cf6b7 GIT binary patch literal 54 zcmXS}27+Qn1|X<zVPxQnH^>GFq{dfg#xpSfudZfbn8U#F0t|lr-{120|9@kK{{Rd4 B7&ZU^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/051df98d56e1664ca2179b51485bcb49728cd3be b/src/libs/libsrtp/fuzzer/corpus/051df98d56e1664ca2179b51485bcb49728cd3be new file mode 100644 index 0000000000000000000000000000000000000000..3fb485b8cb607414bf481b581708ad6609947796 GIT binary patch literal 139 zcma#o%VQ{sXJB9`ngk>u;Q#;sz6{LO)eH=bK!Mcwvc#Oy)c68U1`b(}NCS|?0A?{T z%wcE;DglzhK#BvTz3m&2sE>x|1qlE_Q7T7fJy;C~Llpzicn<~!Jw^tQ4Pa0VWE3y} E06$L|Z~y=R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/051f2e54bc804cc50fe9c2262e9d5ec67061ae65 b/src/libs/libsrtp/fuzzer/corpus/051f2e54bc804cc50fe9c2262e9d5ec67061ae65 new file mode 100644 index 0000000000000000000000000000000000000000..de9c4b422b4198ff522e4fba108b5886e6aea9f2 GIT binary patch literal 105 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcMG05OnVtOmq_KrwZQ5(WbXhL>O_ qCj)~lL-8D524e<>oYcJd<O8L}sqtlrr8%kb1x5L3nK>LFb=3fQMHgBC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05539d721692acd0db015698981d31b923485a3d b/src/libs/libsrtp/fuzzer/corpus/05539d721692acd0db015698981d31b923485a3d new file mode 100644 index 0000000000000000000000000000000000000000..71ce4043c4dc887df6c0ad6123330311d7936fb7 GIT binary patch literal 148 zcma#o%VVgCXJB9`%H&8@1JXe7|NnnC28QZtMh1qTKrTC2FfpezHNJq8fkT!7DBb{M zF@RVC3<7f)+JP#7q%e@;04Z+!1|;f1EU;m|Ai5|ulcOG_W{wb$r@$Z#)TF||zyh)j N2!ICt04W0k4gjG?9{d0R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/055a309f795cc0d18fa936a70dc3fbdb20f16a0a b/src/libs/libsrtp/fuzzer/corpus/055a309f795cc0d18fa936a70dc3fbdb20f16a0a new file mode 100644 index 0000000000000000000000000000000000000000..56fdb437277322026bee527226d1537de47599de GIT binary patch literal 314 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zb$<`7!j_P7Yh(ZR2#nxb! z08F4-n-Qo{9V!ix1adeT7-ShhY8e09LQRGm2($|X5+D>R$?y_t4vYfY_8Q0r+6Ht6 YGcIQU4Z-IVhyf5IaX8nA2<KJ<0GnY;V*mgE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/056fe9accc18d702f74947a041dfa3528595a28e b/src/libs/libsrtp/fuzzer/corpus/056fe9accc18d702f74947a041dfa3528595a28e new file mode 100644 index 0000000000000000000000000000000000000000..1cec1b7320cf6aecb2d9801693911ad7d1f1314d GIT binary patch literal 114 zcma#o%VQ{sXJBARO8qaK38aDG|NsBK3=GxT3=E85Ml}P&MMjWBbul9ZSF3}#Dh$>j q3Jf?I7-Sh38A`2-=Li7>{wpvDw=*!z0W!H696%=i{|`38wHg4ct{DUX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/058d2ffb707aa9a256f8a27b482c351dc59d9562 b/src/libs/libsrtp/fuzzer/corpus/058d2ffb707aa9a256f8a27b482c351dc59d9562 new file mode 100644 index 0000000000000000000000000000000000000000..453dbda45a44c8f212cbefd8e4f917c5fad1794f GIT binary patch literal 72 zcmZ2k#{dJ442%$FHKU|<9fVz+YLLoU4H8Dk{r=DJ_j^k*Sb(v*x;pSB!^{5wWMdAZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0592773c7693fcb746fcccae36e018c816d72548 b/src/libs/libsrtp/fuzzer/corpus/0592773c7693fcb746fcccae36e018c816d72548 new file mode 100644 index 0000000000000000000000000000000000000000..d427efc38e7fbfc9f213e3fb68c5077acf0ac60c GIT binary patch literal 347 zcmaJ-u?_)26r3eEDnTWYD1-)uXs@NZ_yEOKifcsB@QQ25{e(oV_e07pe1XWCw<J_1 zyPMs4Z)PXY0J1T~qW}g?c-$N|yolj3<qmxh#P{HR&dGgOJX~VCPJ&g=8^BHod$-oo zb*w%gltZ*g@y}DuQ}yh!>x)taHKg7(kO#dM>09HRizr}`<p`AzYsmkDJWG&+Mr@-u zqeuqy_)(mHpq{48RI#K%CU~S&YD$gX$-10JOgCn@CJs{7qGod9hvXmZ)qXz}w+BWq D!*puo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0593930c933a73b0ae747d1c57f3e8ce1990d66c b/src/libs/libsrtp/fuzzer/corpus/0593930c933a73b0ae747d1c57f3e8ce1990d66c new file mode 100644 index 0000000000000000000000000000000000000000..c6f026d7666206cb0bc3592485066d1f049847ae GIT binary patch literal 199 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb k5F5iV2Do7pNj3~@{8NwvK&<_0dJGCs<A4Hi)7lvr0Huy0Z2$lO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/059c4168c4567d8ddace90563ae3d4faad8c5aad b/src/libs/libsrtp/fuzzer/corpus/059c4168c4567d8ddace90563ae3d4faad8c5aad new file mode 100644 index 0000000000000000000000000000000000000000..0eeb076f3a7e1535fcca889b7212947d052f7192 GIT binary patch literal 138 zcmZQzDAt34Y7i(^WMGhBC}w1+2IF{x%%tjShWONa#{W<dAD`M?&$ya_fzg(M;r~<y s1_q#lI7T3y9bX(@T^|8tMKk>W0i?j-FDl3Ya_=I9?Eb_u0C@}y0Gg3M!2kdN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05a53ea6556822ee0ba50cf11477cdc82bca042b b/src/libs/libsrtp/fuzzer/corpus/05a53ea6556822ee0ba50cf11477cdc82bca042b new file mode 100644 index 0000000000000000000000000000000000000000..79bf46ec6be982677a7339b7e1601446064265ca GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDgYw V6d^F*pq+u?8i-ZL1d|8R@c^_24!8gS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05ac2b295f457e6d82af70e03197058e243330a5 b/src/libs/libsrtp/fuzzer/corpus/05ac2b295f457e6d82af70e03197058e243330a5 new file mode 100644 index 0000000000000000000000000000000000000000..75c240f3573520799aae1928b8f62eda179fcb59 GIT binary patch literal 72 zcmWgiU|<knU|^77D2}hL=V)iptN+iy@Vlk@?{}am2zcpKGcYg#8MO?z81%tHKtfNC SA)Zn4_kV`J-&>0H^z;Bimk~4o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05ba6eed3aaf1e11881f108e363705ea6684b5ee b/src/libs/libsrtp/fuzzer/corpus/05ba6eed3aaf1e11881f108e363705ea6684b5ee new file mode 100644 index 0000000000000000000000000000000000000000..934d399b47b3a52f5f198d9c19b3b1f01bc017a7 GIT binary patch literal 106 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc k7&sXiWEp_UDop1HfyIQ|ffNTr1H&8+1|}f0!T=%x01#>rT>t<8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05de42787114bd230c00bc28974c2e0abc5276cd b/src/libs/libsrtp/fuzzer/corpus/05de42787114bd230c00bc28974c2e0abc5276cd new file mode 100644 index 0000000000000000000000000000000000000000..12f6d3f4aa51ba28269b1b2d795c269880eee9f9 GIT binary patch literal 156 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kKfTS>x;s9cXwr@b<Kf|{<a~NXbW~XLy)I-%&fsFS+7!T5;SPZp`AwDG) LXy6=>AOi;gbX6cF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05e4184169408bddef4e3ed9395b25b3307c0dc4 b/src/libs/libsrtp/fuzzer/corpus/05e4184169408bddef4e3ed9395b25b3307c0dc4 new file mode 100644 index 0000000000000000000000000000000000000000..2d101808115ccf3bbe62ddc01f0de0388dbf3bc1 GIT binary patch literal 167 zcmZQzU@$1DXHZ~ZU}S)S|Blu$CMN@fEJJni93hav9GECW<(vOM88{$Zu##&aHWOT) pK^Vvc%L8SRB!DJ=|NsBncc7s_>tN;r4aRODgStIX<v)gM1_0^N7`Ffb literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/05fd25c9e7186a048e4b048316725d7d8e2957f2 b/src/libs/libsrtp/fuzzer/corpus/05fd25c9e7186a048e4b048316725d7d8e2957f2 new file mode 100644 index 0000000000000000000000000000000000000000..1da61c81a2e7e4d249ddd40cdc92e48d4d09e1d1 GIT binary patch literal 2210 zcmd5-%}Z2K6#u<ZaV!GSMWOhWVIM<-ML{Ix>;gf`T_E<D#ft_%n&yoL-e__mE^?#L z!f@xZy#y^}pnsyBEoaqEgT&kKoO|Ci8B~G`kIuXI-SfNW>;BGtwi`}Lg>*FJrq<eV z<c#54tFGi{=A*FKhI9`C;0<SxSv$UOVw8wYtaPFUY1|U{jXi=Yx)EY32MnhXp->{q zVv)E*#66g(p=LzlV0fDFo90m)cdB>U%{e7BVLyl95ZO7DLrx{q*BmLtegp$;4*HO4 z*Okr!iYZm%oE!8x4#6Q{W+=<VZMd{aZL{S2OTA31Cod~?pA4Hps?bfNX9kf87|3O( z#fTr_3-06BM36!sPXNoSw#m%8S`ohW$@X+`>`!&lBhyoG9|p8K3XX&G-tLxj(C&9< zU<UrfePU7zzV1yXk&4M?o^YDf*%iBXUu)TEGkm!#87?ImX1PLm6;*}!Q)^-p^|(Ya z$YX9nwW`Q0ZQe^*pd?F?Q$+dQ!0dea+0+5Blw_RhKtKPq9=%DN-4dEspM;7E>55QT z$!RU}04X2S)mRiR<Y#2peDt+gdM?yQoK3{hcL2BmqDf@_!r?;5qK8o>kmyCiFnU`F zJ^+J>`#O<*pTNGOirb#hDW=0XG?m8*__r~@l>!X0<g$|IC0XGRu`%}k!Bhe_@4X^j zEJaVFQfh8B21{o*tm|I_*|}^ncGe3jP+I3BkV*h+cJxfGMn@DLfl9wVHBBnKSD&^J zN7X&J>P)_($r9MC6<zn`uAh@EF62G6wM<$7HLF$s^Ufjavuxvd`rGETcYqYqOG7<z zZH$sA{x$NdN}Z70Hu0ujT+*mYhrd4lcAWxpqq$osK<h5EU{mj`Sx@Lgo8!{)q|3oC z?jcU7zYh#Z$LBUEU*wU9B8K*OD>&gNE(%Ry(%Lv<Fk#K2wKb~P3qSZ_G;AR;w3CI8 zaPKhJg|lvRZ_Lq1vjun{OAY<!LYb7?Ao+KFNO+?TfwcGWg=X&P#c;HX+3VX!<Xgl0 p^=*l^TO3NX($oH{#zTDwejP@VVBDw81<PC3vjD;Z-sJgm^b;^i67B#1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/063561babc7dd125c0199ce988b2d9e3ecf5b166 b/src/libs/libsrtp/fuzzer/corpus/063561babc7dd125c0199ce988b2d9e3ecf5b166 new file mode 100644 index 0000000000000000000000000000000000000000..b092c7114696c137b4be147d6b5bbf5d395b1504 GIT binary patch literal 82 zcmdl#@jutgm(>gmiVO@6QVd|Az`#%p6yan9@_?AJx|pFF#D~Z-R2MTs@Nb}i7f28& K2|@J?mDK=~)efrw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/065e940fa5cec8b3198461acf8f5284ec45f588b b/src/libs/libsrtp/fuzzer/corpus/065e940fa5cec8b3198461acf8f5284ec45f588b new file mode 100644 index 0000000000000000000000000000000000000000..d7b92e29db881e592f5085e5808094e2f21ca3ff GIT binary patch literal 101 zcmcE4W2h>LXJB9`%H&9`2hu?B|M!1i28JAc1_nlm07G>#BSW<VBLibK0|O8-1~6Dd mWONxg85r7G80K&={9|JH&+z~Me<r9N1{DT|*w|PguNnZ;S`w!K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/06766094522762e8f4c17953a7a437e5ff0ce2f5 b/src/libs/libsrtp/fuzzer/corpus/06766094522762e8f4c17953a7a437e5ff0ce2f5 new file mode 100644 index 0000000000000000000000000000000000000000..37c67a2fae3dc22d82590c458b017e542249f355 GIT binary patch literal 196 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDgYw j9I~}CGL%*q&k+I}C(JMhOmi@BfM^9Uhk*gFB+#J%AFvpu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/067cc48411aaea493a14052eb1974ca2b3477846 b/src/libs/libsrtp/fuzzer/corpus/067cc48411aaea493a14052eb1974ca2b3477846 new file mode 100644 index 0000000000000000000000000000000000000000..497cddd105cf9c2a18e1e3d303f09d33070fa662 GIT binary patch literal 217 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VNd}gxeVyROSGg zEDRhB9IXEt*dG8n|NjFCAgI=61gckua2TwiGy^9CgDe9hkcVs_lK@D%wdX%`buLKG z0K{Dk(IdbZ&j2zCW}rcJG2DKj+du$pKf^`__6I-?(8)k2l-LRby~0qG$q`=-0LHT@ AGynhq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/069e356aeb44c3384ac22309d6601d75337ce2d0 b/src/libs/libsrtp/fuzzer/corpus/069e356aeb44c3384ac22309d6601d75337ce2d0 new file mode 100644 index 0000000000000000000000000000000000000000..8fba9cb050a247b1eb9a014846343adb570c55c9 GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc1_nlm07G>#BSW<VkXH>x|NR-P8^BV! m44e!M?JNv)I2ishG5iOKl@_PQmnG(u0!{IY{lmb}SPcLf@fdah literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/06a8e02d0a2fa29cee49b44b1ae9a4c3fb4e2405 b/src/libs/libsrtp/fuzzer/corpus/06a8e02d0a2fa29cee49b44b1ae9a4c3fb4e2405 new file mode 100644 index 0000000000000000000000000000000000000000..a03eaceb754a50fdbf2441c3fbdb054554e8f74d GIT binary patch literal 577 zcmb_Zy9&ZU5S*asDF~vqU}Ys@ZDVW%1-~I!qzH(Jk0uec3zq5q7r)2ON~~OG6UA4+ z#(~@0yPMmaxpi7otQ`Pz&$tcFgoun_2LaQ3yfL1vn$D~MQ)^nlmKkcWP{w7CkPOBu zIxtFZpGn!o*OEe98MyG~<Rr*_a(b^Et&{yxN8rPV-0SHSEG&-twlI5WlRap`M0z^T zLMocr980ykb3L;`NXZpn9cQjuE;`}U7u_hnG;{Ci>u-8gr1776igG+0wGo7^p`;<f b5M3ty9~i{vsXcYmd-~=pc`E&P;~%^Mqx^l` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/06b8aeed1879d286b3e4234132fdd2169c693ae2 b/src/libs/libsrtp/fuzzer/corpus/06b8aeed1879d286b3e4234132fdd2169c693ae2 new file mode 100644 index 0000000000000000000000000000000000000000..8517c37bc89cda8a83d7ef174c4f94041262baa9 GIT binary patch literal 1254 zcmc&!!AiqG6r2sB+nbt`Vj&=C@g!8d=%GUCLFhLu9(w3O1*1h+u)XyggnWx%<hk|a zI{UV*8!B2s;tOoDZ)e}WOlD#rk=)+(_4P1JoO4~kT0k+;GlMIi9{_rYaT+ij&*o3H z4b(l<o)p`XOUJ-*1FFthGDpe%;;B6gg?HE54T}d8<aS?9gSu=psUWZin@h>5dwm27 zY~p1yg>Le&6nmx0neRCNtZMb*=n+N&uSFXO-<nOOi4vTp*a0Do9m9d-^cLipqZ_8~ zO*!i+d-JhOMWMf<!WWnLk(2c*ILV}!m=n*YZ9ON4e#NDI0jP6C^59FyQt=4c<#$p( zA(nO0tVk!P73*Z}e|19dbV&L4-VxhmE1IPdz98YTFz_q0#8&A#7IeJ+#wx4*6sW`x DTPVpD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/06b9a8464c56257b2f7d51211da84cead2a5e171 b/src/libs/libsrtp/fuzzer/corpus/06b9a8464c56257b2f7d51211da84cead2a5e171 new file mode 100644 index 0000000000000000000000000000000000000000..9ebccc9d63502adfb88e90ca511b7d9e9ef5ec36 GIT binary patch literal 144 zcma#QmB&yL&%nS?l*y4=52S(M|NsBK3=GxP3=E7wUTS<<Voqsld;uo|hb%~>0mx#I z<p9Ys%wcF}U|<3=gn^g?Bx3yyNc?B`HfIh)tRBql)J%?ghIX);Dv<FWP~(e%c7OoT JkU3xm2LJ<49wPt% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/06c8e757034bdac3525e1155089b4dfc01386bb2 b/src/libs/libsrtp/fuzzer/corpus/06c8e757034bdac3525e1155089b4dfc01386bb2 new file mode 100644 index 0000000000000000000000000000000000000000..425bb27bb8816c63cfb63f789211a0af4aacb617 GIT binary patch literal 429 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^ItGwS7>iQ>3ui)%N4P{4?j(5zNr)uXNjp>%G2Fn2<OU`Ipkj0tx^NYo n@(f@V3<$4ah7jCO@{DjlWirBa0t26kK^|yJBm)Br12{qe^ItiO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/07060875482510021e7e723e03d15b58b89d23ba b/src/libs/libsrtp/fuzzer/corpus/07060875482510021e7e723e03d15b58b89d23ba new file mode 100644 index 0000000000000000000000000000000000000000..9a6ab4fa2f27716d725318ab72183cf09dfe7c7a GIT binary patch literal 173 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria56B+f^{;?VQ6PyU<Qf{W0e8PgN=ik0i;2;GFZa|Kn$QYOkn;T4ghs; B96kU5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/070ebaae52ef308f39d3b6d2aec9d4987645dbfe b/src/libs/libsrtp/fuzzer/corpus/070ebaae52ef308f39d3b6d2aec9d4987645dbfe new file mode 100644 index 0000000000000000000000000000000000000000..14197842eac3044fd42431f7739389fb36ab4667 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^P&`M7 eAsnodVGct(kO3rxffNT!tnL5*Z>VA*nQ8zaj1|@Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0713046ee5b8569f6d68e44892a284cb8d07f1e6 b/src/libs/libsrtp/fuzzer/corpus/0713046ee5b8569f6d68e44892a284cb8d07f1e6 new file mode 100644 index 0000000000000000000000000000000000000000..182e2375cbf5749a25b99410e471e5deddd57d45 GIT binary patch literal 99 ycmWgiV899-VWJWY)eN^7^mQ1jtE(9*8N8}pfV2ZpHdzlh07{EigG>Nw$^-xxzYa41 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/072d3e69419fae30bb4d06f5b3b682998b413df3 b/src/libs/libsrtp/fuzzer/corpus/072d3e69419fae30bb4d06f5b3b682998b413df3 new file mode 100644 index 0000000000000000000000000000000000000000..983fcbb13754c18b7349f5f0b56d79176cee432e GIT binary patch literal 69 zcmaz~&d)1hU|?i$WMC+jI=KITe04oXI|E}i0~jzusOmbPit2hn28PAOKn7594g&)d M1CUi6_>$oz04iw^4FCWD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0745fbf2076dd36e71d517486c51fbb29275fb99 b/src/libs/libsrtp/fuzzer/corpus/0745fbf2076dd36e71d517486c51fbb29275fb99 new file mode 100644 index 0000000000000000000000000000000000000000..4c37a369d002a45b5de89af231561914c99fa3a6 GIT binary patch literal 1083 zcmd5)O-sW-5PfM2-GYMJlR_m0sUWpI=uHF*9=!MyB!m)dp)I9L6uMw9ejs@8Ecp}u z81McD4?QS!eUqdLLj3>*A8ckaJG(n?=G7cv*8?zUt6)S+*k>4XXz6hifp_9}!ocgd zx_;BuEq}9L07}RzZbrCDzC{`d;Bw5*$iW7U947{72Wo^X$q`IbhV-2@X%Ms((i}B} zwe|qGKDRc#17-bkm*i#^Pz5e-Y}V*>x6By9SZ0aVMUiE#t<uf0DusLGANeD<={g-8 z0Xu*<>0#NM!O!^#zvJ2b<T>`>YkuYvex#TA$d8wH6$&}d!l~8GX*7>5pcC}GX6T2V zz|$2Ny$JJ!WF?iLke3sTZAa29#LbEnoDzM$l3;G?G|u)@IGEVIl_XvnLmL?%+Xz<o z4SsL)yPbtUAFR|aqKTJT$3sj;D8!(y8>AE(9e2hReNQFChPilG|L?1V4+zTtd(<Kv JR1KmGUIF8K#{mEU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/077bfe79b6b8e2f07e5142cb0ff7f2af106c981d b/src/libs/libsrtp/fuzzer/corpus/077bfe79b6b8e2f07e5142cb0ff7f2af106c981d new file mode 100644 index 0000000000000000000000000000000000000000..4a9100cbab08738fe87bffe9e3326c18fd4b90d4 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|NsAB299cL1_nlm07G?gH6ueYBSUp{EK~$22?3l8 c46-0~)x~p!z#_pwHV2T!`2P=737Dz|0QNx;ApigX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/07814cbcb24e0b5546e9aa864e7f7aa9a168c564 b/src/libs/libsrtp/fuzzer/corpus/07814cbcb24e0b5546e9aa864e7f7aa9a168c564 new file mode 100644 index 0000000000000000000000000000000000000000..e007cf12d60e9c316e359dca09d2f238ddfec549 GIT binary patch literal 180 zcmZ9FF$%&^5JX?JaAPG{Ti95NSMUIy;bZZOfJlhg_=TkN60!4)Vk7H(C5=<;JeFZ5 ztdCp+&{P&za>?Cykdkonee4hC80r#RP(UXl(~MWoO$pt(%yM}197CIFD55nYRilh^ e!Q9!7`0Fg|q0{?3Z5o2<{U=zSyzn=P2lfF|Rw+0D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0798cf7167b61ed2cfb1800011801bc68c65214d b/src/libs/libsrtp/fuzzer/corpus/0798cf7167b61ed2cfb1800011801bc68c65214d new file mode 100644 index 0000000000000000000000000000000000000000..c28656a1521b7463609c76b9e405275bee88f9c8 GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt28Kok1+YkUu^K~lF(Xh+9n5E7uw-C( p31)IKFvv0#&k<rUW?;xk&5KXY&nqd)cVJ*(0-6I<@d0Sse*i`-88-j` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/07f6c6929eff77bd0d56e82ea4736ec28f7aea3a b/src/libs/libsrtp/fuzzer/corpus/07f6c6929eff77bd0d56e82ea4736ec28f7aea3a new file mode 100644 index 0000000000000000000000000000000000000000..ade27f807814194ca8911efbfe57f5978e45377e GIT binary patch literal 139 zcma#o%VQ{sXJSAG|NsB@Rb{TOW?*0h3a7@GCFYcJGH}R(5KyF{fRlj%%wk}e!_W>? x0wjfj6bHzVNgx8G38)ALic&c;>%nTO7=VT|2>>OIGZaCT0u^$|?*Grg2mn|e7;gXo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/081ea4232ae7fdecc019ec13088c224a73b0b451 b/src/libs/libsrtp/fuzzer/corpus/081ea4232ae7fdecc019ec13088c224a73b0b451 new file mode 100644 index 0000000000000000000000000000000000000000..d89c54fb57487bcb65faec6aa31b97be2ef4dca2 GIT binary patch literal 290 zcmZWky$Zr$3_S5KRRmFVD|B-95qtrkp>*g_TuSTIPiVK|*uAgk;sc12@zT;k3?$#> zyCj!{y2LF6kR=iy_|iVAXPlfPoOd5l7lD<J5m2QbU}%kZi<%tc7K#F*%2W_dpc`v? z(yuoD9w$<wwofUbI;IHFEc9>Al>M~hi&CW_u$&7q6U0ceA1$LVbeFT-g3E)-OZx?> gq2L|T?5&Pw`j3HLL))G<s@r)-Fzg&uJaOiK0sZPexBvhE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0840e6087046fc23e86e2c331aedfa68123108e2 b/src/libs/libsrtp/fuzzer/corpus/0840e6087046fc23e86e2c331aedfa68123108e2 new file mode 100644 index 0000000000000000000000000000000000000000..9369ec5db869e2273a9bbcc06569c0923c99dd0a GIT binary patch literal 92 zcma#oW2h>L*VWC-kLO6OX8?o$|Nr|kFjQAFFfc*{7^;gIAs8qI1poaRtRXVG44e!M R?JNum9AG{ZL=-|+0|0qF4q*TQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0842d7d0c5f51d75658a8d060ce8b69dc5df61d5 b/src/libs/libsrtp/fuzzer/corpus/0842d7d0c5f51d75658a8d060ce8b69dc5df61d5 new file mode 100644 index 00000000..a9d79af1 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/0842d7d0c5f51d75658a8d060ce8b69dc5df61d5 @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu*eÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/088764c1162b27b87d049bd2b4121aaa8f49d6e9 b/src/libs/libsrtp/fuzzer/corpus/088764c1162b27b87d049bd2b4121aaa8f49d6e9 new file mode 100644 index 0000000000000000000000000000000000000000..87db8a8a071ef17b94d127c1f700ac13f45ed946 GIT binary patch literal 194 zcma#o%VQ{sXJB9~O8tK%lK~9=|NrmHz))Qc6ooV78JGk>lK+KK6#d4ksI`QRxw@DU zV%p+w4Ax+l091gXTALAQx;jJ}DhcFpGBC(8fYdPlmw;Liwe|o16rh_D{{LqHQV;-S K9Rvaf*=hh#c{0KP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08898301ab36474b3dfb6462a699b1900b7fe6a3 b/src/libs/libsrtp/fuzzer/corpus/08898301ab36474b3dfb6462a699b1900b7fe6a3 new file mode 100644 index 0000000000000000000000000000000000000000..149d9fdca9ebc833f383b543a3a6b2bc6f9f52ce GIT binary patch literal 102 zcma#|Wne0aXJBCHoA!NfJ&*>1|NsB{GB8wEGcYhRC;&MSQ3eL)b_PauD90Km$Z5+U a%TPQ=2*L-dE(YplP^e}ohN-A#*be}t$rOzM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08902272daf08e6bf1b54733ff959b2d6a15ba79 b/src/libs/libsrtp/fuzzer/corpus/08902272daf08e6bf1b54733ff959b2d6a15ba79 new file mode 100644 index 0000000000000000000000000000000000000000..b693de85af6bf201746610bf939b1ba7b58d4195 GIT binary patch literal 112 zcmdOk&ts5eWME(@%H&9`2hu?B|NsA8|NpmCGc+&)WhCQyfU>z<^+y;Os;ku@N*Juc tv;YGGCj)~l15jCo=^P;j;dY=f2SWqH91ezm1x!%23JeT+Kx;st8UR~A6uAHZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/089e1387a8ea73afd87f01bfa75af9327ddfe3c5 b/src/libs/libsrtp/fuzzer/corpus/089e1387a8ea73afd87f01bfa75af9327ddfe3c5 new file mode 100644 index 0000000000000000000000000000000000000000..e00f4bd947c56281187bc0f767958582a6bb89f8 GIT binary patch literal 106 zcmXZSp%H*E3`XHsSCDY90z)uEXQ)CTFa%Ttk|nxp$hE|Lxp#j~aAn}!<Mz0Ic37fU hh0sDkQ4vR%R#<=OVDjCqQij^b7fSsi(KWN#(GR%`5jp?> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08ba205bc389ee3a7e42a47a80489a6fc68b5922 b/src/libs/libsrtp/fuzzer/corpus/08ba205bc389ee3a7e42a47a80489a6fc68b5922 new file mode 100644 index 0000000000000000000000000000000000000000..478c9a2f79a0d1f669454c33e1e9c883f58c1ee6 GIT binary patch literal 321 zcmZ{fF$w}v3`F18LJ>hk5X-f*aNP?C+A4U4trRS5TpLZHooCqt*?5@!CLiR(N2drG zW->!yQ`gtIKx;-1#RIRi@t&1YXg_h{iw-hYRxY?*N+If_peHitV|RZK_iFV!L@U0K z$_*VzwbYU4l31syIXW%DlHAKSEy&ik*k(ve|0Ll;tzE=02F8Ek#N^NjZ?^O)^d!8Z Hm6E{+BDp-j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08c4b15079e0c5a2eed4604535299d145a23c16c b/src/libs/libsrtp/fuzzer/corpus/08c4b15079e0c5a2eed4604535299d145a23c16c new file mode 100644 index 0000000000000000000000000000000000000000..fc903251f7d2113f9b5535f648355bf509e07e7b GIT binary patch literal 1005 zcmcIjJxc>o5S$kgFDWD#NFfA+HY)f5YNY`MZG;G7EoTe|2I2>vT6mx-1g!*1@e2JT z5r2qw7XE=#RPvnNoJ4I@#D(PE?auD(&D_DxTk8VYt~lNyuMBH#5!Yun_3#kzwqd8c zHJ|8>;4@=*cbm`@5KN!PQN|6h<8A=M+m(|m4x3WUWQ;V)4&-2;5Ms1T1|xF}gbqxO zXPb;+dYL(xjl;C~QE2hQ%+C^O<`lLY_+gheW{ww@cE+ol<x<s~7~`g6kxXakGXxIa z7q2lFpw-7!knXQXk1$+rSz64Ha-hYrFKJyHY1F?=BS+_7<FvCu`6WJ25?-OJ$pNT| zKT$S&L|}y2ALPY4i=-IDp9y>fDm0uIZR6i-!N0KeJB;LcMth1d@wA;<h}Cpnd*WyO zP7j^>NsmEIaY2dy*F$N3uLpjj2eoXfF&g%vZ@@Od_t&8LvQhmH;^)CHLv^>AN^>W6 zo9v{>`uZ-a=|Li`)&MdyE;_2X86IKd*H7`8wW4J~JoVgCb=PyZ*49g_d4H`mw3S@p ZN^K5nq37<gdhf;@0xDlNK`b*C@dk-<)n@<z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08c4f6f4abfa6fbdf044775fc91dea997eca8da1 b/src/libs/libsrtp/fuzzer/corpus/08c4f6f4abfa6fbdf044775fc91dea997eca8da1 new file mode 100644 index 0000000000000000000000000000000000000000..118a5aa0f74bce0cbdef46f82b94ac09acc87ee5 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763Sg1yVnzlqu2vTS3ouwhC<X>j X1_oK6I-v9%A&6R3B_L5@phPtQ9<&do literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08f15fc50d84dc626a87437e3b6833d7b04d73e2 b/src/libs/libsrtp/fuzzer/corpus/08f15fc50d84dc626a87437e3b6833d7b04d73e2 new file mode 100644 index 0000000000000000000000000000000000000000..e9a6c69fa8b3dbde497e8cacc36c5656d116c8ff GIT binary patch literal 1012 zcmcIjJxc>Y5Phd$F0qNEJ20fO%nuNROJ!wao8l0>A`nCj7TyZ6@C)=O_+R`hHWq2G z5J7N#Gn?JyG>MHaVRo2#GduU*B<r5wG6Qfni1QuZJl5I+z!<tU4fKZRd3IVyyp0IB zqW9cIV=@uM+h>|!(^aw1T0;n7`%-B}k@jJTSlYfi^yTMr9}9Dep5hen>R}<cxarEm z`3WBWdxAnI=D0FCFFt<ZLR01d;j@YNC)|-N+7_=^h`ZgQ8H?xTphEc|9xKKch^<8r zI2t+(g(~&f1V}a39<f&^LhS{I(uBc16{w}wnSc~EWW+y`jruyBylm;UXM^uJGWtH^ zkRd*wWv~L9t<3U_GF_?qu@m~)?pfNU`q-oq$P~WF+y<|*<l}2iX>#*u*Ja6hJfX#^ ll@F85KIFG?cin)Y($mMmzjJ_lSs*zssekIq78!F4d;yY>$FTqa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/08f7011dda2e8df54ed4a4c7932648f067d74b88 b/src/libs/libsrtp/fuzzer/corpus/08f7011dda2e8df54ed4a4c7932648f067d74b88 new file mode 100644 index 0000000000000000000000000000000000000000..5843877be71fc2454da5d3da9a1b6b9e64ec8ad6 GIT binary patch literal 85 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYh|FmS=d82<hL|DVAg!ewq}V66Vn&QRS_ QT@Mrnf(V#8Mh1;c0Ji=Y6#xJL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/092d5acd482e169f1a35215856f8fbd5a1ebc358 b/src/libs/libsrtp/fuzzer/corpus/092d5acd482e169f1a35215856f8fbd5a1ebc358 new file mode 100644 index 0000000000000000000000000000000000000000..2abfbfdd866678344cfc72e36fe9d57aaf9e41d5 GIT binary patch literal 360 zcmb7AF$%&!5S+w_8!L%*Kol$k7S^T~e8Z6<ML;AZ+IT|J1<UmLi|_FRA_$(l5kb+$ zh1;8(otxb|6>M-&0J4PQDeoMfZB_`iX4q?qXuXS7>VkY&K*<P#2Dmn;SiyOSE=a_) z3rmXj8jN8hJ`rLh8EXvoLO!c)*0}{~^r@k5O+G5!^wrli;PI#yi^zfT1cbb{3O0^$ uLIo-zN&0o}VpsRg`NW#>zp=!EoqmV&PUosDDbTpd^XJ6>08C^&X#W9=GeOt@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/09348a438f44b9bbd2a9432bf8878d98ac2dd9ef b/src/libs/libsrtp/fuzzer/corpus/09348a438f44b9bbd2a9432bf8878d98ac2dd9ef new file mode 100644 index 0000000000000000000000000000000000000000..e4a5e28a6158b635672893d9b7c62d15f9541a16 GIT binary patch literal 123 zcma#o%VQ`BVPH^BO8qaK$p8lb|0nq}FjQwVFfjfHF{&9DE;2GO2!JH3i$4G{koO-1 z7?v|ISOY}`7&sXiWEmJ4O0A3M2muBDD=-K*Gce3yaA06z-~d9P4h4|-|Np{3%=(|f GwHg42*B~kY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/093c49bb9bccdac898ffb2d59c6a68b2e89f2f96 b/src/libs/libsrtp/fuzzer/corpus/093c49bb9bccdac898ffb2d59c6a68b2e89f2f96 new file mode 100644 index 0000000000000000000000000000000000000000..62a323451090f63bae61fc38d0ff2d2621020c69 GIT binary patch literal 250 zcma!LU|=x#|NlQ@QEDbfJ&*$gK&~$XV|6tn1M?rSz&;27v+)!E|AFKiisuM1ghN!$ zVK@$C%wcF3X5auqI6zg?4ph>BQ1c(C9^?+VYLE$p&EZsF$OkG!HwVcS2(t)CRRaK| C1}O6Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/09408a322bedf519a3c5d821133d722d88b21c58 b/src/libs/libsrtp/fuzzer/corpus/09408a322bedf519a3c5d821133d722d88b21c58 new file mode 100644 index 0000000000000000000000000000000000000000..cb1bba5a8b67b6f66f4cdfd60c9dedcc83445281 GIT binary patch literal 99 zcmWe+WB>zx2!%=JGDxKTt7f>x;KjhhpwCbZ0xs3n3=RwodRT$F-a3#t&?M1n+v;kA FY5+Sp590s; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0941531e215dca2d25d3206ae458ac4f4d2d8d88 b/src/libs/libsrtp/fuzzer/corpus/0941531e215dca2d25d3206ae458ac4f4d2d8d88 new file mode 100644 index 0000000000000000000000000000000000000000..673719f5e09eb2237b1eaca75a6e2e95dcdf555b GIT binary patch literal 283 zcmZ2JM~FdyL4iTIoq<7R4g&)N3j+rbGBU6~0CN8SXJC*8au}+M>w(;&Opa6#4Fvxk ztsx8sBTfbfyb26B;f4S$0|AgdAb>E0KDHPd!CeCJ4%8X{!Qc<XP5+Cl85mlCYyj$| BFbV(w literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/094aefe210ab041f01d93f25e77480ec1107843f b/src/libs/libsrtp/fuzzer/corpus/094aefe210ab041f01d93f25e77480ec1107843f new file mode 100644 index 0000000000000000000000000000000000000000..929628c6e32f7e150ce420ee9d03a178e3d67961 GIT binary patch literal 506 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wp{vk^ ztKgJp0IOiYVi#Ny&@QaTFfcN12Rn-erh*t_ROSF(#KOP<gp3UA4}hE>K;Hr>hH7m_ zpeNNqOdzlZ;(tJ&|L0&}kOeD1IEaCXL7oBVv(}#f%+<MI%^)p{ZCGT5fV2XWa61D7 x(4skD9s`sIvKAVSPzMKqbfJe1!ds3cgbp5WDKlX87=s?ra*!_>7!Cpf0|43lVPXIP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/096ede5656818a9b33329aeb1a6bf7265627b640 b/src/libs/libsrtp/fuzzer/corpus/096ede5656818a9b33329aeb1a6bf7265627b640 new file mode 100644 index 0000000000000000000000000000000000000000..cd274dffbbe48d4429b1abe873fcc139b23e4b63 GIT binary patch literal 230 zcmazSWME*32jZesj`~a>4Fv!H|Mz8JsIF#UU<C6aBm+NCte6pktJT3W3=Gy#nt_vn xK^D6x(3H~Z;yIXx&&L6vM&hvysDc9sfj|L70D%yg6lRzMrooa5U?zyD1^_s$C941c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0982c7135c8ad390b4f89c160825b6d98ab803a6 b/src/libs/libsrtp/fuzzer/corpus/0982c7135c8ad390b4f89c160825b6d98ab803a6 new file mode 100644 index 0000000000000000000000000000000000000000..704504e0d86877a8fe2a819a33194ca6d3f96f53 GIT binary patch literal 97 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcN3fJLf{)flRa1%YDf5G4$T3=A*9 mOil&{*=mM4ybQ(+45>NsdC3P#i&NtllqZ(vq{jdMUk?DnI~Q31 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/098c766ed84871e1fe0d55e342176141b88c6e18 b/src/libs/libsrtp/fuzzer/corpus/098c766ed84871e1fe0d55e342176141b88c6e18 new file mode 100644 index 0000000000000000000000000000000000000000..68f195e175cb4330c66f62b69e1fc60371485096 GIT binary patch literal 145 zcmdl#k>T~qiU0R=vHLPG<THSPD1$*C5I8b0Fct#2ObiUw%wUP?Y9MoYyj~uIWIRxy zD3c?#9xTD||Nnmhpnhb)+|Iz*Qtjxtf1fTR!<I~tRCO^U1XrsIK$Kd}5rUcXn1P`| IxSfFk09;QV=Kufz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/099a19243cad226b84fed1b8db1bfc3e5113c45f b/src/libs/libsrtp/fuzzer/corpus/099a19243cad226b84fed1b8db1bfc3e5113c45f new file mode 100644 index 0000000000000000000000000000000000000000..708e8b685216bdd7779c9578b7acfba602577394 GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H>F{2hu?B|39NI14DH+0|O(Fml|J|2o?qtj0|iI1)K~FvS2xe zISlPUVIV0Cq&Pq-+P(pa|3V-p2!PG*OwHt|XZVk7Xc+@TJlt4ZhE4_=fMTcu$VjlE bNN!+YfS3<)Llw~Z|Nns;&cFg9;D7@FSs)}U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/09ff328b37e723d6a52d6c5cad15e328a46d67cc b/src/libs/libsrtp/fuzzer/corpus/09ff328b37e723d6a52d6c5cad15e328a46d67cc new file mode 100644 index 0000000000000000000000000000000000000000..17a58c6168a7d50a0f5ca961c2921a52c7bed201 GIT binary patch literal 112 zcmXYpF%CdL6hz-wtwbSITPbxKr879g)*1zk<QG(2!Zlpax4|@%%zK$8jQA@IFyU6- vm{||1Y$D)87UAG@mblfQLictKDO5ylY0rZ7wxh&wzXh^$Iucc>XN{*1`3DtV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a08bdde597d95bef31b3f2f679ddcb1b816f11b b/src/libs/libsrtp/fuzzer/corpus/0a08bdde597d95bef31b3f2f679ddcb1b816f11b new file mode 100644 index 0000000000000000000000000000000000000000..83459a883e1dfa534207593aadb15e2bbebd6fc2 GIT binary patch literal 725 zcma!LWME)pVBEl1l$yy=&j1Gh|Nr-8ILBZH;W5l%I1XgZVQ3d--~d86Xegc|#J~^^ z=A)?rsrnDp0VMx}<<DVL1r`GlV3QyQq1c9G8JZfP$#WRsE)s^Cgv%TZSHtZ>H3#J8 zZc^Ng-S;^B1-FX}>>iZxfoMSsMJ(q00mTEt@72Y?===W<q!7dJSvX=0kKchNQxsoB XhchlW<4R@t-3$&VA!u9x!=V}g`)qM; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a1f21f7bcee5a153c2bb0e5f9c194a997a90426 b/src/libs/libsrtp/fuzzer/corpus/0a1f21f7bcee5a153c2bb0e5f9c194a997a90426 new file mode 100644 index 0000000000000000000000000000000000000000..5c193119216be4934bdddcbf5d6630fd0d0c3c34 GIT binary patch literal 252 zcmX|*F%H5o5Ck`!Qz4N$H60(I-~;dmi^4@D2vLG*4n!*W01^^PmyhuZD9!pTaB+KH zpZCVjYaA?qwleNa<q09I01+VL&DrDTo*VB<+o;nwIZ)~w2HZHpT2N>M*Eh>0b{e#% zw5XhUe4ZyYWBfnTcg}Jo5!A;0KJEftc_o5K0fBU5Mygp#85c=)ZKUziEvM=gWE!+H TFo_eGfJ?XD*{0p2=d0igZQC<p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a23315ff62c0ec8a48c8e45de2e6409321e4ff5 b/src/libs/libsrtp/fuzzer/corpus/0a23315ff62c0ec8a48c8e45de2e6409321e4ff5 new file mode 100644 index 0000000000000000000000000000000000000000..45c64016383a5a953695421219d2140fa8269763 GIT binary patch literal 194 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nm!%u=xM`GB8wE1Eu8|m;^v#5VE!BKXY|4NRcE+ zaG^DbWDsCvsMZGJYIQJ|fdL{6<Zv=D$TEPGGyb;)8rb#!|39dKK)XO70Yu!ds{v7P a!0-}k4vboC&F~t?7GP*)V=RF>fB^uvMKi|$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a485c09b9b7116c12b0c09d76f34c43aae136aa b/src/libs/libsrtp/fuzzer/corpus/0a485c09b9b7116c12b0c09d76f34c43aae136aa new file mode 100644 index 0000000000000000000000000000000000000000..d1e014e936ade42a1f13f48a1ac7d4ed4bb48742 GIT binary patch literal 171 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI rlndlcMAldJ3#jiBP!cE+4b}m%@gKy-Vu%dT76qUr&>|4+jsX||#rq&6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a5f6124c715f94dd5834b7f0117c8a367176117 b/src/libs/libsrtp/fuzzer/corpus/0a5f6124c715f94dd5834b7f0117c8a367176117 new file mode 100644 index 0000000000000000000000000000000000000000..dadf11ce97d282ee252eaea4997f1ac773626d26 GIT binary patch literal 73 ucmbREe?QmDm(>i&Kmp9DE@ot?21+n8Fns$D1XYaH#SF#O8L23Oa5(@LVH*wr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a83be702790967e92a681ae521e34f9dcb7032e b/src/libs/libsrtp/fuzzer/corpus/0a83be702790967e92a681ae521e34f9dcb7032e new file mode 100644 index 0000000000000000000000000000000000000000..fb576e67c4f0aa8bcdd659ac8f472649854401f2 GIT binary patch literal 106 zcma#o%VQ|fVPIe=%H&9`2hu?B|Nnnq28QZt1_nk31+YkUF(U&IgVaHRHH^W@z#t1$ eH^-NuSO_F0*v`PfF$XNm1T^VB(6Ij?UNr#P;S?|c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a9cafa9df7a5f6edb1823e7d854ac46a9b244d2 b/src/libs/libsrtp/fuzzer/corpus/0a9cafa9df7a5f6edb1823e7d854ac46a9b244d2 new file mode 100644 index 0000000000000000000000000000000000000000..17500072d62ae18112499e62e50db3b47cec1eec GIT binary patch literal 466 zcmah`u?oU46ud~m>Lhj(3*zADB7)$ekg4D|6a<GZ4y{fBb<@?!#l;`d?{RR|&3H*$ z>0t3eUXtV9ySxjuaDos(9Jz}vcZSw_hTBos?{~%PTTfaRNB4<@h;Si%B9#=)@^mAm z1XLoRVlGo^W1JsqRrnC3jLuDqd3)eo-i-aE6b1cWrf-TxKrwc+q_s+lEz!XB`GPy3 zn1{C2%2S8>=8gGO%Kgr<BgeDsP_dFxLBu?_=h8&GQU_0u#n!R3zYZFfal)8|Rk#HD Xadfy8KOi@2Sez^~3pD%JdyE+$g!WD> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0a9cf33434e23f6f4db4e45df315c4ec73c2a260 b/src/libs/libsrtp/fuzzer/corpus/0a9cf33434e23f6f4db4e45df315c4ec73c2a260 new file mode 100644 index 0000000000000000000000000000000000000000..82ec8ae3d2cfa12bcd450307458693d289e9ee8d GIT binary patch literal 113 zcma!N(94sIXJB9`%Irw32hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(X5DxjF-b4M@m< wq2VQ1ij#rC1jvvDYG7nw*wT~y_CLcfpb6Gz^7E`pit_D2s>HxbfdpeU0G${atpET3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ab40fbf2b76dca836fa4fa121ca393663cc2e7b b/src/libs/libsrtp/fuzzer/corpus/0ab40fbf2b76dca836fa4fa121ca393663cc2e7b new file mode 100644 index 0000000000000000000000000000000000000000..2a10952f08edf80f91f48310c1357d9e0e72acff GIT binary patch literal 40 pcmXTsVc?24$gZxgE>4ZF&WvYZ{0{;B{R}|R|6hUOe|#we0{~QN5eNVP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b0a7d16784aebbd05cf5a7b2af92f3657004d8b b/src/libs/libsrtp/fuzzer/corpus/0b0a7d16784aebbd05cf5a7b2af92f3657004d8b new file mode 100644 index 0000000000000000000000000000000000000000..deaa9bb6701e8a02f2e9acb0b7a6f939f2c172eb GIT binary patch literal 202 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivITniZIGE%n<_83Jk*S3=Ar@Kqd<V z2LlJ|e+KpkK+gaFKmrJ=wHX<ztJNVK25TtIzzH+~s0e6MHONSL1||WJRBO+F=IUIa o3<NBOs25-aItB!whM86uBilU(D8v2$NC4dk2L}%_Ft}C&0Ja1yU;qFB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b0e0fa9cfdd30cae7823d1dcf622a2f504884f4 b/src/libs/libsrtp/fuzzer/corpus/0b0e0fa9cfdd30cae7823d1dcf622a2f504884f4 new file mode 100644 index 0000000000000000000000000000000000000000..b5f2f78558e89b4b143db456ddecf7898b39c037 GIT binary patch literal 108 zcma#o%VUs?*I{5N%H&9`X8?o$egAzK7^<ro7#JB8z#`SfY7EuIj6gAUh!O?^hK845 sCMN@fEJN`eAqM096B!tCQuE@I86j%q^Ye7`^5c_Bi%S^tbK_GP0FT5Lpa1{> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b45eaf9ca6d929c409d344b55e91f5e6e36942f b/src/libs/libsrtp/fuzzer/corpus/0b45eaf9ca6d929c409d344b55e91f5e6e36942f new file mode 100644 index 0000000000000000000000000000000000000000..850eb5937d3a87e395b4e7311aa17bc7ecd407b9 GIT binary patch literal 302 zcmZ3^z+g~P&%nS?#K4frkqTll{CBhlQ9xkG$>1Q%zz9(QlV<q$53YduI|Bny0RuyI zaWznVQRa_XjbNQfh8S@&Vlf0s0mu*r25mH3kQ88dhBDlpMpzU;B$<E)gN#R0z{m!6 cB$DgvSwODmfO`z60qQZJ$~j;kGR&V303?JkTL1t6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b47f78707cf005058384cd1e7e034845b332fd7 b/src/libs/libsrtp/fuzzer/corpus/0b47f78707cf005058384cd1e7e034845b332fd7 new file mode 100644 index 0000000000000000000000000000000000000000..cccbaa5a120f2c866fade8e7a97408d6b520f7a7 GIT binary patch literal 230 zcma#o%VQ{sXJDAbkosRZlK~9=|NrmHz))Syz`*!F{$C!0WITfcLs2G2YCXDqAR|x) z1geYGfS3`eNgd2*V6X(zuR&}{1_oIMMv#&@LJZbWSyCuYkO2$~S_}*gAS1#ddgm~- U0~vF$x)kaRpg;cq2eQi;0D`9~x&QzG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b53d780e946f28d827e35ac7778d17f8bb130ff b/src/libs/libsrtp/fuzzer/corpus/0b53d780e946f28d827e35ac7778d17f8bb130ff new file mode 100644 index 0000000000000000000000000000000000000000..e201c03a7aaecd89e36beb6c0515e92231f849ff GIT binary patch literal 70 zcmXSxWe9x9@Uj{NiWM0ctQo2qz#Il3V9L$R%goKJN{vr0N-WMW%2Wo4GO!6SFfcOw Q|IffsUCj9Z|D6B-0Ru`F`Tzg` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b6878d289eead16e8ff787fb0bb630f834c9acc b/src/libs/libsrtp/fuzzer/corpus/0b6878d289eead16e8ff787fb0bb630f834c9acc new file mode 100644 index 0000000000000000000000000000000000000000..88db47efd6cf92979dc72fb61b38737a85d530d1 GIT binary patch literal 121 zcmXAgF$#b%6hmLZp>ARq7op(p1-c22o<R^CL~toib@vip$`gIt8c28~WbO~H8M<W^ yvymkt6NH^YWeD&psL~jGq!bx&{{u>BQJl^{b?n4qZXOsY(2b50HuWMVnlXGU%o;`j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b71974af915b2f0c6fd38bd27082c99262e7b8e b/src/libs/libsrtp/fuzzer/corpus/0b71974af915b2f0c6fd38bd27082c99262e7b8e new file mode 100644 index 0000000000000000000000000000000000000000..a588bf8ca203c97edaa93b7e4b8c9f662d504e6f GIT binary patch literal 103 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*Knnb$tsyeH44e!M e?JNv)I2is(fMnXBTK@kB8l$JD$M6?q4g&yV=N9n* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b73ad5e360a55bedc8bd3f908692aa19082f163 b/src/libs/libsrtp/fuzzer/corpus/0b73ad5e360a55bedc8bd3f908692aa19082f163 new file mode 100644 index 0000000000000000000000000000000000000000..e4173495b3cba955848ee6ba373942bffb6d1019 GIT binary patch literal 69 zcmdl#@jutgm(>g)peqHYfJAjMBSSS%5Q3Nl7z7v?T6_L8gT$d=u{D?>08$7573d7o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0b95252916e3788b4e49600d3646e069fad8e392 b/src/libs/libsrtp/fuzzer/corpus/0b95252916e3788b4e49600d3646e069fad8e392 new file mode 100644 index 0000000000000000000000000000000000000000..4c9658248196273baedeba604c3a9264b78b3803 GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu?B|KI=r{~=5m`QMj;p}HE#i-d?&7c+tx)z#_{0U<CY V+|Ix-2gus@?K=YpL;_4!0{|>X5v>3K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ba4cfd67c08eab21f1a4ef02e966b7d8a9eab25 b/src/libs/libsrtp/fuzzer/corpus/0ba4cfd67c08eab21f1a4ef02e966b7d8a9eab25 new file mode 100644 index 0000000000000000000000000000000000000000..f085b219f521af706be71fb1748b94cdebbe8596 GIT binary patch literal 73 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Aou^AZ{6pI-dsvTy|oXNl-4-}~`Rs#zw QfTXL78LAl>j8jso0ny$NR{#J2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0bb532b810a0b0f13d473838d4f7676b206bfcf0 b/src/libs/libsrtp/fuzzer/corpus/0bb532b810a0b0f13d473838d4f7676b206bfcf0 new file mode 100644 index 0000000000000000000000000000000000000000..4757eaed0c9369b8f8fba2643bf552f80670a200 GIT binary patch literal 360 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozK%0eJ={0iYs~N<9V!RFxVaE&m_< z*8r&if&ZBd!sv=1=7No>1{tqWjo&;*d4{`0ng_HI#VfuH|G^N=D+~+?2N+_`JO-MK z?3eo}z6SdRo81fyi><+)6JXS7En#D>E@lLAb%3HEaRD$7$XLm+5(p|mat#0e{|5lC CAXRVx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0bcd6e7d3c5e1ce3d3184bc64fb37ead8de43a16 b/src/libs/libsrtp/fuzzer/corpus/0bcd6e7d3c5e1ce3d3184bc64fb37ead8de43a16 new file mode 100644 index 0000000000000000000000000000000000000000..29a724ff7ed6c92526c86fae36cd83afe7845bb5 GIT binary patch literal 171 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(XX;z%cRu zey*1<t2b0vTLF~<0Rw|IP%@K&3#c7r76SvA09xY<WP;g13m6z=ffkfj7tetT{rAu0 bNUaCjSz$IunL(N1|G)q3!VLczm_RxJ)HW$4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0be07a86c0df5258ebd70442c46bbba5009927dc b/src/libs/libsrtp/fuzzer/corpus/0be07a86c0df5258ebd70442c46bbba5009927dc new file mode 100644 index 0000000000000000000000000000000000000000..f0970d0279feb691fb79740f70b06f8c52d41424 GIT binary patch literal 195 zcmdo0-;V3$%W4LOs$>5hq!=LJnOrfDQOyV>7#Z9d7;G7;iy0ZJfvSK)5HcFf0J0$n xA`W7M4P*F*FpLpq7{^4gVL&w?!-z7l0c;S+9YDYe)5E|Zz{v0)3>X+(s{!CoC!_!X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0c2e96c40ae7c243fffc9825a44b00d206444b56 b/src/libs/libsrtp/fuzzer/corpus/0c2e96c40ae7c243fffc9825a44b00d206444b56 new file mode 100644 index 0000000000000000000000000000000000000000..8e911527423e18ddde5af1632a0894cdef23150a GIT binary patch literal 176 zcmXv|F$w}f5X;)QcEU9_f|Y{BHon8c7c3TA9LOOqSB-_;ed0c7Wh+?3%!vatlL<+f zoI2byfLj~OR$E2#2$%`ZC*pkROTI1;*9gEv2#%I`j~JxTZ16$+dH?2s&E&Qk;JrI2 l(`w1q^2KU6(TokBQq2Y=j2_^JS}(2q5hir~UOrcg{{nrdE;0ZB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0c3b829efd6c1df47d4cf903c7ea96f1e8b54cee b/src/libs/libsrtp/fuzzer/corpus/0c3b829efd6c1df47d4cf903c7ea96f1e8b54cee new file mode 100644 index 0000000000000000000000000000000000000000..0c95ab3c7ddbc96c0873a60d01b3abbccc8a9b93 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0h|_tWg)f$H9@Q- K&1kR*U^@Ug(I^-I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0c78f857acec16092cf998d8c44894eb1ddce77c b/src/libs/libsrtp/fuzzer/corpus/0c78f857acec16092cf998d8c44894eb1ddce77c new file mode 100644 index 0000000000000000000000000000000000000000..86ad4ceac5074fedcd25b71e19f607ca63d233f8 GIT binary patch literal 102 zcma#o%VQ|fVSoTp2=)K}e_sZM>S_iCMg|42P<1gQ0}yLK<Uyo0jLFHsAj`l|ECl8Y SwljD!%z;QTF#yehFslLCr49A~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0c9cd9b8d3dbf3d31be28725f635a4ef59901c99 b/src/libs/libsrtp/fuzzer/corpus/0c9cd9b8d3dbf3d31be28725f635a4ef59901c99 new file mode 100644 index 0000000000000000000000000000000000000000..290891834a863a1ab7b6fabb3bbd31ac225847cf GIT binary patch literal 210 zcmdPXXJBB62jZekj?{V}4FvyxF;rLk{s*!cfjBk3EHS4vHNGGtH!)eEI3rQFfRlki zmVucAC^-jNRyUC|S)rgf10l=M4pPI=E)1kV${E_e0f~A>1}z{3G8_ns7&22i>LF@C te3+6dAe#}Ys3<j)g8{0Bql)4G|NkBg44p0i;nIr5)w38GtQj~27yy7(Dy#qi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0cb30cc8bb29e9ecb263f86c8fb65b3462274d99 b/src/libs/libsrtp/fuzzer/corpus/0cb30cc8bb29e9ecb263f86c8fb65b3462274d99 new file mode 100644 index 0000000000000000000000000000000000000000..bb1a0872013447d1f63f31837e3f3186817effd0 GIT binary patch literal 132 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHW@O|2Exi3=E76Eg<#P#Xv(C7&xk{ w)j>26SVJg=Kb#B<vJAy@gcuk#85nrm85rj90oAfIFfio<bqg~vumH6K0B*!1E&u=k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0cc45599f2bdce269a425cea96f7873ffba96439 b/src/libs/libsrtp/fuzzer/corpus/0cc45599f2bdce269a425cea96f7873ffba96439 new file mode 100644 index 0000000000000000000000000000000000000000..6067ec79a9a43896eb83ffda30978db051525795 GIT binary patch literal 206 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivITniZIGE%n<_83Jk*S3=ArBfJ_z! z4j^P?V1EGQ{QnOmfS_8Nk)gU;9l~L-hSCh23=FbBrBKtVLB`56FbRO9TYLU9SLcG{ fz+f>%j{qakK_CD%(4e{)yZsv<fGh_CVK4~*MII_7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ce33b085f7fd07e35a255014258c43ed6aeac5e b/src/libs/libsrtp/fuzzer/corpus/0ce33b085f7fd07e35a255014258c43ed6aeac5e new file mode 100644 index 0000000000000000000000000000000000000000..ecb8100e47209468d39929abe38c86fb6133f9ea GIT binary patch literal 298 zcmZ3^z+g~P&%nS?l*y3_qJiL?qcw!Vz+l9{Aj`nWz))QblzV`r=098w^LJ!5$mW0y zVM+&)hMaIUbA&(w40FIF0|U?;1qjm+#V%xXh_MTy2A^FFP>-RzIS~qgE@1>Qp^jr< J`28Qw1OUxcEE@m- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0cf2c747728fff29b1f5f58c6c0e05e07e21cae7 b/src/libs/libsrtp/fuzzer/corpus/0cf2c747728fff29b1f5f58c6c0e05e07e21cae7 new file mode 100644 index 0000000000000000000000000000000000000000..f972dcf9b9c79a702c8333a4354499ffa089acc8 GIT binary patch literal 252 zcmZ8bOA5k341KMeaVNMI?B34-ynqNEL589OEvS?kb<tULV=Y2YAl}7Wxs8caH$KQq zCV4LzJv-v00oYubiZg=<-mi(Ph{Nbhx<4CTWQTM+c3C<t`oIX0;^7lb;2|ez;Pz&! z#HhY@F6=xvszM_g!B0{y!UgGBLo0L|Rq_{T3EZzlvPqCQ{|F1?0VY8G|8A-0U8hc1 U1H^4jKA43!03QTol<c5hA7xQ52LJ#7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0d04ce1a2c20bcb54992f345f4257155d0e0719d b/src/libs/libsrtp/fuzzer/corpus/0d04ce1a2c20bcb54992f345f4257155d0e0719d new file mode 100644 index 0000000000000000000000000000000000000000..0059e45bf015406ae2e236f8fbe459fce645f877 GIT binary patch literal 555 zcmZ3^z+g~P&%nS?l*y4=FAQWbF#LD42GbzINJy4}k%6JQ7_J5)g-~P2$>0D~gD?b( z0tTodbA-T>b0A8PEHdO|#BT`mcLtat_*?=sSR1!X7>tNAggP!E>}CAnW<ZR8@jKO! b^A^kyJRy(i3?@+gfI}P_?F`in^XCHqSxQku literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0d57949067883dc35477e6ec810947ef44450e64 b/src/libs/libsrtp/fuzzer/corpus/0d57949067883dc35477e6ec810947ef44450e64 new file mode 100644 index 0000000000000000000000000000000000000000..3eb31b788bd36ef12851a3f4c565b083e11d038b GIT binary patch literal 1456 zcmeHHy-veG4F22(k!+w&3@8$6)d95|6JpDXcmRe>9Xh~JVCfB=5DSmMd+;`hx1a(k zhwnGXH7B5A#8Gr-pJRWvzg#`V^0o%BnCG(<uPjo^b3h1yi~-_ihhNe*<#2&hb233u z;331&&*d`VT2HT`kkDc#2Xhm?MKbb`N*u6R$-YIWmk(eZ=ngr~0wZtV_`9!`l(qqZ z0tmf5{w(&Gc#ool_JFHoB%`WRS+}!C!9%s3<#+Hw^sL98Q4Bw%L=<ND#E>)O{1A3u zSy@}&h+{<<HxxyfMoldT4mGiSw+KCy;Evuu%D%YLqcbJ^f)gCROI-S{v$X9caTHG+ zZ4I_%u}23d)|TDxO*kjsCz5Vyj)I43<7enM3Hbk<@ZJA=P7HyKivsSVFnLcfus@hY IRaJNR1j^LW{{R30 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0d6a5e25c11d7f569ef579d3a4d0f3de7bc21bf7 b/src/libs/libsrtp/fuzzer/corpus/0d6a5e25c11d7f569ef579d3a4d0f3de7bc21bf7 new file mode 100644 index 0000000000000000000000000000000000000000..9d08b9bc4d17e9a9e9b237828a8d56a6f7e7316c GIT binary patch literal 108 zcmdOk&ts5eWME(@%H&9`2hu?B|NsA8|NpmCGc+&)WhCQyfU>z<)y0eq)z#_{B@EVJ pT7ZFp6UeAAog>5`+zw=MFf=gC;rR8hfC-{bK!JfF4`c<13jiND6z>24 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0d6cf32fc6ee3cec7b0807f3316c6ca2f5e9e0cb b/src/libs/libsrtp/fuzzer/corpus/0d6cf32fc6ee3cec7b0807f3316c6ca2f5e9e0cb new file mode 100644 index 0000000000000000000000000000000000000000..500951fc093dd47cf03feaa38c41d51080ae3427 GIT binary patch literal 103 zcmdOk&ts5Gjn8CYC}QBKX8?o$|Nr|kFjQAFG%zwUFi6Jp03|ays*4$cV(Jhj4Ax*; rfPsM%$fz)$BgF9k-~V=DhW`u<96*sd91Kj=)r{)J)eZ~{#qreuUm_Lx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0d813bc002fa52de02deebe0bb0fa428a1ee4cad b/src/libs/libsrtp/fuzzer/corpus/0d813bc002fa52de02deebe0bb0fa428a1ee4cad new file mode 100644 index 0000000000000000000000000000000000000000..40db02385f6f482bcdb084181b81adb388f0a457 GIT binary patch literal 66 zcmezWU*DI3p}LxZA%5cj{ai0!0$B_US`3UJN@Wg^xC;e9=6^5%t6*sD`OjQk%*ap; E08@DyI{*Lx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0da5f1e1de1727cd7555dcb9ca1a0c725ee62e3f b/src/libs/libsrtp/fuzzer/corpus/0da5f1e1de1727cd7555dcb9ca1a0c725ee62e3f new file mode 100644 index 0000000000000000000000000000000000000000..cdbba5d1a5585728b71e1d9b3fc094e76bcfcc38 GIT binary patch literal 144 zcma!NWMHs}XJ9B|$mB?^X8?mA|9^pLrh@;z3=GxP4BH@}fC;FWfq{u(TRv0-OffJp zG6*vWa4}RDgXMubbiw)=7_6c6e@+GlS)j7g>f$*<3=Cor;W<nKAVv)n1H->XJ^$=M F900GKA>9A~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0df58d320f751d2dcf559f8fafedb42994035dd8 b/src/libs/libsrtp/fuzzer/corpus/0df58d320f751d2dcf559f8fafedb42994035dd8 new file mode 100644 index 0000000000000000000000000000000000000000..9b0cb9ea11231be9c301a0bced70279aa95682be GIT binary patch literal 83 zcmYe!kFP3;uP;jFU|?X#1Y#ig|DVDCKZGgDVAux&K%Ndn1Vs`g#0JF7Y`VJbmQVly DEFci$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0df9354cb689e53770b13c7b31219bcf34d0163b b/src/libs/libsrtp/fuzzer/corpus/0df9354cb689e53770b13c7b31219bcf34d0163b new file mode 100644 index 0000000000000000000000000000000000000000..6a9a793699d75087c6de85e1f551f99fa751f40e GIT binary patch literal 351 zcma)2F%Cgd5S)j^i%Oyq)u;F(p;T$;G|r$Q@e>7p#U?ZyK<NmMp!(;a(z<}sGy6V? z(3s@y+nvnLZZ_Gw!tEvi9<E#AN7U|!$r#NUs<DA|55!r+8>u2tkx-FAa>Cm8D8(eC zO|K6WS(ZhNT!8k-Llqyeux!X*NjV~;9T6YFa=-zCmU$(REwHhxTqiWTH|CrrjUlse yw;e`-a%$sBSvPT*j%TP#ix!^zBjC7fcGP7N*^PJ8kgk&a-s|gJdJKOq;D9InF?fXl literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e151d71bcf4df62790cc196096eb6d0e1601688 b/src/libs/libsrtp/fuzzer/corpus/0e151d71bcf4df62790cc196096eb6d0e1601688 new file mode 100644 index 0000000000000000000000000000000000000000..76fd48d773d6b17400a373fbb76e825dcaf166f9 GIT binary patch literal 50 ocmbREe?QmDm(|tPy+>Qhs!bS*85w|}8c0=FgIFK{WFSyA0Lw@X(*OVf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e16367eceb4f5b5526e06bc7a5b55d1b53fca73 b/src/libs/libsrtp/fuzzer/corpus/0e16367eceb4f5b5526e06bc7a5b55d1b53fca73 new file mode 100644 index 0000000000000000000000000000000000000000..163366a44a9e753f1f22661e5ad466fc4b18992a GIT binary patch literal 184 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb m5F5iV2Do7pi8o9QY$?cMkhMT_fuMMf5Rg=05N=mtU;+TG&mOY? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e1f38d2f6c55064c22525d6d143f42fa174bc19 b/src/libs/libsrtp/fuzzer/corpus/0e1f38d2f6c55064c22525d6d143f42fa174bc19 new file mode 100644 index 0000000000000000000000000000000000000000..07c7aac78a464edd7c1849560cef7b6ffe28322f GIT binary patch literal 235 zcmdn5x1Q_e%W4J&hHw8Iq!_q?3?Psz1`^ebK!TCM9VAd)%*ap;R0R}*kkMcUkPSlk l<Y0QBN*NfQ!i<2601b^sHjX$gK<xxILYxa!nfbE18UQzrBfJ0r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e24e772929f8f6356686d362a5c6d81000a5b2f b/src/libs/libsrtp/fuzzer/corpus/0e24e772929f8f6356686d362a5c6d81000a5b2f new file mode 100644 index 0000000000000000000000000000000000000000..d7887add4863d7a10a3a2db0f0a230d8f44d74a3 GIT binary patch literal 136 zcma!#V`2b<qD+p|dI<CX|Np)W4As>P+wcJ0Z43;I4ALMSRh$gPAiBC*9Yg_vHH2bd q;ACKs1u848E}kO<q!}25+Zh<<FbFX0<2U%v0TdBtkO7MR{{sNbIwh(A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e27505ded1b13af4c9a60452ea1e5c8689a3a68 b/src/libs/libsrtp/fuzzer/corpus/0e27505ded1b13af4c9a60452ea1e5c8689a3a68 new file mode 100644 index 0000000000000000000000000000000000000000..c692e9ea1d409b6c0e48d9ab7d97e67b88079c5a GIT binary patch literal 134 zcmZSh|Np-@Lv=ADLv=L+17jEi5O7p8zkI0$;-5wWrY2xug(QTF$qO<C3g#-b{JVOW ffsK*Dm!S%52T0=o|NPRD_*91ffiD?eR#yN3q#Qk` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e2d32b4b3026107dfbf6271b4c29eda5ddc8225 b/src/libs/libsrtp/fuzzer/corpus/0e2d32b4b3026107dfbf6271b4c29eda5ddc8225 new file mode 100644 index 0000000000000000000000000000000000000000..77dc004434f8a9ee15a88fd5fe0ff88e17574d78 GIT binary patch literal 115 zcmX?@k(yHw&%wZu%21S9&j1Gh|Nr-3V5qKUU|@s@Fenx?8deuGg2foVe*XIPD?dnv q$r?!HF)(m4Ft{_wGT1Vhw)e~t0_p;*WdIrg1m9q)K%77ZhB^Q>a~JOb literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e8fe4feacfe262b2e81eccb028e26f30a0ae9a9 b/src/libs/libsrtp/fuzzer/corpus/0e8fe4feacfe262b2e81eccb028e26f30a0ae9a9 new file mode 100644 index 0000000000000000000000000000000000000000..a1a3fbd83d19f785ccb061c7decc3e535dfb8cc7 GIT binary patch literal 216 zcmXw!K?=e^3`PIc&A1a>3(i)wUc-%N7zP<=L8Y|nqO<76T7;fJJg3|EhqfP*ACebH zY<k7b0w{Cs8#*O|5RSr1F}!`a^WEDbySUT3%G|D)11l)a;TPSIm$cZx>&Mh6Y-n+v zDv^8Lpo>h@gw(7@1f|b4Mn=~>K@PzCDKY`33ZH>a7TChHz05*2P7QlhYtvr#N&Mvx D$vi5{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0e903098663ddeaa0a8cffb4cb0794687d443387 b/src/libs/libsrtp/fuzzer/corpus/0e903098663ddeaa0a8cffb4cb0794687d443387 new file mode 100644 index 0000000000000000000000000000000000000000..184050e1f59fe0070281d080c0bea7f534932223 GIT binary patch literal 203 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivITniZIFm2?Yk>b_NEOIY1^00|yW? zGPFP7U|{(FAFPL=T3d^ux>_B=VX%hM44e!MvOuL!qpCq>$}=ztfTUY{{xetSg5-c; Xju4Q*Vh8&JpajSc+;aad!Jrxd<=P^u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ea94a4329b77ac55425accc3f45e00835cabcab b/src/libs/libsrtp/fuzzer/corpus/0ea94a4329b77ac55425accc3f45e00835cabcab new file mode 100644 index 0000000000000000000000000000000000000000..40cdb1b6305c2e2cea3913f56c51adda71cc81d5 GIT binary patch literal 278 zcma#o%VQ|9Vqjn>%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}`NPDw7W}FtBrgm~G#H1d2fnstl=_9Q6$C!VLdCfO0MW|NjG80a8o|un<x} Tk-TCt(2EB%QgayH-B1Alu68Da literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0eadc19736f781636c50a9a0ac6b25bd4414c96e b/src/libs/libsrtp/fuzzer/corpus/0eadc19736f781636c50a9a0ac6b25bd4414c96e new file mode 100644 index 0000000000000000000000000000000000000000..18474f9e52b6a93d80691dfa2067af21dbcb1f2d GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2ht$$pMhZxLpzW$hk=13JH9M2r!+M_fRlkimVuFhp`mz= b5JNavAzWFzFp$r|z~BuL#t@ff1Zn{QR&f!f literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ed5d3e2df87df961cd2deb341b8e9a67209c6e1 b/src/libs/libsrtp/fuzzer/corpus/0ed5d3e2df87df961cd2deb341b8e9a67209c6e1 new file mode 100644 index 0000000000000000000000000000000000000000..4e2aeb6be6a4f54626ab8fa8eb4da9f06df74097 GIT binary patch literal 96 zcmdo0pWT;X;(xA}FRK}Vz>a~zK?=kG0!Dr~fCylc)y37tj0`|5Pz}=V1yTWIAW$^` D`jHMN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ef196119127905d092568e2f4dff4ca9819f994 b/src/libs/libsrtp/fuzzer/corpus/0ef196119127905d092568e2f4dff4ca9819f994 new file mode 100644 index 0000000000000000000000000000000000000000..4f46498b136295d79e3d7d15236fef4fcab9afd4 GIT binary patch literal 70 zcmbREe?QmDm(@UERb6deTwTq`z`(!(#4s>N2*^@kP-$miP?-Z{vM{V>;9&jF!2STp N`TxJVnt`Eu4gj>C5!(O& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0f0297462fb6410ce428cc75cb3ff96f1c3ed0b8 b/src/libs/libsrtp/fuzzer/corpus/0f0297462fb6410ce428cc75cb3ff96f1c3ed0b8 new file mode 100644 index 0000000000000000000000000000000000000000..4a3bdca8bd6bccabba71e3a3bfd15ef2d105f116 GIT binary patch literal 144 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO hsNH~}4y*?x#0DZjKn-XZ0|SyRE?8{=TT%Uw0RYGNCF1}9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0f12faf5d8fbedafbe01aac0b4bbc8f356751e2b b/src/libs/libsrtp/fuzzer/corpus/0f12faf5d8fbedafbe01aac0b4bbc8f356751e2b new file mode 100644 index 0000000000000000000000000000000000000000..f456c69deb2fdf68152c21bb16b06559777b5a8f GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ va~Rrz!a!0ONO6Evw0#2-|91(2*gya_yE8SDqaLcJ3S>OUTm}{pfdCu;{4^I2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0f15f407a1ac27a9b189cb1985227022d227f01f b/src/libs/libsrtp/fuzzer/corpus/0f15f407a1ac27a9b189cb1985227022d227f01f new file mode 100644 index 0000000000000000000000000000000000000000..f530bd95fb27dc76ef5362c4206a488fd881193f GIT binary patch literal 2407 zcmc&#&udgy6#m|r>PtaL90*maPQ*qqI%AC+8yZp&EP{wGgp$S6$WwxeLSBYi51K5J zhC(+Hx=?1<oqvS>3oW>ruCfuCMJaTV2x6|^IrqNj%MTe4#53={cjw%5&pqcmKW@^@ z(qtx`;p3`PFmlda1Vn(Sm>fo>4>iAz7xy@cI9_Za#FQd6N~%oH$8QgoJYRAD4s>V| zHr)6DJp(whhD?prIbVZW1Q~x!YU?W}O0@P-qK4`+aJ0o~4`Tiz>{;aky>(T68FAG( z`o$0r08U2>rvFlM>Nc6DFS|K@W;vu|7Olb2qH!{SL)_q1<BHcrwN*D%zk~e=g=VMX zblxQOm>gyrrzDw31{p&CG5Zgk0y;MBRs2aBBy-p~aRMp`L7KdKb80#^S$I(R_7CMf zXCmip;qS0YD9L@J8&;|GHLy!{%djrw){T<0q2^5Nq?r5t^U@~X3eO1^EfgD#-T4%> z34`t?b@SyL`a&&q;1};+o&q8M;W&z@*E>pfO%|VtAsz4gNCd<_Y+k|)n`4GWvuXE2 z2Fj)0XLc6JXtlao!aT{7HLP1IYEG0B`M<3~OLMz-2@BJM<xw&Cicoa*%u5zY#Hw>Z z0Si~Xa{K-{YM(xd5bL2z+jG{~y}&^$rO16BLghXCDd2yt6o+DpPAg^$at;;X>EA1E zf719C<*I(`E;d5sYdmO)y0amUa^ai}7F<J3O^}QoY6O^0@7RKxlh;@WXMI(({wJxf zz|$mie<R%2F#HJow&+~$`Cukb%tdV;C%E}{7lOgfgTA4VS9#wa+1F;`9uG~uAwReF z2D_3Q&FjtSG%;8DA^+1x9l_pSYq78vOMs$-<P)G0{qXQypzJU1VjHet?CMzQ&%oH% zL0)8RU~%zRp+^_wI}sT<GdeQD-l&cV7+eph{aZ#PNGe~rrW#`+rbeOhjeZYSb)#Fi zC|2FDeZ6_y;~x!!e?mnU*9;<U>UwIt65+fmx8p6Mc`kGNM4>?^<pT5Ru(`l$s)zJ> z?$R&4lN-*`Z`fOIyalYeaRUf=w3GzoFqt|{Fy|&ohqn>>nR<FbeT6KM`FI)ic~<G0 zMR~h!ZUPrh5MKrT0scWFFj21~iC*=<Rbu(0UazOK*Keh4V;<M{5GzMCx_RWKX;q_q zz1Q_xf3~*H!$r%bg3AQmQ+#w2qc+uQg<ffwI2V=Z8hh8$yd7*DJL!12Y)6gHSKd4B XY2hkWIn;!c?KawRt*w62-JIkdgbQ$& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0f457ddfd42fd5dd20fc59eae9c1371d9f274c70 b/src/libs/libsrtp/fuzzer/corpus/0f457ddfd42fd5dd20fc59eae9c1371d9f274c70 new file mode 100644 index 0000000000000000000000000000000000000000..3b0760c4a7135e6574be60d25a6f6a7f47e8d10a GIT binary patch literal 69 zcmZ?tU|<knU|^8Y)s2tO{G(e8WCH<HEQAJ<l29O;ni|ib#-PbiTAUhR{r~@eu3I|Q J)(q7^004y;4_N>J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0f897cf0f5f6312eb24bdd6f702987843df0b5fc b/src/libs/libsrtp/fuzzer/corpus/0f897cf0f5f6312eb24bdd6f702987843df0b5fc new file mode 100644 index 0000000000000000000000000000000000000000..b61d7129a3f71c0fd21ec1e92f8b430c7c747448 GIT binary patch literal 105 zcmbREe?QmDm(>hlz{tSBs{S7WL>QPE1Q?R@i(UeO8xVkKI4IC>Wt0Uf2O=P-E@tEc WVuorU1Og@t1~w22f^<L%7^(p_4<x<- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0faec3c7bbe27664d58ffdb654dd5650e56a010b b/src/libs/libsrtp/fuzzer/corpus/0faec3c7bbe27664d58ffdb654dd5650e56a010b new file mode 100644 index 0000000000000000000000000000000000000000..6ade657d37be5333b33166b0c6b1c25798eca17e GIT binary patch literal 580 zcma)4y-EW?5dKa?)>J`Jun?|Fs-zBB_yl<c*Jg`DFyf`k2$w3+N(8YA`U1X$rElO1 zDC7mST)&yUm<S>nxSiSg`SzQc14e~=uV4~m>;ob|hFm>ODKpq7C+#MB8rT|NYy*e1 zC^Jmcxl85LGx@|_d}_?+L{Z5JTE(w;klR&{QyITL0EMTm;D|em*id~pp>P$Z1~~%j z?WvdUIV^lxT!%jhCkQDwYlF)D&O1(>0m0utrYt=(Jl8$><r6=p=#zlWgo#RNoe5Y= znoRkprJCvrQRdr3R7?9!>w%-BxQVU`Z+r3~S8Hs7Jg}Ip@c{M{82b<c+N$ZvXMASh g&qSmQUbvc!ZL8b{AEk1g&gy?bk}cj#od!0(0pPB4y#N3J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ff2e806b8e0557f336dfcd9a2c3f11af71d20c1 b/src/libs/libsrtp/fuzzer/corpus/0ff2e806b8e0557f336dfcd9a2c3f11af71d20c1 new file mode 100644 index 0000000000000000000000000000000000000000..220aafef1e0ff4944da84da7f5e5655a19c975c2 GIT binary patch literal 102 zcmY$<%VQ{sXL!I+l*y4=%>V}f|Nr-8V5kQ27$E`-)y0euT&)fjv4+wNoD2-IK(-K= XFWk<+FbBvIVBp{Yn)06kVq!G_?p+ct literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/0ffed8703f6db0aaf1fbdee67426f19868359873 b/src/libs/libsrtp/fuzzer/corpus/0ffed8703f6db0aaf1fbdee67426f19868359873 new file mode 100644 index 0000000000000000000000000000000000000000..6931a85a24970e7792cd1091bcfc6c959fce98ee GIT binary patch literal 2245 zcmbVOL1>&+5dQvb((GE4XlhYWx@~PXT6fzRMYKv%P}D*Qo;(EoTl5zfOI-J_wb>`x zEiMN1)RPG7$%A-SiYMdElY+SwDM+D*px|xSlDOkH^WMMN*h;}+|M$N)Z)V=SnQ!Lb z*DK3-E(W4{B9m1ZiO3Nkb>zwd;B;~ToqM=h#N-<AaEH@T<dGi}jQ_@k2o^A}k{IU$ zoH_e`64$n*cMTEHsuh5TIGey<9nb<ePGXEENXNT5ps6!8q(|aB^*P-K?%<7g>$PKL zI)PY_Z%}5OHgBf9gQJJJ$Xuq6Bi?!ER>Cc~tK`xtJ{0?)1Uw5|#Br2)04e7B+)zB$ zFUcL7n|iOl%s*fvIMgkrE_lG#LA5mhIq8ZH8EMqu57e{zvdXoZ*ypWas*4mcBk(lO zL%o_$c4C0psAc+#x~H^PhdM4_rjPw)+<&u9NEOANQdxh=&ln3{(r9C2;|WfFM`6N} z0eAAHWu^qU&oS6u2&WwBd3OZ!K;@J%3)uLjQmIVy3G^u6+`8BO?A+ayCvtwcCjCz@ z5*B(B?wuj2c3%gPIZ*)psta8zy4rqm>oLNf0ct3rsEK2ORg<Gf1g%~#TqQMps$ig% zKjenT7eMrVPi$oL<q4ZjFh54_s6xhvX*-MD4hxtCHgTFY5fpM;XnurYce31>z{`8T zUU|$RngJosV~Il#<tDG(L}T>CRAk<~M-SX1dZQ`l;%ZT~nF*1}oV+bKo77NpWtNrl zU`DSGs9}YvDxN5^N~v>k+9ZP^dO_bLIqB~U%oMhiQ5e;rRgSr|b0;2$mLjrHb+Gac zrWx*9J$Wms$LTV?*Gp)yWLtm_In(qNl*4CE_q7I^XrYXnMthCEX}xnJIHLg?4j7QE zQjtWzzoTF{LOEtFjapew6wx8!+DE+P66La=7Gb6zznQSXco?us)h_Z|UecjFXlaE5 z7*XtleQ%pSGzC`=?IPX$KXmJ!;Tx*j>)obj07V~zotC4$f)|OOe22xBCb6q7v4)O1 zydth4vPr9n7OdvV=&lkXr%m>gz~BuRkjtW+#OF_2hb|y*dHQ#)g$^BH@o|?{G?AKe zU_Bb??%&_0$*y%Y<rQ~<!fBYNoyNDyhrPni=V#>V1ZT4N+HHv{i`o-;<OLj_=^Tdi z#gIyaaziw)L!|hKFlQP4Q_;vL&{x?+-?Z1@D{PL{6Sk7(C0S>eAL<ak3Wq*G7b-k2 zvl#G6d2?c94-+v^F8VfMABYGq>X|0*9<-@hS@LkqM%wiTezKRJ514*=UA1knSkE%O z%30rGrGe$;y|?Ze6{2;@9Rzz)XMm8FcFb38+q$ck48zNhy7I)@_HLOU$+z!zkny^^ yWqj$;j^OWJyAADw_?D7u^iIa%+7AC^=L`BnX@X=>n0CbAPlzl;v_DLik<vdJiOqKa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/10020fdcdb69d0b4b5600c1e476d3c7dee0a497c b/src/libs/libsrtp/fuzzer/corpus/10020fdcdb69d0b4b5600c1e476d3c7dee0a497c new file mode 100644 index 0000000000000000000000000000000000000000..c2da2bba5aba0d81007bae88794eb582241b0fdd GIT binary patch literal 153 zcma#o%VQ{sXJAlHO8qaK$p8lb|Nr-8V5rV!U|<9@su>tAGBPj-fF!Gn8NnFH1S<Q# zoPog_$OKA3gu&9)>L8UW5GfFofs=tj7O0}sx_FKdko#YOLAafPVGe@>0}BHO5CTnC Q0Ez$qFAOsEKZ9#E09~OYJpcdz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/10353359261f90d378d885e136c8822da559e277 b/src/libs/libsrtp/fuzzer/corpus/10353359261f90d378d885e136c8822da559e277 new file mode 100644 index 0000000000000000000000000000000000000000..b41073460ebe114d02f3c21be68335986247085f GIT binary patch literal 2730 zcmbVOO^94Y5Uw|C$gCi&I|<1eA}=blvS!yLMidvxfQb0B1VzXpgy)z%m?4{G*f$f1 z4Lbw=j0ZjBI56VDg9H!W_UPax-ULCA+ywEkXJH~nw*9`U_ukCxxGbc0w)=JUSJl;3 z)zv+??H}FQaU!zoD^H*UJvCfRTwvemP9=f3N)L38O-7KxWcVd<F1g~3j%>#DV%ucF zSp#O*Z=t2~BgU8VP!fqC{c;4(X1y4XB;<vlqna;9(kP??QfTmNQ?|D`S5h|Q-(JJo z4%~g{^X=_rl{i5OhmC0O7PS{yO?#OYISIurm-OeAH{X>Tt!A|uN7v#;v!;TBq*;9~ zY>G7Y*lbq(0R?nIw6fvb{CId;nijpEv&t(QvM}v9GeUwO)D5_#j14~y_hg$rE3%_g z>1HwAe@xDZtPA6Bbd(I~OBZd|$){iV0^OE8&*>{7#laxY7}20|A{0q1A2f87Kv>`p zBOR0XE5_fGhe`X1x!Z8l?eucac`5b+hXkGZR|S4hqS*(L-zB2M7+*4MUw#rK^gWDv zJ>7RniulXP!0`Qj&cfzC{E}h3`pJ7m|D4Gj+h31CxacHi+%VJj)n3d$l3?liPHH(d zjHrjB0qO*EncpvG4mLLjH5)ghQTVbWE@g=B8@>>N3|$&hd5a6F(p2-+Y0Y^l8EJO6 z{a`{5)r``Bx|lIaN97gH=@2c&?%w4v0|?I9U(wPAP|axiEdEX6aTa&JKd&(tDRrL# zypPZZCv_FXG&?dn20Gj4ciE9yO=nmi>T+SP+}B2A|8@`sv(%sT_g9l@8+FucVyXMb z&4NGE!cCYSLA1IBxCwh7vS54^n9pX%s#}E<4?}Pw(;uWq#QQ)GN~kP0x|Wm6`h@|1 zRtX;H09H-RshufK0e@z&oXH?6>|jB|-BJN(ciK=quAPb+_+&!613CP=yvGDmDvkLe zN6~1m`35=eeUYa>jD4xD^Au#-Tn8Y_pI-o<Q*4?*re40a3uZ2Wt~|F;j)x-1#Z}WM z`Q5W>caIOH^fAjrMIKQ{Lwg7;7N)g_yu9uva~?-!ja7qI$I;E|dMl0^wHwu|VN$Cu zH>})SP2=qh)m<Rb@*Y+GXD~_Hls7FBVI_ZF18Nt#Vu4Wz7EI#E)qz3Xc-NyQTh$VI zje;xET7tKgW*$iU6FuC9+e!Iv-nrv%opv<(5Y}<^2opZgI+jAxZd9@Ix`HRlM8!Il z9EJ{UE4}6af2dF!qo7K*Y_GOL8743ANg^-W+oKR&zbLo}&(Y*2BZY?uB0MY4!fOpF zFxoRzmeMyCOhg*Q)a#(H;2$&>YBzQ=ZG7A%!hAv6_7G_#L@i!#(B=Gj{{ehTXDZ=K zepC{M-(D-QI8`7aSj^gYm_u6>(YPMF0KU>oXf+W`)XO4n{}bsXW}tL|qeY^K*`*ny z<nXwsvy!70=_2~oTB1aRQ-NZv&$+X0ax`W05*sRK{1_->bPQnMt5{d;0R~{^ixRRG Gb^AYBQ19{p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/106899ffb306c8414a01763d3641ea3d49f15f69 b/src/libs/libsrtp/fuzzer/corpus/106899ffb306c8414a01763d3641ea3d49f15f69 new file mode 100644 index 0000000000000000000000000000000000000000..35138180629cd86dccf29e08d078d1c89872d5ae GIT binary patch literal 421 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5^!%QH!2_j$sqCx?rs2Zq( ziDCavhB~kwkPwie1~kUegMmQ+$d#zBzEuqrGfM#jkP2k*Uxa~~fuTNLFONYo9w<?i z$&p$QQSkr&e_x;tVA~YHLe(umr5sf()@qC(cQX_M&8^l1X;Z7Nj?Yv8i2-%}|1Zq^ zKjS|`PHF*zdbMtK_kWNCR0=E)C;q@$U<Sj=N}Xy3Eub?JIqET;p`ZXZCm#$zPA&o2 S%?Nco8_4l@i2%g=IRF65nUm!J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/106d937a6e03980521f5cb5ca1da09f668361e45 b/src/libs/libsrtp/fuzzer/corpus/106d937a6e03980521f5cb5ca1da09f668361e45 new file mode 100644 index 0000000000000000000000000000000000000000..85b8f35eb061c1662dbfb5c1fb04c81326613ff8 GIT binary patch literal 2994 zcmbVOOK4nG82)ZLX(qu%$Vh0^*wJWXTN>j7L}DPJ^+8JL(nZlr#X-l~5OSMRdZ7tu z4T77lL>N~t-0G$q#gLV|qDy!2fiO_0s}yaR<M;jNoI8`rw1xgN_uTXN->-9*2Z3=A zR_f*2nkImAZV||HAn_Z>v&297r0pCn&4d#e{XV>rjOSHUHh^auoR&~VIU!>Yt9jO_ zdk*ey4`C7)L;>BRR!P_ZIparcRQM{3(`P#z9Qi)373PUTI4!xFR5f74Mh+KK4xdw* zB(S(5t7XP72}&NV@)ubIg^QPGu-8?Sg|BL23tT#<v7m8U;fRgS-F8#yl2@S9=l_w( zqA;Zd(4_a#a&wQ_O0*ew?2LoOBd)7j8yYac_k!j;Z2vh!){s>`BwFSOO1xL&l8{c> zMtBto;VlB5T&WM$)`kt0miYv^ar%bf%MRWh(<1Uxm#}kNF1eDq1KfDRI04_(%gcig z2^$Zh>+?dIZxEWz=7Z36KEs60BMjnq2l+Oa0dMk|<=nE<g5g7Ow$s<%kBn>&s}wn- z>!$ddu3xDi>Om4!9*>jwewX2zWpI*}nybWGa_-rXC`C~n1|w4C&)1^tAe5L&1KXT9 zpPa~#AG=S<QA`KJKFfk@Uoegr0zbxahTMSRBqU6J+-i8571>U_A|uKsp9ji_t*tHK z_3v`uD2|a!;JSkP2jw;6%VG1n8*1*Y3p~BUOjbPRz9RglA%gdGRn&~$&0)p#SFJ2U z=@=)Bk`!2w%AK{S^uC9*qAOCxAlSP@L6Bb-sr+kX>U)CB6YwC|lu4VILfj_INQuyK zxqQX<)PAT-N}jxbM(vp_F2B&2zyw^&S?lAO``4-JBM)U*T%=RWYBZ1RGtQJ-BHsD* z(z%aUYqfMa^zoLd>$Ac)S&omQ>bs~l-cKq<PU@g(yaS}~2;9!-=%+GS4Qo(V^GVpD zyeV84usfTD=CjK^D>~oq>lh-97~K8CwK^PuhjPS8?-WdXO}q3x*`;ujbSOOWbq`m^ zSn=WvZlme%{{vUBqB(6F`p4;lb}(rJ?<~7+<(>T(oZ@ZXY8M>~OPH27)_#7_k}$(3 z9QjKY-(z5#o4U=i=Q+VUhLyIKFqZmor^_E+&`A$iR|wzc!KT*@2iv!hRoi)srwvaL zt;mte=JnD*Gj9$l*XMMLjCGY2<3InF*Y?nf6KPuCJrS=hlDG-x%uOm?R2Vl4d$V-9 zo-!Tc-T|9xsK!~uHE+afAjv(Q7ziU>Sbn?5rz%yoC0`YlP#pH9uoVS&CIOu%zp2+Y zFkE&ob6G*W>q@jpUmjgOJEYT}u?HlF5nAlUgSskB5I+Hm78@jo78_Q|1cQ*0vRt>7 zTo4#i{Ymanr>bGb2>EjN)YSWD&KTDUCS%p>sK^ZL%DP_taZe-u$QtqJeSs)a4_+Uc z%1@r7xav)o)W$r}zwK_})nwf;&!p2#LA=OrF<Z0tZ`;BZ%wIhfz<Bx3Cmhi=F(E-j zUO1%@hUQxqaL3)cOktC(rJr{0p!^b1+i{EWFT&qB5zi{pye{u%d0(yqV6NuD98)1L cBYcZsoj<W=m=ZiE>NZ&JUfUb>t|+(u2Xd)_5&!@I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1086fbbfd6b30c19b6dc5416b7e90242e95ffb59 b/src/libs/libsrtp/fuzzer/corpus/1086fbbfd6b30c19b6dc5416b7e90242e95ffb59 new file mode 100644 index 0000000000000000000000000000000000000000..4f56bc2a76fa3a4151a35829be2eb0f2c3addf53 GIT binary patch literal 69 tcmdl#@jutgm(>gqAO)m;F(@!JFjN;a0@*-ukQ7W9$b$;&LZzy~DgY*B4RQbg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/108b064b51c763b4ad0746b36dc371ced2a1df53 b/src/libs/libsrtp/fuzzer/corpus/108b064b51c763b4ad0746b36dc371ced2a1df53 new file mode 100644 index 0000000000000000000000000000000000000000..46add92b3271d160cde9ae3d06183f589302b439 GIT binary patch literal 359 zcma#o%VQ{sXW(G`l=@#dlK~9=|NrmHz))Syz`zJ+fCZQt808t5c!A;>K!th?3<#C~ z88$IqZvkrg|KPud0K^=I|CtQJ$chlg0gVx0s0Q&hszItjHlvtl3zh;oL7w3*k>&x- z0D6Uiu?XrFUxxo+i0YO9zZen@FvOgB3^W-Eq(FAxNAdL~u=lap&A_nO8mvu#QKz+p hjk&s*5yaJ5d>3S#03*Y9u<S~Pl|WDlR{HP%e*mE+TS@=` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/10c2c1a37537b0a61065d730ea05d8012da701aa b/src/libs/libsrtp/fuzzer/corpus/10c2c1a37537b0a61065d730ea05d8012da701aa new file mode 100644 index 0000000000000000000000000000000000000000..361ece9a9fcd10252682f301227d6c5c79a45d98 GIT binary patch literal 112 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E85Mj(*Ez#ssUsxF=bBw0XA5ctnv c4PkIHFvtQGl>+63fFcUQ3>YHqKylY<0PN2bZ~y=R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/10f85c3d2ee49a5314f754d2f36b1b9bb10c639c b/src/libs/libsrtp/fuzzer/corpus/10f85c3d2ee49a5314f754d2f36b1b9bb10c639c new file mode 100644 index 0000000000000000000000000000000000000000..370dbd7318578cfeafb6205947ab1a89f2424034 GIT binary patch literal 69 zcmbRE-=6DbYBd80{J-_}|NnFU85yd9d`7Sk14DH&kPpHTHSs`ki+GSUNT4W_qaLUZ E0ROBJSO5S3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/112bf82f42f7565c078c10cbacd857ce7719390c b/src/libs/libsrtp/fuzzer/corpus/112bf82f42f7565c078c10cbacd857ce7719390c new file mode 100644 index 0000000000000000000000000000000000000000..dca6ac284bc015cfc35929967189c3dc15e104e0 GIT binary patch literal 69 zcmZ3<z);5k1B?(xHKU|<9fVz+YLLoU4H5?P9T|XfzyCA*{oYax6u1J^%2@sKKL9w0 B4a5Kd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/113cc39dbe4e96e681d052a79747ad2927aa6730 b/src/libs/libsrtp/fuzzer/corpus/113cc39dbe4e96e681d052a79747ad2927aa6730 new file mode 100644 index 0000000000000000000000000000000000000000..55657cee0af1fc3c483c4aba71b62f25bf00f85f GIT binary patch literal 54 wcmXSpude54XJD*m`2C;Z@AsA#hDx1k28JyR3=AOA|Hy21hU%7TcA#V?00<%xdH?_b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11610fedcbba0e344e28e157e9aef567f5d16345 b/src/libs/libsrtp/fuzzer/corpus/11610fedcbba0e344e28e157e9aef567f5d16345 new file mode 100644 index 0000000000000000000000000000000000000000..646135550dc9e93fb4c8ca7f3d697303a84e9820 GIT binary patch literal 108 zcma#QlgCiPz#!(yP{a_=00IC1|Mz8Js4ik)U}R7L3$^yLG89)=GgLFG3qaJE@<3<? nP6h^9hT=Iw3^Gsw5GCBsz%WMz$ly$kFH6iRjZcj);L-yC6%-OD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/118f06bdbeb591043148d4e5d1ce27b0a9c9f8f3 b/src/libs/libsrtp/fuzzer/corpus/118f06bdbeb591043148d4e5d1ce27b0a9c9f8f3 new file mode 100644 index 0000000000000000000000000000000000000000..fe535a87963135b16174c993612bef629d7e4f72 GIT binary patch literal 1529 zcmcIkJ5Iwu6r6P|VRwjB6p<r~Pk|CaLBZz=h$Fa4kphZ9g(aXtX*fbUZa~9f0*G6H z1Y$G0YkSv54hYL@`SU(r&wDe^$q-kU34qBs7~SyBC8az8(i9NJf%HO{lRlMjiX#&l zAPh0}5iecyrO_;y49}sEh{;HH$7XwrWV3)2Vci5v*Kek7l{`%i2g0psh6BM{<@Qd7 zZr4EM8DRvS0b5C>1x?YF->+=$nwHBPoXEgc;X{ZgU5B4%IPhz?*_aWEkAR23${UT3 zOgHHcMU!sRqm~kkB1r~7PYbK)mVk!{?C9OS?4)P8=<smt_tyAY-|J2RerTqwePovU zEOly&Z51|AHG;isVSmX-DPP{7E%JXoRR*TR-Z-OM9++1Z{2^Fa3LH&nmg0CG|IQNI zU&GR#Ew?q6uKyw~A}szQc0dp5rr;PkC<N4u-@aRLJ`L2X{H!Intm`&Are;(xGpOou E0d_+AT>t<8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11a49d50bc766e99bf0dcec52086f469a2f5f103 b/src/libs/libsrtp/fuzzer/corpus/11a49d50bc766e99bf0dcec52086f469a2f5f103 new file mode 100644 index 0000000000000000000000000000000000000000..17cd7df364207149b5651f363174ae6e599143a8 GIT binary patch literal 49 ncmXS}W(a)AP%K#u1wi&oC^Mgl0St;67^)dH85s178G(EN#X1gK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11bc680cc678bb6bbb5e680a990265e615dc4bfb b/src/libs/libsrtp/fuzzer/corpus/11bc680cc678bb6bbb5e680a990265e615dc4bfb new file mode 100644 index 0000000000000000000000000000000000000000..ba37c67a77ec13bfd0710e1c7cc31176de0971df GIT binary patch literal 139 zcma!-Wnd_YXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ ta~Rrz!a!0ONO3SQ2r#sL1G4^q2P*~=V6!_@Gdb#^YN|lSgUm$-900_67RLYp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11c2513261f7802865fa2c2d050b46b3928b2ad2 b/src/libs/libsrtp/fuzzer/corpus/11c2513261f7802865fa2c2d050b46b3928b2ad2 new file mode 100644 index 0000000000000000000000000000000000000000..296b5584378dc4ebff4795269e9df31542fcec22 GIT binary patch literal 1023 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^JO+?U7>iQ>3ui)%N4P{4?j(5zNr)r{sg5ebhsq_Dhv5W9BquNl0F6Ue zp$k{RDbD~_!GQ1yasWM7QX<tg_|+pDj>bmBB_ZcCFfwijM>`86rt@(cqcR8RG!_O9 zAY^1<e*onCfTo*jZD69QhD8b}!TbZp=YI|c23c^zf`=9(0~3Qh129Bed;T+5=fV;l z!(tm2Ss|b{1t#Hk1_q!-b3i-;1}G0?Eij!T{5yo44RkbvGLq8~o&d7+P<U_-DH-G* QFrY9KC<8pmLD2;Q0G=tB*Z=?k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11ce8e0171a1f053a92450f2618e202e33c0e07d b/src/libs/libsrtp/fuzzer/corpus/11ce8e0171a1f053a92450f2618e202e33c0e07d new file mode 100644 index 0000000000000000000000000000000000000000..39e739669344b18ae6debb0603349f70252d774f GIT binary patch literal 2407 zcmd5-y^9k;6#uO!x+(|JR0?Vo%oTzjcjYzdtVFa;v8b#N%$<_W$?1Szp;%iA>HI^^ zKjIp@Yb=6=l|c|P{@!~#$tJFeL<l$RzL|aVzP~ov&C+B$-R9$~E$H&z-vyilqS4_h zPE=5{dmQfZ5b-^nT8K%-b-N%+<t)ygTXOKhpY8W)5{ABUNpt|$2gt-oITKvVBDls! zt}g<@GK!iIIZ`P5Ym%F9i0Q4b3eY8Fa*!Q$DgZX3eU*PNS$|68#(m%A*5T{Sq5(WD zY7hZjAw!Ild}G>l`iLkKJXYboUOWgl)Ly@}gNq4ebXsxxhCId=vVfXmT;^N`SI7A^ z{RY;7z8=p2mn8-+>#brFXs0{L<Ij@Y7Y}#aY4ZHhvnQ=~Y-|=0LVJWw9c%{76u#t^ zktX(+FdR|nPhdr4yPI+mtlJ`HC{{Jg1e4#MufSW?Kf=tmXhcRvp38{~2L6);BS9v; zTxd`>VS#bJG;jV^5PxLciegl0QZ{hZN@MR3YN=}H1RtBGz~FMcyFq1hyvtKaDoMs1 zV(X0=p<vg&GS}wDKVipo*)dTkoj<pL;$*9+os*MolEOThra+mZ@1aL^!ZC60x~EoT z&V+Ooi<I%P5E+y_=hI<a4hO4>CKwDk=+4>Kv8<1xYpj)Ka9P}3PKC}aI!110#r<H= zHM)6l_m4yKl^6bhMpF`E9U3MW)hr`jrg)KJ7&pY?Cu<#npSJLgTP2eAj9jKatNcQ? kHO6Cavv&c0$e;6gsFi1<5JWmy63X{gu(ITD+skQx1Lx*6C;$Ke literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11d3d01f2c2e8294a7d1baff76819cf558b57500 b/src/libs/libsrtp/fuzzer/corpus/11d3d01f2c2e8294a7d1baff76819cf558b57500 new file mode 100644 index 0000000000000000000000000000000000000000..f41596d5763dff3a8c6238d5c495e7bf0ffbd904 GIT binary patch literal 664 zcmah`!Ab&A6g{JYPbjEd6&MPw!gSLjiWWhOHbH$r41+vUP>~rd@Ih`e351qKNdM5U z^aJ$`EnFDP>%2EJX+m^i-o110ednEXZ^Z!)T>ySV$UZ$yPodPQX2c?-d*wB|((Tk+ zUac6^y`4@DC?G9Z9Ag-rc{-E8-GoQq!8V<_PV>=_qK~2JF_yIS7&~#3FB<}JkLW>b zeFEIyY8_*s6nt$&y{Q$Hfx$?pRS;K8%+Z)jt<e{eC#|hbh8eOFct!SuKL#zRGQb6J z0EBKE>+Zb1_tE3a+rvatpA+kwiMXVQ-`oup_5IIXJ(D{D4fl~s4+2g%;ZEwI);&L* z<BqJ~63Ar?k4jZtkC(9rG-cbZb-iv=^3^jHtU`Sv`YaJ3mqlTpz-o7F1_3*WCjqCx zIAt?DmXhG;=GYo+w;kKLtz{PWXQVIePwPSWBjV2)7_<@<^6lAnY%*Dy-P1IJHzO%4 GQ~m}qA%5!s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11d784f1929d0a45649bb5be9d007e3770a67b75 b/src/libs/libsrtp/fuzzer/corpus/11d784f1929d0a45649bb5be9d007e3770a67b75 new file mode 100644 index 0000000000000000000000000000000000000000..394d6dcc43bc90d6440994cfde08ba3a24047847 GIT binary patch literal 828 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*Z z+;6OMFg;ME3=B_U%HSf{4aKVws3jU=H-w~`3kJ-a*aLxT{z48caLCdqw&?8*cp?Ha S;3<nXNdp>$kZb@<^Be%@Cv>O) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/11f711de1fea529eda028d72bec4fbaf52142955 b/src/libs/libsrtp/fuzzer/corpus/11f711de1fea529eda028d72bec4fbaf52142955 new file mode 100644 index 0000000000000000000000000000000000000000..b261d078d87aa3bb3d2b9da9399f41cce50225ea GIT binary patch literal 270 zcmZQ%V5lyxXJB9`%H&7|(LnIu(Hg>-_<ujw%a_#*|3RRRfg$-j1A{CBBNi==KtV7- z(UQl&kWN^OAt!?a(9{xKu3%tBGXv;Cpj}q~9R(PGjxpjySHQpk@&MFDY*25hRx=bc Y0W|<M`~PRIE`~XnVKKzB0ziRO08C>x^Z)<= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/125ec7476de02df91a1b7fffcae7af02535b4a7e b/src/libs/libsrtp/fuzzer/corpus/125ec7476de02df91a1b7fffcae7af02535b4a7e new file mode 100644 index 0000000000000000000000000000000000000000..853fc10fc09b6726d4f178e5de4c34656e279ab4 GIT binary patch literal 611 zcmazQW`KaA)J%?g2=o8{|Go^2)zyp)+<(9#`yc?S5+C*dA4s;Lc#aT5I7HnXhT}lS z9ENsb1`Z&E15`EbASDPj|AFcm82<kUt3C%Ni8F^}y99vNP|3|;XVTiuT;MQ72_Hz1 t5*I#5;apwJNCm&^<uR1RGcYg~rT!Prgt!Epd>E>$s~H#;TMIBU0sv&JV?O`@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/129713ffde375e2a70a33c335ef12123815a6f08 b/src/libs/libsrtp/fuzzer/corpus/129713ffde375e2a70a33c335ef12123815a6f08 new file mode 100644 index 0000000000000000000000000000000000000000..128a2d6311ff2129e237a5cbac69ec2d36f00ac2 GIT binary patch literal 39 icmXS9WMB|rU|^`O)~SXA$KOB!pr9yF!~lq&W&!}%Pz;{{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/12b841b6938f6bc4ad6f9280414dc059e36e4628 b/src/libs/libsrtp/fuzzer/corpus/12b841b6938f6bc4ad6f9280414dc059e36e4628 new file mode 100644 index 0000000000000000000000000000000000000000..e001e38b24d48b1cd430be08cd97e10dadc44070 GIT binary patch literal 82 zcmdl#k>T}9cCPCG3=9koQa}O-6c`w)s~H#=L2MvVUCapMp9G5h|Nmb&-XOcUy1Kaf QS86<1wwMtl1D0X{03(?eX8-^I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/12c4887d4f77ce1f88da51c42373c1677f5fb2ce b/src/libs/libsrtp/fuzzer/corpus/12c4887d4f77ce1f88da51c42373c1677f5fb2ce new file mode 100644 index 0000000000000000000000000000000000000000..a92e8f15596713566dd9a5a39e2c8dfb3825c0ec GIT binary patch literal 1004 zcmazQU;qNf4U9#pnH=>XHUq=||Nng%7^|xp8Myy|1@=Jzn2n$K{|_YJP&`M7AsnJ| z4nsQw!yE>Nc3}n%AOxBY7Ww}lBn?+{9LNER!_<J}fB>&K3}6%ffz&{a0h&ODImqr| zI0v?uICDs{iwnc=V4Fa`CdnKQhU#KQU?5@%XC!m%p@!oRLl$6Mu(gBY8?2mWeuu<6 gE;qx{26g=fN_7M4FH+Mp)zTqaCIZK85s<6~08Lh&WB>pF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/12cb907b48884f4aee44a0d1bab61d27556659fc b/src/libs/libsrtp/fuzzer/corpus/12cb907b48884f4aee44a0d1bab61d27556659fc new file mode 100644 index 0000000000000000000000000000000000000000..1945b699fbd7977fbeb82f2d4e34ca548f7042de GIT binary patch literal 112 zcma$5m&YI(&!E6il*y4=&j1Gh|Nr-8V5qKUU|<AFfIxMz8W1xA#ni!k1_nzY{TjrU wWMGg5ssl>T5n`}rV8}_$i%-taD=Es!XJBArU~phyNX{=R&}ZOM-~g%u05wq-PXGV_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1332d4bedb9482a958e4a9ee88f0b2824ef4ac4c b/src/libs/libsrtp/fuzzer/corpus/1332d4bedb9482a958e4a9ee88f0b2824ef4ac4c new file mode 100644 index 0000000000000000000000000000000000000000..5455ec002323b3f502c5750e0c4e3c91c60261f7 GIT binary patch literal 108 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763alWJ>S8q@W(10<gSbFo3B<2K t3{D0HS%%^{LJY<X3_0=1`BkML(|{nEAwIJxFE#(aO<qY+ehvcz69D2b7i9nd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1347b7e3c16ba49ecd523c6405d33fee8e9102d3 b/src/libs/libsrtp/fuzzer/corpus/1347b7e3c16ba49ecd523c6405d33fee8e9102d3 new file mode 100644 index 0000000000000000000000000000000000000000..38f61e2729cf91e1974e00162e3ff10702b1b74d GIT binary patch literal 587 zcmc&yu}T9$6r4K)*%X4BN+FPdq!3LCOB)3X8$UsoBP`}1Il`@{kOi+%gCN+;g5Th; z_yvN0U~z>-*4evDV`t^SzV~)^Zh3F^1~S2w1dzr;<;;ZphB4=kRlud>bu`J8oQ<c^ zsH?}X@6UyEpUpt<&|*==Hj^jtP%z{H_L%(VM2c9691E}USV`urYY9>n3)C7hhjZ=> zc)W9NCFp7MQmMlY>;v~tZq4ZWv`3C07j7|k(Pmq_mSuxo3A~~C!HvI74_V*>I0ED{ z!M6N0Uvw~Q0Ui8lzRQ1@kH$_#qv~}qG&gn~hrmQ7a+F2cL`mI;(VH+|sFoj`Xj$(O qN{_5S&|w{xOdU>cPiq8Ny5pUS?ibL;KNyWeX?JNq{{a84HpCA<WpNw; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/137786a5add9ae16566d363c74a98339bf95069c b/src/libs/libsrtp/fuzzer/corpus/137786a5add9ae16566d363c74a98339bf95069c new file mode 100644 index 0000000000000000000000000000000000000000..eb7063146195ae1b1fbc31763061c69df9b46b35 GIT binary patch literal 582 zcmd5)u?_)25Pe5;3W=ObL1?ImM6cHPhRsD*NRW$l3M;veQZGKoANUGCpwNt&Jr|K& zrLxKH?9RNId2h0+x57pNSkHZ(u;oPrYsbVlkGEFaa2abAHJ7t+VrF4CDgkwPJ_j#2 zre_t%_d;MeJoreYTv}A@TF?CiN6vIB52Bb|?VFus;hpC13Pdyl)BTif8GClbQK*O( z8fWpQ>vOsh-F5~=Ynabfd{RVO?Xy;GhZMhQLvYr1QWyHb-CdpB9C1$<{Tp$^-^KBG dthtmi02X?sCb5yf5c53wtr}4f1XCU!qh40Wc6|T< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/139d5e002579f5937f218cf10a73d89e8edf9411 b/src/libs/libsrtp/fuzzer/corpus/139d5e002579f5937f218cf10a73d89e8edf9411 new file mode 100644 index 0000000000000000000000000000000000000000..c7301b56455c29f1e7a714b61ef54d3b9001f894 GIT binary patch literal 54 zcmazy$S$s~E>4ZF&ir3o%@Fv%y88eBmkbOHObiwb|3N^jy1LpbGae`e1bW4c4As>P E0FVq70{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/13cb2e6d4f20030a7dfe97256da1fbb6f06aec43 b/src/libs/libsrtp/fuzzer/corpus/13cb2e6d4f20030a7dfe97256da1fbb6f06aec43 new file mode 100644 index 0000000000000000000000000000000000000000..0fdd888c7030aaefe6f6fa7b430e213e452f0b7e GIT binary patch literal 268 zcmXv|F$%&!5S&DdvlCNU2npCI`VSkQAV<)H1QbGo7P%r8Y7l&Z<P*NYU)ip6CJyY* zus6FmT13VgK%Od7kqHr4yA~>sW%McDAC1nEL%a=(Bwl6%U;<C^u|eJTfaC_aeb_1w zbCO#J&N)(}D%8&7@VAuIt%cv4RH5^zk`ZJD+%F=3LsZyj>-L9O0N01~Y|-sUoDrP) hwrEC_Ap$0wHk5q^Q+QE{&$eMXxQ*Y@8HL_Ky}yTPG&TSL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/13d2c7efc608333c80ad377f00854cc1eb477ac8 b/src/libs/libsrtp/fuzzer/corpus/13d2c7efc608333c80ad377f00854cc1eb477ac8 new file mode 100644 index 0000000000000000000000000000000000000000..53fe07a9e5a298dca498c62f371ed2c574683926 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BamNRWyhcn5^-Q)u!hPo ea0)QU0u>7}%qeDIP+*wD43e00Nf;&%qN@SkH4q*E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/13f2ccae0436f4625fbbea1b467afa94708cf677 b/src/libs/libsrtp/fuzzer/corpus/13f2ccae0436f4625fbbea1b467afa94708cf677 new file mode 100644 index 0000000000000000000000000000000000000000..dae2ab0049421644720fbdbf371923771cde9869 GIT binary patch literal 466 zcmb7Bu}Z^G6g@8}rcTmKEp$+vix4wup+X%j)TJMgA!G=YSerOVK*#Fn7|i0*PsnKT zA6#wc{(v}$*Ylp0Iu$(2yXV~d?&Y2f>5BLOMv)!f@+Cy1hv|cCFBTc;7x|Iat-W_7 zR21VkODjay&Nc4yJirT(`Z3TPMR!kZc5EulUq-63g$CpUnO9Uz#u)>J4b>o%ik3Ew z4xHR{mQb93Q2&uztNBpf4n=ip%C54csP5<@XMEmIT?U`6<WZhy*wrc!*{{Fb&ADAU zDK&=6EeyH*2WW}Ny82SpOw);jb<PYz?~r!7uC{=v!_ubg7obI9%)>AQF4}azpL#)h UJv<BGH)GV8`+GEOpl2@k4aRwg6951J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/13f9cec1aabcd60730a792ee79d43cd13040721a b/src/libs/libsrtp/fuzzer/corpus/13f9cec1aabcd60730a792ee79d43cd13040721a new file mode 100644 index 0000000000000000000000000000000000000000..ceb5190b0cba952e4046ab576fea01af3fab7051 GIT binary patch literal 260 zcmdl#A&)^ao`Hd(D3c?#9!LYh|NsAe85pXo85kHD6u=_Y#cB-I#f%Kq<?0L!Hb5a= z22&sg0Zs-6BOoOURLf8e#6HDygc$08MnC{#o`OP2zCwPHJp%&=gBVx~kYEHFt^lN= zs)S+6!8Fj6gA5FvshJ%04DG@|RUB0yg+O6A06Qk%0muhR5OOTYt(cAlyB6$b0NTqz A^8f$< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1411668b05f1ebea15b894317aa013ee23e0db81 b/src/libs/libsrtp/fuzzer/corpus/1411668b05f1ebea15b894317aa013ee23e0db81 new file mode 100644 index 0000000000000000000000000000000000000000..7c4155c35bd0388fd617fe975a193a76e31a4f6b GIT binary patch literal 56 zcmZQz0D<E8>Uu^aAj9bI_m&oh>XvE-Mg|7fb_T|3usj2UB9u<3Za6uOf#E*@JBka7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/14250df0dce407c9ca1762d042f3c223bf47bea2 b/src/libs/libsrtp/fuzzer/corpus/14250df0dce407c9ca1762d042f3c223bf47bea2 new file mode 100644 index 0000000000000000000000000000000000000000..b99d0e05496d76308e822d50822e831cd6a309ae GIT binary patch literal 2483 zcmd^B%SyvQ6g^W5O+irX%7wHRABeQ-!j-yrQ~Ux6MFJMINUJUyp)S-S_zB(l5&ngr zQ2G@jE{tb7X(mmKX<8S8Q<}`&+{~PN@0l|(kI=d_0W@lc)#jbeahwWZ+kj98*iE7S zv`L2}?5QUuWV7g`QJlV+<vJu1(XgCcO--+nta_00SX2)~*Y%KP8bb(z@Igq;bLyZ+ z$@9qOG4OznB#@x7kTHDOW@DWLllz8F(L?QZTyR175aMM}_O#IOW0wYQ$M8w$5{4E4 zztZK5X&C$o%=I~VciC!hlB)KQ3NB3(E+6S0i|b!-A~p*n)yedk&gklVN`@Q2(m-sy z9VC!K9^7U3PtJ^eJ`^H6@28g*IAI}`>i}G+D@QwUN0JoOF1-PKRQ`Lgw<BSz0D3(g z$auXZBHCl(!XgG;0-sL&N|kma!=0!~a>Hl(3?VVO_zp>@&N!cFBUOYXolf<J?iPPc z?clIvzK}Rkuix=GnivyhN{VEr&!`h;DrOt5jBdkd*eZ{HJ}>)HtGjUHOQ0a*RZ=f8 zQphre<skU^^T7k8;xJuObu9C`dUj=*7pLddlS1>fTDr(ewVI)3p$m!-uc|$~@!l3_ z@g@pNvKm&+KpUMLZAMGd?htsqlLQoKZqW)!teYW*HEB79{Jt_j>sX}S13+#OL*)xn C(}z(2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/14ada392455cce4e078ac9011d65a1a0511e6023 b/src/libs/libsrtp/fuzzer/corpus/14ada392455cce4e078ac9011d65a1a0511e6023 new file mode 100644 index 0000000000000000000000000000000000000000..8875c675a0f6f40a26da3e991e633fa2f9cce357 GIT binary patch literal 286 zcmdo0-;V44%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;$O6$I5`<o$t7e=8Q#}!^8mOk2 z5rUywkhQ<W&<?i@MLSSyG~7-w1L1@NM4AC|2GH(m5Xr!J4C)D>Iq_&FCo>#_dXK>i NsFb1e|Nj<{001{CHa!3U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/14fb2f67765a562023bd18e4d264088cd9a5a4ec b/src/libs/libsrtp/fuzzer/corpus/14fb2f67765a562023bd18e4d264088cd9a5a4ec new file mode 100644 index 0000000000000000000000000000000000000000..3b42ecb9a67090c0920120de60f591148686c58d GIT binary patch literal 884 zcmd5)u}T9$5Per=)kaAdPy``mKENm>RVo|X6o<tXfg=QiMQ(*y=}-7C{z{q@X;X+0 zaC|d+7w*o}Qe5ud4zq7(hj}mVP4O55xSzPB%biO^ZUFBYw)kIRm_8)&>;Uc*5%9$5 zt%t+SMj7v)gAR@uaGlKwo)pqXn(*_;>M%tvaclu&{leL<@yysc&j{;+wof(}{q^FX zc92=eY*$<7#>W>Sl}`@Pc^>2A6)zkXvCYlt;GRziON|OSs8BL-OXEleCxRhxmj(`n z+S-y1FtD78;m#wpR=Cw7OkPu2k+xxgJ@dcFRui=%*hSegftZ`&XD5-+|K^;_ph?v# gwU_hC6;8xbWgnKhQ-OEIL*pQGfuXYMueOK(0>*`!XaE2J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/152d339594b5af9a0a28e045cf9b5eb845017c99 b/src/libs/libsrtp/fuzzer/corpus/152d339594b5af9a0a28e045cf9b5eb845017c99 new file mode 100644 index 0000000000000000000000000000000000000000..dfa0c23335c3807aeb4844165af20b668b3f8439 GIT binary patch literal 203 zcma!Nuwf{PXAoyBO8qaK$p8lb|Nr-8V5qKUU|@tZ<QbR*K$5K`Y|Pcgj1Ywk42!M7 zECHB6wLT+IqdHU?BFPZTz{$iQ%K%ct_}><4GSonzpcl}-1R%x$3@>5UKxv?DuYpVf NMRaE{95{H80RT2cF$Mqt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1530fd7edbeec7869c725a18ed679e41c624ae3d b/src/libs/libsrtp/fuzzer/corpus/1530fd7edbeec7869c725a18ed679e41c624ae3d new file mode 100644 index 00000000..6db04352 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/1530fd7edbeec7869c725a18ed679e41c624ae3d @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu*e^ \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/153fccc706e5c47b7436ea81499c8a6f986b31f9 b/src/libs/libsrtp/fuzzer/corpus/153fccc706e5c47b7436ea81499c8a6f986b31f9 new file mode 100644 index 0000000000000000000000000000000000000000..1bcbcb729a4a4245f40d8807d2c93ec24f0ca301 GIT binary patch literal 618 zcmbtRu}T9$5PcgIb18x-q!0pfh-je%qE!?Uh)v*ZtR+ZD5eN#oSS@G@K`X&hye2;q z@ki|Q1E*lP@y+HmB$mEnXJ>f(W@aCxA<_iU>tx%vjD&~;czu%Gcx;&_Qr&R%j2|Op z#W1VsX+r~BeNNHB8_;iF0{gwr!;oS}?pej1eCDm72>FC9MQg6Meh)-hm?AUrQko03 zn|cZ}>yPbOf0#y{OmpIB*Eal>JU#0lbgx<$-S%ObGnQjjC)^G;i_A2|fYD<1j-z08 zXB2<HaL03HnLXD7e|k7BMhj}}k^e6q^9jFSF|VZK%(bIGaiMTWVvN)uY^rqwcwAfU zF*bzdE{d;d04B%bi;UhionSdf)~+O=F$U9Lr0k+9UH{Q^f)feo+*Snl=_RO-%zz~X Rfba7rwF;V?Mqzqd{07UsgU<i} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15509174166c9a924a5e48e12154074775b5fc37 b/src/libs/libsrtp/fuzzer/corpus/15509174166c9a924a5e48e12154074775b5fc37 new file mode 100644 index 0000000000000000000000000000000000000000..3337f8aad39d34dc035250d8d5155c4cdb204904 GIT binary patch literal 280 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zq( ziDCavhB~kwkPwie2BJ~GesV0^nVyyw1G5Zl5zuu&<IPi2QfACfL9*Z{LotN+9}MbS l7#Kc&1UeU{87K*H>29D)|Nn>TM7Y!wD6+Cr2dJEZ5dhl#MLPfh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1568ae57a7f12f568f76b8f0057473a9b4b7519b b/src/libs/libsrtp/fuzzer/corpus/1568ae57a7f12f568f76b8f0057473a9b4b7519b new file mode 100644 index 0000000000000000000000000000000000000000..3d2814602d2e4a0324bb9e1a3ff6773221194663 GIT binary patch literal 104 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+8;SR*M$Z8nCDjA}IVo0b!zm-vzfej=E T1lB;D$H2e|(k{!u2;u?&0~QSv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/158e9583be2f79abf80f7282f24c723a76fde845 b/src/libs/libsrtp/fuzzer/corpus/158e9583be2f79abf80f7282f24c723a76fde845 new file mode 100644 index 0000000000000000000000000000000000000000..e66aa1829311fa1378968d1b9f7f698fb0c9401d GIT binary patch literal 2717 zcmeHJ!AiqG5Pcg1O~8ZLlZVn06lt}^yZ(as2|1OLgC42}VTGPFmwrNTeuN(*hJJ;3 za-Gd4yGueyv@KHTh9o<?lifEvFEbO4@c0k{m`2`sMsI3Dh--jzfT;oSd!}w0lL|Mu zR5L^PK4KTa>Mb1IK_X$(v1mtXd4uFcL+av4O_rXgrIA$zN)VU@!8xF%iyA|%;dha0 zpsy_{98e=<WWH?swaSIXEl~s-weBczgCcw|_LjQcWjTD&uH8CUP|V1s72joO1@OlU z+QEfK7ei}F!dJ#tenwQ~ITbRR()?OlEv_b<FzmMcB)g3uDoSjK6D9bD6T3K3;hwc{ z;*W76i_ibXiCvu7Bqz2rPFS3%{WE?O#lI!VJ)n~oB|6hGIOu}1@$+2l@!Py$!RwXV zIVA7&oOTS*MhhujAd_VBpc=;n;4Ou%3`i1VNU4{6P-@Q1(+4h-Wot<%Qk^y{4xGLr tN2vPHDtO>f`XWb|?fb#I5v<~_XZv74%Teu#XyVNf=heo`CvZOJPd{RFXF~u0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15b3290f4811f52095f53b8dbe5bfda07280c656 b/src/libs/libsrtp/fuzzer/corpus/15b3290f4811f52095f53b8dbe5bfda07280c656 new file mode 100644 index 0000000000000000000000000000000000000000..7e402e8f22c1fcaa0e770b103672160a85f63ad9 GIT binary patch literal 99 zcmWgSW55jr7#M(vL4u*0;TD6w4v^_p4FWFJ)eH^{40>RIq8%axB7wr9)yIH}GXazO B3_}0_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15bf86750a9593c30ad1bc6c0de027c022b48d1f b/src/libs/libsrtp/fuzzer/corpus/15bf86750a9593c30ad1bc6c0de027c022b48d1f new file mode 100644 index 0000000000000000000000000000000000000000..272b071e49b0c35d4493b25945fb0b3ab6d213e7 GIT binary patch literal 140 zcmazS{SO3^|JjQ&Ia2ExzyK)V%fL`w&A`A2<fj60nFB*&JqH6rJVU!MkjqiU08|5# ubYKAzV88)V$H>6eP{7F`APd&XFo&TXC<r7$niw&G@Bja<AWa}?pfUg$MH!y} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15d35184a67502a0cbc45b8de19c05570aa99a7d b/src/libs/libsrtp/fuzzer/corpus/15d35184a67502a0cbc45b8de19c05570aa99a7d new file mode 100644 index 0000000000000000000000000000000000000000..9157e346e7dea3c3b0c574c1e4b48c5fad004399 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kKfTS>x;s9cXwr@ZJWDrO%6cnXqa@2#>a4=MXjQ2no4^&bdUtQ19&Hw<A CWE!LZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15d7a8f78b14422e1a79d5bdd936f78d48101cfd b/src/libs/libsrtp/fuzzer/corpus/15d7a8f78b14422e1a79d5bdd936f78d48101cfd new file mode 100644 index 0000000000000000000000000000000000000000..1eb5d5e7301da8a1fd85edab018a7af8aebe2134 GIT binary patch literal 617 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erl>w{^Xtpm%1z5Eu11AH6EKsVnx_Ay$?7x2|M`}ILrV7J3$_&a3 z|Ns4Gh8WH8|L1>p5EE(!76UCH20}<iu(3i6Fh3FUhYAA&G5(MR1_K`V{$OCJdjoVK z(4D_=y4M-vb_Sq(=@HHh<{0732oL87NH{~o7)Jd8`VxCQ67WATzS@O>rXW%PBRJqe P>44!sgL<`YeRVMaobiLm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15eefbe9fcc1fcf48d544816d4fe517b63363a06 b/src/libs/libsrtp/fuzzer/corpus/15eefbe9fcc1fcf48d544816d4fe517b63363a06 new file mode 100644 index 0000000000000000000000000000000000000000..6f019bbf8d38fd98689acd958f8b44695ab0780b GIT binary patch literal 149 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zb$?9T8FovjPSZobu2rxqV zVCiagC=VhD<Zv=D$TBc8lvWqd5dv}*7=-_~Gce2nGFccnfDo+x|6icR{}~uus{!OL B8$|#B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/15ef439075a2c3e589aa7aa527ae9f5697304c88 b/src/libs/libsrtp/fuzzer/corpus/15ef439075a2c3e589aa7aa527ae9f5697304c88 new file mode 100644 index 0000000000000000000000000000000000000000..87dd68999742cd43509c96ba46f9c223736a1cc7 GIT binary patch literal 106 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO ogV>x546;CVK<PO`48{x$IWOar^GhKnrse_Jc_l@q|8p3a0J;Gf6#xJL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/162f7fdaa63159281641a0f529b86598ececcba1 b/src/libs/libsrtp/fuzzer/corpus/162f7fdaa63159281641a0f529b86598ececcba1 new file mode 100644 index 0000000000000000000000000000000000000000..0612f3e424a393af65c879b3604a610dd608bf58 GIT binary patch literal 76 zcmdl#@jutgm(>gm4FCQ+NC7DzP+(vv28u9(*g&GXn316x$k$<b4g~j~LsWo8p)x>8 G5CQ-`KNIEv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/164fb77e922240a2dd91a53d9e4dbaeebefaba74 b/src/libs/libsrtp/fuzzer/corpus/164fb77e922240a2dd91a53d9e4dbaeebefaba74 new file mode 100644 index 0000000000000000000000000000000000000000..637368de8419caf04f49eedc7bd8995200877d38 GIT binary patch literal 2091 zcmcgsQEOa96#i~@OK;SN(6nHp(G)ccT5E|Eq)VZJluDt3zKR{wIJ6hCoAlnSkPL0} zpze!U^4PL({)1Bb*u|In=7Yb$7s332<Y8mS@0^)?cUNK_J?ze$J9EyNbH4A)^v~m! zy*&qD|K*igyh?@gR>8p~91>iU1y>|+wBk}2zf^^~{EpizeWEGwXBnbeIXdW(j`X4R zRya214L=K9kt{Xuloludz!!iIG971~{)cRL(~#b1sSl5nVKr_KdyaC+xu$cH@L(|5 z4fJT4tpDHm2_(r~qB2DQoI5A}rKF@y7#j8I`xDr4iJPH$#VelvmGNX*LamF$edm^z zp1*V88`&f<r@R-vQ}`HIvu$&Dxv+<(Fc+??2k`lUq{{$P&TTCqxf{}XJ#23=t23&K zVl2ChdBK`*SJpb#Y?McEO}6gKCS@j><2V8EV7%L-UPl9wU!gZJE2fm!!UQbcUtY$t zN`jZ3U9Gafkq7l3`q=RNp5382Fi(|I_K8%u8kQFJQ3$~D#X+yZqoEY_=0YlPVc=zT z^c#OirxRu1)2NZ8)%ASiBNt*w%<e`W&Z@?3Q=rYVS-WtG?|<|Ya<Y&K+&tgLWy5rG z>!&lIQ&_{y7m1x@>TgIFP<dnM-4s7esXG<-L4uBJP<xO6W{m^Bk|9c<<3oOhXq?|3 z2CKQ2Akny3!sUHZ$1f_tRm06sm>%*B_Cbh9%aGNxV}<8nT0Ep!oi$0(LIqS}t8|=n zBW1eF_Tc<{|A3t_DlYK8IFDW5SK^99Iy4HE;jdaggG=0xpPa<+#S8h4j=!mU55F4H zuqkzd^jRZqDu^B>N+lp3qr{16KxUk{F{~pJH2t}$vBy|+{|QjZovZT9v((<x5b;#0 zN^sU|IGJ|roY~NooskRK0|6$&T_J|x13&C@7$cSlWHx;eY|`x~sCoZsK#}n^0V|$C zl%)_P!TVebT*n~&-FQ7)SvzZG+t#e+E5#j}DTOg*i4-X<$&!`PAD>c6Y!@2$PA#_A zLK?T`CzQLqp2BVdpA8MAuTDZ=zw5uJXk@9RKNI>nt@_#d8(upi(WS5D5#di|a2gkW zqTKw(3Uri|70PWIPg$SN@sziPnclNQV{)_76<o4I@jF|%#{nij2<P-cs7d)MXWy(I q3AqvTdL`JEtrU~>U^05LG-*ZYdbl$cr7fG^CgSVu&GEaWVg3QAkj~fu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1655d4709eb28ee3f4d0475c8de90a0cd9331191 b/src/libs/libsrtp/fuzzer/corpus/1655d4709eb28ee3f4d0475c8de90a0cd9331191 new file mode 100644 index 0000000000000000000000000000000000000000..0835628d2a07c6b8e193d1db943d36a4e2f64dcd GIT binary patch literal 1042 zcmZ`&J#Q016r8gIx`+nF2tg5X5|T|KY=MxVFh$xFNa-jS3oeSqB{9BpB(jB5fZXsC z+)?od((+SMhkro$SZ4P2>_b+b?A_b<_RY?lw~HLsB0?T<eu&cgVa7VJ$slY#-|)WH z42Xeq85n6*J1qfd-}7QnBn7|5!#D+;bFY|gwKoBN3#!e(PU|Rv_6)eh8zA>9p!o~a zPcXeB6oxJVO+!f2?yYYhACvM^;06fX;3;>|gpx3gPuKeGh;HD6h;Ip^ZLJw5@{x~o zt)@G0$kGuywo7jE!Gm%~?KryY<QZI$5;X7xJ<`r5so7hnM=(o!;fq|ZbqXz1y~E_Q zOW+ix$fUtS?wboGloiiGu^-J%?<5Gp$U8UT$cThzBbM3_dO;R=Z%zi{H3}WPI#UN< zGYLYShjDffKLjHS$6+=ar~7Fx-DrdCaA%zT0qDK!i|#VNow9$=6}P@94Zh2Eg1;4@ zvREHO5l9Vd{^xryX<!#>UZeSH8K{-v2^TdjM8_9V_pvRdEs2uQHBFF4yp36UWZoWk zu#MwP_e<5$Hjx{Du?QGso&5JOs4DO?F6&RUkl7dwYokuCbiJmPqy&+FP#n5AN8`5A vK7Vn|@Tj!J*S?<&Ui#Y*jZ@bedYAZBtzUdRs9=hlbr_;ls;?sOU9!G^b292( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1690d12228908395a0dbee2057af9c10f338957f b/src/libs/libsrtp/fuzzer/corpus/1690d12228908395a0dbee2057af9c10f338957f new file mode 100644 index 0000000000000000000000000000000000000000..0054d10baa67c7a573135181e042111e8de2be30 GIT binary patch literal 413 zcmY$J`2U-jSj+$a|GzOfNHKtc0>hl@YB1}+e<nw2JtG4{h2b1!24#l-|NgfNLlpi0 z`JWxc0_yZ-V5kN{1P7wooPm>pL6!kRGBT7_7tax5fZB#rvopjX2B2nya~O(&CUOFu z!2raJ)x``@=Ygz*f<Ly!sSxHLAXN<l3=GylrUC;OP!GreRxEBbfw+zp>^iD?8t&Eq aaMv@6;Bh@L9Ki}fe*9mrUaebST?_!zX=XD3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16b8bcc4d8ec930505532403d9ef82ac4cddc756 b/src/libs/libsrtp/fuzzer/corpus/16b8bcc4d8ec930505532403d9ef82ac4cddc756 new file mode 100644 index 0000000000000000000000000000000000000000..a2d8bc948db9e3ff667aecaafbd8c00ba99486ff GIT binary patch literal 1008 zcmc(e!AiqG5QhIP#cXeCPKt#<LB*3&Z+d7Ur-I-MNbt}@4|*^v!h-hZGYEMWpU88o z7vn#(A>CjPr3emWlbxNNo%#1mR(gx>Cidn9YV=$H&H;w=arSua{eJ93=*ogSEw<GY zzXHdHFkQ}CVI+pnDea1n!FM^>^^5y6<gTZ=VMZyP1`?M(xLi}t%a13Zz$V^jbJ#u) zi?P?poJf87BCE6Y(Njz{yc29-_*OO5A{yaL#R?cg+sQakig7JPc63YEeb)4fK%Zj2 zr6}w&DI~d?*F@S~R1c^o#`J&<;9oQmHQnH?bs$xi@kEO?=Lle6(;*lVp}S-!Vexhb zeCe0xqz%_!k&~sG{4FQzu@NQOkg(AX*nlwODI8XC*IWf`1nnp5v$3)c_JqF+jpL=f L9dEE=SZ?VD-Pox& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16c0e62840c363d445403c8c384a968df4ab6129 b/src/libs/libsrtp/fuzzer/corpus/16c0e62840c363d445403c8c384a968df4ab6129 new file mode 100644 index 0000000000000000000000000000000000000000..397345b4038e14a0a28b4ba04e965083b0cb46fe GIT binary patch literal 339 zcma#o%VV&OXJB9~O8qaK$p8lb|Nr-8U?{Ezih>x`Aci~xlK@DvwTEF2LpzWGB!z(# zM+s0fLs2G2YCVt!0*Gd?9;lZ8{{NY)iy0x(3=E5{!7Krgz^{g486hBD%?PwbTOF#z z8YBb)oD2-I3?Oxk4F7$r8BpDUWaveZtuSyO#z3V}>;)OFz#t6thsqovlZAl;2%#=y re}L*i21e~dkb0nxfgvCPbj2;8gV%rpK?9^2BvV~oT@S?IplSyI4_8&@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16c7b668a461b4918816139a9ad3cce469a4e347 b/src/libs/libsrtp/fuzzer/corpus/16c7b668a461b4918816139a9ad3cce469a4e347 new file mode 100644 index 0000000000000000000000000000000000000000..da9572bf0c0d772ee0da398d954be5c3873a8caf GIT binary patch literal 2338 zcmbVNO^8!h6#lM>`qCdA9b4LhkQPmpI_ZpmrJY)5z(o<HZd?g{4)TOh3DZ2IB)3c= z*bb%bqCX&o&`npa3({5FO}B++SGp+$7lW=`jFlO3{m!{BFE3;K!NdEx_ndRj|2g-g zN)5+Cz|<o*S%rdgZZ8m9VjW!D0nTmONm3D$%lzH{`rH2tg*<k{RNk^zx-a4=a51Wd z=Nk)+ixD|a+js};UBLGEs!*V?RZeh!xGTaS!b~@S+0FGP#qjgOU@^aRA_0TGn|saU zORH+wam;c*0o0>vfHqX3H*ZgulstkXplEFUmpezTR55`AL5sflt)Q|HSXx>{&cM=Q z3ZY4|vbMQR7lu>;8<+T!?MfMVPcTO?H6?$9++WH>^S5u@b1N$nfT0I(td?V|1~I<C z>mq6H2g2X-8350aSQMe6tM8V$mmusC6hQ)kkUZ~DAL`X0YAas+!%@@G^B)RL;CcDf zaq}i^?AP$>@XSG>$e~l--BB;E({p;M(ChUMb8#C5G0o0@P?H4U6)PG&oV0`!b}#0D z%1Ol)(EF=WsqEuhp;Olq&app(EuF;ze3?iNmJx<>&;!rBWdF2w2bHi?fB(<*zr3oh zld?b%p?&$#A}1yBk8ETs#rzDaYnsgs(M<ydMB(M6XGF~y^VNw-(gI=le3c&uU;Xg1 zzhD8kv8+74I6J_**e3jhyngjGS5jLTJ@KY8FegcK#o7va?Nm0`u(50$h2eS}PD_qF zR7G5gbrj3u@i1L=``HnVf$?HXCRZEHVggts1N*b0gF{l%zSw9+lPlmXUwQbNkRwSQ z9WClV5;A2m?3!yY_9?@jHT;RzYBx#j=?C+DTn$sr-~Z^f%GWHO+0xO_Z?Jh*c~0@L zy2Q$m{64LrB?dq`bZ#^NY26i7x*tOvv$pKsSIji9q6;ksYZzqC=0kW{kvagm`s^#0 zlaZ3ZPu|w;iWpW=o8(qzsLU%H3m{Wz!jm=8^N8Gg_cGP^FpErRh2|Z1-?xU}kDL?K zSWa5`YkI2yi3bw{m(uy1PA*p53eNFL^IDKwLwm!Gkw-pAE)2sKbq6fW46s@B&}+8~ zIiSrE(h6Gn*^(g|_=GC$e(9Z(wPCd=IOg2t?yTcF+;`C;%65viBS_q6Qs}J|TEZ<r z+7ii^!uXK^ohhsd=Vqk0Zp_RcL^3yoCb4S%jC~xMi}mP2R1f2tq>F}1VBER`KIMv& zP!h5vCsg+@!@d%X-fXey4CnsagAAqB@o{(OG2zv!mLb!OO->_{u-Lfk(rTDt`1Rs1 zPZKX~=r8Iq95xdI%1a-KbLP3FYqQ7yI6X2nUaiusYh!5|3onUgoNjO=US4QKVUmmZ PtPY7utL94FZU7Ge)NHLF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16ca5cde1e50ad6b0909b5bbe7b69d8880141000 b/src/libs/libsrtp/fuzzer/corpus/16ca5cde1e50ad6b0909b5bbe7b69d8880141000 new file mode 100644 index 0000000000000000000000000000000000000000..f30c1cdd03a4c5f326226e999fdd1d117a80813b GIT binary patch literal 103 zcma#m%VQ{sXJB9`O3mb`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^P&`M7 cAsnodVGct(kO3rxffNU-7|<9n0E$)v0K#b+Hvj+t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16d758b26c9a90f85223cc5e0235304716088283 b/src/libs/libsrtp/fuzzer/corpus/16d758b26c9a90f85223cc5e0235304716088283 new file mode 100644 index 0000000000000000000000000000000000000000..055e1951ec3dae0656330a756919e8fef685cc88 GIT binary patch literal 69 zcma!_J1wt-fq|hYlOwerNGC8jIxsi_8DJpFV9*BwT*dJQ@tM`t2AT1Hbc;3O<5Roq Q8CNqf9AjiScI;R+0AlnMTmS$7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16e2f1c0d0db630d92a7aacc679c082f804d22bd b/src/libs/libsrtp/fuzzer/corpus/16e2f1c0d0db630d92a7aacc679c082f804d22bd new file mode 100644 index 0000000000000000000000000000000000000000..4aed6deb1fe6a296d024779f109b43ea6800ccc0 GIT binary patch literal 2150 zcmc&#&ubGw6#llBHZ2OF@lrvlDAxL;L_C?Iqz7#g3ic#e>{@gW!I;)=ThRf{$s&l@ zlb1dCCwS7E#gjMxhMt7tJ)s&pe(%lfCTUd!556R`Z)U!I^L~Ak@InnMA%NvdE_%i% z#acT97(+Ecf#Yo%5WEYPqe`w56c`iWKudP<(TVCh<l1VtW_M*?PljULbUO(?Q%SI1 zK#reG>TxpE#;gmZjj_awvx@$rW0#$4nHhB3`PZ|YT|Fy#!#s`Z!XZqg2Mz#7nK~G8 zALvCvTxVQ8DMFu2Fq2u0YT@0*+RE}`*#VAt&<#wm66f9QJZN;iT^ZAdI#1Y61;ZhM zETV~n%q4i2^04BK8MRTkG>jabD|+8X)VGt&E8Udb2k778geS2?14|MKbz87Bkrxd% zDX}+ln)hOZAutFL?#+NPnR^k#1upUTO_brzbTCP2#1E^B8nJISx|kQZMzAl6KWqWv zxbI>sS(uh#Z$Hzy2UuIEt}+F_KGNZ5fY*DQ42hj7YySr}+^tD!M^bxXD-Me$lS-&1 zWob2f_YzN!!nFlHfKTJKonP>4TFN2x0!}NAYF|Bdj4RsPju8+><ng@0W!rRUIMTjQ zK9V)WJP{YfAaJ5-M=K1{rP7__#yPHad<pl{?QJS(*mBx^!Le8j5U~+piYm<Jh8=V` zAj7$S``}_x7)wX#Rnx#J>M?EWqMWCd_45%w_iMN=Z)Og5aOk)oQj~ytCIsp2O14YY z)vHojX>N9|VD^{9SKnh?y2DZS&b<Au6=p-Kqh0Ce-PUMI5w?CWfu!5XLRDFxGK-1W z!z{VNw5V`J?c@(P+$Bql#VyjzVv>QVWYN9lb-}KOzq9XP67p5~aTvu{lzC4>p2U#! z8fi0&$nIQg(raR1pkFVq;`&R5(UtWvKoJC8bS!RNj-yscMyN4)8<=f6)WB4al%mUy z)RxlF>N#6gA*)p4tchdcl~h@KIe9OCEHWPqi}z(G3QZ+MV5RN}ay=*;($82^dTd#4 zW6wGJ2x2*DQm*Doj`vf>kj7K#>RG8Ve_~sJGCtzdtK8JqO54lr$Yx0n^TiO9yxK`y zE7!e>aDMD>1apzxUjF(%*!~aRv{xM4b~;%3HDe`DcC7TQ$Re53INCmE)Bi~EpJZjj A00000 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16ea25a019063bb1ccf7b806c5c9f5e1893fc710 b/src/libs/libsrtp/fuzzer/corpus/16ea25a019063bb1ccf7b806c5c9f5e1893fc710 new file mode 100644 index 0000000000000000000000000000000000000000..bc9b21408975a4a035fb7cbf6f77d3f1952d759f GIT binary patch literal 852 zcmb_a(MkeA6g{&Fj*w9Klwc@C4`KQu5%f|J)JxD0#Ineef{N^7fdl!HN#Ga6{zQM& zH}v2`h0~eckwDT4x-fI^+_^Jz&Y4@)TA#T9f|m4$^fdhjr7koh!Qs0%Uc2wRy=KR2 zl)|RB-^&6;q$D>ZjFUM}XA*dravBQk(V64404-k*F*Y^E<|PBh!WIR7OTyO30f_1x zc)Zuz-hp!XUPx-4byR@SM5k0}cgxJtm~%GiOUM(}&Njm|QAs=_^TLI>EvzxX6>tQ& zvo5yWCH%x+_+2mOXP%=5Kl4*hU;HL2H46CybAF`fEb>Dp=tyMK{0mX7soN-rL!j+< z-A3Q*w|%~PslpAYS0p0_0%SAh1atMsh=o|JNJ11D^OeNb=E2F`sWpL_J}xBr-6=w4 z@KHt(o#hwbXyuQ%lV0e9)jE9ut28+Hl?MMzm+j1MPFj_OzK57Yoyr3hg~-7tbYzpv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/16ef185c5da3d10634abdd0d2b37fc5765e58cbf b/src/libs/libsrtp/fuzzer/corpus/16ef185c5da3d10634abdd0d2b37fc5765e58cbf new file mode 100644 index 0000000000000000000000000000000000000000..0e87b64d1a6c91caf40b080c7e455dd5fa9dcd20 GIT binary patch literal 40 jcmXSpuLgscKr;U2*OwqV6Cza1$WUDkBpCkx|6d6Jt6dZ> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/17289773390a998809f87df4c0ad828b304b17a2 b/src/libs/libsrtp/fuzzer/corpus/17289773390a998809f87df4c0ad828b304b17a2 new file mode 100644 index 0000000000000000000000000000000000000000..51a0a11aac658851d2df1a3fae25b87e67294d99 GIT binary patch literal 2381 zcmcguOKTKC5Uxo^GaCp-1&Km15{U<OH9kNIN`eX!2=OF%ka3X}7B-3OWL0coqxi&t z<l;eA5c~t46fe==k&}4K#hbgRG41zN_sqKS0g6~`db+!+yQ;qGs>*pGZF~_tdh)ng z(}h@TCnPW?kj@qEEXtyi<6^v@&DKu7id?RU6tQoTAu;3!9k@;m=79`w!_0rM%TQvu zko_XdI?097FF}5vu~+LoazLb9oQ^M63)ONl=3Vi{nd#YzwUaYtiS&dHswaWknM<W| zp?_G4wVKnmT{?Oxa%bLlnj}b%JRi|nZxFj3vpazNuEQp&Z^F)iY`!P5v+kIq+uT=- zvsSV3&cM(3O2PB-31t1;<($w9ZjPN6q5eK&mhj1&luiPRQ3><o-T(^snYuu&VBCz4 z`gga1nWarivlM?&EJZc=V$3TlbmWd)N8o@uc*+NBoNVCU`WdTd!k@um^%|Ujr|oX) zHQB|xxRjnT2P3Ab%MQRd3$}ZC87fJN9zzZ4PVGv~ZnIUzTZXy^gUwVZ&QHq?B2Xzs z#UYgz`^E09YA_JLUOB?uqZ}5jRo~k!1B0Qh6Wk8{QMQ`{Av#sU^>!T<ZA}%`z@oVf zbh%oL5#C6{`+cC-M$Y*c$dJBy_X^KB4D1E}^^d<D=>cdGxit^>AjYJjUD?86ddT6O zqFz<hZDY%p+c+Z$gmN?he}PF999{t$)lpWCB}`8clbdf+7a}D>5%7YLF7jf}vy;HQ zh8wR9*9T=#>}u<+e6k_W|7h<CXFKv+qp-%_6Kf0(g6|9-eA=erV;42}8iMTl<yEqh zq5FR)KR^l)M_}{1KL9er5N8=cQu_Guymj59x9T)!mhwY+Uu=Grd7ouKh5u{jy(IPx z+t565mcfYMWM1epZ<40|lgtBxJ5a7b%wwq(P%~X!jaSp;p2CanmBmI=qJt1U*w{`{ zU$IQY0--dA(WC)svySWzsetFgRY7S6-gH#DDpQeU4UPQ_b*a_QAaTZ|?T*|m)O#@X zG=i#=)f>N;Td&=vJ|T(g3mc&=Vy~KehUUm?w267V(SOv#<1P9-XEpiQ0ayj0?F&lH zgc#HT-zr12tO!7Ky#qHbZoac(hs1<XLOmeieT?F%Xa5|uwd*N|Da3|z^7g%5eRxws z;Ohyvqa<Nb0C8_s*w(8_F>aM^RIjjgy{jLuC4e405cl)VlAie#^9qnLYy?`t&vMUn XMh1OtR{6~hPOP~BPhDm3dW?JnhZ#Ir literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1748e19ed1d71535cc11e7d4d3e2b95601daa152 b/src/libs/libsrtp/fuzzer/corpus/1748e19ed1d71535cc11e7d4d3e2b95601daa152 new file mode 100644 index 0000000000000000000000000000000000000000..aafdc2962e260e9eaf562257a58ee3de715b4504 GIT binary patch literal 1284 zcmd5)F>b>!3_LHbk&fLmWa-i=TlZ|;yBd9kr&d#6mak;V;16U8Q1z&@BH9p~WUC+$ z1bIB3DDJmd4MPBM`rWPZM2Bb7(}aem!Mg=Q-yjghkZhM6`gWB&S97_>*odX=RFtja zMw9L_**duNdA*a#Nt`Pvq)w{6^-LvKz+F}??F&ztAWO@e`29$Hqj_=CFAdd{YRwh_ z)j5je0$2a5oiBJgUh-T^X<o~)7$?Lvu(QQ;12#@(S@fmoxVHqaM)0Qp{O?P){CaI& z^;6s=W&`eg>P~+DQKZ#;Whb;rk^r*P-zXmdwEUvS13rLg=Pf?R_z-<4Dirq#5P@&0 k*52i<V4wD7LY3=Owou1XaY-wEgu(DX;|eiuG2RC4A46m8i~s-t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/180b5d8e467eaa17c97f8354c9764297d5fd2c69 b/src/libs/libsrtp/fuzzer/corpus/180b5d8e467eaa17c97f8354c9764297d5fd2c69 new file mode 100644 index 0000000000000000000000000000000000000000..578a5e8d13ba8a1dc79be581ab0effa1c76f2610 GIT binary patch literal 168 zcma$54+QuB|7R@9<VdY&00W?iF9Sn$HRrZ%7Tdr8D8dMlV*@hL0RsaEL=rm*F#?&i mhAHG^$VknxF8C?SpgBi~0c3@6I|IWU1_6eBFePA7mTCaB9z2l% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/180cbb1659b9d13634580714afeb51d64712e180 b/src/libs/libsrtp/fuzzer/corpus/180cbb1659b9d13634580714afeb51d64712e180 new file mode 100644 index 0000000000000000000000000000000000000000..7ed6b82b26ea0333a829580eb2081b1314ec46cd GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm0E1&OBSSR^SF1xstf4dmCy>!l TJVywq3rW))hIV0?3ZPK{@0k&B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1833e1700d98ffa165ec05491e1d51e451ceb1b9 b/src/libs/libsrtp/fuzzer/corpus/1833e1700d98ffa165ec05491e1d51e451ceb1b9 new file mode 100644 index 0000000000000000000000000000000000000000..30d3641d5d68f0bf6d7f2020b49c0f23d08f878f GIT binary patch literal 358 zcmYjNy=nqs5S%YsT&x5;!JmMY=sVbHBiN^qLk<-ph=&$lag9F+7D*e#SMhBGU%*0( zb@tmMWI1Ms+4<PnyI@eb-4XzI>6F>DuGN^BID$i0m2>Qn&_&7c(-U(0OjmB~$3G>A zNS`Vv?vK>)Rs<R+j`JM#B{N6ERrs}xhV#iR9M$7V*q*-w732aMPS_ik*i=BeV`wI7 zl514f0@El+u~(1Q?oLP@)@&{_Euv|F%oD6NU=KKKL>xM_0Uz=6*Sw6`0=7rVCA{B; X8r>InjsNfRi|o_~F5hCm)n9@ak+Vb^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/183420e4a244ec70f35b35f5beb47d09225ebfb6 b/src/libs/libsrtp/fuzzer/corpus/183420e4a244ec70f35b35f5beb47d09225ebfb6 new file mode 100644 index 0000000000000000000000000000000000000000..4aad8d6ffd4050e6cbd3292adcda45e9a3e7bd9e GIT binary patch literal 73 ncmbREe}8o`BLf&$Ge7~5fk4$TVNsAQln10hT8<q9@xclJMn?{A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/185edb2648ee2955e8be0092b5cfe3538a79a409 b/src/libs/libsrtp/fuzzer/corpus/185edb2648ee2955e8be0092b5cfe3538a79a409 new file mode 100644 index 0000000000000000000000000000000000000000..7078291af33d26021d564b6d893eddda5d152636 GIT binary patch literal 69 zcmXSpude54XAox4`rq=uo&f?pSFWtosRpqHp(04s|NjgO|Nj96m>3wUtBX_P85jX2 C5Dt+5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/189034da51d05386e0428ff97433aef413764026 b/src/libs/libsrtp/fuzzer/corpus/189034da51d05386e0428ff97433aef413764026 new file mode 100644 index 0000000000000000000000000000000000000000..2ca1456667f08e9ea21db1b9b42eeab091a7ecd1 GIT binary patch literal 108 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28Q3&3=E763epfU28QZlL5AvTbtu<>f#D^X n$;rSV3seV`p2N#v#=wxnU<A`4%3#3o=Rd<7hIXJxdo=?935F6X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/18b1e77bd0b37d14731aaaafc5b33d108d680a16 b/src/libs/libsrtp/fuzzer/corpus/18b1e77bd0b37d14731aaaafc5b33d108d680a16 new file mode 100644 index 0000000000000000000000000000000000000000..a20ffaabcb1dd5cfc391c9ea346b6759d36b4d67 GIT binary patch literal 101 zcmY$>%VUs?XK-*R%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRa1%YDfj1V;j3=A*9 eEKUXnS)e+g^c-FWV+Mwt)V%m)h#Dw)pcDY&0ufXI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/18bafde5a80020975ac51fc61ce4308b843caf81 b/src/libs/libsrtp/fuzzer/corpus/18bafde5a80020975ac51fc61ce4308b843caf81 new file mode 100644 index 0000000000000000000000000000000000000000..7e0f5ce0b8d6a987bbe997bce51876d1623efd44 GIT binary patch literal 37 icmb=fuC6XljgS9R9B%+*LP2Ic0|SE^0|QVn6NmsOwhf>F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/18bb987b2b56d2a842893b69482a81d593a83bda b/src/libs/libsrtp/fuzzer/corpus/18bb987b2b56d2a842893b69482a81d593a83bda new file mode 100644 index 0000000000000000000000000000000000000000..3f2bf75ef23bf77a9d9a0afe94bb8ffdaf0e83d0 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FlS(R r31)IKFvtSc0j1{%F&Hy2<fP`sC+Fvt6y-ZGFfaj?NP(28FjNBoLHiQ` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/18c1fc9726579bcb19df251b41a35c9934f1cb45 b/src/libs/libsrtp/fuzzer/corpus/18c1fc9726579bcb19df251b41a35c9934f1cb45 new file mode 100644 index 0000000000000000000000000000000000000000..dc06aea18a71fcbbe634f056da16c088f202a976 GIT binary patch literal 914 zcmZSh|Np;NJOcwmQ6@)fJ&*<hPId-a21W*kYU4RVU;*KF28KBt42-fso)cIEMmW~F zKmjAezyA(W5OK9{48_$942)JlE~A$Vh-3gM1IezT9{^cLKj2bYU5p%F3<3=MzI`Vg zW(*9-!OMi=U<d5M3swV+IA4bS6aRC)d<hI|q|jG_hCWCYC>Dzu8LAy-&YTI>1tv=3 z^B5TPiZVMELSr0k7DF{C&Y-Hmx<EQXW`lt>j6wC}VFXJb*n^OP!x-o)VFnqP1HiNb z&}WeJR{i7u-|zqbrzHaYICEw)!$AgylK6Cj{#y<S8EX0uPgLTFNpMtwGh2n>oYtQI IGygLH0B@DZPyhe` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/18ee580f0036635e86777fcae1898413cb85b5f1 b/src/libs/libsrtp/fuzzer/corpus/18ee580f0036635e86777fcae1898413cb85b5f1 new file mode 100644 index 0000000000000000000000000000000000000000..350a195a66f4641c249a0276fdd8def7fb38e651 GIT binary patch literal 173 zcmdnb00GPl-~KyDLD&im48=fJH6xH<WN-%wRu?leR9DM@nIJ)iXrLGp0*XMmXTcPN s4HtxPpMrFQ2?hoQ1_omWMxZzY!+wNNF;obm9&8UowG~Ja&~%_O001o)A^-pY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/190dd7833b267c8d92d3479266e3213d51bfcb54 b/src/libs/libsrtp/fuzzer/corpus/190dd7833b267c8d92d3479266e3213d51bfcb54 new file mode 100644 index 0000000000000000000000000000000000000000..85d697f1811724a73063b68648de20934f46dd9a GIT binary patch literal 1124 zcmZ`(J!>055Pc`x_~ar8I~Y;~ubTu63ML^%q9RV8kbmH_Fc%PrJ98f?vS6zTBH+f2 zD|PuHCS`s_suXJ7nLx%fvwNp?WDn?ec4l_=?VA}TFS1FM04PRrdd4dY5q$)#1tMpF zEhGH_`;`O*!Kd#B7>44{Y&x4y&;_1KHe1d%)im=COt)Bz-L8oOI*og24LlcgwK1PF zOedf4xKU+2vXftzz(^j~;FmYSVv5Kj>8uged+8z7B=O+eU-IH`GS&}*^_0mFF~(%Z zRJqBEcY=4DBRf4g_U)WjB)^v*166vF(8$)G!1r_%pZSM=^=8Pk?}%c|57_oQ;NNJB zEuY~v`hDFjBZZag-vDzBXlPWjUjgGZOOErbDkMAeHyn@i<E$zlxpd5l0ZQS7<?4^K z1}3(vOWVP|b-MMDO}w1qi?wIkDsN4JnKV;ag6FdJ7_Wm+wX=)<QonB7FHOD-$90;V zbP;Q5Cak$4ac(Z9eti=O4UB*h?z)Od@li1UwBX+b;im0wjuo8JggOfM)(fkWO5}k# z5umFe*WMhqoJ#vaQv{y_)!XEO=dOCf6h^L5<NpxsEJk(kkLW@UcGs1o_361EI4woo wtIL+qBL7TJOnb`__K9?6bYvDYGm5e2{~FdnK~wpo);5(3W)nPJJY3p3w-&{}%>V!Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/190f6cb999f13a8ba278b005a33fc9809347633b b/src/libs/libsrtp/fuzzer/corpus/190f6cb999f13a8ba278b005a33fc9809347633b new file mode 100644 index 0000000000000000000000000000000000000000..9efd9d42d927ff30aa80add429fe19bdd7bb6db2 GIT binary patch literal 69 ocmbREe?QmDm(>gi0Ap)1FuVe?e}iPIiy0YSRs(r3Ne}~p02X5nTL1t6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/191048251f2c2e09b17745ab719f6e2bd838f26e b/src/libs/libsrtp/fuzzer/corpus/191048251f2c2e09b17745ab719f6e2bd838f26e new file mode 100644 index 0000000000000000000000000000000000000000..9b745d97bf35c9559bfe3a639600f62ce3cc1102 GIT binary patch literal 135 zcmZQz*w6LyWi<mBFfuT(s{e-o5e8<40w##~OE(~Ri3|$#TN!16%7F+7s*4%9fS92g x2!Vjff`JXhvIesA7#KK#%G?<k+8Ja`d*%oMwE&gI12ut^GJIod*~ZRL4FG?jB?JHf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19181dcd992e1a7d1d33ab591d21ba60a693b8ad b/src/libs/libsrtp/fuzzer/corpus/19181dcd992e1a7d1d33ab591d21ba60a693b8ad new file mode 100644 index 0000000000000000000000000000000000000000..ed93ccf7da629bec3cf6a386b0a6c9eba5d1abfa GIT binary patch literal 1528 zcmd5+yH3L}6g^HOk!*-e3{_CXLjtv8<?#!M{z0Y=9bhO-Sb_<4;S;*?2P}L{0r3|w zAk1;>#BmCxs7T-_iLdYV&AC43Chy|nJO?lwMExtiIh0aIfRunR3y^2R++5QE$2c&a z4&oT25ZTNznd!C8yn70bL=5{X8JP4A$wmb!#j0_7&v%AydMk?>QxHTALa@yA&4^AF z5vM33;3{bx!J_E={f*>x({cG7d<b!0&>jj4KT)>Cx+EHD*2jbrBH|^m^i1Q`>PGHR zG;)h8dT7CDl2in=3t?5KB@iG5PxSgmwd6@DI@}(H?G<iY3z8AQ4~@083v21mQm3xi z5_av>zpVbpu!-uoV85w5r5;}%9P&A5+g@CwVOl(!8c%-1JZa~YVBsjRjBCCNma=S; z{UeqTeIl;QdBnwns=tV9(0wjbaP;g|0{VM?ExiObTb^a%UN><wf7#{<+X_9FX_FN* I)2Dj+0cKnLumAu6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/192a17d52a83eaa270acf582e9e61cb6af690541 b/src/libs/libsrtp/fuzzer/corpus/192a17d52a83eaa270acf582e9e61cb6af690541 new file mode 100644 index 0000000000000000000000000000000000000000..3df09d60ca42ff2ccb88422d1a324e77ff1468ca GIT binary patch literal 559 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_v9z%#Q0cOh_ zA+XJJp!OqNLeLiG??gEjheZtSrNt>mAfEz3DmB8y0&kcQ<60w5xQ_-RSk%E`QC%JP NpFs<l06=K|d;kUcQ8)kq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19389f74563061d1b6157f1f89ab4d16093de5e3 b/src/libs/libsrtp/fuzzer/corpus/19389f74563061d1b6157f1f89ab4d16093de5e3 new file mode 100644 index 0000000000000000000000000000000000000000..87c026039df9dde0fbc9921fbb914069c13e8740 GIT binary patch literal 115 zcma#oGi4~s<VdY&0E7Sk|9fm@V5qKUU|@uZFjN;aLNHJa44ABeR33=Q$<81PRL9=l hGe-z4CEU)yFo%PI3Cv+&P#1tO44`}lP6mdPvH*uh4~75$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/193ab2d67563efbe350f17ce9cf473a0e0c7dc88 b/src/libs/libsrtp/fuzzer/corpus/193ab2d67563efbe350f17ce9cf473a0e0c7dc88 new file mode 100644 index 0000000000000000000000000000000000000000..ab6bff39b7f1fd8ebf4225175e7ab6895e3c8745 GIT binary patch literal 524 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+O4=4je@p^d-B}JJW1)M;j2_oPCs1|Gl zLo`A;Pz0(2u8c|y4Y)Z*a25du1Kd}W7#McD1HEPobSd2HK(|5+0C_|M7#7$)0`WQl zt02<cgj6xSbOVByFJBT;NJyRu98Wln14~Z?`iP5Bi0kD`U^Ky%zI@5R2GPvG@c%ym DV%<BJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/194dab4253a4300ca7776e1309f931529d1d5ff9 b/src/libs/libsrtp/fuzzer/corpus/194dab4253a4300ca7776e1309f931529d1d5ff9 new file mode 100644 index 0000000000000000000000000000000000000000..67bfd3fb4c07ae870d3c62e00ff81f6ac356f0e4 GIT binary patch literal 85 zcmdl#;Xl{Qm(>gm4FCQ+NC7DzU@TT(0E#ez*$fQT#f%Kq5I&GJ1d4(Lra=T5yg;ge K;&Al8x*7mPco9bc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1952f847e548db1d422ad9ab80f1a9ff529c7a0f b/src/libs/libsrtp/fuzzer/corpus/1952f847e548db1d422ad9ab80f1a9ff529c7a0f new file mode 100644 index 0000000000000000000000000000000000000000..0ef3d1dfa0dd0a68efaf9c651f052322efcbc7fd GIT binary patch literal 681 zcmazQW`KaA)J%?g2=o8{|Go^2)zyp)+<(9#`yc?S5+C*dA4s;Lc#aT5I7HnXhT}lS z9ENsb1`Z&E15`EbASDPj|AFcm82<kUt3Jn&0HldChZwtvQG?$-AZJnJp54gd1GkF{ z96l(12iZidU2t<a7^;gIfx$<UxPZAQUN4WKB%XnRu_*Pwa3<K9zz72-9ER#@21Xby z&!8v(l56ex&kS^wI7A)8Vrwu%0O(3EsMcl#YEy^uAd(<&0}~Ac11AH6>>Ne_HZN|4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/195b412f8c979a39c5a20fa6e38f6064e4c135c8 b/src/libs/libsrtp/fuzzer/corpus/195b412f8c979a39c5a20fa6e38f6064e4c135c8 new file mode 100644 index 0000000000000000000000000000000000000000..75eb0173b2fb27ef6ee65d5e73c472b452d8713c GIT binary patch literal 101 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc1_nlm07G>#BSW<VBLibK0|OBK_h+z% e$mlX~GBC8WFwEg#_{YTXAEcEDss~8LLID5>!4%p6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/199f12346c862ac534d33cdfa126e2449f2fb304 b/src/libs/libsrtp/fuzzer/corpus/199f12346c862ac534d33cdfa126e2449f2fb304 new file mode 100644 index 0000000000000000000000000000000000000000..0a405637a4eec2068295711c0f745301720c0eef GIT binary patch literal 2231 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*Z z+;6OMFg;ME3=B_U%HSf{4aKVws3jU=H-x003xKW$T3!jU78-I4|D_lh96;d&4ml2> z3ibyKK@1H4AwU>PgD8-qK^4B(L!W*D3XA8_C<W&wjNAcCa1>=30tpsjDaaNain)kQ z-N58sg|DQ5MfM0OGH9BMMl&vs)H-y_VxWg02v1&w`EGzRF0u>Zxf!F-qNv0ISCI_W WFF}P#BeYBc1`7it7sPT#1`YtyG?-5S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19a685aac9dc4f6480eeb04ee8cfa17d3862ce60 b/src/libs/libsrtp/fuzzer/corpus/19a685aac9dc4f6480eeb04ee8cfa17d3862ce60 new file mode 100644 index 0000000000000000000000000000000000000000..b5c37c1f01541a70e7ff689ff888e631ced8abe0 GIT binary patch literal 106 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq1_tYDh6YAP2B0htNS3R*n318nS{<T<!5T~p mFfed3Fvv0hl~tI|5dw<|w*x5-h6aW?91KiAW`zM*xEcWX)DP+a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19b18f85e4c13b1c2c4aff0e77007a9f960776ab b/src/libs/libsrtp/fuzzer/corpus/19b18f85e4c13b1c2c4aff0e77007a9f960776ab new file mode 100644 index 0000000000000000000000000000000000000000..e96001c2ebd387578a061176273e1493e125270e GIT binary patch literal 192 zcmZQzs4ix#X86QVoXL?|&j1Gh|Nr-8V5qKU*aij~1xyfe5N|6G>+0s^$0z1wrspvT zgJggvfT;Z?HHpOvB|ugY7PA-_85BUOfU4ENI;yMH!F&b=0|thdU?wL6!#0&|y4x6l Yilu=f|A7hxJ)o+PD19IsWF^oD02P)iH~;_u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19b95f88c6bc9aee7c73ad2cb314df5076eb93f3 b/src/libs/libsrtp/fuzzer/corpus/19b95f88c6bc9aee7c73ad2cb314df5076eb93f3 new file mode 100644 index 0000000000000000000000000000000000000000..7055dd59aaee1108e8dc9e2424308462b7361a42 GIT binary patch literal 101 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcN3fJLf{)flRa1sSSyAu1Rc3>X+* pg4vu546;CVK<PQW48{x$IjMPy$p=b{Q{&4MOVcvr^Z);E1pw_B7c2k( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19bb3720429208bbf3b0f810df1c2e66f02beb26 b/src/libs/libsrtp/fuzzer/corpus/19bb3720429208bbf3b0f810df1c2e66f02beb26 new file mode 100644 index 0000000000000000000000000000000000000000..8361674acd22891620f68358d081092b0c71a797 GIT binary patch literal 713 zcma$34+IR18yJgHGdb!RzyK)X%fMJ&&B(z02Q07;0wA(@$^ZXA(hbFPgc!mh3g<8! z2Qua`v<owE03jTps%Zx)L8$o;RL{TwbQlPn1Czv=L%LnUVAF?;o4LSYh!Q>!4-gEW eKmUP2OnUe*px8y*xBx~u!SqvI4UI5Vsu}>dd2s{) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19be43ff2713b92a328b043d3cd4dbe4bc296416 b/src/libs/libsrtp/fuzzer/corpus/19be43ff2713b92a328b043d3cd4dbe4bc296416 new file mode 100644 index 0000000000000000000000000000000000000000..618141fda8d1a7e63fa781104ad15b97f8a30142 GIT binary patch literal 356 zcmZutI|{-;5Pcg9SF45838}Obdn*s%85WBO0g({2$qLcRJBT@$7ZJf?oY_SPF|V1= zo0&H=c5%Sj0;md|&)71EXahLM?${@``%`Yq33TE^AVro2_m5h>Mo%=JtivFUE8VH6 zZZY?H3^kQN0tJKjL!`Bm%4ypU>~s-oXhu&MjYbYHOsJuWu#UQo%JTI`zCJQiDWG`g eZRZJ!0wZ5h&Sin`ZD2U--2BG@A7I59x#J5suu63R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19c83bb9287208ac96ce3aba044791697a56a792 b/src/libs/libsrtp/fuzzer/corpus/19c83bb9287208ac96ce3aba044791697a56a792 new file mode 100644 index 0000000000000000000000000000000000000000..1e9b93708ffd908b503e4058366417adbf927f22 GIT binary patch literal 491 zcmah`Jr4mv5Phq$RN^W^q7a2bLm|<STy=@xu$4k1;;1%3r`F%^Q1Vao{s325vtQ>V zmw3r$c4yzbc{>ZGR3rdwmV9xbNTAdlx3j7~m`$K*<GoTho8SZ_9IQ>JlB3u#+lLMe zZ#8vwkP`4(GG;J~auyT6sg%*yJUL2=8g)I7VsWG16R~f_qL6qD#?Ma1Imzd>h6FG0 zAvGIt=d5X;(xLv^pS7PV$+I^eNl<EoS#f|C<-X|rFD441k)OFzfDl@EESBKd;O8s! d_%0S}H}3ul+q?oPnqTugN5AL+1az6EkRR}fU+4e; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19e7cfda3dad7f03203852b5b3eba69dd7a7288b b/src/libs/libsrtp/fuzzer/corpus/19e7cfda3dad7f03203852b5b3eba69dd7a7288b new file mode 100644 index 0000000000000000000000000000000000000000..e67f97a7b7a1a98e2636c5b58ec7f9368c94215f GIT binary patch literal 106 zcma#o%VQ{sXL!I+l*y4=%>V}f|Nr-8V5kQ27$E`-)y0euT&<o96@pQm3=FbBb;dxx Z5Lirj4v-RH-~ht^AAv^w{|`2{8UR|K6*m9? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19e8fdf7cde60aaad5adfbde80ddd63dc420e7f3 b/src/libs/libsrtp/fuzzer/corpus/19e8fdf7cde60aaad5adfbde80ddd63dc420e7f3 new file mode 100644 index 0000000000000000000000000000000000000000..8fb65a82eeda06256c2e0da0c085e218ff4d1fe4 GIT binary patch literal 225 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2_07f7l#O%&gO^$koez2M<kntdM8CXCBQRX<n&B+9s1F;Ka Y4#)toDL}hZ>s1&S*ijuX@R)%C0PJQdRR910 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/19eab4f5e394806e573c01c8bac367fdffee6975 b/src/libs/libsrtp/fuzzer/corpus/19eab4f5e394806e573c01c8bac367fdffee6975 new file mode 100644 index 0000000000000000000000000000000000000000..6d4655961bf3640c2ba00d7060f10852c193cc09 GIT binary patch literal 735 zcmb7Cu}T9$5PiD@TvJ7_69d7*(nbrxMj=(eZ@5CQxJJXRRtsvUt)-C0pV(4K?{8S- z2O?UynVH-k7m~nbU~gw0v-4)&4T5S7QUFD6vPZhfLI{`md=2f%#8LPk&i4ez!4#Gd z#gQ5Vcj*mqROB!3<x3bitKbSc{8a2LI@??5@?&>0+7&E$21W*|OOcLQa$h|3OH(!e zL+1Y~`3HT<RFJfLXX_==!N>Fm=9tJ5>@QUA5kL1Br*fvEe&Te=P93>q8oAu7KW|qU zuMk1xllkXGh_Hbsr}Y7vY4Xc$i6-%%G}q+2K2mR;CalP2np9<XDsR~d%TS3dY~i1P inl{PLZK$Omul;R=yyw{yblMnN))}qLrnrX5c&BH*JaR_> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1a1b82f5bc63cc1726632aabd342001a6e3a9f99 b/src/libs/libsrtp/fuzzer/corpus/1a1b82f5bc63cc1726632aabd342001a6e3a9f99 new file mode 100644 index 0000000000000000000000000000000000000000..0fe0b5f652647d604f6ee6e0ac5df13b5f825fee GIT binary patch literal 69 zcmZ2!!tnq9e_;kNV1!WBjFQ@Q5O#5@K`LW4NEpHgO8sW|`@N+Y$h}er6s@kV4*U-Q D<1r7Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1a2b4d487f5ce01dd47f34f6ff9c5a39e68010e6 b/src/libs/libsrtp/fuzzer/corpus/1a2b4d487f5ce01dd47f34f6ff9c5a39e68010e6 new file mode 100644 index 0000000000000000000000000000000000000000..11758ec789872c5acbe68d35f9d0d73c971a47fe GIT binary patch literal 101 zcmdnb$iVRPWi=-Q0~f>pr~4T|K!Jgw7)VtEr5G3)+<_!RbulADbv1}v-NsPPP_F<K iQw8GBGeDrO>wh(a22lDbPzVh6gIJslvOo=`3=9BwRuzH( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1a4e264291647ba9af8e65803c03c74f2f411a32 b/src/libs/libsrtp/fuzzer/corpus/1a4e264291647ba9af8e65803c03c74f2f411a32 new file mode 100644 index 0000000000000000000000000000000000000000..7fcce74a58a22a44387eebc9df91fa529cc16bc5 GIT binary patch literal 457 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RL?<Nl}rLE=nG-x!L2GcYg$ z*>{;hB0x~>Ff%(14CXK#WMC+X&tqWFE6VIx2sF$Ftil>h0=03nGsrUh|G`jgFh>Y1 zCfv@zFo%PIQ5MMi&k0oqrX1^Bpn#F#-+u=wpdcd)gDud0po>8EGcbC&0Nu&J3E}`T zV|6h@HORF<0CXY*{IM;b{eRy*21O_z=*KI_er$k>4-{p~zyNg))CE8vY+JSs1PYiK fN`QihSOG^0$csP*2naA#7pnm=BT!78fk6oXPMTET literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1ac596ee837462a1cb97c505ae116430a83ffe3c b/src/libs/libsrtp/fuzzer/corpus/1ac596ee837462a1cb97c505ae116430a83ffe3c new file mode 100644 index 0000000000000000000000000000000000000000..dc7d7bdeca2ba4970c1186dd3b08a5de93238575 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnho28QZt1_o7#0EDbAW@M-?hKg9jWH=cZWEmKN W%8Ta+!NeFC<}kDi19=<>k!k>w#|>`) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1ad20d4c38e26a0b9e4672c2e4d1aebe39e9f3d3 b/src/libs/libsrtp/fuzzer/corpus/1ad20d4c38e26a0b9e4672c2e4d1aebe39e9f3d3 new file mode 100644 index 00000000..0d1fd2a9 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/1ad20d4c38e26a0b9e4672c2e4d1aebe39e9f3d3 @@ -0,0 +1 @@ +s_0i_0i \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/1ae963370d665e48a6961d9e88424998c0fb88c3 b/src/libs/libsrtp/fuzzer/corpus/1ae963370d665e48a6961d9e88424998c0fb88c3 new file mode 100644 index 0000000000000000000000000000000000000000..8d977166ebcb2767fab481173fbb06830525384b GIT binary patch literal 69 zcmbREe?QktF9rzs4+Ove!+1ckgzAQq(-;^s;~5xOCW2JHtY)Y#E(WRl|DS=8p}Lx} I+Uq|90Gx{)5C8xG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1b0b7ceabc1a5fd6a4236b578742f5de7aa49ebb b/src/libs/libsrtp/fuzzer/corpus/1b0b7ceabc1a5fd6a4236b578742f5de7aa49ebb new file mode 100644 index 0000000000000000000000000000000000000000..d4a208276fc3d47885db3184338ad789bba53527 GIT binary patch literal 166 zcma#o%VUs?XJBL~%H&9`X8?o$|Nr|kFjQAF0EHEx;<~zd`SBoGWJ!qf!0KYgiU0R= zy?j~C1rdR&11kM5!cbkz1vU#PXbq8WVBln6kp&vg&`>;wff*>6oL^L+uM4sdgn$5O MBp3@ZFabFX0Davh9RL6T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1b3d48cff56a0335891bb4b61621c3d70e7a7d51 b/src/libs/libsrtp/fuzzer/corpus/1b3d48cff56a0335891bb4b61621c3d70e7a7d51 new file mode 100644 index 0000000000000000000000000000000000000000..cbbf915edf584b3f57a36e47c2acaf30cc689bcc GIT binary patch literal 1356 zcmcgsJ5Iwu5Pj=d!tM~MC?X?^K!FlL$>$0PZs00K3Q`0rR)Pwp;Rxxt0Zk4QK->Zf z#PY^#y#7FlWMD1ZJD=TsJM(6eJ}xg30OMgWxaOb37;_A04JfOCK3DdoP8?2fXe~X2 zAtpZJg=4<Zni-S+2!ce72c|u=+dCxP98!dJYb<@=>AF?YG!<$PQ~`pw%I&Kjz1$;= zkb1z~q!NOr=*sIWn-@iw%b(ywsacwKU)AA%yUpg5P<#Y@6jq)oyk@-7J0y+XrbdPk zMv`O#ppz0SkCuXm2#n~>t!e4APtxJ;$nUIi*@oAi06b_a(k?PdjwMgsW&ad5QT-O| zH*;^y<I96ZzEp9zOS)O5U|Nh#p>)dy^CZR^Vc}AcWn3toW+{&6ag!|V{X>?nmLV4} oly?zVpa)cwaJ1|f2o$sDF}`W%vjI7!-xpz1GusHoYPm1758{L2uK)l5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1b5481b66dde6ee35c80bce903d630cc3c2b5851 b/src/libs/libsrtp/fuzzer/corpus/1b5481b66dde6ee35c80bce903d630cc3c2b5851 new file mode 100644 index 0000000000000000000000000000000000000000..5d6bed10567284ea1871a80d8b3717aefc136722 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28Pqs3=E7wUTS<<B3KwqFfy<;6mT*y$b#h< z<}kDag@L3nkm3NTX!`~v{{IItK>%!aXKE%#JycEA6_EKLgBe&r1Q4WwKs*BgMqe7c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1b65df661cfe121d546ba9362253e10b2696632b b/src/libs/libsrtp/fuzzer/corpus/1b65df661cfe121d546ba9362253e10b2696632b new file mode 100644 index 0000000000000000000000000000000000000000..5ac66021313af080139de378808c78a2c3c4dfa2 GIT binary patch literal 238 zcmZ{eJqiLb5QV=4i!E*KthU?>>>2b5DV7L=2HA8QP!X4Hynq)~@P{~wf;K+L@a7}) zW<V4?tgJIlYM{K}1E}Ps1g{9^ul%Skivbn5$3%a7p4Y=s7_`g6?ot9V#u<-Jc1YN; zY3;&h{wWo#>5RweMD&>c6txV^P34$ujlg$U4kF~!rs=QPMj_`xE$=4V*^Buj&kN;7 BJ2?OV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1b76fd0ad1366043a1f56b75f6c87ff4f51d46dc b/src/libs/libsrtp/fuzzer/corpus/1b76fd0ad1366043a1f56b75f6c87ff4f51d46dc new file mode 100644 index 0000000000000000000000000000000000000000..a0d0aaceea6aa5aa7acdbadcb67a7e83168fface GIT binary patch literal 75 zcmdl#@h`{Am(>gm46F?M|3d&f14D5%0|O&a5KI7NK?)c+Km-y13PRLyfaI$IbQ%w^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1b7d36ac56b808296ad4bcf1fa65eef7b8d256f0 b/src/libs/libsrtp/fuzzer/corpus/1b7d36ac56b808296ad4bcf1fa65eef7b8d256f0 new file mode 100644 index 0000000000000000000000000000000000000000..92c01f121e616a9eb78b18e851a3919b4f8a2324 GIT binary patch literal 370 zcma!NU|{fw2NFe@9I5p{8VLUX|L@DdP+iTyzzF1}#+M~p<&?U{7jQCg$by6#po$oL zs~M0K<&>r(sR62HkY$Kh&toWw`~M4Ud_KfLhB*xFKofwZFvuW=ec!$_Z~&!%8lWH% zn^BAm0t`P;v;s9TFtmLG5-1J_`Xx1!qaI}Ze}*Uqj{o%xaF;_|MTt=i3<(U53?PI8 heggvyCh%K?!JrQa;!;vU9#sKi4q&k9g5<aT0RS5TOf&!h literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1bc9b6c41825ac42ce21717ad4afbc53683465bc b/src/libs/libsrtp/fuzzer/corpus/1bc9b6c41825ac42ce21717ad4afbc53683465bc new file mode 100644 index 0000000000000000000000000000000000000000..ae1b33c32edb0eff6e1979a7db0dd343ade043bc GIT binary patch literal 347 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5F5iVMz~=Ui8U-4Vr)tL{)zvguKNdbof^<J#XyTdjsrUf;W7pW1)xR{A1cP+1yWQ9 zb0o-lzZv#V{EOjZpgy3Ff$~5TL0$pr2MWy*0*WXw2)6?%u&sFvCGkL3QYu)0Azlw8 V0MZ6w0U1S^9I5ryz_6;W1^{x@Lu3E| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1be1b517d92b4d495ecd47c887d0d7c268c6db49 b/src/libs/libsrtp/fuzzer/corpus/1be1b517d92b4d495ecd47c887d0d7c268c6db49 new file mode 100644 index 0000000000000000000000000000000000000000..c9695fe36b129b6ee8d1b9349777f523e102d6c1 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9m0MbD4|Nnnq28HTs1_nkTFFU?0F{d;&HNJq8fk751^baTx n0wASx7}_DEFp%N^iGai^H#2AeWeSQ?XU*ze(DU~vSiBkli5MUv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1c596a3a0b033b20de20f8deba4ad83c8d84a6f6 b/src/libs/libsrtp/fuzzer/corpus/1c596a3a0b033b20de20f8deba4ad83c8d84a6f6 new file mode 100644 index 0000000000000000000000000000000000000000..8820134d920e832fecebb5c7b3274aaaf25c120a GIT binary patch literal 84 zcmXreW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLibKkOGP^sMqiJXRwCK TFmQqxKy_6WKq9p`1E>)I&>0Ue literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1c726e5ff7b037b201648e2dd403327597b5a375 b/src/libs/libsrtp/fuzzer/corpus/1c726e5ff7b037b201648e2dd403327597b5a375 new file mode 100644 index 0000000000000000000000000000000000000000..aa4f4342f265faf585ab3e18b16d35c2a1e924df GIT binary patch literal 1010 zcmd5*O-n*S6g~6GdP+Pj!9^g6wP;fb76c|3*hZ*L>yQu^f)w~{HBc>zS_Lhmx9N`< z{gB%G2VOzqbnkUa%XSiUVZJWse#|*DFlA#Z0Gf5Tc1A0iF=iK!w<gx<Xgc;xabEmR zCWKEOMW<&+T!1d#S*zj+XjP7Y)n@(rfs$<rCU21{I*k;}8+1096JO#A2wbQXolMli zWZ6C~SyO}hC=BXDl}m(FI|4h={#VMq{nmQpxO&*AZRDuaT*%qU<PO@!XXEGO(-_22 zD~K<*!&fM};{k`L6{&%d8iGapM>eYAjcYevkLYLfyqTe7+|IXhq)(VkUJx*Z)dy*o z&LGMH(NNllW(5KFT^5?U1^?c(U$B;@Jt8rJv8EB?!YVH@BF#VJV~7rquQLW8_>~VL zAW`Sc!h}lZnUpSl2BAbPz=;FdV38lrh+jc~2HNfj!y&W%gnu|+wx%Yu?~r8j39?}E UmIA6c3F<vlp|`Nv|Kk}KAClR%y8r+H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1c7928b22e737ea5fd9720c636fe8c3a06f1e118 b/src/libs/libsrtp/fuzzer/corpus/1c7928b22e737ea5fd9720c636fe8c3a06f1e118 new file mode 100644 index 0000000000000000000000000000000000000000..cc78438727c5226f230ddd6cd128b1b29cdb9953 GIT binary patch literal 156 zcma!7&toWw`~QofD3c>Kp8*X1|NrmHz))Syz`)4Cz{21FWEV3+Fi;EvtYHjJ21XFm zfx!x*th6{aJ~_WMuOzjo7$|Pd5DQZ&3p8Sm5CelP1A`D)4?{5{oGyc@;#2@DVi0z# F1^{X|8N>hp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1c82db6ba0cd64689a2f4daa3128908529253a31 b/src/libs/libsrtp/fuzzer/corpus/1c82db6ba0cd64689a2f4daa3128908529253a31 new file mode 100644 index 0000000000000000000000000000000000000000..bed5bd3671d7cfcfea3fb8919d614f1c08641ab6 GIT binary patch literal 69 zcmbREe?QmDm(~9b7=S?G|9_+Z|G)p2RFD91VIZNp;p8+1hRoK>AP^4}t}bQ-<JOjK I><rZm0Ko_tumAu6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1cab314ed40788602a9abbb0f3180e704c679d02 b/src/libs/libsrtp/fuzzer/corpus/1cab314ed40788602a9abbb0f3180e704c679d02 new file mode 100644 index 0000000000000000000000000000000000000000..409b72807e399a5e484de370f2eccc5c71e4ad8a GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFP@(G`=jpAe9ryk!57~)lfV~ wh#?%LkbxoPe<cHh#vF!rVTRJ;)c7)>+SK@hqWm<FSV2*0T53^zac&|50A~;#E&u=k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1cb5781376248984e1028512c5cdb5777d4fc6a4 b/src/libs/libsrtp/fuzzer/corpus/1cb5781376248984e1028512c5cdb5777d4fc6a4 new file mode 100644 index 0000000000000000000000000000000000000000..b8502543ed7c56ee2b65a7779196981a3b02f025 GIT binary patch literal 75 zcmbRE-+=3-bafE}2rx2mvNHUK01*ae1_6fT{GtN=YM@LpS1|*FBSRHKF_6c=WWm73 N0AzsJAixY_0RU5K5tje} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1cde4c21d886ccec58748c0d7df993a6e8c701da b/src/libs/libsrtp/fuzzer/corpus/1cde4c21d886ccec58748c0d7df993a6e8c701da new file mode 100644 index 0000000000000000000000000000000000000000..2272afc5ddfe6cc859d53f3376b53d6a678866e6 GIT binary patch literal 212 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz);M<Aj?o)j9oz?1A`GKgM%ysBgBMMj#>;8 zn7@NeU}V5)2+$@&PKbgzLSSp>z$|YsEl!CqD`0}~J%9kj0-7ZXRdMq_lmVp{{|5mE E08ttvp8x;= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1ce211f0e78de79878c1c2f26744aa9460e81d35 b/src/libs/libsrtp/fuzzer/corpus/1ce211f0e78de79878c1c2f26744aa9460e81d35 new file mode 100644 index 0000000000000000000000000000000000000000..3546deffa96272c53f2eac75109140ac264b6e96 GIT binary patch literal 441 zcmdT>Ar8Vo5S*gG5l|H*C`b@^!W*g($PFPUnv^TFrDg><KG7fY2acT<5-@nq++=rd zXLe5TJ}!*Y4u=pDOk1qw3|dA|oxgZ1yYIv?FhK-sHzTZp%z4@8zB*+&&;t@{DaaU- z-cI?NWN&`809kreVk{aupx$L?C&xjj%h?OyO7$%TfQE{H;qykf7IK$RkcUSs7I~5O T-KE`yI}_;U^8>8NvTBVdRE<`) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1d20720b200177fd0af56cf36d492509a761abf4 b/src/libs/libsrtp/fuzzer/corpus/1d20720b200177fd0af56cf36d492509a761abf4 new file mode 100644 index 0000000000000000000000000000000000000000..5d6e5d411b05cbf0c72be7c48e6f5dcabf01c8fd GIT binary patch literal 109 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxPKo%pE!N|Z62$Cu-PK_^1%qdNcFDS}S o%gjl&H3W)sGI%jCFdq2>)X5+K(hd}Zn_FExM@YdIDB@ZT0Bi0ZHUIzs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1d3b79b6b0040c3eb529d0819b55b0c8b8914dda b/src/libs/libsrtp/fuzzer/corpus/1d3b79b6b0040c3eb529d0819b55b0c8b8914dda new file mode 100644 index 0000000000000000000000000000000000000000..6c46cc4477af14fe1d2b7c12e8423874cc5a9d0d GIT binary patch literal 110 zcmZQzU|^_L7XXr(98c?k6cGHk{_hJEt!7|gWKaN$I7ophAkU!~C|tzA;F?*_zyT5b f4+OqI1m;1^0x~V3veohNnSY9NGK>Fb#xno_N3$0j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1d4bcefe39a815a4f323a5e5df3009acc2c3e1b3 b/src/libs/libsrtp/fuzzer/corpus/1d4bcefe39a815a4f323a5e5df3009acc2c3e1b3 new file mode 100644 index 0000000000000000000000000000000000000000..e387b5108a48117d74e4aa176672cffafd94d6f8 GIT binary patch literal 102 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6Y9;PcohdEL&a72ozHXt6*TT2Garz f44gnlh4CCAFkiSGNO3SQ#OviTlt4{=3KReU;vErO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1d8acc57eea6870ad737ded85d4e0774b961557c b/src/libs/libsrtp/fuzzer/corpus/1d8acc57eea6870ad737ded85d4e0774b961557c new file mode 100644 index 00000000..fd2e1045 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/1d8acc57eea6870ad737ded85d4e0774b961557c @@ -0,0 +1 @@ +se~{{{se__üs_[{{{{{{{{{{--ÿÿÿÿÿÿ__i \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/1d92a1890b0aac435aa0eb63697cdc4aaff77181 b/src/libs/libsrtp/fuzzer/corpus/1d92a1890b0aac435aa0eb63697cdc4aaff77181 new file mode 100644 index 0000000000000000000000000000000000000000..ee52915fa068e2e867ec9bdfe97473b6f5b1d069 GIT binary patch literal 116 zcmX?@k(yHw&%wZu%21SPzyJpS|Nr-3V5qKUU|@y_Fenx?8deuGGE^@B3Va0vkPMSG qkjP_T;ACKMXOLxJWH4y&nIi<GtBYSTR0AOhe1oY1aRM0_9P0pn2pO0F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1dca16d2e29e2bfb2476d153401ded8a0f50b9c1 b/src/libs/libsrtp/fuzzer/corpus/1dca16d2e29e2bfb2476d153401ded8a0f50b9c1 new file mode 100644 index 0000000000000000000000000000000000000000..acae80201972ea419f5b01b7f9400439a56e9a74 GIT binary patch literal 226 zcmXw!JqiLb5QSgFpV(?G*ja43u#E_N0nZRDQfwzG7EZAivWs`{8eUDda(t8EgFGf* z<_(jeS+i5)V~Zpe-76q~<2{D!A#?Z^{gQQk15@@`k7;(`Bh6uYKhA+wO5%l{kZvIl zROmjebU{nH1fYDzCJ&yF4MmQ+Vk2TJByH(muCylkGwd+3UO79kHOB^h+kYO$NU87x D&E+wZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1de28f1e1b6d8f703c99a2846712d9e63a1e6155 b/src/libs/libsrtp/fuzzer/corpus/1de28f1e1b6d8f703c99a2846712d9e63a1e6155 new file mode 100644 index 0000000000000000000000000000000000000000..220568ac1276a200f65e6697e606881b7aa9bd3c GIT binary patch literal 162 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)muu4aAOPV5oMO2?RGm1PlPxGcqtJfD}|0 gGeWf10Y%_I4QK=dgArrH%$dZfh3kVe;HK3B0HFvYg8%>k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1df08a552acca9caab5ef72c1b39184c26981a50 b/src/libs/libsrtp/fuzzer/corpus/1df08a552acca9caab5ef72c1b39184c26981a50 new file mode 100644 index 0000000000000000000000000000000000000000..e3dbc2ac9e1e26245e2c9bef8920f7d8c5df4eff GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763Sg1yVnzla{#8}2E&vu_u$&_V gW(c=4FwEg#U=Uzn0`s{b(m?J;hW`*YREVJ(0GJpN0{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1df6482dbec92e60541dbb58d6819cf519c00cda b/src/libs/libsrtp/fuzzer/corpus/1df6482dbec92e60541dbb58d6819cf519c00cda new file mode 100644 index 0000000000000000000000000000000000000000..a145b3b1f80ad4f84ea0ef0f829e23fd64cc3291 GIT binary patch literal 179 zcma$5|NlSx|Nlk*|7UWf)-!+sP{@~op}Lxpfq{pC0Z69CCze5^7#KL}8QO(`9F8gm zpgN!=g9A%DkemY&X5|1YYx@SI{tJNEvLO9nSs;z6MhGMc0wwW4qBAuUVmvFvcx#4g PhUY+F0GD8>E@lJ(3&ATD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e001b058cbf8a551961951384d42da41971fb72 b/src/libs/libsrtp/fuzzer/corpus/1e001b058cbf8a551961951384d42da41971fb72 new file mode 100644 index 0000000000000000000000000000000000000000..5c894724fa8a0d892eedddee5b4f390250130fe7 GIT binary patch literal 85 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq2#cYZL6pI$4+OZ1OSMuNs*4#Js-en2N<e(I RVlRg3YM?e>pd1585&&A966F8@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e1de04d68b75e3a1415ccef3371e9bb72b99f9a b/src/libs/libsrtp/fuzzer/corpus/1e1de04d68b75e3a1415ccef3371e9bb72b99f9a new file mode 100644 index 0000000000000000000000000000000000000000..d774120d29f51de17c321639c7e824e4aae8f903 GIT binary patch literal 491 zcma)2F^U2~5UeqA&ggI>?`}aZFjh3vzyl+}Hy9b1x*Qw~sEL@E7z+CnMIU422h>FS zs%KqUjjUj%yQjLQx*;OnK7i5C4ko+_mU`GNrEoYnrdMfy_&UCih*&Y2@o<rWYp-(e znoBT*20gyCr~s!-1|CU+@*+5PX{Ty?G}GWMkI)M@;-aqwb0D@bA+ub{^7qfUbA!nk ztYi&#J7gMo+OLbUl61N~o?z>oBEZ*!a+!mvzjSP8?_W<zywfinjCo3Dc!OHotQ7{y p=AI-RU6nn#^tk!YWc4^Jl1)^zwk>2&Gp}zV<a~d%c(#z0;2+CsWkCP{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e257a9aca2ce3439a6e83188e56c9c6416f969b b/src/libs/libsrtp/fuzzer/corpus/1e257a9aca2ce3439a6e83188e56c9c6416f969b new file mode 100644 index 0000000000000000000000000000000000000000..81f8a41654d6e7245c54fb3e7f25eef98b82c44c GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu>$#t5Mq7(k5F__D;D($x3@P6h^9kVr%E93h5qh>|%B W?LY>Q6h<-trX8q3o52C3uo?hpVGjKO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e3ba081980c7474a300b5608fd0c5abf9d45db0 b/src/libs/libsrtp/fuzzer/corpus/1e3ba081980c7474a300b5608fd0c5abf9d45db0 new file mode 100644 index 0000000000000000000000000000000000000000..fdad9213e0249c9513186ebbd4bfd55f0a51b57a GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^P&`M7 eAsnodVGct(kO3rxffNT!tZnQ6Z>VA*nQ8zUFcpjd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e5bdda85a505648439ff41ac23c33d5cf6b0ef7 b/src/libs/libsrtp/fuzzer/corpus/1e5bdda85a505648439ff41ac23c33d5cf6b0ef7 new file mode 100644 index 0000000000000000000000000000000000000000..c045325a1fccfc9c166cb6d006e3ece2e131f986 GIT binary patch literal 1218 zcmY$J`2U-jSj+$a|GzOfNHKtc!hhl7Y6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erl>w{^Xtpm%1z5E?11AH6EKsVnx_Ay$?7x2|M`}ILrV7J3$_&a3 z|Ns4O7lxSq|L1>p5DRJs+&~5fUsMAj#xjD96=Hz-iGe!)kOc+<W$yK5aE7>@0T=-A zaArVrUob3`Af5-4WQMZ|b;21V;;@7>r6B|JG&E^ou>lzSXd#7}A{!Wp2`PHTB&Pcq zaJx?dZ;qi$OcIq(h=~S<tAqe3H~)l}2Zqq-{sm6#;Ie^%K}|1@K{B3!!J!CLFhDW` VycAKd)~(M^%go^biB}g_0|0Y}9}WNj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e5e4774fba88bf5d28f2a6e08b11ad2ebde47f5 b/src/libs/libsrtp/fuzzer/corpus/1e5e4774fba88bf5d28f2a6e08b11ad2ebde47f5 new file mode 100644 index 0000000000000000000000000000000000000000..ea2fd8466acbdddeb6cfee42398efdf29a300181 GIT binary patch literal 3232 zcmd5;F;c@Y5Ik22rXyVnpn!&gH-w6wR!#np3S3d~iTs7H&`|gTG|V7YKHXVXWQ_(7 zPBI=@miMH)y}gUy@2PIvhKRm?HfuV^1i#B2hNkM~ZaBNzRn!25B_2&T!Q5T^?mPKT zY&?|cQ((H1-ZX0n6T@fonDBtN=e_kPcQ_uf`pkwtcCu@tO&70=eF?<kgPw>i|5pBP z?SoYmGgQ%|TWOBRP@2C4B^+`$CU_YVp5Anb0h3`iVPb+KW|YOWl-kovDFWiFK(HPO zd<I;XsT(pUddbzgD&Um$wPisli=G?xJt%=#v_nju)Pt7cQ=zrPZWu`>9%n2Hi6oA2 zzQl3(g`KvSG0ZYbJ|I2ar=?-*KUvqO_ZMi@*R*;gy4eGAYx~ZQ$N$U@Xcrw6MCZX7 zWK_`-ue+C)aOjVyg`H#t8v%rigD6r~vEGIlm}i2L<Q8!iF+ht^C6p2}Uug&_F<Ijt zY{49-<xd&7Q>(HJ=x2~m1s|=W38gXav@@RIbT0$%wCsjGkK_RdbmX4KAMC+Lt0yW` oSy8b}Zx<jUN(!%}B_fGqj2faFQ`5SJ_3A&&@rtUN)m72*7bp04EdT%j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1e75f08c8fdfdd5ec4bb70eec4f236e77b3f3c49 b/src/libs/libsrtp/fuzzer/corpus/1e75f08c8fdfdd5ec4bb70eec4f236e77b3f3c49 new file mode 100644 index 0000000000000000000000000000000000000000..204d14ef2ba64856bb9cfe04a3ee99a6ad19c0f7 GIT binary patch literal 136 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHZF&?luMnMh0n+`s!k!At1V19ZWMY oSVL(BP6h^9pt92H;yFTKG2wOwhB*uZ-xxTIf#SjpG7y#30NYw4hX4Qo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f09cdb2f36a27faa3215a482922d0ddd171fb30 b/src/libs/libsrtp/fuzzer/corpus/1f09cdb2f36a27faa3215a482922d0ddd171fb30 new file mode 100644 index 0000000000000000000000000000000000000000..e64bc9e81579327710b3ec7473de790ade8d8a88 GIT binary patch literal 69 zcmZ?tU|<knU|^7_{{R0!*DalD>uLyasjg;lU|`Vm0!m)GsHdl=0mOP*AVLL1=;;9^ Ks?UKGX957!rxXML literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f243de603023706b356a1c202396c890b931d5a b/src/libs/libsrtp/fuzzer/corpus/1f243de603023706b356a1c202396c890b931d5a new file mode 100644 index 0000000000000000000000000000000000000000..9393ab251cee5955febe0828ce2e736e52a19acf GIT binary patch literal 835 zcma$3|Np-~1LFq9qSQ=|dIm563i&cHR#!7J{Nw%u7TE^@5NW*R|9>FqhGH2ZhH!|& zISj{vj5!SL!VDZh2nP+tbCA@ugOniD{GS69VEF$Ztoj_7B+eYdc7@>sKxd*jL>TH^ zRL2sw1a3|+)YJdLA~f+3+%91TE^q*&*ah(b;lTR?iXw#HtBV<d;SY^W<cPxJcNS2D tBdb9&2NdBb?xAjEqPQ8HxQKK!&{^2r3<@m_7lH&)l|w`r7>a<5Y5*w@iL3ws literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f47ab0e8c89c4505faf634959468b81e58107d3 b/src/libs/libsrtp/fuzzer/corpus/1f47ab0e8c89c4505faf634959468b81e58107d3 new file mode 100644 index 0000000000000000000000000000000000000000..ad3ffeb4432d8cf6777e0de600fe0b89fbaa6a66 GIT binary patch literal 3203 zcmbtWO=w(I6#i~9m^bw=Z4ikiW>PdQ+NALZHz6>E6r>PbxNxP<p}v}-lVo^rqBa*h zL877H#+{YfDTOW-92bIJx^v~mjdYu>i=?zA&+nXj-@G@;q*Z#7dGFqH&pr42e)nMt zj^cXoXWI?aG+n}`wdmgL3N?ouUngBNuJ4;&z?8;h#U@5xx06=q1m6{mZ38cLI4mLH zpLt%ENwrp`#aCR1wWomx!g~|gdGbRU1wWy?(47&zXoR*MY-85qetSz6g)ZC*XIIe* zIi$5wJ56!x>RAhjecu*{Q)`z}zVJ9Ii)uJNDe7WC!&72-XlF$|$Iu#=LM{l6sBt3f zWoeAa0#W!$P1$s|jco~Dup#<nv0Bol*|6xMlTPnt{$yGj>rvQTUa4KGB+Ip#W*L~k za6st}7<+lDa@qdXE+1`!SNM|cq!{%mGeG8<$c9XUh!2A&Hl0@8qFRT^9~-#B^O|}f zEYqEn_>Fl#e|MV6&>2;_idwLpAUV#{{wGak@^P4~s;a6SG9mtbHrM&`>-2^s-{)a* zaZy$upS~!N==agg74xLUMT7mc`hsIl?;`QJhxz$e7OZiZG5B0$*KN}AYT~FKz!ilw z5koDB^e$95bmffnd=^l=?p?M?I~S!oXIDX?ud=s+>szkaD37V+{&!AxXcT7wh7I$s zmAObBiM*jgPrpc(_O$sCBX>A4*h6xT1H7-94)<3v9<s~_6{vYgfo>cu(2tKQ&@Afz z!9RP@zhMtm;-46;(F~<&Nv5xFm!n2gAh6r*MIzq~eDAXGtPzQBRUuKZi`Jb~%>s)u zu*tLnq#~ZK%n|W)pk2!iEP@kw18796;ia|JR=ieq9pbA<gl$S=Y{K+NU33Vl6XZH4 zICx5Agw9`+x)K^#hhnuRRsx|v0b(UzR@P7TmF~-HQ|x=s@jLjP1H~7Cc1Nubh)@ze z!l0(74~2l=cK1MRF?86ItB*1Q?b#mGjN)$JRy{z_X-F!ZG(U@t`~qP9-pTM~2GqV? zlF;lknS!dl=n$4Jy50qzbBegU#Hi9+0|MynZ_;BsJK}rZyr+uI%Ziy{#Hu$)f5{^w z)qsj<m3Zp*YZ?S{`tK`|Vbd0m?z<DXItX_UpgCibN=s@Ot`jv5-6U*LPr)<coFyeu z7(PhcSmxH&LqtBN2khZi)vqctM+W7!mz;t;jVfFl#G8lP2OQ%uq9`}wt;SkK&vu=2 zoJq<`H1C`e!9M9c-Rqk5+Ik}jwbi)cALc@Sq9)HQuUOwu)Stt$%i9%~N7+%a$q&9a zIJ+n;F6RHLR=7fgIz$?jwKzt{)HN+>mZZ=h*v!kq#8Em{SH1)Qc1d)<+^ft<jJrkT zLRr-ogcP7u!sKzBF_}bp5-MR576NOy7tVPqAJv0_>2=l!(EGj;OsZgk5*O5j{Mvb~ zj4HdfCDl_z%-+2;yqDig?pqKe@k)TQB+bm8v!7;(Q_Y7TQWKA&Q%6(Y*;xdPkHFz5 znqQb%i&7?mVm^)tb@9s<BX?-&UEdz|)q~*`C`wrb3UkO)LgbzlAm;r#Y*)0)=#bjd z%l{UQ%JR=c`Y7v&KIS7Qe;*;ixa{asSw7K}1|U~nTMF`5vRj^;#JzjPYvQByD%I#U aA%*3?2jaEMXUJ>D(dCGrZY#Bhob@jv&rvD> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f491b62170a646d98a0d5747939b46f2772fe71 b/src/libs/libsrtp/fuzzer/corpus/1f491b62170a646d98a0d5747939b46f2772fe71 new file mode 100644 index 0000000000000000000000000000000000000000..ea52b647fbc7a90ac44a24d3d7b4dc2779a89252 GIT binary patch literal 78 ycmdl#@jutgm(>g);2;I27!(*7ih&}WARZ$FLv=BbPzPc#0P(;Wq6bJKP&EKHzYOL8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f4e8530da7437fae1266020f6fe48febf0007cd b/src/libs/libsrtp/fuzzer/corpus/1f4e8530da7437fae1266020f6fe48febf0007cd new file mode 100644 index 0000000000000000000000000000000000000000..0eed0978426d311fd1c416455321fa8c40ed4a4b GIT binary patch literal 69 zcmXSpude54XV9x=_}$vV@c-|31_<!dsb*kcf^xvrzyJUL!}!eY42;$P*%_)^bQ$fp GWC8$+d=Y;D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f7217e98aff28adbc22ae15da519b468806d9ce b/src/libs/libsrtp/fuzzer/corpus/1f7217e98aff28adbc22ae15da519b468806d9ce new file mode 100644 index 0000000000000000000000000000000000000000..9115fb26c2521c444f6e21accdcc78926f8fc80f GIT binary patch literal 106 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc q7&sXiWEp_UDh%cbF$lK<g*g}+80K&=`~w=(em+%*fk6SJwi*Cjb`@g) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1f9065e1fa9ec98fe4ba0b3f48c4936687a69e4f b/src/libs/libsrtp/fuzzer/corpus/1f9065e1fa9ec98fe4ba0b3f48c4936687a69e4f new file mode 100644 index 0000000000000000000000000000000000000000..4dd63b3ec78a46f72a0bb838315b8b1557573ac9 GIT binary patch literal 106 zcmXYnAr62r5Co^FVnLJOP!(VaPv8yJwJq*MC7<Y13FXqTX0ns<CtMzg!LC`UtF@{X m0mIykB!k3P-O@hnKj{x9?T}Q4=EfU}Wy{9W;k*xzOImy%aT1XL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1fa57f9f404b031475b678adb8d5b58ac93beffc b/src/libs/libsrtp/fuzzer/corpus/1fa57f9f404b031475b678adb8d5b58ac93beffc new file mode 100644 index 0000000000000000000000000000000000000000..1ab1eafd532e1c417846ffcde2a0e343d8561174 GIT binary patch literal 363 zcmYk2%}N6?6opU5LgPYEyDJD4q!gj;LU2<G6<oLxe1l=AfeuWi%rF%ia5lE3;1ft5 z&SwxDLBV)3(b5C?Iro0ay-801!w^6kOI2{C>=(4YwcIfY70#n1SK(|jjmE8P5_M<$ zzzOywlLl+f_n+$q7Z<>)1PUHJw_XgTh?Oi*G5?5T7Br%&K}N-rF@MhjJbMFdo<FQ> z!Ra*nZhAJTYE?|vF?NU1ua0S<;o7RFQ(4MRjm?T)Uq6}yTmXrB2*-JpCyL0O&W@np z!J%odp058S@MA|!K8MkEiHuo+0nOpIS9473OPv{RYmk@x1A+P*9kqP1foC*KfM4iQ BQ4#<E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1fb4aa3a057a008d92b9a42de0b081e009f7dcab b/src/libs/libsrtp/fuzzer/corpus/1fb4aa3a057a008d92b9a42de0b081e009f7dcab new file mode 100644 index 0000000000000000000000000000000000000000..1f54a0b5a5d5156096e371f0019e50afb8fdf0e7 GIT binary patch literal 69 zcmbREe?QmDm(>hlpzt3ASQsP~Abf@>CMY8_9>}OJW&~nKhU#iBAcujmnn5d-=|3xj F768Yx5jOw; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1fc76076c283821acd06cb51d2bec0cb40841775 b/src/libs/libsrtp/fuzzer/corpus/1fc76076c283821acd06cb51d2bec0cb40841775 new file mode 100644 index 0000000000000000000000000000000000000000..de00de887659cebc69775d24fe13e9d75260ccf6 GIT binary patch literal 913 zcmbVKF%H5o47^AT1r`KfVTTVeGchu-(t#lZg(aUTf8YhIY`h3H*iPCe1*(86HL2~M z&u4EYAX8Vh-|n&_-vMjw3QB8*@lzZ(XL9d<*^1*uUQV%gnI#NR0%nGc9zqw7wH$78 z?({+aI)`IqUvVm;$OcrL<6#IP8ONZvRx%EA9=-MD=>NjU^{#V80+EKxPVWJqg$IAr z=N#%hh;+t7eoE6PsKxX0Rvda}Dx7&<mtgLMQ_o%JC)ZbZra`T^FRI#bCX`@*YCh49 h1vnw+D95yXB<Itv{(;l(^AMN|yHuTJ-+e#+&@a!XmA3!@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/1fe52b716c5d1f12064976beafb3f4c70fefcccf b/src/libs/libsrtp/fuzzer/corpus/1fe52b716c5d1f12064976beafb3f4c70fefcccf new file mode 100644 index 0000000000000000000000000000000000000000..9e853f0fd426792776f41e19c983a7ba6d3ce827 GIT binary patch literal 108 zcma#o%VVgCXJ9B|$mB?^X8?o$|Nr|kFjQAFFfao7sqtlrIi;!b1)K~VvLKNLAd5j3 ssOSg-!yJZopb{V{45T<17z7yFz5!YFKv`V|hX4OT1^|H+&^&(*0Mj2D=l}o! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2024efffb9c49434d8893ba644d45dd77931363e b/src/libs/libsrtp/fuzzer/corpus/2024efffb9c49434d8893ba644d45dd77931363e new file mode 100644 index 0000000000000000000000000000000000000000..0fc98915bef9c589fe5f466c07b630d9f8b097cf GIT binary patch literal 1024 zcmbtTu};G<5PcUSk!*-e3{_A>)uC#|!UQ7>AfY1h0U4@D?a&I9EZ~6&b>R~t7CxfC z!(YIJIooL*9F+`ll*D&FpWnNCPRDr8Qvj=ZkiGDqhm`Ub5CS0MfOsVHvQGs}aBfyc z2t%xWB;7|kUP2+ERVJgkNpF$#D@ZYp%wpp^Xn49f8W5-k!8_p8Zp5gH2xI67$Y{nK z<jt3K3e*Le-aD*kaFW+e+siiiAlm4*`()v}9AP-#=V#OW=^?wGUKI?)N5BtZ|C5dH zQa57Aq7mDsD8c-wS_D8(3#+OY!9xtL=<A!@6N|0r@Nwby4td+L7p;Ml0)?_pQCjL) z)~O}i4qHjuaN}${VZXP)<|G1w&+Y=7SzcP`e`o()g^~iJzvH)|!K#T#qAxIQ9L{P} I*)KKw1&%_VO#lD@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/203167cf6a0ab546f9376abe90aab7843600ee22 b/src/libs/libsrtp/fuzzer/corpus/203167cf6a0ab546f9376abe90aab7843600ee22 new file mode 100644 index 0000000000000000000000000000000000000000..2177cfb23eba08bc2774a581cbd09701c857a95b GIT binary patch literal 46 scmXSpude54XJD*m`2C;Z@AsA#hLvDYsZ-4W0wAgX><rZ{K<<`I0KB~sga7~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2057a70c4bb533699c469d33ab4953200bf39183 b/src/libs/libsrtp/fuzzer/corpus/2057a70c4bb533699c469d33ab4953200bf39183 new file mode 100644 index 0000000000000000000000000000000000000000..1429e2fd35a87dee4dd7c718e71251f30af8fb22 GIT binary patch literal 624 zcmb_ZI}XAy41JlXU}Wpijg>QWV`pVVoS+lUz{I(@3JXIo(4|t%b3T<)g-lqH<M{dW z9KVj(4ub_S&TWky4NB8dSwm%TQitsfETic1`r-`QdK5bVQ-!C<ERujRDZ~PwSYz?z zs}>WPl63L(rdT?`iiJFh6@%5&$G9;$<)3<lqFHjpNa5}}*{~i+4Yaxpx1Nd-n>WsY ic-e>BT|i%2Sgz?cb>_byjUmltnab;z=m@umqT?6$(Qgj` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2064fa04451a270836ce84717b7560d9b46191e7 b/src/libs/libsrtp/fuzzer/corpus/2064fa04451a270836ce84717b7560d9b46191e7 new file mode 100644 index 0000000000000000000000000000000000000000..25c877e3ccf2d52c9952a53e70d8d055ec73c503 GIT binary patch literal 138 zcma$54*`rtnH;J03}Ep8e@1FfL3K65HatLg8v`Q)gEYf`28QZlAPWeptJT3Y1A{e` pX5eICkOitMtuCG;0#eT)+|Ix-he3d0-?#4!90m-+5QQv2%>V;BEa3nE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/20a6a5b02f865bcbcf9917bd84384c18cb6370c7 b/src/libs/libsrtp/fuzzer/corpus/20a6a5b02f865bcbcf9917bd84384c18cb6370c7 new file mode 100644 index 0000000000000000000000000000000000000000..1fb0e6a8f4eec00cfaf846871b4190872aadc097 GIT binary patch literal 106 zcma!N(90`{XJB9`%H()j52S(M|NsBKc?_*U9wS76p}Lrnp;`-wtJR?*)=-*(lYv1N cq^_cPju2Q(xSfGv4v3||!N3Gl#lTPv04YEZTL1t6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/20b298482c5928c3de0d9ee2cc045eec2fc98810 b/src/libs/libsrtp/fuzzer/corpus/20b298482c5928c3de0d9ee2cc045eec2fc98810 new file mode 100644 index 0000000000000000000000000000000000000000..bdafd0f57474ff650301f53c648ad5e493754025 GIT binary patch literal 112 zcma#o%VQ{sXJ9B`Nc}II$p8lb|Nr-8V5qKUU|@tZ7#IXVa@E!95H$?eP?~|0fk75R jFfx=@7tav_N+>W0w=*!XFfhykayURL6@ZwL!L=Fyracg> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/20b34f745ae491df455949031b534e4af7a8fa3c b/src/libs/libsrtp/fuzzer/corpus/20b34f745ae491df455949031b534e4af7a8fa3c new file mode 100644 index 0000000000000000000000000000000000000000..15af68cdc4e1b646aae4d5d44bd6a9839e47070a GIT binary patch literal 1029 zcmd5)F$%&!5S)lbENl!G3W8!`D`;os1A<RT6~xwPAy>pgNTH2=e&8c~k53SbID41V zfLI6`T*&S1Zn&MDS!6UoMa}^m1z^sPrlN~PMdLqEg(Tw}>%&#dbGdLs@nu>zo!E9Y zpaVx>rw!)%HgCK_o3;G@UDPRX)ek2goojknG&-^Yq17>BiiG<_N+vBR&8%j3U>?BB zU|SiiVyY<;UU-_8LAZ~dQ<+2OAU|;LrIJDZo5C5;Js%6Ii4?tu6h?$xnj$4TH3mg} qs=Us(6YwZtil03!C|tN*I$1I4R^@7vXuY99GYm7I1GNHXmcSh~mTJcU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/20d484f3139ac254c92b40b6f3375b3a5452ead4 b/src/libs/libsrtp/fuzzer/corpus/20d484f3139ac254c92b40b6f3375b3a5452ead4 new file mode 100644 index 0000000000000000000000000000000000000000..cb5b92bf21d9e5567e972f35620dbf8a3cd04a9d GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|NnnqeTM341_nk31+YkUu^K~lF(Xh+9n5E7uw-C( u31)IKFvv0#&k<rUW?;xk&5KXY&nqd)cVJ*(Vqi$j$;nU7E8>IbsRjU^lofCQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/20db24304c5de28bb68109c0365d7c690d0da989 b/src/libs/libsrtp/fuzzer/corpus/20db24304c5de28bb68109c0365d7c690d0da989 new file mode 100644 index 0000000000000000000000000000000000000000..16f3177778bb8b89f4a16d309a6b8b8b336a1e72 GIT binary patch literal 73 zcmYe!kFP3;FJj1KVBkotX8?o$|Nr|!SPY^J27MsFRUB`SX;57qAD{V0w>ULEKDE0( Ob~QxNF-C@C*3|$FJ{8sg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/21318c1a2b8c7365b1bf7649c9ec0f3b79e50a27 b/src/libs/libsrtp/fuzzer/corpus/21318c1a2b8c7365b1bf7649c9ec0f3b79e50a27 new file mode 100644 index 0000000000000000000000000000000000000000..cf4608cbd88d54226c846f78088d7f82b68151f7 GIT binary patch literal 103 zcmXSpXJlaTW6-Pq%~0RM00o{aS61p&GXP~+8LAl=m>3xTi!d-VpsC0KN%=Bx!E`bF d`~RP@`ae5EHPE1H1_cHOAgNxhTg~wQKL8iX7LNb` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/21550a35b9b0025fdb52e878f389d79caacae33e b/src/libs/libsrtp/fuzzer/corpus/21550a35b9b0025fdb52e878f389d79caacae33e new file mode 100644 index 0000000000000000000000000000000000000000..3d74546ee2f4e60ac637dad560f3dd27c287319b GIT binary patch literal 69 zcmZQzV5lx;WME*pQ}O>_&3|@=>XvE-hAo-@8GsZ702$R_4w&&D$gVC1YEfe-W{5w= I0Ay7I0IMq!x&QzG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/21684e5e2d68246e4e674db92544a31c778a63cf b/src/libs/libsrtp/fuzzer/corpus/21684e5e2d68246e4e674db92544a31c778a63cf new file mode 100644 index 0000000000000000000000000000000000000000..9031908c4402ad25e85f251107c5caae51c6635b GIT binary patch literal 44 qcmXSpude54XJD*m`2C;Z@AsA#hLvDYsZ-4W0wAgXtPIsa-WC9vFA$Xg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/21716e33b4ee3ab55154b72e1cfa0e2145e3c561 b/src/libs/libsrtp/fuzzer/corpus/21716e33b4ee3ab55154b72e1cfa0e2145e3c561 new file mode 100644 index 0000000000000000000000000000000000000000..e849936340375c225cef80395cacbdbc102dee36 GIT binary patch literal 106 zcmXYnp%H*E00Y0SSh&NX8G;#@0fj(dD5wY|OLW(gqr`mflVyf;0gf%Mx9OC<*h&zp e2neNQXsm|mCk+h#T}rv7dmw*HB$}nBchw8!{}nU< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/220e94d92ff849bab5ce93b251e34a2377b503e1 b/src/libs/libsrtp/fuzzer/corpus/220e94d92ff849bab5ce93b251e34a2377b503e1 new file mode 100644 index 0000000000000000000000000000000000000000..214fc50ea48bb6ce11fb2e22adb87955ba2972f4 GIT binary patch literal 630 zcmb_a%}PQ+6#nLV!4X<it_lnVDG1X|yEX+a+Vlu9Tx3W?MefZ42Xd21;1kGwiQc1! z@EKgRXyNIb?se%R=!2Q_oik_7oS$i$0Uiy2xU21il8|pWcPnIy%bKUCH?n5f=|}Bq z(uvN7C7^<W=3$CiwwEcq0dHU2CJLt%{yGt(YxM*(@8hv?8I!BrDYjjW+((ZgA~(SM zt4JOLwZttl-(VLFU^<tAOY+kiZ3Jz>K4leUrd2;84Vjh32Z~E7K3dWu!5we`nDqb$ zW=nnQFZJDTug^cn9{hiO4BFQyg`9<Iw%qf>N<M*}9hmkg8uhG6j^UC$xD~RMWr9-C z-=OV0_07U>vr-LJArClHTI(r!h!gfsp}3?XQsz*^{|b+tOaNCe*Etl{a(S59r*r=| QHtpwQRVox{IHUo70I#%mwg3PC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22319cd6f55d76f5bd2ad557d53c38a181185510 b/src/libs/libsrtp/fuzzer/corpus/22319cd6f55d76f5bd2ad557d53c38a181185510 new file mode 100644 index 0000000000000000000000000000000000000000..705c4f0f98ec0d500b908b9c276621b056b28ccb GIT binary patch literal 69 wcma#|Wnd_YXJBBc%Hv3_2hu?BKleWe1A`cdX%8Y87#JZGCdtXbub0OF08$|a(EtDd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/223edd321605b2a814a42ef7bcfddbdc7d6de6b1 b/src/libs/libsrtp/fuzzer/corpus/223edd321605b2a814a42ef7bcfddbdc7d6de6b1 new file mode 100644 index 0000000000000000000000000000000000000000..b40b88c09ba511843b6439cef2954a73e3343e5a GIT binary patch literal 82 zcmdl#mErYDcCPCG3=9koQa}O-6o9yzp_&oI1`^f9j11M)VCG4X(EtDcg{yyo1fdcP N3|=7ddJtf!1_0(^60-mR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22820aaac73f83bbd2e51a446677a68210cd2abe b/src/libs/libsrtp/fuzzer/corpus/22820aaac73f83bbd2e51a446677a68210cd2abe new file mode 100644 index 0000000000000000000000000000000000000000..e16bbdb6c8c8f68c5c7099db39cf4b7dba65d608 GIT binary patch literal 226 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8U?{Ezih>x`jPeXj0w9^zp8w3%#f%VD3=E5{ z!7KroK(#g_Lv^(}R2m`)<Zv=D$TBc8B<AGgC&M&B^Z*To=rOG>o+AX-hcFYU_6I*y sULB^Om_fLmfk9;s!)pc>1`Z$;WMF^5zyNeH2na(cC<%1dK?c`q0Cbf$761SM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22964ffcca595066641ec08ca797ba4fb61b2626 b/src/libs/libsrtp/fuzzer/corpus/22964ffcca595066641ec08ca797ba4fb61b2626 new file mode 100644 index 0000000000000000000000000000000000000000..d62025355be37c59973997937a0db264b5997c4d GIT binary patch literal 325 zcmbtOu?~Vz3_PO7qA@WVM-nDyKfxdH8wdjf8v!RC32elXoiFqQjFa^W7#BC2w7u8f zyI!PgR1ttYmE_3Ic&T1+c8+j44C0{zn*birWIkYMi)W9PJJvlG5Fo_qK}tP-P!r-y zkRZ*;QIrtXNzR%pJZ9MV*+)}*@U(QcjpxvvfjjeRHg8EPHCh`=3Dp_R0^Le~`yuTc R<E_8_9H=<?;dxiM;0<&;Lz4gi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22ba06644742205b84c5edb64a828c6c2ff9fe53 b/src/libs/libsrtp/fuzzer/corpus/22ba06644742205b84c5edb64a828c6c2ff9fe53 new file mode 100644 index 0000000000000000000000000000000000000000..4cc87c60e3b32c82ec40eb8f02052d79b209272d GIT binary patch literal 1991 zcmeHIPiqrV5T8xcWRrsgLyHPxPW7M_(_=#*IqAiNU!ZF#TL_jUWD^fQXe%V<U?AjJ z2wnt_eudRbKY=H`2_6ETJTzc!p1+xWyK9VE!IR*yyf^=LX5PG+dHzUeClf^sl`FDQ zfk=U4G3AkE0aq#w!ukx%(@CZv^&E9zudnxsHHe&Bb!t0VMv3$sJpUUomS7S-9~Z}} zH_%5KK8hKls~m{(#uvrwSXOwimJGHurHaux0IOBAUETq)&VrprB2b}4d&T00ar!~e zo;{(Yn1uQ^fd88Dg6LrM^-omh(y~az79it8y=M-m(?gECz}&jCBP?1wA!g$IvMA3Y zbrge_EUnpcH>aA;rrj<?VFGsDz=T=jRE)GQcGwnd2LL4gBK8VxLTpI&qD0P4qu%CF zsze>{jjy>pB!DUMAz?y)`SRO+5G!n2Tyc_-Z>4&#R`n_kW&vBg7ob#{X+6ST$)x4B z)BS<D?R=kTZ09<j>pa@t>$py<vA5f-x#f+-ekQzSpQw75C<hCdB-nR1l~O^ig7<wv zXnij@5XZ_ku^F%^b=VBc4PFVZdCg<9S?B2q7QGpiA)ya~cG%Ki#6^R3kQUczqC*sC zW0@j%*C@g9k<Qn6<Li!OA@aZIB{TnC(W3x=Q}pWogeIEXEo!*}4th?}Tc%=uT`rkF zsj2hLu*L;Wd|aAJLOnj_W>TosuxBD9^xSKwmiSZ#Fd-OnAw%8Z8FSr810jg0$*dm@ zYJJKB^TEq`z{tve3SO|UESFb_=nia^5uulLZa+lFV@Rl)Ll&z5hQpyQkalX+L0fL& z=_)%MisJChzgEi)k1g#fGlAy}CV?%F%G^xwM`z|KO_Cp;60aokBovnLk{Jz#wjjXq av3K%63POeXA6dp)2oL#Zl|+j7@cRaD6%e}s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22cf9894602eda1a399027e2c36986aa5f37f541 b/src/libs/libsrtp/fuzzer/corpus/22cf9894602eda1a399027e2c36986aa5f37f541 new file mode 100644 index 0000000000000000000000000000000000000000..8f82b5afc001eed6452e9f9b0cddfc97e7b69896 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDgYw Y93e1YxSfGv4ub%Y&B4F~Qvoyz0H_2G9{>OV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22d276898acc2ef6fe03f8e92d3970d8c5a9c0fa b/src/libs/libsrtp/fuzzer/corpus/22d276898acc2ef6fe03f8e92d3970d8c5a9c0fa new file mode 100644 index 0000000000000000000000000000000000000000..201ada5ec7eafc5208ead7c9cafdb4c78960d91a GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu<=;s1YM28QZt1_nk31t4FonxUGZn4y>vD5efl00fo{ y3@^b9P6h^921X8s>f$*<48{x$IjMQ^$@zIDMfna43``6mP@o+WAHq;o5)S~hXBPng literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22d88f38377f5a29624de95ad24187d0b7f2f822 b/src/libs/libsrtp/fuzzer/corpus/22d88f38377f5a29624de95ad24187d0b7f2f822 new file mode 100644 index 0000000000000000000000000000000000000000..2e540b655977a80c5df8533f3e3c08ec4df0d6a9 GIT binary patch literal 2527 zcmd^BK~BOz6nz6El*B|MD;5SM7^4Q%g)4RM#&81D5Yq$_Aq3O~UEo3`CLV#Ehwv62 zfp7|ATv-2SN@r-TrQ*WG655&R@67w}zj>`$MeouC&}kS}pRRN`j&lmwHX!5x?5>c1 z8smT}4&|LPG8qg~C@y}Ol@=I@=vYp+A*WYJHatjq<mAo3c{4Dw$Up#s&>$pMXlj2% z*^9{JF^Pc6#7EFv$S8e2mLh|FlWSe4=%Mx+E;v7Y2=P2AdrBzykxK(NbHv092}1LM zFAZtN6b$+aERU)4=Bm}+A*tF^DY!C?xqN7NB(8s<iAWY^s*@fQo#EB_V1*mN+Qe+U z9VC!I9<<Bu9-XA!oEj0Hj#6u@G+`l;9RRe@kbC=Zdn^j_F0}zPDgQm#d!evp0;7>i zWWH7$6CDw8K@)>2f#wsxQl*2?bbnMO-tg%$r4U<O^bCnkzT-60MxqE7ouYb6HH+U; zJ9$|WUx-cA%U6017sij6Vv|gdDeKrwMQp>;>^2OCEqT=SyslBJnsD=r;UM!>QY|r4 z$O;+DvH$buon9cP4$;M~W0}{riz~})*PFHTLbqNkw=?WkN%AZVK_<lKEM0g2_pfy7 z3vAQHHLVUBmeH3ndPt8$3Nol;H4L~hMvv8b0zBNZP6fKV{MZ@zqs#ngA!mkQ5;`V+ F2A@~+iPZoA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22e706b61599b63012daf28576fbbf951c06fb2f b/src/libs/libsrtp/fuzzer/corpus/22e706b61599b63012daf28576fbbf951c06fb2f new file mode 100644 index 0000000000000000000000000000000000000000..95d24ba6d2c6c920094a4d13f05366d0ab831c0d GIT binary patch literal 244 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*iy4Sh<I56rN>k$tGIA4>6^b(wbqhEd z7#TQZK}s3sw9f%i?ZP0EfuWwU?HiZ^^BBP-LlHw}DnmV74FgO`6;K+ggrO+)zZXmm zM-|Ws|2=>X@%aBAsNf%v$DmkTJqx0mNq|9zfuR+dzXr(f`TxJV7;4-Dpc)_miZKDj P^g;T;K#@tHm~lS<*UdO+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22e8328ac63816abed85d1c30e12999cfbf0b2a9 b/src/libs/libsrtp/fuzzer/corpus/22e8328ac63816abed85d1c30e12999cfbf0b2a9 new file mode 100644 index 0000000000000000000000000000000000000000..10ba762b9fee6887ab12742611e3a0e81bd5b337 GIT binary patch literal 172 zcma#oOJ%5uXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#$9fGBC)&q<$u# zOBsA)W?-lXtE++-#8A({kjju*)Go~MpP`C@<NtpKM<xa&GZ`5e8aN9W7-Sh383Y)9 Q%mG==0Tg85nv3EX0M92Ry#N3J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22eb4071735ba26425b0ed9e7e9ecd9c3b6b36ef b/src/libs/libsrtp/fuzzer/corpus/22eb4071735ba26425b0ed9e7e9ecd9c3b6b36ef new file mode 100644 index 0000000000000000000000000000000000000000..f9b09e7d53a710fb6a9ba4638e3f0826651264f3 GIT binary patch literal 109 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E8L1_Oft14A(*LopC1RjWf3GFU@t j22KWLS%%^{LO{L(gK#?o!yF(>6C|qu#Ec+@YjrgMus;!$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/22f3d21f1de355398fb28e60af305eaa0d3def1c b/src/libs/libsrtp/fuzzer/corpus/22f3d21f1de355398fb28e60af305eaa0d3def1c new file mode 100644 index 0000000000000000000000000000000000000000..c9d0c97660406f626724687b51a0b6f4360d5106 GIT binary patch literal 2019 zcmcIlOKVd>6h60=axGo7jV`JLQYo$4rWRBv6g35fB6Q)_%@E?12HGU#CL#_r0UxE{ zrs(qO#{bZz5)k|Y{s+m*T@}%e-#IfkxwoVWJ`Tyuo!2+#@y$7Eu|f?+MD?;Cw9rG0 zG3!KH6L}Z~>OoParSWK_T{}sXl{JcJ2h(UX=zQMs>;R3K<WCmC-VMrr%k6o@@Qh0* zxMBI5i*bCZ!Fnh4UtM8XmRM6A4vq8p>GSDf9m@4Qd}B9`du)vkBdd1AODuh>9MT1z z9pWY}ZVHx(%pC>F(px?-1l!XG<B<dCd*WZ1&<6USng9!8Yiv*S32@+qFQM;|V4S{2 z%oSgpI{FHd=?P7T#`}R|_W~t^vi1T+Vf*rNyxaeU<oB7DXBh~AY)h}_xP#bm5`A}Z zZ%Rx(ge?P}MjT}Y!cQG{F*f7`NQbiw51nJ^C2DtN$w6DX9GWk1&*y5TQLo;R<+$;5 ze9hRPcXbZ?D!@oy!wg*}8gR{JqRpV9Ud+fvg+2#ih_*(9!&VmNlWNBv>AeJ+SaTa` z&lDbayE-1CcOgGT!x)sR_1dMpBmu@|Z}6Wv00ow5gunVfe3?v{*HRh8?3s6?y;};h zOt;Z3Di?@FpkF&0k#BJQy1_QSnp4nbGf=gStzsz`ZWQx21r6iT-|fFWo3z><j!daB zP6?yw7_P|eaC02PhfD6IGCh#L+7$V{_dS8BHO_=RuBsCJ&nm4Fb&P3-O1JzSLa0Sp zRfzVcK5k>vY5op*5eWraYRH`~b=fM2RVL<Y$jS4VY})eZB33PYWCIN&^t`z)p}y)e zS58=de<q?yNArbrUQFcm8~|CpB>#A3FwGtR*!+CHQdOm9*r;x)fKNblr_&+2rRf6( zQVe`J6Z+~a3ID>iUKSf%z=#kcTQgR-Z#wbl&=k&K9x{7CA)M!lr(ka#RfJMy1Wew2 zLhsXpy27{DsT|m%<HC|i_7-3N=An2@9+Cf5-(J49_}s>Ybr1{ACyJ^~==~~+qf%on P5?I7OlU&Qnv;Teq93yms literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2313e4928dde8c50a69f5e98c91dd82f62679354 b/src/libs/libsrtp/fuzzer/corpus/2313e4928dde8c50a69f5e98c91dd82f62679354 new file mode 100644 index 0000000000000000000000000000000000000000..2cf88bcb7841b0826be0e375f41df0f6285f8f06 GIT binary patch literal 206 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzidI)MJY`^%XP6@dlu=+1Zf9UnnZpQC z#=^kJ!2STp{{J6H071337DIKlI)uYu4W${l85m@NN`a>R_XR2f87t4gBmk0b?fK7K xoeMS(WX58Mo&ZLmgFv8Kn-OH7L3J^T{R|8&3>-iRvL5IzpmTxXAOnMIH2~X4ChGtI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2348a7177c749a58c82c40db51fee5dcfc9b2bfd b/src/libs/libsrtp/fuzzer/corpus/2348a7177c749a58c82c40db51fee5dcfc9b2bfd new file mode 100644 index 0000000000000000000000000000000000000000..a23a011e0c65677a31e6613d0db218e939c65bf6 GIT binary patch literal 404 zcma)2yJ`YK6g|6ZF?I$!K~Mw>iT;3%g@uiuAj=YlxR3<di55<=O`-(y1+w31Vd2fW zIMGV*z<r;&oI9iR1D`2?A~&{VB;*9|=fW(a*>sb=t!=tmzGp8Tx6FpCI?zU9IIOV0 z_$GrkushO~5e5wUoG6f6Q(~_i#Xn`sJPM@3<_3Xdwh)mS@be`ScA)G0;lhm@cm}?I z#k(X-yX+C{#gFNEy{|_XQL|k<pl7JmtDeNWpr?1!Go3~_%cP}Dp#LP!>(yfx6|Kf! NGkRBt1>jM|_yc2YNqztT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/239a453aa1df476a83b8b34480ba8a741f0bb6ac b/src/libs/libsrtp/fuzzer/corpus/239a453aa1df476a83b8b34480ba8a741f0bb6ac new file mode 100644 index 0000000000000000000000000000000000000000..35bf58d4cbfb0c2edea4e0e50d9fb7929ca3f947 GIT binary patch literal 384 zcmZ3^$N&biMVTC_^$_-dM@|L?Sq7j?b@3b_u-F`k48wm%YbeXm2(AXC4MjU#4JU&G z(3}#S3YfnWWe7pXP|F;kr@+3(>0m<~K4QWF9KXZDf*BY{K;1yE6vqSY@MF-c{>@O& F2moNFGwuKY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/23af973f0a19010fe3e341052c6c6958ebc788d6 b/src/libs/libsrtp/fuzzer/corpus/23af973f0a19010fe3e341052c6c6958ebc788d6 new file mode 100644 index 0000000000000000000000000000000000000000..ffefad654d221a0f61341df2c90fbc9be0a87082 GIT binary patch literal 69 zcmZ>)V?YLu4AqR1zv~&a>lnep#i<6VjMX3}nC}RZW%&EOr5MP)0@TV_{c`Ke{{VDs B548XQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/23b5ba1837a9e8033bbfae75a9f0035cdd3005b8 b/src/libs/libsrtp/fuzzer/corpus/23b5ba1837a9e8033bbfae75a9f0035cdd3005b8 new file mode 100644 index 0000000000000000000000000000000000000000..f73d2a6703296d9c74834d4b9d5ab84b60504078 GIT binary patch literal 201 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|;FwdI8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+pW#Q{>>CI}?zK`fX-K(kXbIqJb`{#P+@{QuA3$iR@815pFC;u91A j&1Mn+iMICqXRa;=av@-`HJAoUC89Y5Y-I|=Z=gH?%1$bE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/23bf4e0b5d758f920fd11106e5543639bbf865e4 b/src/libs/libsrtp/fuzzer/corpus/23bf4e0b5d758f920fd11106e5543639bbf865e4 new file mode 100644 index 0000000000000000000000000000000000000000..c3f070e085f0ef684a5804629f1c43761e288606 GIT binary patch literal 581 zcmb7B%}N6?5dQWDnjS>4Ck3SiPo=gOZ$5xtd;|%L1iR2m*`PuL?xnQ|eFDi#_yE3( zPtk(~;}@FZA}r!SGLxAvGxN>#opTowK#>boQd8U~jJa~OA|53lveCVgli@hKY3pHj zI%xt&NCblxi_P7l@(w(&c$E>lRQ@}qK(0iIg~xc=LZ-B%04h{25HMm2c6AB7%$y53 z(9!F|4L06G5121qVswah=%dgV?^CzYVp}K2G*fmZ@P@_*A3mEN(7-it4#=-N9LO4e z(SP{e*7Nh_ID^0Wnb#kFOOwnsH?ZYLdhu_5XcS|CX3AX<_OyaF{sVb|@KDfJ=3yC0 h(XB~6dne(HL#m9hTB1KNk9G%VzzFCW*f=z|i*HNeX!-yE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/23d7f6cf0e85ea06af8b3914c8dd2ff41bb38b24 b/src/libs/libsrtp/fuzzer/corpus/23d7f6cf0e85ea06af8b3914c8dd2ff41bb38b24 new file mode 100644 index 0000000000000000000000000000000000000000..c49c2fa11d592553be25bbc50ab2cf46e7dc1ba2 GIT binary patch literal 74 zcmdnL<}cUFm(>vr4B!4UIQ;+r-$;s~m;neB7^)e86cASzGcr_HLzpnK94HJ!ASFPR E0A;NZ=Kufz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/23eb335737546cbcfbb12d0bad97af4abc31d4a4 b/src/libs/libsrtp/fuzzer/corpus/23eb335737546cbcfbb12d0bad97af4abc31d4a4 new file mode 100644 index 0000000000000000000000000000000000000000..85eda2aa75c676a280a8abc8bc6e577b1bae9c2a GIT binary patch literal 995 zcmdT@yGjE=6g?9IyYT_hR0@#<#6mP_L<9*aSl9^ufGkT`OdttimndYxG@2mT*vkHd zzv369O>2=tA>)}xe1VOm@h&^}F?Y`1d**IQ02L2FSa*XSHATK6j!z{mZX)n5{YEG7 z+O?)%Ekrecr=0=vm~(;e5y1!&49uFNQUUbGTzUdxOL<yC)Gyo~1}aC%G^I;heN#yo z)Lqydw+oiDkuaQwyGL9BXGl-#>{J%p6?(t})10vBic&egN|ve}ztafxjxI}WA(LkH zHUaxUBWQUaiDz-NjQ9nJpZThjSs>%66ZChJ6%CdfKqM?8PcNk-To$Ls(e<$vfr&g^ zGx5zaA_58=&?l(vPa_sU#6R_C`Tmtl!{$#er91)dZls})^%SGGN5j10(q6%W)kVfA zxA!uo+PB57)8u9Fd4e;fqtGI1l+U4>^d>E=dS9n!mSgqb=Ri_sI0v6|Zm!Y%n)9RD GD1Hakwz1j( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/23f0dc1a2d2e9531bdf2b50b8e3f4cc6564ff11f b/src/libs/libsrtp/fuzzer/corpus/23f0dc1a2d2e9531bdf2b50b8e3f4cc6564ff11f new file mode 100644 index 0000000000000000000000000000000000000000..c1108d7a9e242a1d55b68d227ecac97bd3900c0f GIT binary patch literal 39 qcmZP)U;u*u!kIvliGhKUfnn2shU#h{>%T7pLv?Yy!T<l6_e%kf77D!p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/24066e9de96bd46630d07606ac12b8acc3a5a050 b/src/libs/libsrtp/fuzzer/corpus/24066e9de96bd46630d07606ac12b8acc3a5a050 new file mode 100644 index 0000000000000000000000000000000000000000..28a1a1006f3469139eff5bd24a0100ecf765819f GIT binary patch literal 525 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wp{vk^ ztKgJp0IOiYVi#Ny&@QaTFfcN12Rn-erh*t_ROSF(#KOP<gp3UA4}hE>K;Hr>hH7m_ zpeNNqOdzlZ;(tJ&|L0&}kOeD1IEaCXL7oBVv(}#f%+<MI%^)p{ZCGT5fV2XWa61D7 z(4skD9s`sIvKAVSPzMKqbfJe1!ds3cgbp5WDKil87*v{xfk6-G9+1Zw7!Cpf0{|CP BW6}Ts literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/241be221f09d0a69e929da58cc1198dc7f7d8446 b/src/libs/libsrtp/fuzzer/corpus/241be221f09d0a69e929da58cc1198dc7f7d8446 new file mode 100644 index 0000000000000000000000000000000000000000..f5732fbe9c9f2dd596559b3cf1b94080d152ef33 GIT binary patch literal 113 zcma#I&0{EuXJB9`O8qaK38aDG&;S4b*%+#;85kJ<`!YZn3=9Gwsp{%tMj)XMVgrFS pgkoUeWMGhGU}Pw*E}kO<6jNYem;<C(7&w5C5zJ>;4pQq{4FE;!63YMp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2423e0cee389b740112a04a935a28b5da664dc66 b/src/libs/libsrtp/fuzzer/corpus/2423e0cee389b740112a04a935a28b5da664dc66 new file mode 100644 index 0000000000000000000000000000000000000000..ad2e17539de88d7e2e40105080fc11609f3546da GIT binary patch literal 79 zcmbREe?QmDm(>gi@E-z17}$Yg$@xVE`aoGmFaiox7c)XI16U7}1p^z11x3{W!%P#F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/244fa9f5c80e78a3b3b2b2f4259dfc838abd803f b/src/libs/libsrtp/fuzzer/corpus/244fa9f5c80e78a3b3b2b2f4259dfc838abd803f new file mode 100644 index 0000000000000000000000000000000000000000..1b36f201b7b437cfea917bebc47fd8c7b4932ae8 GIT binary patch literal 110 zcmZQzlr$)*7hymK{~fJiTv-N228Qb5IYMB8IWXaNVIYfxfeFS(&@I&nHjvd)ZNg9t KGy;g81GxYZBnedj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/246698c04d8849dc19e8a103928a53f5006a044f b/src/libs/libsrtp/fuzzer/corpus/246698c04d8849dc19e8a103928a53f5006a044f new file mode 100644 index 0000000000000000000000000000000000000000..09cafb3af5d878e2e6cf0f69b605738ad17232cf GIT binary patch literal 422 zcmYjNF-yZh7=0HDJqm)_O|V$#REjvc>ZWep9fFio0%;35i`W~oRD<B+D&pQ>;Xjd1 zLRW__9nSaNiS#AB_ww>`clkciZ!DJ%z{;QPQv}~FOLmH+aGp>;tb${UQRJ&&=;Ix8 z@zK5V8$K`~{BaPHHl^5iRFRvKN%FLU3a`3hk5fhkGNVgW(h;x%+$&5eiq`?PFqy_* zM^E9szW|<R-pkPiZM%MxLj%bUdcfn0-*WtyfHpINS+YkxM3cwrv}kKJjrxK{R+3rZ ze|3BbB$Dkmu#FSg)RnrzkxSO)EObbh^Z5gEGfD@O>q%~y^kqs7y9@WDQ18Vl#rn_` Tw<aBoM|Z_IPj9l^Ea34ACe&Z4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/246daf04584b1b3a3b3069215f2e3b386eed7630 b/src/libs/libsrtp/fuzzer/corpus/246daf04584b1b3a3b3069215f2e3b386eed7630 new file mode 100644 index 0000000000000000000000000000000000000000..86c44b497364ce2e678083955db1b28b4d5e1d24 GIT binary patch literal 131 zcma#|Wnd_YXJB9`%H%Mt2hu>G{{KHvw7QysfssK0EK*&}s8Zd<2ozIiU<d>WS%bxa k1g9;7ECW9_@Cz=;2vjG)z#y!^z`(&U2gqRpVi>3f0ONTM;s5{u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/247c682f37063541eebd05e45f8b590f0d2d8442 b/src/libs/libsrtp/fuzzer/corpus/247c682f37063541eebd05e45f8b590f0d2d8442 new file mode 100644 index 0000000000000000000000000000000000000000..8ffc0228e2ae206af515fe542bea3bec0f81739f GIT binary patch literal 42 jcmbQZpX>k2m(^C)P*BXs00h-Qs=6A)QU&pVsJapWWz!8I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2485ab2cdd6337d7e3157ed5a4780dd7630464fa b/src/libs/libsrtp/fuzzer/corpus/2485ab2cdd6337d7e3157ed5a4780dd7630464fa new file mode 100644 index 0000000000000000000000000000000000000000..384f56647fd774004eb34652993edd6a4cd27a13 GIT binary patch literal 359 zcmZ3^z+g~P&%nS~l*y3_q(R`nqcw!Vz+l9{Aj`nWz))Qbk^`!FicsSKQDn%;-~dzu zG6bXm(-7wG=!Rgb0U83cXpRur+&K`_ksM=);TTMFjL2{d(0d>t1oat+jbRhm+lX)> U>|8+xpi>S!`v0$+85p3u0OS2Pg#Z8m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/24e5e89131727595bba3ad7abd10a735f0791683 b/src/libs/libsrtp/fuzzer/corpus/24e5e89131727595bba3ad7abd10a735f0791683 new file mode 100644 index 0000000000000000000000000000000000000000..891ad7890e8b8f1e1c211da41f40b466ce2eeed7 GIT binary patch literal 69 zcmaz~&d)0;%H&{RV2CfR2a=2ojtmTr3P2VJh%y-T0YRogb#;7v<{#bS)cE++?s~@6 NKshat;$uKi4FEVT61V^W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25055f92a8aaaa223150ab4eda6754ead23fec6f b/src/libs/libsrtp/fuzzer/corpus/25055f92a8aaaa223150ab4eda6754ead23fec6f new file mode 100644 index 0000000000000000000000000000000000000000..d013c4a49251e743682628121704019aee4e69b9 GIT binary patch literal 164 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYU^NU7G8!lbRt%)YfC^cF z9PLI11_MThm;XUZ<`>6T*K@QpFakOMf4BVo-omhQWpxWkn*xKn|9=Dk8w0VE8OUa2 NKuG!i{~yoD000yLGA{rC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25297ce21678042b03d55b3162326f3409903ee9 b/src/libs/libsrtp/fuzzer/corpus/25297ce21678042b03d55b3162326f3409903ee9 new file mode 100644 index 0000000000000000000000000000000000000000..c981c245febb08244ac349d8c5bbf8f58b862de5 GIT binary patch literal 1163 zcmc&zy-veG4E`J<k!*-g3{?;+VnC_bVPRxIJVK@p9bjmgxPb|E;Ssv=5WEf}kHEz7 zId{3skIE7uE=pqieD-JiyK0W7#|pq|nJu3A=d#w`0>%L13@~ePFKy~@hfB9pBG0i& zaWZ~Y^9LvrSuN~j>B2`OrvXxdBe%(K5+oJQI@(xe06|(1k^_eCdz8T=FHn0RR?=(G zSajX<z2I#%&eFrb77wluA0qD@`zO-IqXmBu2Ht75C6p8yAHn_yl`qd5b57EjW++OS zZ_d+Zz_cb-=$3Gf1=!J>SG#BK8`9zJDxDtk*l{x108F%1?E+rYwB%_l_P=1ijDsBu mP^rFl-3hVizggjWmD=-NT>UL~z&_x|ZkoAxE_Xv6wfz84xSOH? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2596b607e7f3e2c35331a6bae16ccbf436d8eb9d b/src/libs/libsrtp/fuzzer/corpus/2596b607e7f3e2c35331a6bae16ccbf436d8eb9d new file mode 100644 index 0000000000000000000000000000000000000000..e3026b0a927b10ad8567d26ae179adc716a67a85 GIT binary patch literal 467 zcma#AVq^e=qSXJwnGojx|Nng%7^<ro7#QIU1_l9;WOXqk5bvM(m+K{vQLPTqz+ere zk>nW}l7Lb#fd(Mtzx`)mkc<cNi!wP<>mlMu7BMJ*g{q6yKy<YR&~yi&%Ya4z(SLsi z>jtpAZah#A2r$ke5){W**K@Qp=v6cPu5V%Z@4B*52WTP_*fa))?=34~=AgJMBQ>W0 g7y#RlfL?qa!UrpX0Bley%p{;I5y3WqzNu#b0Gz0tLI3~& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/259c4e5e079300b8b3a059c4ea5a9c3e8a6f5513 b/src/libs/libsrtp/fuzzer/corpus/259c4e5e079300b8b3a059c4ea5a9c3e8a6f5513 new file mode 100644 index 0000000000000000000000000000000000000000..24923513597556b321fa78be2d547d11bdbf5a16 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)iB^W@KPcEM{b=c9;nSH$lWq1_ooshM6;g sdVrD&AZ67+6=3Z(KoK}l0~*7?V8qw}R;cZ7kPVbF3jEK&P{hCh00TQ5#{d8T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25b0c0b4ae8dbca7e3455401be9f534e0afd8717 b/src/libs/libsrtp/fuzzer/corpus/25b0c0b4ae8dbca7e3455401be9f534e0afd8717 new file mode 100644 index 0000000000000000000000000000000000000000..3605e010b5e2973a8253c4b49752c258e53a4822 GIT binary patch literal 390 zcma!L00G7gj76!L9Q9xh!~g&PeIYC$xeo&1eB6xx{}`AU7#fP_2r-01RL#*n4rI(( z)h^7y0faDc5Je3`J5UJ&16<AjIUte$|G}!yfyp@xU~>>^peDi10V;#4ae$kHt_H{l on~ZE11JKPt05=D$hJalNbE4sPLEQ{=Hc%Fan~_5Rs0sxD09)WZlmGw# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25c3d2aafdaf53d5cfe45a36bf927c58f7986a69 b/src/libs/libsrtp/fuzzer/corpus/25c3d2aafdaf53d5cfe45a36bf927c58f7986a69 new file mode 100644 index 0000000000000000000000000000000000000000..ef56a4b6335ac96a0abf7d1f7defca9779573b8d GIT binary patch literal 218 zcmdo0-;V3$+iC^|hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5c}mzAc<@kBiyh8CXi7;H6X))7>C~P%y5Sw^iD)`2m=She=raPnFus18fIKIP?!NI F2>>wfEvEng literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25c5862d2d7fc0ae1fe4704613b9f6e0ac8d1b0e b/src/libs/libsrtp/fuzzer/corpus/25c5862d2d7fc0ae1fe4704613b9f6e0ac8d1b0e new file mode 100644 index 0000000000000000000000000000000000000000..a49146a2fcbbc96adcf864a1436d81c6e5d519f2 GIT binary patch literal 69 zcma$54+JI*)z#I-sqxjBKu&QrL*W1F>i_>=GB7YO#WOHSFo4wPF_dZnRl((|Gl5b- IU=0)k0NXJiUH||9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25cb6d57cfe58d83ef4bcc4d5327f185d5c50971 b/src/libs/libsrtp/fuzzer/corpus/25cb6d57cfe58d83ef4bcc4d5327f185d5c50971 new file mode 100644 index 0000000000000000000000000000000000000000..54afac87f2f7d83630016141bc626301ef81989f GIT binary patch literal 102 zcmY$<%VQ{sXJB9`0%9om|Np-)14C;)0|O&eq`H`qp;`-wtJR?*)-c7KKt@IJ93e1Y S7)Z_mu@pEMn7|@nq8b1T(+oHO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25f63d41f5aa30bea23374d2f98bd2fb5bc6e330 b/src/libs/libsrtp/fuzzer/corpus/25f63d41f5aa30bea23374d2f98bd2fb5bc6e330 new file mode 100644 index 0000000000000000000000000000000000000000..3b4962b3802f115416cdd5b11b55b1ec246700b0 GIT binary patch literal 134 zcmbQpsE-{mfB>cxBTx)11tr8$luRs+ude54XV9zut;J9e)sHX*iIo`-G@!be5ri}K E0M%O;q5uE@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/25f71c075445f2ca32f378d9b73a99043fb7299c b/src/libs/libsrtp/fuzzer/corpus/25f71c075445f2ca32f378d9b73a99043fb7299c new file mode 100644 index 0000000000000000000000000000000000000000..4ff9e5884627dbfe5f2804b5419f9be0d10b1f89 GIT binary patch literal 633 zcma)4!AiqG5PjPgx&Z~XCl8et#Di#h5j^xHc<|yU$P&t818FIZQOJV1s73G#BtOwV z@*6xTD7e0DQiVdR13U9FJNq(kc6~L(l>#shrOp^>_5;S8TOz@w)pZahT8;XHpx27~ z!QsdQny5-{=9m<|!Qc{jc%#b%_8Hu9+8Cjh878jA*}Nnr7G=>`hZ1FtOku4(10L_J zEjiGRKc9=*$_5UA`zMQTT<*4+qcK<6Vr-$owsv<2YwSvjDe5o$5O_!2A;1OD1=QCN z+iHnEu|i+EsPA&QKKDD$;BS3qQD4=p)JM{RgjeHT2)|=)@^u^okshjE5+spU@g7XP z3G<3#6`jDVyA#YE<!)G*4J(%rP2$QdL$@{uC%31i{hRrhMfs%R)B0gU5LxS9(>Io9 BbEyCT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/261abd3920c9848bb7e27d132f56396ac71e81eb b/src/libs/libsrtp/fuzzer/corpus/261abd3920c9848bb7e27d132f56396ac71e81eb new file mode 100644 index 0000000000000000000000000000000000000000..f1fff3c5f46792594d59b121678fc4d8539c5a85 GIT binary patch literal 98 zcmdl#;Xl{Qm(>gm4F4EUGBPj#S%yGPF(X6uG$73Y5(066;&55G8lVVRAtOi+Q1mHS KCtOq=tPKDy#u9@7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/266d4d8456fbe6e9492ef131edc18f08e92ad969 b/src/libs/libsrtp/fuzzer/corpus/266d4d8456fbe6e9492ef131edc18f08e92ad969 new file mode 100644 index 0000000000000000000000000000000000000000..2f053d26a088655210eb66186706d0479ae2d27a GIT binary patch literal 2355 zcmb7F&ud&&6#iZkCo|DSNUT^jIBJ=+VB(~Ls8O6?wJHSc%H?Z}Pdao=rZbaZdL@}k zLJ)%za5Ioaw*CXbRR=+IEv~v!a21zA6G_uvzwh36CzG}kJj~p8-}!ORx!?Km+M9M@ zch>;8XG>4<L3(}<b#fx@xja{oU`j30EiHk(MqWyW8Z<9r+1ZGd(c-DV<ABW{uOweo zW3p=HY_j4-*4p=IZg5f%#z#XdMl&IQz!`rAdgg)0CV7E5F>)6%Lgj_^jjbU*&(@>N zTB&7M>B?fSM>lnPd|txTa?9L1(Yd=H5$G8No{<kn(Hr2A(=L2Oc6u7ThK>&yC`$Ji z(-DL8l<Rjv!klN2qTzL5D~o7^`yR&$%hd9PlpMxsii9bTb*`chE>JmwQ(G|g?jtdX zn|u4nzCz96uHbcgWb$0=CM4brbX+$nxL=*hCQY;p!eo!BD??O4Oi!;qm}ZaD&VSOk zJ7YV##M3;&p~gqnm{Glw0&<5r5IJ2jI+vm*5c-MQJU7EYAMg_mJV2@hd_J+YwqcD~ zY{BAPM=<0gYM)U2`=R*TEc#omRy9pcs}-={_Q3`SgI~nOtA=PL1fsJwWmX`sBG;mD zC%8MYWIL&AI=SG`{~};t2!%wJ^R05Wct`R~vzkNh&+T6~?bqA1V1F4UfE4-+)6!<2 zNuMAED_?~yJ+S`VL&B`~DLEVN6>JEc>Z%1Yo`rhijNbcb#sWtFAAI>o%JJ;{b?#wn z<=;Xe41<;6=oE_Ihz9C$v0OAJj?0HQpmH_=BwX=&GnMbYk{S6w8v#hqgT^c&8{r!3 z`w$;8xei)NIAto{E{~gmlx|~KB#8dTklI$GKvy~%1(-rTHY?e&v2}KaklMF6r4GK4 zS?i3CE*m-xvq<W_w{O2mBhJzkrpzVqOh1%>f&Cxs2*QNTtM3?%PjJ!As{a{Pl<Aa< zh6i)zdP~47hbZx{q9L{GjhRNi!JP+JXr>879t4nz1*d$}a4+*JxXdtVCF;F{l~u&! zb7-ixx@Nc&zyIj>OD}Q+OaPClK-nnvar8n)Sjk@Rn=C|R1J@XlIj18EOnEsko^Ea@ zhI{Q5i%L?(s2L-oV#1wDmEg~k4Rl8jTz*(o_I35D65}A?el;D(Vl+8Hnh!Lf*f&T+ z{FuFV$IKSGzf;G3J_NBMn!9wvFOWu*uBkCa94pCO{Pz4@qc;DRlk0ufy;mX*U&j+> zM?WL{PRGAX<Uf|KLC<c*<BKW&lzd_rxKg5gGylgvtDSIxtMTGYWg&?<C0t+!x;;Lk z5!Cj+_qi@TiNAD?DD{W+YAyLRsmGo>Q~9h^tK0?1eZmFIW<en#&gZ4UE=;N8KJP5Q z+z9pMQ{wAy)X9J%EtROFs$^S}+{~-DH}4MYs(*v}Bt>2F2p?0l>u}Hr0uK0r0GMEZ l$6thOO0?Z0;-__?P*dD8>iZ&AN03|yB_-4Sh|Bm({{r)z3!VS~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/26bd241443c6ca63fb02587e96e7f56821f616be b/src/libs/libsrtp/fuzzer/corpus/26bd241443c6ca63fb02587e96e7f56821f616be new file mode 100644 index 0000000000000000000000000000000000000000..af4e797a3c97df5ddac7ce946a8f300ea21b096f GIT binary patch literal 134 zcma#o%VQ{sXJB9`%H&AhKk+};%a_$a9uT~308<KJnR+mr;s5{tz6=c2KoyK20YxCY zn6bJTq=$v!-+u=wurebBh%}G`lm_CLFBuq$L7M7Y7%EF`g%}v}7$k+;A+pu#3=9AY Co*-5L literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/26e5d99c26ce43fc432883c50ff75fcdd8f0e9ab b/src/libs/libsrtp/fuzzer/corpus/26e5d99c26ce43fc432883c50ff75fcdd8f0e9ab new file mode 100644 index 0000000000000000000000000000000000000000..898fcc9929417ba4d71089b63dbddbb3e0bdd266 GIT binary patch literal 48 qcmXS}W(a)A@KUQ93K$s}iWwNHqvrq#2F7Xz1|}eb8A?{atONjTrwq;j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/276c148ce886ab053d55dc7a45b1ba2089608488 b/src/libs/libsrtp/fuzzer/corpus/276c148ce886ab053d55dc7a45b1ba2089608488 new file mode 100644 index 0000000000000000000000000000000000000000..bd671969fc4572595b2439caa530ead0c6a995bd GIT binary patch literal 48 ncmXT^%@FvK;bk=p6f-gaL3QyQAi=;`&A`9}WH3X?>gq}Wlk^Qq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/276cd356df9685144bc41ed78d813e6421fd96a4 b/src/libs/libsrtp/fuzzer/corpus/276cd356df9685144bc41ed78d813e6421fd96a4 new file mode 100644 index 0000000000000000000000000000000000000000..b25a04a97ecb3c9a5ab2b9948b260fbe0445ff4a GIT binary patch literal 247 zcmZ9GI|{;J5QM*=;;$n3z%s3MZlD+N3?W5|U?bWYA$GwsVCfmWfH(30V&yuU!oq>s zU6$RMNo~X_1@=YAm+HdDY{R-NHTIdQX1*21F%g`11BjV2;eDglUUg27B!KzdL^OZo zDPCRvk{6+(_GLI?){zM`LzCja&Pqoluc-C***p+bft+G5FXKpXffifU@(_u?8^v@) RgvNW;Rh|WpHqV_h{sIjIGEx8l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/278880f708e854f9b7669ae76dfa4221f98ee9cb b/src/libs/libsrtp/fuzzer/corpus/278880f708e854f9b7669ae76dfa4221f98ee9cb new file mode 100644 index 0000000000000000000000000000000000000000..c98511151f5e1769fcbbf9fe351f3e78364f3033 GIT binary patch literal 3173 zcmcImO=w(I6#m{Mq?3Xe8xSkRPNJkxZA`0nW3|(TDAIHzVj<XRC=WX@Nkd+uBu_ho z^oL3}LRC_Nn=Hhgx^Np@cJ0bd+l`Ch+G%NIuHQN5zWd%}5?U1xGxyz}^LNkh-T2Y% z-P}w8bX@gWeh6c2B;1K)&S5l(kXBa-zsZn+VN?VuB?ieSaY<=pYd{8rak2xxG&!yV zbjg{><Qx+rwTU_GuaRz{UXGha@0^>W43$^Wtuz@|nQ3~^P;dm;<n%HIff3=DCTsif ziju9S9US6bkyZ~<f~U_vEg}5C)@!&1tO3`CLA@5KSG3Sk_}M<$DCmEIq){Tu?+zPZ z;g9e4>`fg}GBa>m;Xg&H)>GwaakKAj?i1dXp(%h5c_fD%mW2w_vXC{^6Z?styV(zj zYah=DGlK{Nt$A-V+WE9xm^bEyfwG`nZF6w@WGbM%ugCRr)8njwWU6<+VUVudaVPvu zDEa2M84gvQe}AB*?%GLbOp&c#iH;Lxii&cnp4my!aUVd{#|WUODBz%bQ+1lO0D=Wj z8Zlzmo?rky?KMtLzqfd-aq;|2BYv$>J`*501FR@c9(hf!R|@falI#4mhT}ezVmDkj z_Jt4+v3>xhAvwLWIM62v=3)JHn?%r4q%TUWWO?8Zb9q>CZ}`~o3@OX~@OcKbY!GzA z?I1|dhbUdV)XpO7Gt+@bAu}zq8iVDfc%(Kj4nv46Vs|-=#sHqbI!O8!|6CZS7z?n_ za_^|p)qlvpr+jE2o47W{w*f^^F4KmW5Yb{|#nqq}FA_{MQ7kThbN|+-VV8MyQ*XPJ z#5HoTw42MLe^!;hr>0QelH$pF!CjdzgS(c}<b>tguvH$?MJ2}oJ4(4ns9av$L=n~| zsjM5mgrm}-x`h1|IZ!y4wr+n7)WvlcMrCHU52q)=TQrv9+Wf*rv;;#?(g~Td6htWw z)t1~@$NCA}J()!p6{%8@MKMt^&jLc<{h;ZtIJ?}2EM4I9KMTV07dKXq$~CbiHx{!@ z>x6Tysk+5Q`2C*Yg&opxE|m7MqMTY&ZNsstR>=)`jx|Lrzh~H-#PO~RCszF<ye&KG z1!L!V7gS)IkdnF;<QC5|g|oe0eN|#zM<3i;phKqla<CoaaFk&TW(6ZJUt`^1%)7@z zl!k*!m~D^J%m6g4gyEy><O`At{j{%I_#PJz)D*NsPl41VVRzG9Lgc22q-HMRfK=5h zQV3^#iU8}!`$r@xD<w%v3gQC+n1o-6Sf+n&flyF$`{Z@fopNmzW=8xkYKPMMSZbeo zl-hQIJ9qMnjEz|bvU`-&o<CVvwqW?T2LBa9Vgmwmz^+jUFO<e0jtGhr`(NAFOle69 z;$DNSI?|)hc#rx>-Lix`$5s<k5AGKNM&3%Zw#N%%)c0I{|13Wwws5Z&-ZotNx5y=n zA1T6Fo#J75{5)h(O-X(W2YGdAoxLzSbH0*Xm^o~(u0FQQ+WfZ7NM2rD4bz@tf3m7J zBdNuqvku`wFXCjokBH<!Fax7mW{0aUupM%Pz4iKK|7s)3Xp-JiCFQ~Kk`Mpv!7*CW jRFtmJ^T_Cz44Qa3{e&;2SAj-6R}*9p-`Tgb@lpIYI>dPb literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/27b247b75feab9765414a16e7e94de7bbf7397c3 b/src/libs/libsrtp/fuzzer/corpus/27b247b75feab9765414a16e7e94de7bbf7397c3 new file mode 100644 index 0000000000000000000000000000000000000000..03f0138de531b98fae5f20a31f77a59b33987998 GIT binary patch literal 69 zcmbREe?QktF9rzs4+OveODjOR3=9d?3=#~*3=Hwr^&IUCdey%f>RX_aCqeWy2G5l% GD;WUth!Z9N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/27e9eb505ac8401904ee7ff4d9a34eb3f873afe5 b/src/libs/libsrtp/fuzzer/corpus/27e9eb505ac8401904ee7ff4d9a34eb3f873afe5 new file mode 100644 index 0000000000000000000000000000000000000000..0ce083267aae5d62697ad70d6b5f120cd00bfc09 GIT binary patch literal 114 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRa1%YDf|Lwpc1`G@@ t!3<6Y23dw`#$pDBIlK(U3}RqG28QC)`0~WkoYeUIw9Fii2skK?001=e7|{R# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2812717d79d66037931c0d8b3092a892842ddaa7 b/src/libs/libsrtp/fuzzer/corpus/2812717d79d66037931c0d8b3092a892842ddaa7 new file mode 100644 index 0000000000000000000000000000000000000000..d6aa34ffd940f533bbaee9e08e14644a83e94838 GIT binary patch literal 100 zcmcC!45%uJXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M b?JNv)I2is(0EL)<dV%`&Ab<&^XyShWH8U2A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28485ae79b2ff5ca3dbd31e514a0ced95e8045ff b/src/libs/libsrtp/fuzzer/corpus/28485ae79b2ff5ca3dbd31e514a0ced95e8045ff new file mode 100644 index 0000000000000000000000000000000000000000..bb4987e5c4bb270303c84673abebe87713f011b8 GIT binary patch literal 50 ocmbREe?QmDm(|tPy+>PGs*M<m85w|}8c0=FgIFK{WFSyA0L>H)-v9sr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/284f3000a725d125cf1d65db2d15cc2d92860f14 b/src/libs/libsrtp/fuzzer/corpus/284f3000a725d125cf1d65db2d15cc2d92860f14 new file mode 100644 index 0000000000000000000000000000000000000000..9385ee7dad7bbd624cf68bb1ba233817a2d9e5e9 GIT binary patch literal 55 ocmXS}W(a)AQ2eqQ3Xs_h#f%I<Pz|Jx9g_huf#BG&>S_iC0Bjc%2LJ#7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/285ccc5acf8c016da64fd33ed910c2320d385050 b/src/libs/libsrtp/fuzzer/corpus/285ccc5acf8c016da64fd33ed910c2320d385050 new file mode 100644 index 0000000000000000000000000000000000000000..e36273ca34a66dd32b96975a595f140112d620da GIT binary patch literal 102 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO mgV>x546+QxbA%X-85nZnlk=-eA*Q9~0XcakMfv}87#IL+<rg9V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2870bb659278b0907ea62fd38dd1fff5df58069c b/src/libs/libsrtp/fuzzer/corpus/2870bb659278b0907ea62fd38dd1fff5df58069c new file mode 100644 index 0000000000000000000000000000000000000000..31018620dd8ddbab1528477ba34410ee48c1f1e5 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B_y2!i28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkxVL t31)IKFvtSc0j1{%F&Hy2<fP`sC+Fvt6y-ZGFfaj?{Ql3tz{gO`002($6ukfd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/287934ac53e229708f5caa467cf905ae6dcfff76 b/src/libs/libsrtp/fuzzer/corpus/287934ac53e229708f5caa467cf905ae6dcfff76 new file mode 100644 index 0000000000000000000000000000000000000000..7abc5a75e38a23476d4c39b450e96aea712b01f4 GIT binary patch literal 166 zcmXAiI|{;35Jk^mAi*k_#zsgX*oYfQV`C}UTLc6P5p1H>EWk~q&w8>P3mNZ=cbFe% zKJD(ovjr~KsBX$qL>$5IU{m2R8k91;v*c=%W&<?J0z%sfxyColS^p87U`e*Zcr{(W fppG1>H}vfJW;un`X+J#{Rvalf>$#-spM(DZkXIvK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/288011eea6ae35fe9017fada0d235a66120adb35 b/src/libs/libsrtp/fuzzer/corpus/288011eea6ae35fe9017fada0d235a66120adb35 new file mode 100644 index 0000000000000000000000000000000000000000..be22d18d9354f19ad69bb6419cb6a3c553a127da GIT binary patch literal 99 zcmWe+00MIc22K!-1*9=B<T6P7t7f>x;KjhhpwCbZ0xs3n3=RwodI+G7U_w|xv#M>Y It4*sj0Xi`cz5oCK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28a6865768a7b43ec593b1d8ee4933c78e0562e9 b/src/libs/libsrtp/fuzzer/corpus/28a6865768a7b43ec593b1d8ee4933c78e0562e9 new file mode 100644 index 0000000000000000000000000000000000000000..475a8fa8324a1077a89ba919fed05b7b1db4045e GIT binary patch literal 466 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY7pN+>i<6w&7|~=p%^H_2xQ-7 z0*L@YwZlv(NM<<5z)%vO$H1Uhl-Y3%XqXLHg*BK2YU5;QkY)J4gQ41Bju2Q(xSfGv z4hI9HERgq~6RHeMIo7#A0VBh|{|-_RIa`GN42)hbKtV=Vu(HzXVz`lh!6ha+`N@en vsiyz;-D6OM8VmH_6|nz$!GNHz;kFJIUjsc0^fEBGfB+ONpa>8EanJw&PpD^G literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28aa8de4a01317db99d4baf57e41f582424e9a90 b/src/libs/libsrtp/fuzzer/corpus/28aa8de4a01317db99d4baf57e41f582424e9a90 new file mode 100644 index 0000000000000000000000000000000000000000..90cadc340d4211df1341d0f030c585bb4c81525e GIT binary patch literal 466 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRhmm<a{R3<nt)O5*bv81#xVI~F1< zWvH%ZU|<C4e8Rv`UCao<KrskNfH64P8Dv4~s!iqyF|<QOh39ZEFv<eiOfXeo+Of_B z3K$vw{dbUpNUD8fD27?Z=;Z<wWMlv<E3GaD8VLfzKy&9X2r%sX_ML&l1ZbHsP*4Ue zg^j4fCP-Z|0er^6LYV={mr4j<DuM#j0Tcr_q0s=QKw(hLq{FbX5@fal*aBcUf<QF` E0DVGA-v9sr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28b080f54b1d4323e2bcb2d4d64dbe68c74bf840 b/src/libs/libsrtp/fuzzer/corpus/28b080f54b1d4323e2bcb2d4d64dbe68c74bf840 new file mode 100644 index 0000000000000000000000000000000000000000..7c92d9421455ef7f2b7835b38d47a3387c504175 GIT binary patch literal 92 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BM>)&#Xt)D8LS~Px(u8Q V4DBoob2u3O0kttOK{bG=Y5<=Z5}g15 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28b4b75d0fba962051d25e9ca6db1a2c870e39da b/src/libs/libsrtp/fuzzer/corpus/28b4b75d0fba962051d25e9ca6db1a2c870e39da new file mode 100644 index 0000000000000000000000000000000000000000..bcbf3a5d3ec477350136b105a77ec02e6b339c70 GIT binary patch literal 465 zcmcIhu}T9$5Pfq9-r1>L;E3J_NFWG85=bCbAU1x$Ax8*-kU%cof?5bkn^L^SA2IPC zY_&^~9|(ey$=kiNw(`O5?7W$sc{>a3sKx*$1HX4qOQ>oW%Y`0oHiqs_mTR@V7j2P} z5uQIh%MhmdR3O0{FpWpR#bhvlVX?Z)sJWfjf<uJRFPKVp;<(cpkol1Cj7@_g&6(C+ zyMSP)%~Bp~6#WnAN~cYo2&@<`F)55yOMK@B_-Uli`ud4;to{-Gzia1$IO2CsWp;ft zy&8^_+hOmrO6k>YXyXrXuQWb>NBc<DAkDfo3M1gRxJODE-Z2nGHV$po5OWq5672yY C7O;B& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28c304f04cc35c1d67d97210fc65fa99c6b0c3ac b/src/libs/libsrtp/fuzzer/corpus/28c304f04cc35c1d67d97210fc65fa99c6b0c3ac new file mode 100644 index 0000000000000000000000000000000000000000..d3f3a435967fe2e5cb2aa4a655829e8fff01c6f6 GIT binary patch literal 104 zcma#o%VVgCXJB9`%H)^>q(I>R|Np)W4As>T9*|7TDNT(p;AG&CWng4rXaKSpz$}Iz la~Rrz@<39UA)kQ*q@nE_kf;aZ+|;6U1}-4uK0|6d0{~XF6qNt~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/28d63e980c334119aefe2ea928b3e4bab4834ec1 b/src/libs/libsrtp/fuzzer/corpus/28d63e980c334119aefe2ea928b3e4bab4834ec1 new file mode 100644 index 0000000000000000000000000000000000000000..5d8686f3bac9b97e005739f832750574a03c5f65 GIT binary patch literal 116 zcma#o%VUs?XDDJ|$mB?^X8?o$|Nr|kFjQAFFfcMGfJK^m)EKIZ8G&Nz5G4$fK>8&E s0~Z4)1A{D39Z-6X7=tkbLr!X5d~$wXNl|_d0|OI8HHdOxm<I)603Qt)3jhEB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/291e958f82465146816cfe86d7964796893911a3 b/src/libs/libsrtp/fuzzer/corpus/291e958f82465146816cfe86d7964796893911a3 new file mode 100644 index 0000000000000000000000000000000000000000..15b79b49d512e54c1f4afa5eed64fae47ef33f69 GIT binary patch literal 251 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?Eh2qpq# zf)Ivbj4;DECL$Y#!$6235R0^tOl&}QA7ebsOk@**wj(?5K9H}M$50XvbYW2@M`}IT LsX#%HDv;LzSo|x` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/296f1aaf63c1ed2099da363e718be68a2d67f1d1 b/src/libs/libsrtp/fuzzer/corpus/296f1aaf63c1ed2099da363e718be68a2d67f1d1 new file mode 100644 index 0000000000000000000000000000000000000000..6238c8c8f635a59775ac59fa423c41b243aca80e GIT binary patch literal 1059 zcmeHGOG*Pl5PeA&jyu71AlbMw@c>>x1dkA!K^iik64FVKRA4sw5XcF{W4L$cDLjWu z%U9Dgn<TgiE&>*GRnhgjy5_xU*L}js0T^b9&lzc|5V=!kH7@Ta>BHE&LH{wmZ-su^ z8Jq%5)Djk7v5Nkj;f4##FS^_g#^Ve_WIoBUGK^UTnKF++V!Ym>#3WOWpzOAut5$$^ zke7(ApWzZ%6s?YA)^OOI{8R}>#OJeq&-4T`7vL?UPLT!HD^hKv<m_*F-_~KHjW`@H zZc`hehuuB=Q-H-r>qb?$GLd?~HG>oq(upW@2?Sh_E%$*!a=<9v`uBJF-OKsj3u8k* MCwpYSn3T2mAEcD-?f?J) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/29704b3d9b9c0645c1320d852ab1beea871a1ca3 b/src/libs/libsrtp/fuzzer/corpus/29704b3d9b9c0645c1320d852ab1beea871a1ca3 new file mode 100644 index 0000000000000000000000000000000000000000..99b7610a638330327f5fe130decc12281177bfaf GIT binary patch literal 1228 zcmcgsI}U<C5PfU>VC=Ng#KgkH!o&*@8VjsEfrYh&#)usU@Dd!!+R|vrDb}|jj)EV8 z#us3h*_k)Hj~P_Z1kgik2lNBL^8ux&z)95rtpVRt@QoE6dJ<<1kAtuHnDBP)eGqwK zMw?vo(F)tm!dlleAPF6h$RClRC}t>e=S1idVHg%8sf!qnks^W!W{y^nxI|&{ia0bP z7R-|kJBUd%8h@dY@WnG>b=_nwE`xk$9wb3O8SVS+ye))wl<(@!`BkV?1ECBHRz;(B zVl`-Of+WTNb$rbKwAS~=CqjJ0<SjLRuJwoS$G%DtynI!tK3!|jD%#zebQuFHc9;1D Jb)jr(jSJQ+d#(Tg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2985d508c0f8f374504ddfc6786eb21934aae32b b/src/libs/libsrtp/fuzzer/corpus/2985d508c0f8f374504ddfc6786eb21934aae32b new file mode 100644 index 0000000000000000000000000000000000000000..bd8ecdf9e1c012a7a33a81bed68e1ed093aa8106 GIT binary patch literal 71 zcmYe!kFP3;uP;jFU|?X#1Y#ig|Np-~gvB7rVAux&T*dJQnFiI>@$s2|bc<8tq0$Vg M-SzQ*|NdnJ0MJwwh5!Hn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/298f69b74788cf92817b9f2395f5383a18b148d1 b/src/libs/libsrtp/fuzzer/corpus/298f69b74788cf92817b9f2395f5383a18b148d1 new file mode 100644 index 00000000..6d6c7a72 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/298f69b74788cf92817b9f2395f5383a18b148d1 @@ -0,0 +1 @@ +se__ü \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/299218026c0e3f24bb8f7ee7a3e5bbab4013a438 b/src/libs/libsrtp/fuzzer/corpus/299218026c0e3f24bb8f7ee7a3e5bbab4013a438 new file mode 100644 index 0000000000000000000000000000000000000000..53315cf1924366daf2583232c3cd171f8a59fd7f GIT binary patch literal 1327 zcmeHHy-EW?5dOx-jg@$vn8Fk)V&PwBlfYGq&v4ZVHbL%Ggaxhi8XHStpT)eyy+mFh zS~<?_=0X-kBp68H!0pb=&dknzGqYgk(+ogyY4Qizg+z6Z!3(bphgQT-?yjr)5S<Z9 z(GZ?U70O{xtd)|Q>$(oSU&ApEBo?gq@-DC?g->I9I%$~JGTIu`9=kQKODez_P+O#> z#>(%#`*ch+Nf6j-5)>OcOLc`eyRqeTNUY**^bT_%mnGPUB0~<*!j40ARpb{r%|@Gz zTalH0pL<uY@&9+X?;fA|l|_zV&vyH`{;nAKh{$HQifW9B!QWtVG!IOA0gW*zPILbi z%GxUn&?j@jB!YzKzfS@nG(8u-_RN#PfJ|i~&11BK<ZVEe+HGNG@zDU`>4{tMr$T%I DZf@;{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2998e292991fc5c2abd7dfccb2f497b6f2aca0bd b/src/libs/libsrtp/fuzzer/corpus/2998e292991fc5c2abd7dfccb2f497b6f2aca0bd new file mode 100644 index 0000000000000000000000000000000000000000..1b5622516d7061ed9194e7eac7a61533a026c10d GIT binary patch literal 136 zcma#AW@KW>WME+6U?@th2hu?B|Nnnq28QZthHZF&?luMnMh0P!`s!jv5Czns4yG9x jtf4dmCj)~lP+4hp@f;zrm~cA-!yE<yWD$ma-xy>7-0~%T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/29a13021ac5be7f0923f25b1fffc37a5d33e1cbf b/src/libs/libsrtp/fuzzer/corpus/29a13021ac5be7f0923f25b1fffc37a5d33e1cbf new file mode 100644 index 0000000000000000000000000000000000000000..f70430a8f80fc8779bcefaf6e62d2119f0ffd866 GIT binary patch literal 957 zcma!N6k{lfXOLh(0{{R2_hn$Hu4Z6h1d67{mn9-385!6bUU4!o$TBdl0*cOIXorx( zK#BvTtnC|+_%8%vf&kEL28PbmOpbbncCeZ%2B7gEa~)Vf@*u#GS`T4BEVj=E*{lGv zdCEM91Oo#L&@F5YKweQMnsSgkPXZ+{-B~bT?gZN$ub0Qb19Cr-lNo%0egp?C&_AH? k0QrjQ?sTOzJh8_+)!j*SypM(_JRbqG3n&W#lg=Cl0Bb>~X8-^I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/29a62d158c6ba4f9736219bffcb7d103019406cb b/src/libs/libsrtp/fuzzer/corpus/29a62d158c6ba4f9736219bffcb7d103019406cb new file mode 100644 index 0000000000000000000000000000000000000000..b24eaa00fde6c8415f24b03408a8eca28e8ea015 GIT binary patch literal 149 zcma!LU|=x%|NlQ@QEDbfJ&*$gK&~$XV|6uzml|J|m{Xb>U%<=2Aj`lA5d@JA2quxN eISlPUl|WLMfddG^04B!%`~QD!28LpwU^M_{_!aU1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/29c9b1c37e16b9fab789366a57efaea4b694a3da b/src/libs/libsrtp/fuzzer/corpus/29c9b1c37e16b9fab789366a57efaea4b694a3da new file mode 100644 index 0000000000000000000000000000000000000000..ae283cda66d0f26647ee1be94617ffd5db8b93c2 GIT binary patch literal 102 zcma#o%VUs?XEbCe%H&9`X8?o$fB*aHGgMbIC;+*w3=Gx9YCy~g6j6sLV6bFhcnM~5 pGBC(8FoKlK5n?cAV8}_$i`UDGPtMOPDav<XU|?ckNX*G$003Q{6<`1W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/29fd5570888006939e71a86bbc0201742783adca b/src/libs/libsrtp/fuzzer/corpus/29fd5570888006939e71a86bbc0201742783adca new file mode 100644 index 0000000000000000000000000000000000000000..18e7576e35d967a2ab8171f665c7c039cb84bf53 GIT binary patch literal 3150 zcmcguO>7%Q6#mw6;!OlnXxc+60vl8sQJNnjQc*=!96>-Jl@@X639VAgqE-{f$|n3| zBs)S4QAI$C#HGkLZgAp+#3htNIMD;*!YvmLKEffCA9?uRn_WAxl|PVpvS)W@-+S}s z&HKKYtxelgs~G@wn?1`1<*8jn9P#9x&0yrgWbaXamL?ICk&l5W8EVw+x6h!gHm86c zbm9eXRqd~ZW4Fi6NLcLc52?IZ@beY10<5)HX>G9T(Xc;!M85WjH)DpJ3MTd03v>em zGUIz=)l*oG^5HwPbIbX#w2G>alxi6hop$1kGo0ctzJ{jGY4%S0jkS07O*?<&v=f}R zZ=K$J=#=%6o77DuZ5%3NOjF5cu$dhWbCn`}76DKUi|B{tFy&+0A<O4_MFucq@Cyfk z+=2|58ueBr8O&q2vecfvYoaB#PR`)DPegj6&|s`EW=t3s{vKwo@*h<~?@JhuVTpLy z{%(7ZC8MlM5?3Rx@`m$P#rJ%vV!cmS;|AI8*I`DgXzEz%%aT?5fwqVG`2t`L=;B|@ zB{5U>#q*hz2$1T<_=f3Nix`N@E(TdcT;bY=O|d``xXsKg&im+2OKBCu-16+Q<eHyv zyYl*!1$Mv8+N)rOnPw`u|0`^m5}Ir^&@*yU^yoB!cyj2;PN2+=pfIh09utKPKT(|l zdRF|zD+ao<xCl%gA`$?#5;;%k1Dh<@2JDHQxIkM$NuwB)%SP%(rWJ%#H|^GIj#LuA zihy6OJ&lgX-B_+P8mC(Nih04kE9X>~Jexm*%nr4z^$?Bn1#c<Z!aBheCPZ*+el{0G zw`PY+E~;>(2*r#z4}~$>0p#e1kq6@S18MM}Rkm9P4(|gS=i>zpi8JkACTY~fdqQK9 zvGL+uo<k|z3{o2FV%kT333wep9zzm);HGRCaK%d>X(ln)CIHS6yhtO-!;^v>TxXc= zqIB0?tJT^+9X7(M=sNJb`UGk(Qx5Q48eQ`SpasEDC;2aG7GEI%fdc<;E=}Z?-Y?}} z&CL)E-q)-ggY>jp3s>7GO1dzGe@8;N9Q<7T0lf)g%(Hs-T;lG8O>hIr(HKCF#%|H) ze`-=#V1#d1T5Ic1260t3MN}JyRZER_2pcP7I-V6;p?tW@rsCm(!bZ1t5rw>8aRk&< zfhSz#=^Q*e^97$om5`K;7dl84+0}&m0yyqF_XLOBN%a*nJM5ecUq{4Ff3kE6V}H9n zb`LK0Sf?d+YlnfmcO)VwgOO=+`^A%T`^czyxB4h919N%D^NPIdCVC9!Hx`Wi<C(fM zvZ?GpPfin2PUCSd^%fT_z`Kf*>GDgl$R$V%<wZb<lny;DSSCN-8}%5c-y!b;y&RY) zN20q!d&`gdJjT^XSyN|`;3ee!KR2Rb2Ci_uEnYB00`}oipCaD&<bcNy{(BDS<k&gz zFR||9+Y;@XN3=mTg@<8op-58nFb!V(?r+)9RQz>`{&xaQqNkY7{-4V1oY9URB}_24 z%TV5^p=S3cheodZgFOCVC7NFGq=Wy*Rh1Vz2HJqCtMja+z9Bx(hE<+rWv#}2JkjZH zamo`)=4zye-CY7nIiOQ6DkKoePwY5;Fhx&`15%yji5L3DoUJeSvN$VaT|pc1Ib$=$ LuR{nH7DeqJU+10u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2a0979e8d583541d1437ff3f6f10334606a24588 b/src/libs/libsrtp/fuzzer/corpus/2a0979e8d583541d1437ff3f6f10334606a24588 new file mode 100644 index 0000000000000000000000000000000000000000..dbb627f241cf5d97024b3dc07be43bc16659c4b6 GIT binary patch literal 491 zcmZSh|Np;NJOcwmQ8-6xJ&*<hppY-a{)zv&UcRgba{v8zkOB!CF(`dwC<cl!GPE&* z1VAj1Y9Og70OGdx{AaE%W)ugDGcYW+1_?3<Ffvqwb%A*dKm`yCG8+sa%7D!8KNw^| zdaDiQ2!UmU+Zh<<a4;~+0(nee5g6fE=K=+cFbAGtU{HfO5U7mN+XX~2fR&Y27b6?V zAi%Ki+jj;IW1wZi3^Fi78Ge9RoD3Rs7}^VpQqxiy$pVUupl|^JWiSc$Q-#4CVDQZR n4-_fNL<;J7tvrSja0CE@ofz;PRT0E2BrCvH0z)0mBOIv!jTnF$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2a57659db0b59c22251257abc75e07f3ad71b746 b/src/libs/libsrtp/fuzzer/corpus/2a57659db0b59c22251257abc75e07f3ad71b746 new file mode 100644 index 0000000000000000000000000000000000000000..6aa1e66a0fd1730b26e5095fc12ceb91af4d6d43 GIT binary patch literal 426 zcmaJ-v1$TA5Pf5jtet2T<sg-Xg$P;*X%e_f$Tw`2B8`Zr)q=6opYU7EU!7p#`ettL z5CR$4o!K`tZ|9AVL(DyZ^|$-_p{K=oHQ#zf#2_FPQk{?hyrn?e&&a^KFgtY(>m7lU zgJgWQ6tPQ#k6oTjaEtGK#eiXng0%LPEOH_OE8B+RkrEx8%M09;mE&??y)cg8nm_i0 z1H_M)6qM|@4*vJeDp>ZZES$qvi>ex_Nbs~@wNWXiOi-)dJ-SyO;N{O+{b-2|(ZoOD UU`l^W(`Zx86C<3y51O;Y9rvn#mjD0& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2a9137d8bbd841e49c09cf835c3725f44465fa6a b/src/libs/libsrtp/fuzzer/corpus/2a9137d8bbd841e49c09cf835c3725f44465fa6a new file mode 100644 index 0000000000000000000000000000000000000000..f7fdba6cd36be7f5d84818a29b8336f90783f39a GIT binary patch literal 180 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJY z{AXa8!_W>C29m-+iUXvg?F*3jFN9ysH?SIJknunu53;{AHIt(rVh#gG70?MF$^V8R Nc@Tg)E)}Sh0|06gA;ACu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2aa08ae64041b0afe24a0722f9b9053ed2a5cdc0 b/src/libs/libsrtp/fuzzer/corpus/2aa08ae64041b0afe24a0722f9b9053ed2a5cdc0 new file mode 100644 index 0000000000000000000000000000000000000000..a4e7025c056da6ec713097ce52edb4bc53a12458 GIT binary patch literal 599 zcmbtQ%SyvQ6g|@hG698ZcS50pxF}jTMGz4b-3tCe2xYK=R7ye=954&1-Si72ALlo? z=)#5Z+)TuUh=K>^&Yk<3bI(u#Cn10|)~4W1RBy2MvZBW%On4h5xd~^JX*BL<lW2by z06nxdlO-0;c6mtvPb->2VNf~nl_EB}z(Q&Sb;%>tJ$+UG!5R~5^wE`Zemd0%JpQ4E z2llR9#}Sa2n{b>*d16>`WwQ;~SGdD~An>Jwu~E5M2V_{Op?Z9^>Ilu+r*rmj(Lmw7 zI^AOY9N1kUvqI~b?@q(3Kt0jX+bNmxFrXEA2<~_NZ9huj_H#AQuDI2~-qN<`8P#pN nxA_a%&6ib6X#c3e=r;{KcK=%gA@yes^r3?P!Vcn#zvVg~8}?<q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2acb3dfc6d7857429d3a277ae413af55afefdee9 b/src/libs/libsrtp/fuzzer/corpus/2acb3dfc6d7857429d3a277ae413af55afefdee9 new file mode 100644 index 0000000000000000000000000000000000000000..906619f798e4cc038d715c43fb26dbc9e82c65e5 GIT binary patch literal 665 zcmah{PfG$p6#tDYI7&g~DZx;(4pDjuI&>+B>Jsz?Vp(KKK}B3Fa3C+41YW$xeu+Lt z-=eG64jvMme&ei#h4hB^XWzW{_Wj<QqSpGt1<<NWze`QhpHS*b(-LIgz4K~q-)&av zUO5+3yn|*E$ik7l4AHkTO*J9oX-v@-*rPJ(q!y~a?4oaC49!D2v_%xu@~aY2jO>72 zT>{UKT1PdI4<;EK8(YIZ&>Lt+1p?=$VxB${eX$Md9MXMk(I_Ae$@7ZDJ3mdephN>V zz%k%X8`yN0;1hrF8OL|?i}-Gr<1<N|!T<Qw%MZSRavYmDlX=36&GAk23?Gna)g_W~ z?m`qx>ONe>5m56RZn^EXYd$ltRj>~A0n4`FPBLLK=sOI}uwaITP(oyB^DmZG=Emv6 zSwsR;eUh>M-7x}X*2gh|-9`9j6>WQkkT>yP?_hCGFsmfgUNF?#snJNmJUR^ZTWa(L DGl70- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2af0dab1f33551f7022e6da7af7970cf73c2a2b1 b/src/libs/libsrtp/fuzzer/corpus/2af0dab1f33551f7022e6da7af7970cf73c2a2b1 new file mode 100644 index 0000000000000000000000000000000000000000..60d107aed47e754741be631145ef3290e1c76e82 GIT binary patch literal 408 zcmb7Au?oUK41HIZ(@AtvDRin^mpV8qbQ1iAE;<Os!6FC;I{Fj0_#=Lia|MT<NqWVu zKDfK&C3(puSHLm{a60Jyjb4ItA9;f=LwN#ID#$S{v9KdC$9KSLsF1vX8M)Y4Uo#Jd z+O4L{0de(cK(^Xsd_&UCrtC^$h-dYNPHBXsnsF&08b&ug+}|juVhfnsSF)s)rV;ob z9(^FBsc16JX5O};9^1sIox8k9B~K{gRcSQ}kz|@O_UoFnPg?RhEkW2kIb!l#|A6R} Gjw`-SzkHSe literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2af1c5d0d5347c8d540f726d402816153ccc9981 b/src/libs/libsrtp/fuzzer/corpus/2af1c5d0d5347c8d540f726d402816153ccc9981 new file mode 100644 index 0000000000000000000000000000000000000000..9d87e6c5c1ead24f402af37f88b6fb61fc464670 GIT binary patch literal 208 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}~*PfiRE)2{5#M0}}NhjS%f1x+pc1qn@E1qy_|VDPe%B;b4ZSW2go~ nup5AU#p3E&5H^zlgAN0OPHWG9=IUagMMr?L|ACJ70O<k%6YC^z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2b0eeaba194b803783b311c0ad77403162c39d51 b/src/libs/libsrtp/fuzzer/corpus/2b0eeaba194b803783b311c0ad77403162c39d51 new file mode 100644 index 0000000000000000000000000000000000000000..6240a71804da279070d691f5312a4a1e680da9c2 GIT binary patch literal 105 zcmXSBfB@#-4D~HgHiPHNm6bZx42%pVnYpR?r6uvH6`3W;`6;RO3=H)gRV>zOjMX5u og^Uag)tT`?mRfane5L|O>^}$yGyl){&rk&fIjIE<>eWC|08}s^MgRZ+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2b3444a8e868a2d2264a075e9dea23c42db723be b/src/libs/libsrtp/fuzzer/corpus/2b3444a8e868a2d2264a075e9dea23c42db723be new file mode 100644 index 0000000000000000000000000000000000000000..07014054877afe543b370e43269deea094433548 GIT binary patch literal 2647 zcmdT`y-ve05dNxGqD2e{#DY|b0WmQ&T^VTK1O|q#fLJ05Obi{^n6mR2lt<tVfUQr^ zE#~eVCvoHal}HtlYNyWmeE#mcpSJ@HZXW<#Pr6q;11D;HCNDG$fj(M*e`Cuak@0#M zk<5yclt6pQO8%~)*o;9hHZ|B|^Is9rxI;h7*7=VLXHV$Jh3VrZJv1TYK>?(vP$a>L zrDaodaFt_yZv3GyDR;Du&~O)nMLsLl<2C1dHYS{Xq(J|!5BhzCb~H5yIxBR7rt}k^ zM5q-~W7F&rWR`8?Srf6RtBB=<3X9bX6*pb60d^IpCj&@2FSsrnJ6Z#VMlK>s4Rb1m zKspy&4p}qy|09hZ@tC3U8Z@&Q?l^-(#**=R<)CNm(3Qt1nu^Mb3=ml>2uBraYm)4{ zlc<Q-AP$$YDp+LFhNJj2Tr~2-I%A9ty5Pw1JHJTK)Qio8HR~Gc&gae~+6;Rtpt_r8 zm`+fi`_I5}Ku+bSL+#hrm*Qqa+8P(=QqA9A)b?WG^B&<t)F2!_0%PEa*Qp6>!6%VO fxBQP9CH~A%P4%LnB-Ji2XYmHo=zHkPc@_%4q|Cv# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2b703c0e974c7eed7640d4abc70f40d935591a33 b/src/libs/libsrtp/fuzzer/corpus/2b703c0e974c7eed7640d4abc70f40d935591a33 new file mode 100644 index 0000000000000000000000000000000000000000..23452573e3db3accf0e94b753341f8902f02bbe0 GIT binary patch literal 100 zcmcE4W2h<#XJB9`%H&9`2hu?B|Nnnq28JAc1_nkDmy>~^x|orn+JTXQu^Pw*D)48p mZU9L!=z?V1Ss3PUF#Ka;_z%*`1Qh=EA1oXDAvTtwu^Ip+;1_EE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ba839bf04327768140748b8bfcccf9c72100ebf b/src/libs/libsrtp/fuzzer/corpus/2ba839bf04327768140748b8bfcccf9c72100ebf new file mode 100644 index 0000000000000000000000000000000000000000..960db907d9fc7ad89368b916d42d8de5c27cddaf GIT binary patch literal 144 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT>bwaBZv(o6pI-dsvTwm!A%eW13*1MNd=Ii rYM=_Bb_0ewupR~mHjpR;r~#?g5;kU#8YuV=0zfvJfiq`T|6>3Ev%)Sd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2bb298d1f0223998820582ec7b67fbfd0f6040c6 b/src/libs/libsrtp/fuzzer/corpus/2bb298d1f0223998820582ec7b67fbfd0f6040c6 new file mode 100644 index 0000000000000000000000000000000000000000..0b2d495220742f75c07596a177b36a3792b907e0 GIT binary patch literal 274 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~S%7!gCnfg@F_YNJZN>An{)a!~_Ab*`2AG9Q9B&RUqR*<}$E=2oNC8;&z};92SF2 b23ibvX9JLr?gk&A*ncY^fp7<i!@vLlAT=wO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2bb3697dc1c419b5e940eb5acf2951f49006fad4 b/src/libs/libsrtp/fuzzer/corpus/2bb3697dc1c419b5e940eb5acf2951f49006fad4 new file mode 100644 index 0000000000000000000000000000000000000000..85f787454a829ad69aea7517a9290d4d088674c9 GIT binary patch literal 738 zcmb7C!Ae3w6g`tc&lVyIE&{=#MVl<JRwWqNM$k>`kPsJw82D_{K(z>J6|{`p^dm<9 z5VR`Vx^3|a3U6n|v4<8^7anu(eP`}DGiM+rkt%?8!>b>2Wr#=_x0f>8?`xI=Da_ga z)ItEC9mVQ#%C-PqxN=d$9nh(^fNZ;Qe#2p#7PH}yDmsHS<PCbYo3Op)8PN5h(yS!v zV0PI$D!Nc1Kk^|zRH;a$+P1I*?SGA|>~v~t&F21IeLY8|xxh?k*fVGkBjG3PX@vVI z1@Wa`@CwB<?wT!X*>d0;hsB~dF^wFt|3+nE!$oYs>o+m}!^jz<qd!3^bxL3W=Z|qN zBZ8<gh@a9vv~iH}K3ss0ynijdC(OGBeZL>4`eXI8QdF}oJ_3@z)Fs&%l2Bxs@+n1) rl89|YAkPD1$nQrplbrTAuRnnYWRP63DNM?@wAjrOH4QK1Dj$9VUQU?u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2be7c75fa6ef71a1d75907e4c68dbdc8b9c98501 b/src/libs/libsrtp/fuzzer/corpus/2be7c75fa6ef71a1d75907e4c68dbdc8b9c98501 new file mode 100644 index 0000000000000000000000000000000000000000..c687e1c8708d60ebbfc779d8588a2fdceb8ec874 GIT binary patch literal 1232 zcmeHHu}T9$5PcT{IR!0}P6=Ki2DA}dn^=p5Ul2mLB5<0J%UQTZMATp@mfjEe6Z$J@ zQ`toj%=%_-&u|z&Kyct@cV>3p?at2I{t8eBWzhA*kxT$<?FnEE;AIY&*vmfCP|q3; zT?Cr{z3$entHz86sEvW`l+!YN_?|5w3Z}!u54?m)PajN2igAsD&kuJqDr@3&Q!E@Y zNI4d8nFOLxRZTT)QQh-2o`blQqv>8fl(S_ufuOe_8Ne^~2n7|mXp3H?iG^#`*1qwi z3(KmdA>*dZ%S-&cT)6y<KZ%mC)z52uB^W+$C1DBN{#ha^!prPEZW$wGDB+Za&7^1t zU9H#u?fu!?8{J3?P%>sH!BR)nKm#V;DNq&I2c{az+sG&dKz^6h@6?=4>87s_pR3a; z7hrCi8|pj=03r1f(U)Qi+K~Ys7o2ZsvsNa|$)U~Ou48?ZUcMrAePq0x4s=pFz4PIq e*VGNRqo~)RxvmkOO?#MzzA4PEOlSxZIp7O8859%% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2bee35c47df46ea0217d0c6011ad24e8fca4e124 b/src/libs/libsrtp/fuzzer/corpus/2bee35c47df46ea0217d0c6011ad24e8fca4e124 new file mode 100644 index 0000000000000000000000000000000000000000..b0366a7bb3e9a6d30212b8e83f693b8334b25673 GIT binary patch literal 1003 zcmbtT!AiqG5PiX*+kznVT<AeONwHTi#!C)@-w=ApAs|v3y<~;tWbh=t_v|Nl^;10e z2SgAY-|kjy7os)}WOgz;nRzqwk_@kKn*f+*Dm~;$kw>{eq&3YQ>lk0&q{*ZM)jtY= ziq@cy0DE|wqh<v4K2D%a@bN1{O8Xf^n22u*DY7YJ1O=3cyR};9L7?+N)tLY;r_909 zYG$s-A*5%Fh|jfwd7oyg!~;w93L=%Q50h@D1W)UDh{DLWkLS$d$viytIw2lxj;AKb zwfQW2@#hn^nNJ%${(QRP@2hD(9K$dBYJ<ltQ5E0&>dNAIVF(5sL`Lr#<>VZvG~z#r zqgWGHL(A2MU9iSzW3K+(I|&(Cx~_7y_IL5c)i_=@Y>pRa->ta*W9CU!siDSu$t)uv H;cxy424Tw# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2c118bf269688e7562987e20964d5861de9bb517 b/src/libs/libsrtp/fuzzer/corpus/2c118bf269688e7562987e20964d5861de9bb517 new file mode 100644 index 0000000000000000000000000000000000000000..8e0eea5eec32999f2d4cbd93ae823f78803ba76a GIT binary patch literal 408 zcmb7=v1$TA5Qe|C2x}*?Qjw&xlt9Wf5v&BCVX?SE2tmA<W+AakUcutt!rsR^Aw|a7 zxfKplWngyy{r8`LXD8gz#CGkA&jyP880fSamvympSjJ57#I3>pH&h-s)>9`jwj?n7 znCEc(%JVRBFsUik#Ejiyu8hNEyI58&OM0B@GyYMP(|TmJm`C)@8$H-79dY4Rn99H7 zEogab0w7C~n7b>&`|4#^giRMe)+TTEibzPKLcg8XzHaxLFi<zUgX3Rmp7R4D%WJt* M2p+yt=gH!50h29qApigX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2c22aa93fd640cfa4ed55e48f93af608f978691b b/src/libs/libsrtp/fuzzer/corpus/2c22aa93fd640cfa4ed55e48f93af608f978691b new file mode 100644 index 0000000000000000000000000000000000000000..3f7212dfc9b469daaada26044abb2334d9a2b983 GIT binary patch literal 495 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-w!BqVF zzwtlF7+tsuPI(5f3I;58!4(1RLNNyJ8b-$LU}v$wR1jl~${e7JSQt2fkdcA?0g&?p z=vyGgP_4}fbe%eg2?W+a{152!{~QbqvS0-W2Qe@)$TI+a*4p!*xjGlD8Kh;g4U4Q0 ykXB$4Zf9TsS~LgDV}SBN)<VM(<X}Aph5(Q*Sm<DS%aMf8!Q(Au23#IH$N&HUQDHp* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2c2a4bcd3ca4db18b35c8608a74a4b02c2476c27 b/src/libs/libsrtp/fuzzer/corpus/2c2a4bcd3ca4db18b35c8608a74a4b02c2476c27 new file mode 100644 index 0000000000000000000000000000000000000000..184b8e3b8ca397d5dd05b8f2c3776195884c4252 GIT binary patch literal 115 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E85Mj(*Ez#ssUsxF=bBw0XA5ctnv n4PkIHFvtQGl>+63fFcUQ?F<YMl^hHlASDVw3^as+!L=Fy7F7|} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ca5b5ea23724a9aae48dcf587bbdb93f5647bd8 b/src/libs/libsrtp/fuzzer/corpus/2ca5b5ea23724a9aae48dcf587bbdb93f5647bd8 new file mode 100644 index 0000000000000000000000000000000000000000..06dcd39f260c225fe45ef2ab9f40b548f9b820de GIT binary patch literal 100 zcmcE4W2iETXJB9`%H&9`2hu?B|Nnnq28L>V1_nlm07G>#BLr6i1sECr`!iTWWONxg Y85r7G80K&={9|JH4^_?(3kM)=0L(WNh5!Hn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ca79063c49122e0f47e397c3d9e79c993d666c7 b/src/libs/libsrtp/fuzzer/corpus/2ca79063c49122e0f47e397c3d9e79c993d666c7 new file mode 100644 index 0000000000000000000000000000000000000000..d11d4fceb2ba0d033b0d219c69fbbb4d39e09829 GIT binary patch literal 11 ScmexaTE$WvZ;;8rzyJUntpiv9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ced2f6093d5e4331730cbf9d88d766229f9cd3b b/src/libs/libsrtp/fuzzer/corpus/2ced2f6093d5e4331730cbf9d88d766229f9cd3b new file mode 100644 index 0000000000000000000000000000000000000000..28cd7fe9f445275951a5a1c1c7281a6f0c2bd823 GIT binary patch literal 102 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E7A0fy>gMhLD}hl*H3X$DS^n&LS^ YK+=OjxSfGv4p@eRfdfQ?4REan0Npwd5&!@I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2d1a23f3862d9280ff671fba2070923ad6e1947a b/src/libs/libsrtp/fuzzer/corpus/2d1a23f3862d9280ff671fba2070923ad6e1947a new file mode 100644 index 0000000000000000000000000000000000000000..2cf8deb8e875fc162bec99ae3d456edf3ee7e2cd GIT binary patch literal 166 zcmdnb$N&ax4FCQ+NI}?2-x!Ls85qDaKti#Yk)hgQCJ@{N;w%tjrWjrTR8S4puK+Tz vx|mS_Xt*Xr9n>zM*c``g46G0S|6{OZYyhkDk2e5X$zW6svl?M>^*;sxaLgkd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2d4242afa49b93a6225225692ca154c3e45724d5 b/src/libs/libsrtp/fuzzer/corpus/2d4242afa49b93a6225225692ca154c3e45724d5 new file mode 100644 index 0000000000000000000000000000000000000000..27a1ea34cdb608ff754d4b85961c42a2ee17b976 GIT binary patch literal 211 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M f?JNv)I2is(fMovv2Vy-a02%_+hye7kgP|G#AK@yd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2d581bb7c0a36182032532922f7e5699793337ca b/src/libs/libsrtp/fuzzer/corpus/2d581bb7c0a36182032532922f7e5699793337ca new file mode 100644 index 0000000000000000000000000000000000000000..7d380312b4ff646a056812bc48f787de8085a6c8 GIT binary patch literal 516 zcmZ`#O-sW-5Ph2p-GD-EZbBisco3}zJt=~M2QPyEAcV4zLMkOo6uV$9)*|#5NPcAx z1wZIGo2*n32QssndHde%>kHs429OV>D!FpdJB+y|KJgGLzDu$~#p8683__hI2V)=T zp(S}(Vb<h;i*4X}$*C0B<6^IK<diB|VrDTmz9AEOV@Lza)lkA=<OD=?1-v{FISxen z<F&!&9qa?sIkk*-)5z;s;_1BW*|kGF{L$jJ@GOY;`A-Y9ssWKUPK$YKt@h_yi=~)| z^}Q~mLj=|W<Rb}xgMAVGLvvqk;RwjoZ9FKFB2x^wF?t(jf#!41_S^Ob_l_$|hMKIB v5IsJ-b%D)##OdPk(uKf^&Uc#r?h@Kqw@>+>xBK-z=g<%T>NlON4Gg{j2EkzQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2d66ac9504561c6a0f844138e2b4d52418c67f80 b/src/libs/libsrtp/fuzzer/corpus/2d66ac9504561c6a0f844138e2b4d52418c67f80 new file mode 100644 index 0000000000000000000000000000000000000000..3c3d8dc7f47dd7c4f512b0451fcac90d5aea37bd GIT binary patch literal 1117 zcmdUuJ5Izf5QhITkw_#8#8wompa?{PvZ9BE10ar&YKtwPSg3G8g|^`c+i?i4!!f8B ze#cInjT@wh0!MkwcxL>~Bh3QOPYr<eDqp_v&84chfVF^l1?;2vn>uH3hbzBRqbRV+ zP)%RW;sK6C)=QnOeE3Lm)+3cT_M6G`Jkd;1BnUD<Foz61wy1lHqC{(fn8~O>Q^-=^ zQShM{dl~R=B*2aFA@b3-J?kt6_(>Q9qth*MGUU7j`=1oP!ra&k4vp=a;s)lM{nQ+o zw}aJJOJGof6@7ivJ$v5`9p10A`4Qbt%xnYjpskZG5hQmk=QJk!U$E6M4Oa@)gFtU$ m7W`^|z1=R+<8Kxr{Lfyyx~m@w-NC7<UmP7g*l|A$&gBPOh?I5! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2d71aaa244448b9f4cc5d055953855d0d85fae3f b/src/libs/libsrtp/fuzzer/corpus/2d71aaa244448b9f4cc5d055953855d0d85fae3f new file mode 100644 index 0000000000000000000000000000000000000000..fca67859908c4d2d5b49c12117e60559da2812ce GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BSW<o5Lc^1MXaGT11AH6 cEJ$5N@f;zrm~cA-!yFJxfrEhwrV3~r0Mj)NUjP6A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2d843e83cfefd6a8a7ba872d4062f974239cafee b/src/libs/libsrtp/fuzzer/corpus/2d843e83cfefd6a8a7ba872d4062f974239cafee new file mode 100644 index 0000000000000000000000000000000000000000..df9c4dc743e28a90e8861413fad132889c8f7fe5 GIT binary patch literal 69 tcmWgiU|<knU|^77$Y!|3psxdDdR2pfOLaAa0|SE|J^)lKT79hA5CFOH4TS&z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2da6fe9966c981144a9dd5d39e5bfc7f300476ed b/src/libs/libsrtp/fuzzer/corpus/2da6fe9966c981144a9dd5d39e5bfc7f300476ed new file mode 100644 index 0000000000000000000000000000000000000000..b77d4ed4f0e0424621572a9b50992b88b7eff050 GIT binary patch literal 68 zcmeBY00ZH628KBd3``6R)zu)xFoy#qUd^Duz|05{fXNC}S64zbF^Hz7YBH1-0{~y* B3h)2` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2dae7e025ff6cdb13331958ec792bcc85e00f2e5 b/src/libs/libsrtp/fuzzer/corpus/2dae7e025ff6cdb13331958ec792bcc85e00f2e5 new file mode 100644 index 0000000000000000000000000000000000000000..add569b498414aec942e999c1113857cd1dfd67a GIT binary patch literal 411 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-PCU}&gj1Tq;J+(9DM#f%KqKvh5?2pJ7#0ND@( z5eKm`3}XZt#sD;oV<NI)L>Q<IF&$YK(1w9<0@zax$Uy}66$6T|klhD%y*wrWhK2wm e!~g%bK*oO{fP`Q*I3!Er<Mi?vZ1v*v;spSZ$VsdK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2db9dc6a54e6a1129d9092eb324401741b9d24eb b/src/libs/libsrtp/fuzzer/corpus/2db9dc6a54e6a1129d9092eb324401741b9d24eb new file mode 100644 index 0000000000000000000000000000000000000000..382d4f30debbefa062cfdddae0a01ea001aac008 GIT binary patch literal 172 zcmZQzU@$1DXJB9`%H&7|(LnIu(Hg>FVBln6kY!+GV5ly}t%g|$ta=WJYyhjBgCqhJ yl>NUCB*(<SAPl5<Ky0YVFmZ?wm=tDcXJCle%VV&OXJBBA0)e8`|H7G33{e12iWY$Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2dc75a74bf59fd36e1d17f4eab639b4118365114 b/src/libs/libsrtp/fuzzer/corpus/2dc75a74bf59fd36e1d17f4eab639b4118365114 new file mode 100644 index 0000000000000000000000000000000000000000..102a6033b2ba40f282ebf2cd286e6437dbf15aef GIT binary patch literal 217 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*N waxgtmr3?&DVMf43up5eG0YnQ#J&4T+bq7cU<ajXgjp097-TwcqnJ=rW0sWCF=>Px# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2de31f9b6d02c301449a79e5384b485d9d225223 b/src/libs/libsrtp/fuzzer/corpus/2de31f9b6d02c301449a79e5384b485d9d225223 new file mode 100644 index 0000000000000000000000000000000000000000..b6988be1cc2e627e030fe651369b8dd91afc917f GIT binary patch literal 69 ucmZ?tU|<knU|^7_t_G5~bgE&%1t{PE6oLRf5YPaVZ~`b(easlBJ`(^5R}WhN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2e32dee727385859cb50fd99e8f5352c8016c2c5 b/src/libs/libsrtp/fuzzer/corpus/2e32dee727385859cb50fd99e8f5352c8016c2c5 new file mode 100644 index 0000000000000000000000000000000000000000..81f4947750a4422e48343c161beeb83ed9562b1c GIT binary patch literal 128 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28Pxa1_nlm07G>#BLr7N6!<e(Lu7OrI2jn) gSs3PUF#MB%Xa#E5g94xcb~yt*J%-}=>UxfL05=pMA^-pY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2e4dd57095e0aab0b275de64702c69a40db96c50 b/src/libs/libsrtp/fuzzer/corpus/2e4dd57095e0aab0b275de64702c69a40db96c50 new file mode 100644 index 0000000000000000000000000000000000000000..5269f7e0a4868876bfac006b6f246c01506868af GIT binary patch literal 66 zcmXTEP|d(Fhk=2K!7j|M7{L*<lVN~>>S{Z&mX@~a|NsAcRa;e8R~wsH8yi<w7c&Co Hs~M^RL?IGk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2e50d0db4befbd9dcc3fbc8d1cf208e6cc2033ac b/src/libs/libsrtp/fuzzer/corpus/2e50d0db4befbd9dcc3fbc8d1cf208e6cc2033ac new file mode 100644 index 0000000000000000000000000000000000000000..9cac4bf4d3fa88b097adb0691a97a35e958258ca GIT binary patch literal 103 zcma$54+QuB|7R@9<VdY&00W?iF9Sn$HRrZ%5CME7CqqVRj&;FLSq4U+vN;R_4Ex~9 LK_UzcvOx0yyEYa- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2e5e64528591a41347878d9925d1fd241aaa4139 b/src/libs/libsrtp/fuzzer/corpus/2e5e64528591a41347878d9925d1fd241aaa4139 new file mode 100644 index 0000000000000000000000000000000000000000..5e6abd21b770ee460216f2569183f7a17c3f171e GIT binary patch literal 108 zcma#o%VQ{s`~QofD3c>Kp8*VX|Nr-8V5qKUU|<CC9lkMCPyP45rI-;c22o=Tq&OKE kWUl~~R67*U5dsSfgUNu>;?(%E#M0FGDu`l`q>XSj0Lv;Dr2qf` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2e6088c241d4a37f5a95f5b9d6065c60e44900ee b/src/libs/libsrtp/fuzzer/corpus/2e6088c241d4a37f5a95f5b9d6065c60e44900ee new file mode 100644 index 0000000000000000000000000000000000000000..50799905eac7ad87436e97ac9fe471e01337c620 GIT binary patch literal 2117 zcmaJ?OHUL*5Uv4a2QIE|yr}3BAH+viNw^qdb~*XVo=mtHnQ$1BjRrO|V3dwROkjiY z0^x#A)Wn1F59pDb#D5`2PDT$%Otk%~x_f4J0~FBHU0q#|@2hTt&r>uL5K+|d!+Crm zTI)K|oFekD3WLX!qCRNQT5Kty7R-{JgKV)ks*hTW<*?z;Q>%ofKgW?dB=y)`>d2|8 zTv9}9!CPac3E56z?onAZYUDiTy}Db);*FIbMrEt$1yz}t8rfY?*$)BUW$`|~Be*W1 zw6o$cfl|f1L#ii@fe5T)Ii^yX<C)PCJyUA9K^rT&e|y^~YsbyrmXyp1yAoM1YpbK% zqJc8~6&FhkcE()zs2M;ZbWWhO>sWbFs7np1u>%x-4vFHZC!Ez4sne7&AGSoUu7`a5 zc(l2v1VeyqLjRE{)9lqXO`3eIBYCkI#rTD1eQ*t_(VJX}8_<*r{YvwWg{2HPYQb2` z5$vITcqnGfVHFJ(SxI!wd^iRT@Ie(zaqtcP5}yxtiA}$;6cE*=iwHF2&I)5~cuPp* z>gOIf6}|&NK+96%0w``}`SQAqzYco!IB(?Sz0Aiynf!<@;|Ptc5jC$YdIQwU)I&HI z^g9Z?!6iy+M3qV<YvomXDW;Z}ZpRB>=0~$((Ci~$&{@FD-~@2Y<+Znw&!@eW)zTG( ze#6{YpXA1NG4h)ft(u5+a?wn-NSaSSG?5XS)&I0(*u$N1*|CGRmS=@wn<sq*%jk$O zs?^g!H3E3YETxxYU7eZ7n19j6EJ*pb*w1E1@92E%EHE-gq=oD}2NOeRxaU#&>Q~wh zn(IYYDbfsA(%KcgOLQOijOg!@^?Cwd_`r*X0^HlE0kn@Nc9IC}#X{mK7|e!S&1l*& zSlmr&Q2LC3>qSmxFxH;VS|k6?1GzePD<8?X2Ce53=KS_+4T&YkVU#889`l>++z!U- zwKeveQTQN?f_Ta`yKTcK!^z?+y^gG;KW*qNeeN<wltqAY-PTrs>FwtZ8rYf&Y)fn0 zWJa23%y4^0-aD+ztR!4!Bl53t8F4&A_lmBjPq#i}Y|8TKxZ9n5JU|!NEGrfZ^M4i2 zt%#o&GHU&Uc_Fs~`H&6#-7R29Z%;V~Fu33($iuVp4MvEiy6vdatbZTI7Tx24i;dMu hX2jz`#fRuC)bb+WTXk<}a*JXE$q~Gv`P&LB$bUJok757- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2e750f93090aee0bd4f31bfc34e39f500de73443 b/src/libs/libsrtp/fuzzer/corpus/2e750f93090aee0bd4f31bfc34e39f500de73443 new file mode 100644 index 0000000000000000000000000000000000000000..0f2054e511873d2207648ff71caca6789cca2011 GIT binary patch literal 172 zcma#o%VQ{sXJB9`de4zs52S(M|NsBK3=GxP3=E7wUTS<<Voqsld;uo|hb%~>0mxzi zvltlWFth`e07+pW#R0?&ZQp<dia|iLQ;Rt2!D=`dszAnjAdCm;Q7i`9buc3}hmlDD a#Bc5S&s1H^$WY9vz#t5?U=C0WXgC15^CS=e literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ea26a0c95bb875c408aa17e0f53b7c88c2b27fe b/src/libs/libsrtp/fuzzer/corpus/2ea26a0c95bb875c408aa17e0f53b7c88c2b27fe new file mode 100644 index 0000000000000000000000000000000000000000..abdbfb6e95b5a92390df4ffd6ecb50c2546b2153 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2ht$m`~UxchU#h{i;+PXBv4(<2%>;u>R_6I!5T_4a56B+ g0+p3k7tav_iwU<gFw6n5zI|ul08+LfHWLE_0M#!K(*OVf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ed032b963bb50e8a84a8820339b445392d08d46 b/src/libs/libsrtp/fuzzer/corpus/2ed032b963bb50e8a84a8820339b445392d08d46 new file mode 100644 index 0000000000000000000000000000000000000000..d97d1312aa95dedc32fb02dff4acc9be5e4b4de6 GIT binary patch literal 140 zcma!NWMHs}XJB9`%H&9`2hu?B<Nq%(%~bH;mw}<WnqeCR6fgl50|8S$Q~*LTFfcL* xGYD`oR2M_!tE<()>KGWTq4a-F1_oJ%;yFSL3}O(WIZOf|Mh%!}4btab4FC%;9(@1+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2ed038f5938825b41af5e044b4a49d176ed1f49f b/src/libs/libsrtp/fuzzer/corpus/2ed038f5938825b41af5e044b4a49d176ed1f49f new file mode 100644 index 0000000000000000000000000000000000000000..ef718ae908c54f6e6f54c46a733b7686e6e9409d GIT binary patch literal 195 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zHNem3FC2Y*q#f%Vz3=E5{ z!7KrYKrutLHX~4@I#AFDh#`_d1}6i9ECWal<9}PI$zTKj|7TzT+V=l{!v7y&8b(Be Z7z{6gI*`C`4QqziK)wJY2f`T#s{uasG<5&~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2eda5d98220fbce3961573534a46f62ba02c7a47 b/src/libs/libsrtp/fuzzer/corpus/2eda5d98220fbce3961573534a46f62ba02c7a47 new file mode 100644 index 0000000000000000000000000000000000000000..d9004c59304d2959cf41f2dc10bdadfd1981989c GIT binary patch literal 109 zcmdOk&ts5eWMD|m<X|YOX8?o$|Nrm$|G%Z0p@9)7BN@-bz)+OSRb9-;P+hGKQNmyi srUe*uIf0B8(>X#6!tFp72SWqH91ezm1xyfi4GIhldO#}}GlBeS04&E9DgXcg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f1995d1e57bf1c3247bcfe75e58b6cc4ca4a78d b/src/libs/libsrtp/fuzzer/corpus/2f1995d1e57bf1c3247bcfe75e58b6cc4ca4a78d new file mode 100644 index 0000000000000000000000000000000000000000..d75b8ac3957016a8fe66384f3383adaad1cd6241 GIT binary patch literal 103 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5qKcU|<BXfkbsNBajbdu4ZF62^3-i3Nb^-43H8C R_|6Ywf%F%H)PoRIKLE(A3?2Xg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f1d370325c03f3d4ab53b75ae6e67516e6f987a b/src/libs/libsrtp/fuzzer/corpus/2f1d370325c03f3d4ab53b75ae6e67516e6f987a new file mode 100644 index 0000000000000000000000000000000000000000..0beb2b06eec53929b2b317c26defef05ac166cd7 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&zJQZ~K^7#^P&`M7 bAsnodVGct(kO3rxffNT0vF|_wfq(%326P!; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f24d59e4afa404d79970b52e52530615b081c4b b/src/libs/libsrtp/fuzzer/corpus/2f24d59e4afa404d79970b52e52530615b081c4b new file mode 100644 index 0000000000000000000000000000000000000000..e3c4b8975ffe9d385f1c1624b0a3f345ea25817c GIT binary patch literal 36 mcmZR{O)W}KjZe<cD=Es)$&61+&8dcf%y<R{O@>l||D^x{(ha)+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f3c8381e242e9b5f8a240ab4f3dd4f301f68363 b/src/libs/libsrtp/fuzzer/corpus/2f3c8381e242e9b5f8a240ab4f3dd4f301f68363 new file mode 100644 index 0000000000000000000000000000000000000000..aa11cbbd8aa27b1f31d5618a3c46b8193b0e9601 GIT binary patch literal 326 zcma)&F$%&!5Ji7baia)9u?$#Qdjv1w8A6IJf=x)etdMlUGGLiAcrXtjR*rwNT4~|H z%+Aido%w7cbDR<YMP}@lC+#V6z}`8g)1i<K5m>|sfF=(C%_2N{wCpjiFo98QcPCQ& z2cm;`GqA`CGJ*<5M8U`-t_<MHO%vvynbL!+O{e{I3|VS&qhD0!*=D9jt3^{mWJIw* hH<K?t?_C7dj&#54hn|7(;SW7)lB(ybdiW2ei(f$MMP&d0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f7a4bdd939fd227395e8b2e8a719fc835c08093 b/src/libs/libsrtp/fuzzer/corpus/2f7a4bdd939fd227395e8b2e8a719fc835c08093 new file mode 100644 index 0000000000000000000000000000000000000000..a503ee89d6ef2fb8af8d528e6d7d39c1a3680e62 GIT binary patch literal 119 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vvW?%q`F#;h&bulADHIN5l!bl(kjv(T2Za0t* U0o4rqpF&s)AQNq&!i+$r0Cr0fu>b%7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f7d3e7ca82d9c31fa362970c73f061067711165 b/src/libs/libsrtp/fuzzer/corpus/2f7d3e7ca82d9c31fa362970c73f061067711165 new file mode 100644 index 0000000000000000000000000000000000000000..ded8ce7461d2f59bc3b81ba6a3877d3dc3529629 GIT binary patch literal 738 zcma)4O-n*S6g?wC+Cn11C=g5}T7*RAsssaFB-F-rh=`CNCBD}}9+ZoqHU%vsH*KW0 zEgr3m{zKc^`v+b@;dEwve&wd~cr$bF+_~q@oC}$Ik_7<uim!aenUGTM;pIlocDokM zo=h)kzbERzphwVp_h=VjrEgu7@CulPBOqR{T;4O;wvO3S;{%WRXAp+`g0<e7*E_)r zpyh)I(~^Gea)+JMj0-X1M{2|mk;^bvWOdkyWeij9=grOPaj94>CljnR;i&9{zJuk% zpztPr7Dne-3g%Wj&L;%#c%Y7mfabsyhmJ+(Pd0J{CJ>*n{$*STdVGF`$#7N91ReEp zLZNd8I&k$tL`f&%R|4@DmH|sCNPPDv;3s9=$<7Cs`wq(fre(jH!phL&wnUT3?6$2? z>%U?Q+Oox>p4&D_y+LNqo5_;dsFin1SuIQiO6ypQTVDA1i3PWyq8Tx{9BaP~bJ&l( h%wuDXS0EiFh8S<s!*aEzDsu5WSa42j8c_$L(O*KvvK{~c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f895aecf72f4c9227ecfb7451d6f2959c056a23 b/src/libs/libsrtp/fuzzer/corpus/2f895aecf72f4c9227ecfb7451d6f2959c056a23 new file mode 100644 index 0000000000000000000000000000000000000000..21fcfa5729d401c482aa8d8028d9998a232dad0e GIT binary patch literal 66 zcmb=ft}afEXZ-*Fe|7ca1O^5ZhT>F)%=q|fpb!HXh}LuH>b5g5sHIlFtTqD)RRdK+ J07G?kDF9WR8;1Y@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/2f9e9e3f2a74aaef978b51fa50b2b38af0d78da2 b/src/libs/libsrtp/fuzzer/corpus/2f9e9e3f2a74aaef978b51fa50b2b38af0d78da2 new file mode 100644 index 0000000000000000000000000000000000000000..d0f81f13a4d598a27516643535c2d304cbbd3cad GIT binary patch literal 113 zcma#|Wnd_YXJB9`%H&{_1kyn8|NnoWXmvFM10#b1Sfsj`kpYaW)xmrQ25SZf2#b>m nNZT^V0@X6)gV;b&T|6f?HkM%y2arAS|9-F-zi2hk#8L(TAnFpy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/300c545f97f160d32ac5c3c17b2cba0b75942c0b b/src/libs/libsrtp/fuzzer/corpus/300c545f97f160d32ac5c3c17b2cba0b75942c0b new file mode 100644 index 0000000000000000000000000000000000000000..9f0e756e6ac4847186b3c1664b1d6df184ca559c GIT binary patch literal 404 zcmb`DF>3-r5QV?BI<Pr%ofrs61TAb#XJcTiz||HasVvf@@DzjvP3M1*>--xc_<vG+ z79pFrE*$=V%)(=4_RZV3GiwlIG5<)mG4<Z(80QSl9~wP1mpPd0Ggk$;m-6Ap%yv*F zOdnN6olaD^!`F?q_IMT;e*L%=ueuis*TIC!yxD+=V(rQmH}T4UuO&{(=~9sl#ms2O z;RCyjM5m6gFf@r}NpJ-t^p9#p;H7X-rbvz2kyvAK@2u|rd-8<C=`DvW$Rqm+=K=KL N6Q3`6*RHe(`v=PJJ){5t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/301c5d6629e0a595690f459eeaaf37260e8d9499 b/src/libs/libsrtp/fuzzer/corpus/301c5d6629e0a595690f459eeaaf37260e8d9499 new file mode 100644 index 0000000000000000000000000000000000000000..fde229720921320d3c625c4a76437dc19638542b GIT binary patch literal 458 zcmbV{u}T9`5Jk^h6q8h<oe&7CwQgaz1~w3zfHr=>7GjacVmDR~v=VJC#cli%#ShWc z`2n#Aj`wXAQ<%zIyqURkXXagOWR?TPxOH)(D45v^uMgIl&3p#mmhIGh6n|2BaH`&; zngX9aHaO=ECix}o7vuY9Ejy|;X`^)Q4Z7GDKB=~9Zu<_Z7Otzx+KsFZgX>`fx4ch( zc^@|#O6iVk*_AJUSDv0t4%M0W%O`vJ;Gn0R^^UaR@3-h#IK+FBYFDMuBMqIooCjVW sqs@g=i34YN7v@%Bx{CbE1=9(^^j@WO4eb?dkdg=W^gqy?D<F=401I=zOaK4? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/307a33742ee217ffe6c44351d1df18a910553cd4 b/src/libs/libsrtp/fuzzer/corpus/307a33742ee217ffe6c44351d1df18a910553cd4 new file mode 100644 index 0000000000000000000000000000000000000000..77aa1b508082a0b44242729a05adf7b30d59db11 GIT binary patch literal 69 zcmXSxWe9x9@UptPy04|@9|MCmLp1}Cv!$8=2$&eEy+AY&{I9NloB*V&E90v(;~5x% Oit2lSe1FDb#yJ4{P81FR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/30e489610e3e71cb4534b9ed62a3375c203e9478 b/src/libs/libsrtp/fuzzer/corpus/30e489610e3e71cb4534b9ed62a3375c203e9478 new file mode 100644 index 0000000000000000000000000000000000000000..cee5ba1ede0896dc890e68c7cbb4901a536c73cd GIT binary patch literal 115 zcmX?@k(yHw&%wZu%21S9&j1Gh|Nr-3V5qKUU|@s@Fenx?8deuGg2foVf&f2AhRGU8 n<S{UCGBCI^$O2WHw)e~dQedSFK>a}Q4XP**#0jisaI6CWGwT?z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/30e9ee869066f7a79dc0fbefcf0fc18c37423813 b/src/libs/libsrtp/fuzzer/corpus/30e9ee869066f7a79dc0fbefcf0fc18c37423813 new file mode 100644 index 0000000000000000000000000000000000000000..52550d4179b63dc9eab311c02584eb9806426833 GIT binary patch literal 216 zcmXwzF$%&!5JmsSX6yuO!L*{D!^Sf#i!LOf5)!q@7HQNVcmnY*-pY3TOOg*WfB5qT z#;#8|TL5J)zM)g92w|(749nZAJ6yaivZLG0tIVy6F))J>E<b3yKBdI~j~`oOu%N|r zszmOkK^vK<0jW9n2uhy|dPZu#pc~+MQyqY`3h$0iCRhUZmySZ!Z&PLzvjnhv$oCJ! C)GCz# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/30f41ac83e042820e3738a44464f82d2fd7dfb48 b/src/libs/libsrtp/fuzzer/corpus/30f41ac83e042820e3738a44464f82d2fd7dfb48 new file mode 100644 index 0000000000000000000000000000000000000000..d201b120b191eca179009fb43e755d0b4b8b9605 GIT binary patch literal 139 zcma!7%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_v8FUNzJQZ~LzaP)fvo|^ zVvq&PG0b6T2kDs8E(|0&K+LvpKmusOe_Id_Vs<A-W_>CHL`@Y)5@aq&2NWn4@1I!B F003i89yR~~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/30f9024418bf8fc9d03a330a1ffa271cd57842c1 b/src/libs/libsrtp/fuzzer/corpus/30f9024418bf8fc9d03a330a1ffa271cd57842c1 new file mode 100644 index 0000000000000000000000000000000000000000..2ce04460a85c3a4a56e386a589e59c1e5ebc7993 GIT binary patch literal 139 zcma#o%VQ{sXJB9`n#9lrq(I>R|Np)W%+=Kl42(ctYJ6EjPHAd<0Ve~8EJ&mQ$YKDq z7#QX-v;&m@Nns$x0mKY#-+)9t5QFqW08>#ahh{xk4F^LN$ap3JpiC0TPB35wT2;*e E0AuqR1^@s6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/31159657c8497099fdb8de9c3464691faaabcc2e b/src/libs/libsrtp/fuzzer/corpus/31159657c8497099fdb8de9c3464691faaabcc2e new file mode 100644 index 0000000000000000000000000000000000000000..3a7553655298ef8c4f1a4a879349bf10ed54c424 GIT binary patch literal 767 zcmZQz4EXOA&%nS?l*y4=52S(M|NsBK4Erbk=X&|F8p!?k-$4p2&Y<*-p%^H_2;u>W z>S9KQYKNIj>LC7q;Y<+4z-R-}&rl6g2{Z_ZAZ)NSR2N7m$ZRmMhA}wV8Dzl*o6Hdc ziwU<gFc@esFv<dXOfXeo+Of_B3K)?bs0MPNGSq=yE<lxx3}9uY)x}^VzyE(z!N4$w zL4aZ3x9<!b#z0>PGsvKrtN?N@(0wp(S98FvZeVBtE9XSg08}mr<$^;AMLEzYpbLOX zfIt!>l;gGXfZ`?b7-7%w0|YRGVh#tkpa7c=B8F_3Kz#83KT!c<jFdKT1PGphfF!UA N!#S-z|7ZSZ001oYhM@oe literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/311eb84e6e831a361c7bd6fc2c683d6fefb3e7d9 b/src/libs/libsrtp/fuzzer/corpus/311eb84e6e831a361c7bd6fc2c683d6fefb3e7d9 new file mode 100644 index 0000000000000000000000000000000000000000..632de1974a78c4d1e7b1b969d8d442c0dac64c80 GIT binary patch literal 209 zcmY+8Jq`h35Qd*&6H6tw778M<A)(zkf-6ud6sxf1*JwoJ2-`V{o4Cn%KR?Aj#r(Z* zW@fiMvDt&251t+Q;O<kXf~LNO5Q`D@K;oF}29r90WSx>?bY7afD~OQK<)3{UieIJ+ sLs^>(Tm2|s@7@ljMT@u;Jg_L}r%1?cp@pkZHSSAEbiHT#^$$G78-p+`lmGw# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/31639931451c559a9f8b5fa5a06869b0efc9fabb b/src/libs/libsrtp/fuzzer/corpus/31639931451c559a9f8b5fa5a06869b0efc9fabb new file mode 100644 index 0000000000000000000000000000000000000000..5dc9adc9427ff92cbde8275d5f10e043ae2e3bc3 GIT binary patch literal 191 zcma$5Z}}et7>hDFQtKJO0Lb-aV5qKU*oFplw=pm>Fh~mlRaF-QSs(?=s$hyBvJ4E$ z47Sz~gBTb%88T9H3K(R8`bw)c=YaGGGYGXa2r%rcW~f#ND<e|<x9<!bqCj)RWuS($ H09^q9uU|6Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/31687b4405707ccd151394799ad0ce56ecdee2f4 b/src/libs/libsrtp/fuzzer/corpus/31687b4405707ccd151394799ad0ce56ecdee2f4 new file mode 100644 index 0000000000000000000000000000000000000000..891c9dd0a5f8b1aa164c4e64f9830defb6cb740a GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B---!HR#!7HFoO9&f{~$`p%};mqK4u*LJbVoFd0q; Z23ZE65W~O!X1{@gDgR4><Qx=J;sJ135|01? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/316ec5aeebb16f90f3b3eca41fea3073d100c588 b/src/libs/libsrtp/fuzzer/corpus/316ec5aeebb16f90f3b3eca41fea3073d100c588 new file mode 100644 index 0000000000000000000000000000000000000000..e0ddc9d83b5325e9da8586e3e7b90d393c8cd02c GIT binary patch literal 112 zcma#o%VQ{sXJB9`%H&9`2hu?B|NsAJ28M!aMg~Sd1_nl;NOpW#Voqsld;uo|gDg<w xS3~g}A%<|UYKA!s?LY>Q6b4cpATh9r29PW$N=-{GiZ3lrjnDbZAi&U24FIC%8p{9x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3195e8a4f141a82ff4ba3c534d022e15d3899799 b/src/libs/libsrtp/fuzzer/corpus/3195e8a4f141a82ff4ba3c534d022e15d3899799 new file mode 100644 index 0000000000000000000000000000000000000000..f533bcc58d8c1e8842bfa37b39be880183765a4c GIT binary patch literal 174 zcmazqEl!P(XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31_h8v6NorRAz)zWQDdksW(1n7 t4l)ePw`6EwcnP-Bl7WGffgxTmkD&(U9$AnBs@E3J5i-ilNmXND000=6PHX@G literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/31cd11b914233dc41e2a8f094b77806d3886a898 b/src/libs/libsrtp/fuzzer/corpus/31cd11b914233dc41e2a8f094b77806d3886a898 new file mode 100644 index 0000000000000000000000000000000000000000..273cb1255d6c352e5062dbeeb4c00e6c2679a19e GIT binary patch literal 165 zcma#o%X?T8&%nS?l*y5*2Bd-D|NsBK3=GxPKqfm_ATg&jHNJq8fkT#ok%6HB$YKDo z1Q>qIVQ2@c0FuH$iUXv$?GKQs2eDuV0nJX$<fsR$`CrAr@&7-ABTzAf!fx~r0fzs7 Ns~J*KL8dcs008ypCD;G} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/31fbf723caa4b5ab8c13eef1ab28a5af9a11b252 b/src/libs/libsrtp/fuzzer/corpus/31fbf723caa4b5ab8c13eef1ab28a5af9a11b252 new file mode 100644 index 0000000000000000000000000000000000000000..14b1936b72cb2260d7f8117fb9cacf6bd2264d33 GIT binary patch literal 621 zcmcIh!AiqG6r7}iZa|^hTcOZ^cqm#g9t05-Ja`fOgAmGM3#pWZD0IPkuoj_TAo+p* zo`)V3T<0Yz>Ot`0!0vl_Z}!b*w&wsRA%JA4^pugXZ!qT4GGh}uyp7^ahvUI0>UYvX zv_JNNHfoB^9P@H-GDrbWD{fN<T?RQ$Bp7Nn#auXoHD$uwsYr<)DpVXbfwlGmcz(3D znt>pFZ<SoPfjwZhur-rb-Qc^{_3v7RJpQ0%UcR&zrZ!9IhG=;}&;Z;*-`!@VgQZwd zPeuy9M_-)Yfw{{!aRkKrChTWX7HcxDOu7a0igK|a@auAdwZmM70Zk6e6`VG6s+8DR zCujHP6&!rn(^gsET_H7czhi#$cGdrJqRZ>a#GRZS@8Rd0{HITpD}3t8JBd#Qxr<Le Ch;Bpx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/321d0e9ffda61ba4e7f602b55ce88bcaad4bfe4c b/src/libs/libsrtp/fuzzer/corpus/321d0e9ffda61ba4e7f602b55ce88bcaad4bfe4c new file mode 100644 index 0000000000000000000000000000000000000000..651da03a8ef23c9290cf502c0db1d46136ef9ef3 GIT binary patch literal 216 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}_DEFpvTXFtmLG67?XB5bYqkC^eI#o}nG21_W>^VSuXPr~*3SzXt<D vXA8&?|G~~sEUumfW-u5FFz7HiwD$aGt}cey!@vOKF@bnHi}gV^#O?<GtP3m) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/322bab4ee1290c088af091695f09dda8f4a9c9f1 b/src/libs/libsrtp/fuzzer/corpus/322bab4ee1290c088af091695f09dda8f4a9c9f1 new file mode 100644 index 0000000000000000000000000000000000000000..049ced91072420a79bf6f724ff9d36b9a595d259 GIT binary patch literal 185 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria5B`%f^{;?VQ2>m0!d*8Rt~Vjwr@b{zYv%WBue6eL}zLy#9&rTgGGUs Xft{5apInq!oDrYNU=MUzWicZFd!{J3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/323a81ff8759bce599717f6c66abd08ec47fb862 b/src/libs/libsrtp/fuzzer/corpus/323a81ff8759bce599717f6c66abd08ec47fb862 new file mode 100644 index 0000000000000000000000000000000000000000..ef12bb47185121deee0148104310917be9853132 GIT binary patch literal 36 icmd-mW?*0_j<2p}D6R$q1_m_-AP2@|U?>$xEd>Cw#tDxA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3263949e1fae15f5ce342db9a78686ddf15151c5 b/src/libs/libsrtp/fuzzer/corpus/3263949e1fae15f5ce342db9a78686ddf15151c5 new file mode 100644 index 0000000000000000000000000000000000000000..063d5fc2ef65173450241fdf5d28989d493660db GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt28Kok1+YkUu^K~lF(*(=9n5E7uw-C( s31)IKFvv160+kof5n?cAV8}_$i%-taD=Er%U|?VZngvw#0chfX0E#Oay8r+H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/326728a546ac69adadd16535fa502a868c73e697 b/src/libs/libsrtp/fuzzer/corpus/326728a546ac69adadd16535fa502a868c73e697 new file mode 100644 index 0000000000000000000000000000000000000000..88e878e84361afc384499996fe88470373ba1ecb GIT binary patch literal 394 zcmaKoFAl;m6vn@9W(kO8I1)rHK@iS>z@Smch0LyQ6+<u<l5qjDLvR8tC*Ue5vhrSA zP_QRn-=AOmed!h);wthqi%Q$T7_)}ZT43<9lbZ{-?aih`0PIzpVB^3RcPd)cBRV3U z9iNm+fhpz?JOFZJDXCkA`wvo3Ej+{q;hCsllPlnKFoxccd`X^%W5)(DW<b@LP%Ez> wg9!x7KTuQt?T5u|ke}UuKc4CFV+pDB<?CnB=&(|T6gszz!9PVFgTxM&Z<z8#B>(^b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/328cf115bcb5e0abbaa5ff19e0f3f7664675d9cc b/src/libs/libsrtp/fuzzer/corpus/328cf115bcb5e0abbaa5ff19e0f3f7664675d9cc new file mode 100644 index 0000000000000000000000000000000000000000..a3b979799a95b8f58bf6b639a05e8045f9582bcb GIT binary patch literal 1582 zcmd5*I}XAy41HZFDq>>mz!7=_q;Bl288}2I$l<sO3j-HmK_a}wNfbmYK2-}*<hqXI z&wI|HLUBH80GC@`Vn&5)*-+?=BE#Ambdy2TizboEDb!_)J^r48TeN&}kyliRZ{tV> z*AV*QEL3Lw-0oEYLooSHVtI66N}#q_ICQ4;$dA|n#?Z7feo_AzJ~r07{&sxFgDf=A zO<MPfyQ>0o!k_dbI^~db`ib#b_+joR?u*EMj+A>x`@)z>7ywSg{;jt%95*U~G6haB kjWTr`@o~MLl#Y4mITHWhH!J)RCw}PLv(N1V;o4TX1EKl-p#T5? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3296e4620adf468afa30b02ab06f8b85e4c4ba7c b/src/libs/libsrtp/fuzzer/corpus/3296e4620adf468afa30b02ab06f8b85e4c4ba7c new file mode 100644 index 0000000000000000000000000000000000000000..2284d5e950eb0af4c3fded54eb42691e458ef871 GIT binary patch literal 1124 zcmd5+J5Iwu5Pf4TVRsR!C?cZ>M1c~~!x2Dm0~aVo3MdjPwxB|3I6^uO!9nOFjzPup z#vAWiyNXh{VJ&}Vc0O-r-nyRR<+%p1m>08GzPYTmw}3H#I0ej7+)bSt+~LaYOi-3s z<rw#0_4EmfL>4nUoV)M=$(e^#;n-~^&+|mnN0C5~4uovL(6PnDTa*<V3xrCd2K7Of z`bNRKVwmMV_z?MQ#-2+Ge`lD}HR0qacnJ=_Dg11CV=hP<(+))m^UHbK0vI*K^4$_- zsKAcCz1sux*pdz(*ZJs(ZYSAr1u)TCrAurjO-r7JV*e-Xn|-id0h>)IB>HL(qnk>f rhJRt8$C}HZtPW|BjiG~x(zl}fBM=1L?=?oue@`HKFwIhJfCu~mSn{WZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/32e5dfb5b0c33918722f7387b6f07175bd94a2a8 b/src/libs/libsrtp/fuzzer/corpus/32e5dfb5b0c33918722f7387b6f07175bd94a2a8 new file mode 100644 index 0000000000000000000000000000000000000000..99eb4914f9cfa75270f03d1bd6fa867570709d49 GIT binary patch literal 209 zcmZWiu?>JQ40A^qVM9Xd9ZYN-!2ujlb;=G;@C(;4@Bk7M*c2A9qQtVDWO2Z;8G!w4 zD-OZ~fx~FQp<{;y2V;s->OILwu1%9H<cM)dh;mqKa=cDDg|Yl3Ypj)HkM|}hWzzLD R%!Me*={|CQ{Oo0@DPN~3A#eZy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/33024c2d4c3b16db6ba069f497c20d1fe4c91fbc b/src/libs/libsrtp/fuzzer/corpus/33024c2d4c3b16db6ba069f497c20d1fe4c91fbc new file mode 100644 index 0000000000000000000000000000000000000000..7188b04744c909186f61d4cc9b7876544bdad2fb GIT binary patch literal 132 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT+Ik#0SQKiYKNIXa1%tpKs7r^N&%##x|k8D z^?)Wr9azU41_mLJFvA0e|Evt=j16Ez{NoL>jjF4wi$y?yMFgY(tehdf`X2)TRg)qi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/334027b721576a743b67e98448ce3c5baa28897e b/src/libs/libsrtp/fuzzer/corpus/334027b721576a743b67e98448ce3c5baa28897e new file mode 100644 index 0000000000000000000000000000000000000000..f6563e64d29cd0ba758c37fc9f298cd155f53d0e GIT binary patch literal 139 zcmdnL<}cUFm(>vr4B!4cNHKtc0s})akP*lTB!IZOn318n8p4E;<v?K=0x1FM1F5No V8P@<a4&5Y>T9A%%C=J(H4FFlr94r6; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/33547a3ec1c8c2a903c017f5e606badb1c7096d9 b/src/libs/libsrtp/fuzzer/corpus/33547a3ec1c8c2a903c017f5e606badb1c7096d9 new file mode 100644 index 0000000000000000000000000000000000000000..4c07e9b893b50eb77a02a9fedb070c1c02b0d482 GIT binary patch literal 119 zcma#o%VQ{sXJBARO8qaK38aDG|NsBK3=GxT3=E85Ml}P&MMee&0gzmEF(X5DwK|BY q!oXl%%?V-w0g#quU}Pw@E}kO<<SH;QaDWJqSs)+`p`hluRs#TC0wA6M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/335ddddde8eb1d243e9ab8df35ede4f8f834532a b/src/libs/libsrtp/fuzzer/corpus/335ddddde8eb1d243e9ab8df35ede4f8f834532a new file mode 100644 index 0000000000000000000000000000000000000000..62a81b92a4c7615d1d6972cadcd6ae62f654645d GIT binary patch literal 386 zcma)2u?_)25PgRP(Og_DNF*+ipjW7r5`S=&LZfiHsYSydT<1%+@E`Xl<IV0VIEC5l z?CiXmH!qXTk2q&QblPijfHzg$0=Y12fmkp^BL-67a?|ELk3uEzSotV^Cu9+^VOqff z<fpsF09G@W@7|&hWTv7dtV-vN)4(e;&$pD^>P$;7;6c;QYP_ZzFM_5z#|X(4m=tVm kp~J%opRC6DFKJpS`@ss7Z74e2CoKt2<+%&zp3ZIL1;3q27XSbN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/33675e431250a58dc5880fbd65959d539808b81c b/src/libs/libsrtp/fuzzer/corpus/33675e431250a58dc5880fbd65959d539808b81c new file mode 100644 index 0000000000000000000000000000000000000000..2fb953bc8c54c6cce260bda567fc1e9ce01728ff GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tI2kx(K_U%67K1E9 z15geM<}kDigP0sZ-1ZGf)PppF4ASuh(M7459Q7bIPZ&5p14aLPFaT`;$sp9krvLy0 CVIHyo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3392d5b4715288bdbb8f7979934beb4666c5032d b/src/libs/libsrtp/fuzzer/corpus/3392d5b4715288bdbb8f7979934beb4666c5032d new file mode 100644 index 0000000000000000000000000000000000000000..6f0eaa56dd611bef8101818c660bb3f38ebc9ee0 GIT binary patch literal 1163 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^JO+?U7>iQ>3ui)%N4P{5>=s6Z!<ZQ483Y&@T6_L8SLedq$*|alMOFx? zSAj{moq<7R4#OM}&wv5SV_;xm0D29VW5HgQXJ7)F%K&u&#2v(ux^U-lLJeU+_yo;P z;!Gq~6`JA5Ttr+#!_JWr)rW{MW@OwBj&>H93MA)a7{dTn1Po(PsB!=yBLn*bAm;}- z-2fAeHV{{<14Tdplwke=?fTEbz(8SSN<*R+BQmMsY+wM;%Gq>DgW#|xmVie+O3MBB w{{Md*Sp;M-7EMY@pv=qQgPPhwr3whJV=Y>MX>{WM{fv^JteYBNHvi>+02&IaM*si- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3395595affc65d089707d441e2e25bd59cd6094f b/src/libs/libsrtp/fuzzer/corpus/3395595affc65d089707d441e2e25bd59cd6094f new file mode 100644 index 0000000000000000000000000000000000000000..a5dac424bd71183d02640bab33f2119b6b9c5cdd GIT binary patch literal 270 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2kk_zk5Q{@50$LfC(R zRCPB<F&JbrZ~^sz3}97d0BZvp?h8}`F~XdIlYv1NXl`kB@f?WQfB#I5)Ow%+6$W#Z w8I&3R|3jz{VgS02pz}bc1C6%^Isj}vvR&#7j3{0!t^UsrawvwY{#O?R0H-@RcmMzZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/339807e232d08bc40283c3b86378ee2cc139572f b/src/libs/libsrtp/fuzzer/corpus/339807e232d08bc40283c3b86378ee2cc139572f new file mode 100644 index 0000000000000000000000000000000000000000..28d1cd0759df045d6a8f322350f68e0bbdaaf152 GIT binary patch literal 110 zcma#o%VQ{sXL!I+l*y4=&j1Gh|Nr-8V5qKUU|@s@FjN;aLU6S@RKyxeGiWm~$O6@s ZR(H-30*eW^Gce2nvp5(yV5%T=H2{$A5FP*k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/33aa508cde4c11f0e4b71ef0cfabe8ecea0bc96e b/src/libs/libsrtp/fuzzer/corpus/33aa508cde4c11f0e4b71ef0cfabe8ecea0bc96e new file mode 100644 index 0000000000000000000000000000000000000000..1f0acf78580605f3867ee178067fd3b30baa8e0b GIT binary patch literal 169 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+pW#Q{=m@Qs;)p&rD78N^V}!H~+3Sp-z`pP`C_LI3}M21f=4R6{`q VB3lBs;6LO4zd(niq_#V7004$LBf9_q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/33fe01ec2404d54d0bac1b2fb226221e94565b67 b/src/libs/libsrtp/fuzzer/corpus/33fe01ec2404d54d0bac1b2fb226221e94565b67 new file mode 100644 index 0000000000000000000000000000000000000000..9c56506f74d53aa76f176b5c124604ec8f8e3333 GIT binary patch literal 197 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zb$<`7!?&@MjxI&=X{{jpG z5P@QbYHdcKMs<iZgEf?9;ACKsWdN%A&hXzBYBJP7kbWRYfKYHU8pL9F3DXay7h5yD R1~P%R0iD4Nb;iMi)d0zBJ1_tM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/34548ccb26e68f61c5bbaad4828304fdbcb972c9 b/src/libs/libsrtp/fuzzer/corpus/34548ccb26e68f61c5bbaad4828304fdbcb972c9 new file mode 100644 index 0000000000000000000000000000000000000000..f06a9c69d82f9a4e274fda5813e2f303fc737f93 GIT binary patch literal 280 zcma)$u?oUK5JaD-cq)QuWs%m}Pw)r)hL9pf8j+MnIJ;meSo#Hin!RF`bvBLKIdFS> zd$Ti>+L%KMlriK>-9lrwVO>>f2kjthD@+nPaNG^SyD6_Lwf<D+^a)N|Jw?fS*vwyd zor}w#@*+fPABH_<U75gnWUlxZJ(z7DSo34M__2*r7tHfR4CEB0qJ0c*ntPrvg3=3Z KY~S}~tCBa;DMGgZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3457d577bc46c48886ebc1d8991c66591852d5eb b/src/libs/libsrtp/fuzzer/corpus/3457d577bc46c48886ebc1d8991c66591852d5eb new file mode 100644 index 0000000000000000000000000000000000000000..901cad4436a8ddc0c7e416d102617dc9257bbbbf GIT binary patch literal 103 zcma#o%VUs?*I{5N%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRa8G&Nz5G4!-3=J>A pOil&{S%%^{LJY<X3^}QJ@yYplCAzwK`SHo6#U=T<@u?tH)c{@P7QFxf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3459c86c8ade3b5dc7e52d3777da32360aa73d86 b/src/libs/libsrtp/fuzzer/corpus/3459c86c8ade3b5dc7e52d3777da32360aa73d86 new file mode 100644 index 0000000000000000000000000000000000000000..7a374a16f490e3131fe702e8d41abdaf983ccfd2 GIT binary patch literal 108 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E8L1_Oft14A(*LopC1RjV^Fu!2-t jg9s4dWKfo6D4rt(WGXNSgGAaH=72d0K#~!Nf#v}Kn>G<k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/34dd104366c79eaa63ef86c655e4d99360701637 b/src/libs/libsrtp/fuzzer/corpus/34dd104366c79eaa63ef86c655e4d99360701637 new file mode 100644 index 0000000000000000000000000000000000000000..1fe79cd5b6f9e9af6b50a22a551e1b54e7ba7ff6 GIT binary patch literal 241 zcmZSh4+S}?dGW~%V4(Jmp}3lXff2+364k|w4AnCcpqRy4jia4`v6|uce~>6LpW*NK zmKLBG14B_JM`}ITIG_c-KvSw2fWnOH7}^Vf0>VXLDG0$N0Hj%3d;T+ltO5dv4rC=j j!K(OTkQ@|%czH}94!Z7wqIk7DhLU)o6v7QqBY|Q7vyemd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/34e2e4748a7aaf8d10f8537525a06b0cbcf0f273 b/src/libs/libsrtp/fuzzer/corpus/34e2e4748a7aaf8d10f8537525a06b0cbcf0f273 new file mode 100644 index 0000000000000000000000000000000000000000..35d18f8f3c2509f2c4824b5e74aa77c5483379db GIT binary patch literal 49 rcmXTEaKYY$0SMF>7?>Fus;e0o=5T=c)eH)70R{#ppg=VX5LW^K;bREr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/34f6cc92ad5ad78d8ea36663ef08c760d080ac9a b/src/libs/libsrtp/fuzzer/corpus/34f6cc92ad5ad78d8ea36663ef08c760d080ac9a new file mode 100644 index 0000000000000000000000000000000000000000..1f29fd50605ec364e8bd03e64adb3d0984abb44d GIT binary patch literal 87 zcmdl#@jutgm(>g);2;I27!(*7ih&}Wj6g0B+XJcUVn&8)pcs&=3{nK<7ypL>un15P JjOu}8H2_Vc6&(No literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/354f8cbe60938f87c8c6990673eacb81836ed667 b/src/libs/libsrtp/fuzzer/corpus/354f8cbe60938f87c8c6990673eacb81836ed667 new file mode 100644 index 0000000000000000000000000000000000000000..85757aa143032f13ed4603bc7eb467fe8c238431 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`1JXe7|Ns9T3=GxP3=E7A0fy>gMi6eOu2zSNm@{xdSey(D cvLJQU#dCzfBEmp&4p0)Po*Br5%EvPT04X95?f?J) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3582246ca057c6a5c7737eec0715377eac1e14d8 b/src/libs/libsrtp/fuzzer/corpus/3582246ca057c6a5c7737eec0715377eac1e14d8 new file mode 100644 index 0000000000000000000000000000000000000000..4064c81f600cd2d7e1c4c1a4e5b9867ad618374d GIT binary patch literal 2447 zcmeHJy-or_5dQYO#3QjFQdtlPY782P7FJsL0>($6B8EZ>v@l*lr8GVQoe$x|n7i-} zCdSHT_V(x2U5=kXV#5-+o!!aaH}lQTN2iUa#}0sgFX|5HNrQ8K4a70P<O1RcCcm^M z9ByzScUmZwFbvUHeRSIQ5J*_R%PT#3e2(PMK&oL+ZhF5*-pVQq9t37V2+DM{>(MeE zr5Z91G)*K<f)+wX;ft{|*V#GTGI_(GHWLNTg%8F)GTK9?;q%JeS8E4Z8QNO$=|gkC zAB^Y?AtL%PY>&zKQPmosP^rec6jYhg{#wRtTwlbM>oKJ!RCQm0TRe&BLJ+fx_=lR< z^oas`T*hI#fWAhq$CR4b^ofG(&R%viYvmqis0;zsC`ixp%cgn36rFL&Tc*+cin|#B z)l4_@lMtW=5{#EOz7^kTO~w0VSly-g>VX0}64q%UY#BhB=7D&#G)eZ8BpLtNSVmaW zEZ;NIYH7z>!aXkxcX^gX)V>@@A@-;)t6I^*LV*)|@_&zYK@m_}Cie1-HXEP0Vdb`N gM{-QZDWd!6-9`fpwUoYo)82sL*|>zrgp6!V08r^wGynhq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/35924cb6ba0dbe20ed96f6159f9496c6054a86be b/src/libs/libsrtp/fuzzer/corpus/35924cb6ba0dbe20ed96f6159f9496c6054a86be new file mode 100644 index 0000000000000000000000000000000000000000..706d170e7cf8fd028804f4b46a21919b5f26ad34 GIT binary patch literal 69 vcmbREe?QmDmkdBq&A<wxz@WOAQ5epyhq4?Q7BB!M7}Scr7^<t`(m<U6%JK_G literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/35c34ab216412ea97c89a8d5618248601a8fb5c9 b/src/libs/libsrtp/fuzzer/corpus/35c34ab216412ea97c89a8d5618248601a8fb5c9 new file mode 100644 index 0000000000000000000000000000000000000000..bd7e5825d9d7f05bac196c1cc5ca5b855a2f9f96 GIT binary patch literal 102 zcma#|Wnd_YXJB9`%H%Mp2hu?B|L1?8XmvFM10#b1Sfsj`kpYaW)j@m#1_o=eIFR79 gWsqeko+HGdt2=4Jf;nBXKurwQg<yfae2A)Q0OAc2;{X5v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/35d2502327c6844ba4b9626b29a42dab1ca263fb b/src/libs/libsrtp/fuzzer/corpus/35d2502327c6844ba4b9626b29a42dab1ca263fb new file mode 100644 index 0000000000000000000000000000000000000000..fcc7ee6fd54ee36e5fe19ca8e46c8128f9de1372 GIT binary patch literal 39 pcmXSpude54XJBCX`@N-wp}M6S$Yfw>XJCXd5~>>vGXMYo4*>Cp48{Ne literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/35dfb1e8ccb3aed1355b3cf3a88c960007b34bbd b/src/libs/libsrtp/fuzzer/corpus/35dfb1e8ccb3aed1355b3cf3a88c960007b34bbd new file mode 100644 index 0000000000000000000000000000000000000000..9f728d87351bd92d5a1e701a4c30dda8d251ed2b GIT binary patch literal 120 zcmdl#@qhJ8u9pl94FCQ+NC7DzQ2NGDT+P712x0>X#bQQ=YKNJ1GiTnMi3A`j6hMlq pfhxe->%e+ILJSP7Y9M2P0!9oB@dnw|)z!tR@zt6C{}%)K@c@dWBK!aV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/363a17ee0ea87ed4a68a1bff23a5c170bb6bc0d7 b/src/libs/libsrtp/fuzzer/corpus/363a17ee0ea87ed4a68a1bff23a5c170bb6bc0d7 new file mode 100644 index 0000000000000000000000000000000000000000..8d26aa7b196aad67702edb4da1cda659c9399609 GIT binary patch literal 234 zcma#o%VV&OXJB9~O8qaK$p8lb|Nr-8U?{EzivIU4%H&9`M;5OJi30_)<I56rN>k$t zI2jmZ!6J*T!RiD+vOj(`6weU?GOD5G09hc7vJ6ZDAXTkB409OT(-}adFp$qt0(1le pQI;_<Fy%8az$^pX47ZFCXp6Qw$O5pd7^>GWv@<Xy=f_uR002~?GmHQL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3642bff3fbfd91d0e756b44adb772f641de00d8a b/src/libs/libsrtp/fuzzer/corpus/3642bff3fbfd91d0e756b44adb772f641de00d8a new file mode 100644 index 0000000000000000000000000000000000000000..b41889e8d39462efbd5d8e61c3a759409adfe9b0 GIT binary patch literal 84 zcmXSpude54XV9x=_+8(^@ZWW1rA{>i0}}%Td~aFFuo4JR1i@1O{{R0ERm8yD&cImx PpPj*R|2|zthAo)@3e^`3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/366864e1c74b6641d235e313f817a85c10c31579 b/src/libs/libsrtp/fuzzer/corpus/366864e1c74b6641d235e313f817a85c10c31579 new file mode 100644 index 0000000000000000000000000000000000000000..1d526dddf1c62537fae1c6fa06cd96bc02b31d4b GIT binary patch literal 3427 zcmeHK%}Z2K6#qS&>Lmrz&?bt;2!#T%s6|9DK@{{sxM~scka)q6*)XFKUeF;d3xud> zAq+ya>K|~K^k=ke(PCEZoFMY{JLlf_F;1EmwTKRS-?{gmd(X%HopTg`we~82Ra@TA z59#m<>IMje4=~kV4`9j*qz^JA<RnTWWGJy}rzxCVA*%zt1{e++deyZE)gD;}YLzga zajesA%skIqyX45rxykSyEG+>iMy~LLHO3+u8plNB?)jA7)20tbZ7S*2Vw3)w!9HEU zY5fdO=#d(4hu*Ai?g9=1MJFi7`pJH=cB<aoi^au7*(lBd%@F8=_XFsa_2v4+sPjld zBP)ql;y8J6cAYKmW>n7Dj2lYXLFM#z;b798gc(RYws<ObbkOc(Mvs6JUecW-O~iOK zZ?~Dd0gf?XW^mYu%OW8DQh>y`-a&8(x{>$pty2C$);_F*Q5@YLm5Uq&*wLtJ!~<Dq zf{J96@H4)^;}s58tWeU&eo7|;FEb@J$l0LaMbL$)M6n7u?Mawq=^<{WFp4W-3L{Ac z2O~hN9-EA#)YgWC=DJhaZS@*Yc2eCjKyr$(3<-rvA6gG3ZoFG**CS)Z=^l(wF$rjJ zDhG7xcBj*AQ>rvEGb<t_7dd?@0+=Cb$m(w@`?;>Bk5Ngq5p*f=?v=$8jE;>VyyrIg zlIPASTh-?Vws#f)T*ehmTouAhmbkjG2ktZ{8D=<16MQeL3^KTeg+WPXuZyt{P;gKx z5@dp$4pJRkf)7(q=%J3*e%7g*Z4QO|^rRntbd4C8m-!PsGdGv#IaX7?&=cY<)!v1s zfR9))mkMIjui(sQ!7Coug39lYvVhp{$clAgzX>RI0g*bl@mHwbCRX|*R*RZI;}W^9 z{<Qqu_O@Dt=(;^p!8k+#LoANP<IyehBx!*Ov<XOsY|=mZtryM=gmX-E-(O|x7T$yH zZTt;}YLzFiXWT_JEmxRi?a}<IoqZ-H+esjoCOaMe%_&!~lg<^e#bv!qkDZ%7?@2m% z(!D#(zI2|F0aR>l1?!WyLwJ(D6>%UjM874vEB+?8@;O-;lo}i}@k8Cj{XXrSng=2t z9nE@vXN&nFr0H%>{>0sloYfm19H*C=$;tcqy(SywLY9{$nx&+#3Y4{JMU@wr1TK(T zt=6tzBYd>-rxQ$Y_M%tfu;Z}g#v9zvezXU(u2xfxK4-W7;bVWb_|~4CB^>kFkb#g! z#gZvtd5|$vBD4Rcaf8yxRGF*R;@h!CDmP3;b&P9@Z15++zgs=se;9wM0`k9z9Bot= R+}{zw7K)%XNuBd5z5^+NF$w?x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36e81f478101cc90267ce6cd3bbd98dbd01e8420 b/src/libs/libsrtp/fuzzer/corpus/36e81f478101cc90267ce6cd3bbd98dbd01e8420 new file mode 100644 index 0000000000000000000000000000000000000000..5283fa6eaf94bba367267eaeca432325d4c47d0d GIT binary patch literal 551 zcma#o%VQ{sXJB9`%H&9`2hu?B|NsBZ|NpmEGcYg$d8zSbiC|$c!N|bYP{7H+APbgb zn8VNx6b6#QK#BvTqU{@y_%8%vf&kd;&eTkfdJ@!Bft&!e`~MFXh$%p`ksRmCz+hhu zciohEFf}0eLR}Y+#aj%%KvNk&8iDFS?uDx+(=RZ4@tOnn%fBJx7tFW=`f?5f0IA|( A2mk;8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36e946a964dd86881ad9b5f65edcb36dd9d9621e b/src/libs/libsrtp/fuzzer/corpus/36e946a964dd86881ad9b5f65edcb36dd9d9621e new file mode 100644 index 0000000000000000000000000000000000000000..e5225beb38b690be3019a62a3943278a57d68997 GIT binary patch literal 103 zcma#o%VQ{s`~QofD3c>Kp8*UCnIJR+10#bFl*!0YT@1w4Fd6GSFiZ9dBLhQqOz|9u YI$@w-HA6sYacX>7Voqsld;wGj0EI^q6aWAK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36ecd5e6c48d02d9d78a933b76d1cc9bad0e55b0 b/src/libs/libsrtp/fuzzer/corpus/36ecd5e6c48d02d9d78a933b76d1cc9bad0e55b0 new file mode 100644 index 0000000000000000000000000000000000000000..4298c7fc0f4339ade78288925ce403a70ef9ea3a GIT binary patch literal 2116 zcmcIlJ!n)x5dPi~<QbcoAcCNtL@o*@#GgV*5mG5ikW>~H>mjQi`SG}S37RLlG#bP- z>94c26jCNw*;(3J%7Lv3Ld^Qj>~8Mm2dx}<_vX#a&d)cqb0z_r20){hUTpDAa?VWx zc@9v?XWFc}&E8Ijf<u&NiCRX5d{<PqU`FQ9yg~(C+ap|;^^7_I#-fAckpak_W%%mM zyvVFIb(Lh*1#2EZU$BkpQ){yM+1YA>T_&CK(bMfoWc?_SKe@u6whCF1<h7(e=ku)H zui^n(c!M<9ZES64CeKr<OPFGHp7wv2Yi$JI>LJCoR+6Gr@CrH6rtBaBF--w_KkdO@ z*4*-}0uTD@Rd+(t5A@!{)h7bqr?P5Bn}YLV0q=<-u!1I0INC<w3Wx`rV&A%cwzm~Q z+Jssoym<M;{nDbNr>~Nf_zg6`w}2vXq_<t2`;YzwVu>eINZw}>@n4bL@SP6<|7YPx zR_Uvg(uQJz8{&<aFAG)=B!Uc^pBs%xH12uvAvv4X54}l4a+1gD4g174Og3Acp&+Gi z9f*St)n6EpZcATWX9{lDF)Y!DqnYQ)P{tfdZ?^d3{G}kLOX01pr7ieO7iC=0dg!-; zoFFx9TJr`e)Zh*<QrHOe{pp#VNl=H=JVPtK=;<~-^G*2x6Vky@aS^UFUILuU$mLQn zA01>QTvLibPc%Am&v<2@H4D{fCr*wP+kD#TwlY-gF%9bmYW@T(k5_Y#Ige5wDuism zQ3z4l0u#QGENi~^yMcu>sE1oooU|B2R@wSGi(MCrmij@lUiV@W>!Z`4JZn~)8pSB$ zbwfNYOO(q_qEEIa?sSn{$daqN5vBb<l|)>U$(hr+xve;luB>u$*i)HBnP<{gw33f0 zU}8xaZl&1C9&P9-mb5=0*h*3^Fit*3rhZUV-Y-0CHxn$QQZburzk9O|!|Gp;A4B!S znR)pUmkM`cP5`A7iRX4W;jhTaWFHp^pYh3IV`@9YnKj0~Yb77NBj6POSlGwQn5RmG z-7Oe4T-fmFbM6~~q<1CWzkCpD<DK4)3;734+3WT8`kX|dH3yj*+~x0>rp@EIZhL>> zRSVn#I?6JmM`3yUl(ZMBiZ(gNjW%4y+Jo!BjAa`SlN9iG3TO8IWIQTFcVy(SJ4*fl D+z_Db literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36f2c2f608b4e348b61afaa2eb33671688549d6b b/src/libs/libsrtp/fuzzer/corpus/36f2c2f608b4e348b61afaa2eb33671688549d6b new file mode 100644 index 0000000000000000000000000000000000000000..03f913a5a03eb3ab87633d759764cb081d994b51 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkonS t31)IKFvtSc0i}C{82<hL|L;4Hc%RQul%HBulwTB|T9KKY&%nT04FC{)9a#VX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36f3fa3ef9e7914420c4971c63acc00a28e61c7b b/src/libs/libsrtp/fuzzer/corpus/36f3fa3ef9e7914420c4971c63acc00a28e61c7b new file mode 100644 index 0000000000000000000000000000000000000000..7cfff1b7e6e3003934b1b7ea6cf13e26f3663ba4 GIT binary patch literal 79 zcmYe!kFP3;FJfR|aLuge08&8k|Nnnq2#Z0K!JrQWxQgQqG7YM$<Kr{`=oY8O$ESAJ R$F2q`0&;-r|Nn=G006iZ9D4u& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36f98e764fb70a30aa6fe7e449190f9933a9ef6f b/src/libs/libsrtp/fuzzer/corpus/36f98e764fb70a30aa6fe7e449190f9933a9ef6f new file mode 100644 index 0000000000000000000000000000000000000000..a8ee000c19c70bb05cf52fac4546a3f05e819588 GIT binary patch literal 1118 zcmcIjJ8r^25Pf4TVRtB0DUc(ShysDq!xf_B2CgV5pdeIikqXgp1iBm|*Wnncvb^=$ zUgYH$S*&GyXLfe>&6~IB5UXVhU@?s*U;J}ut=|Bp0I?3JPq8n3Cg2?-yD~r=V-uoV zf26}X3=&yPbbD&kJ0ve9qy&$4(fjs1PaTH`L5?5<EvBwU49bW&K^6g5Nrj*~$o##P z<j1D#<u&*a`N`TIiVy#6n&%zigoyYEntK|*xo%XSqESUt<OBF)KXn9jGGUc$2?8V_ zqwB41s97O8e2>G<0~0<4?G3<#cE)-|Zkc1LQ&+49J97GQhuPY0g>7_xXV|WQ|IN&W hY3_;dG~pMJb5F^PFWR#xPTf$Z%4yFSrCF%K%nphPqWb^< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/36ff0852525ec8f7a8d3ac182bd72d6b14dcb8d3 b/src/libs/libsrtp/fuzzer/corpus/36ff0852525ec8f7a8d3ac182bd72d6b14dcb8d3 new file mode 100644 index 0000000000000000000000000000000000000000..bc24bdda2ed0e3e61c149f27f0beb8a5c3c15eab GIT binary patch literal 132 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHW@O|2Exi3=E76(jfKK#Xv(C7&xk{ w)j>26SVJg=Kb#B<vJAy@gcuk#85o4y85rgOH8HR=Ffio<8Nv(<EDQ`s08&OH1^@s6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3731399a2b00a9362fa9395dcaafba38db8d1a11 b/src/libs/libsrtp/fuzzer/corpus/3731399a2b00a9362fa9395dcaafba38db8d1a11 new file mode 100644 index 0000000000000000000000000000000000000000..e21b2b4fd61f9c0a5746fd6968f3cfb931312ee4 GIT binary patch literal 79 zcmdl!@jutgm(>g$3=9koQb2-%Ayt8ap}3lXfs+x)0pjXnMuuu2AH)R##x4jA5(fgH J3<Pxo830a{3{(IB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/376fe3d3319a81e450cc836a8ecf226b6fc89813 b/src/libs/libsrtp/fuzzer/corpus/376fe3d3319a81e450cc836a8ecf226b6fc89813 new file mode 100644 index 0000000000000000000000000000000000000000..64b2d73e13b1d16648b2479c98f3dd7a96fd492e GIT binary patch literal 77 zcmXTEaKYY$fkC%8zM8?P8U*5jn2~|ODzzR+GBAh&u?7$;05JnYb+H!%!~Z{EHiXXz O6k}vytY%<fss;ez8xQdS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3777ffa7f5f6d0a6214f0c4914f48d16f3d1fafc b/src/libs/libsrtp/fuzzer/corpus/3777ffa7f5f6d0a6214f0c4914f48d16f3d1fafc new file mode 100644 index 0000000000000000000000000000000000000000..88ce927343db896383401526a51f94d91f1dfbb7 GIT binary patch literal 102 zcmdOk&ts5Gjn8CYC}QBKX8?o$|Nr|kFjQAFG%zwUFi6Jp03|ays*4$cV(Jhj4Ax*; afPsONfkC#yc#aT|k6{8(Hv<DuO*H@qaT0_8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/379ecc803c96c01cd666d5ae011d680a40689022 b/src/libs/libsrtp/fuzzer/corpus/379ecc803c96c01cd666d5ae011d680a40689022 new file mode 100644 index 0000000000000000000000000000000000000000..46dd1c08dccaad76f18b22dac2ca2fa48f016d45 GIT binary patch literal 2861 zcmeHJu};G<5Pc4jXe5S;Obk^}1ws{S1vC5t;uA7;=m0}uKxAM-S@?u*d<0)Z)X!kT zoO8C5CO{meFvV44pM5&Nv!CxSp5fs>2C!TV=1<g9lTuy*NdgF-KyoMePjgD)8W+4W zMUV#YG49^t*)0?jv7F0r!R8Aj#}-nA1756sPiiw=CTb8w34%8y(^ZYB)d(Ww8kks5 zDhK3*jNDgkuTi;Tyd=u8MQsNfTopcqc+0Qd7Y4oz8@DzJ%nT!S?Ca1f;Ez_cgO36I z1a{XXd}y{Nr$p7nP(jm_*0<6cak+4!V0Y=B)X)hcQ{w+Q(K${8Nc%XEzpp+{I5FKp zsqsDbaiZ}QD?z9vcFi4Iy`4`L_y)izFG?uWPIQIhAp&LN=NGw?+?av|ub2L4pL{>` z!W1AHtdw*PEve)|HBRAdDdqhwY*SdZfqnKPY<3{a3P)<A>^*PmjfFPFR+dxfms8oW w>?X9?|9b|T49}}nec0klUnM_%1*cvjaB)^7VqNeKwGmTnkZmdONFDR)3+Z)(ng9R* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/37c9f12b0dacae45dd089c567b83d81083533da9 b/src/libs/libsrtp/fuzzer/corpus/37c9f12b0dacae45dd089c567b83d81083533da9 new file mode 100644 index 0000000000000000000000000000000000000000..b61b1d6fe5ca93a478d9789d37732745805a78c6 GIT binary patch literal 110 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7uw-C( t31)IKFvtScRWlUN5n?cAV8}_$i%-taD=Er%U|?VZDv<(WMzB)0Y5<H566F8@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/37ccc956fc98abc2bdfd1c898917c7d1bd126d6f b/src/libs/libsrtp/fuzzer/corpus/37ccc956fc98abc2bdfd1c898917c7d1bd126d6f new file mode 100644 index 0000000000000000000000000000000000000000..c3e69ea6f43ec23c7f6cedb404f1b79e5294e2cc GIT binary patch literal 150 zcmazqC`wIBEs8JBP0Y!uX8?o$|Nr|kC{$N7Y=eL;P#T#!t-I|HBLjmpNJDiokOiWv y)j^apgRM1)1_4fnjMSV02U!M2hSF-yIUsey3_|S;40GNKFzf>>i3O7=L^S|qw<>!8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/37dc70c7835a687490af81c9b7ac65aaaa69ea79 b/src/libs/libsrtp/fuzzer/corpus/37dc70c7835a687490af81c9b7ac65aaaa69ea79 new file mode 100644 index 0000000000000000000000000000000000000000..d9358634f5e7c0d46157c95804a711c8344c98f3 GIT binary patch literal 112 zcma#o%VQ{sXJB9`%H()j52S(M|Nrm43=GxP3=E763Sg1yVnzlqu2vTS3ouwhC<X>j k1_oK6I-v9%A%=PL=7Ge8+Zh<<a4;|kFfhTCaX}c>0I$>$B>(^b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/37df83e8c6105d9e19f7670a731e89d1b8926730 b/src/libs/libsrtp/fuzzer/corpus/37df83e8c6105d9e19f7670a731e89d1b8926730 new file mode 100644 index 0000000000000000000000000000000000000000..4dbe61f1c5f00e9cc60529ae891f2e5524836494 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnqafa$@1_nkTFEzd_5hSVxB7h=n4F#MG46<N3 zhB*xFKtUiW45T<f3fjH_iU0pWOb`H@-I<!nQ4dv9bp>QT(BKAp7Kjptv^Wss5CB6) B8jt`0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/37f46006e3bdb78933beb43857eb91b6b2f822c7 b/src/libs/libsrtp/fuzzer/corpus/37f46006e3bdb78933beb43857eb91b6b2f822c7 new file mode 100644 index 0000000000000000000000000000000000000000..a6820ab3456542168f9dff8fa6ed24b83b32c2bb GIT binary patch literal 73 zcmXSpude54XV9x=_+8(^00o{aS61p&GcYj01mN_)|Nq$;8z5Zfb_T}kmTE`Geahee Gs{;T`a}db@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/384722b39d0cbc498257d71accd00bf3771987bd b/src/libs/libsrtp/fuzzer/corpus/384722b39d0cbc498257d71accd00bf3771987bd new file mode 100644 index 0000000000000000000000000000000000000000..ab06800c818b934c276dda14d3c35233db3927ba GIT binary patch literal 103 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lu^>=P9n5E7Fl1nO j31)IKFvtSc0j1~gG8i*3<S+pBL4hcP0gyF^p`8H$!3+=W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/38474d73c748bf8a3e6b7c4942715bbe2ac0cfd5 b/src/libs/libsrtp/fuzzer/corpus/38474d73c748bf8a3e6b7c4942715bbe2ac0cfd5 new file mode 100644 index 0000000000000000000000000000000000000000..15000fdb404b82473d2a257b8d4cfbd3aa3db223 GIT binary patch literal 1028 zcma)5yGjE=6g`u~xaoph`U)t-S0s&<Sc;W}o!uH_Aps4+7(u6qMM4n#gmhM7Z>d;` zjra++i;a~EBICKUE9T|ngv{)H&fIhFcoQ%JwO4ZdIxHxz16t$q7vwH+2aHO9t}39a zu@NAc(-A}^rZyMrq!srVr8r_nRvjE>#WIDJW!VKO6#bnF#-UKtvu!4Ui;))6xO#bo zlc(Mtvz|agGD}k6+160gb2Z}|QN$!;S-w(hHe0@B1y}(?Dyk4_60x+Hnx`gi3lRZ0 zTh7UrmKzB4ydopnB^ES7F$1@SCrr0z<Q@)x3d4^y7!#M(wHNwY)C6@nWh9f3EFDsU z7kf?MMnDh#S9Mt$a{U!LXx}8TsPSHJ;O*nJagKB1a3SQEr^{)$$88TDdgQ-FZ?TMh zkIA~Hg9?S@aU~Ve2_u|XSnm_R<kZn}sd0{^9Lpm6^%ES^$>2A`B$y!yWIN4$y(@)j zc}_UC=<{Gh{^8WzPj-)h&D%QyQ4Jj<8_rb!sZsB?2K5jD^YAsKA>?#i9T^&K<P~@h z;FJ02RjLaFe3Q}W&?)@Z-a%of=6jXmZecr9Ef#W7TNq93u@z{8)8E}O(N(NN37`2> BI4J-C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3851ecc2228386a9f2397ce4a6b1062f7e968012 b/src/libs/libsrtp/fuzzer/corpus/3851ecc2228386a9f2397ce4a6b1062f7e968012 new file mode 100644 index 0000000000000000000000000000000000000000..3d2300db8b61a448415e7faa2ec10074d5570362 GIT binary patch literal 178 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz#z-O$iPrtT(5wxKoO$Ckdwgys0L<29n=IP zxCzYP85o{1Fcza(!O#xY|DQ>KL4bjwwS<kix|pK@D7G4GwE)mo1`e<i2*Jeg|3AZj H5PLoV-&Y%p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/388a3d4a14ab2988100ebebc55b9fa01f25eaef8 b/src/libs/libsrtp/fuzzer/corpus/388a3d4a14ab2988100ebebc55b9fa01f25eaef8 new file mode 100644 index 0000000000000000000000000000000000000000..6bc15060e944663a0d8cb25978c67529d055b27b GIT binary patch literal 103 zcma#o%VUs?XEbCe%H&9`X8?o$b^m?!8LF!p7#JB8fFjk!YCy~g6j6sLU@&7~cnM~5 oGBC&jRRN{v2r(ElFyy4>#V6<Il@#SWFfcGNFeK*W<R=5A0V6sTtN;K2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/389e74ba8d33356e11bc156fdcfb78e8ab87425c b/src/libs/libsrtp/fuzzer/corpus/389e74ba8d33356e11bc156fdcfb78e8ab87425c new file mode 100644 index 0000000000000000000000000000000000000000..959adaacff736fa1ae1906ad7d6095fece46e921 GIT binary patch literal 593 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcwy9B#jtk85kKDs*7=|G2~=$0II=l2=jLax)}nq zXpRur2XkQlXfG{JF#>r62vQjsv~jzZTHe9o5=7WSENaB*5^97z;kdg+q&xA%FEB_A PIQQq4mL!&>#-{)Po_kpo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/38a2be07779a39ebaa16b676a9dd075c1ac4be35 b/src/libs/libsrtp/fuzzer/corpus/38a2be07779a39ebaa16b676a9dd075c1ac4be35 new file mode 100644 index 0000000000000000000000000000000000000000..7dc2c9e4cc10ae9a43defb011da935e40ccdc672 GIT binary patch literal 182 zcmdO6WMHt3XJB9`%H&9`2hu?B{})45weNo*3n<Bu8ehgF01}3ftv&yltBXMrk|4pw z)<9woL%T4L(gX=GsLTNpEDRiG3>-lH><@sv{~+Zc{W`WF2E#<4+3ZER9E^JU)#Y<| SlS>mzb5g-F48*8;Sq%X3upqhs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/38b8cc94e5b7b0579db60ab32fc379d960ed9c93 b/src/libs/libsrtp/fuzzer/corpus/38b8cc94e5b7b0579db60ab32fc379d960ed9c93 new file mode 100644 index 0000000000000000000000000000000000000000..92f004b9e2e7d3dce492d42aab883533b3a708bb GIT binary patch literal 92 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YjHm}KZtW2i1>_y?5#&%wYV g3zP;aVMtP7%3~;rXJBC{O6Mr4&jcy{rNF=d0I<3g0{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/38e495437b0489074df62ac0e9c80fb8ae20b902 b/src/libs/libsrtp/fuzzer/corpus/38e495437b0489074df62ac0e9c80fb8ae20b902 new file mode 100644 index 0000000000000000000000000000000000000000..485f1cc853e60c6e78343c035c5c833affe89ec9 GIT binary patch literal 102 zcma#o%VQ`BXJB9`%H&9`2hu?B|NsBuqLPAY1_nlks{bI7>S9J92C;y^8bUEJa56B+ b0+p0jyA;n6VyFWN&*6Ybf++<E8%P2GNQw|A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/38f9ab23eafa3172f5d997c0709115a9819f30d5 b/src/libs/libsrtp/fuzzer/corpus/38f9ab23eafa3172f5d997c0709115a9819f30d5 new file mode 100644 index 0000000000000000000000000000000000000000..0144871715fe1de9a5775f4c88fc64798b7364b4 GIT binary patch literal 241 zcmZSh4*`-nsd@3q3}B%4jiI<&nSl|+0TR{4j11K?5uljGT8*Qffw7w5_kWNmoUix$ zKf~YeEiFJX28N<cj?{XvaX<@vfu>Y5{DqhSHn^Z2EC(j4;)@ybm_SS>0T9{R^PdT1 gDG-5yHIV#;VKNH?1Jv!<D2R<9tH5U8hXMu$0QTQr^8f$< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3915ba54ef9cb376c3de9c3a6643b104ddbdac51 b/src/libs/libsrtp/fuzzer/corpus/3915ba54ef9cb376c3de9c3a6643b104ddbdac51 new file mode 100644 index 0000000000000000000000000000000000000000..608feb97caf5892716a9efd38a2f018571d0f519 GIT binary patch literal 54 vcmd=1&(2uQ00e)(x3n-+L#Y<95JNiyP%fdk8qAH?Wnl2GHf2y_uw(!L($)^H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3942771f68f432f704d3b57171809a4a16373b1d b/src/libs/libsrtp/fuzzer/corpus/3942771f68f432f704d3b57171809a4a16373b1d new file mode 100644 index 0000000000000000000000000000000000000000..b753ab709c76c588c443de122808f8ce65079663 GIT binary patch literal 1172 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcwy9B#jtk85kKDs*7=|G2~=$0II=l2=jLaVhn+) znIi<Yd=AtJ2*;3Q5eue|96%-l4IyX|(9<wAL(JDe4`Pi+G+#3Y02M+47!kZfH?Fbx z+5sqrEv}hB;y}<|TAX48O4vY<%D|wFJN1qx24E23N>mQyW_(b%LqZ>v>>#-fBnAcm Dy^*8g literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/395deb37b57ba0bf27e65a4706d9ae912f887984 b/src/libs/libsrtp/fuzzer/corpus/395deb37b57ba0bf27e65a4706d9ae912f887984 new file mode 100644 index 0000000000000000000000000000000000000000..204be1336f59c32f51847e4127bddd10d7d05dbb GIT binary patch literal 1148 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+8;SR*M5H*|>0w%EG3@_b);N{DgWSYhR zcbzTBZD4@#0Rzw<2!k2sa4;}cS2L<JF#N{?5DF<_LA^zZ5uC$2XkNNGxw#Pt9}*G- zIIuWL&;YR-n3@NTL)h?!2E>E7l^~}U+^R?kAsj)fifMW@rVvyF7{2(ug`yLbZvprU Bdx!u4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/39708ed68d0d9b8021f7fb329e5e8481fc425b1f b/src/libs/libsrtp/fuzzer/corpus/39708ed68d0d9b8021f7fb329e5e8481fc425b1f new file mode 100644 index 0000000000000000000000000000000000000000..c56e4a86fb4a8e77b5f825c823fe8e795a8b224c GIT binary patch literal 491 zcmZ8dJxc>Y5Ph4*O_~I+QVfWNiiIG8jm-&13c=s7h+GknL+*@)1JOp(*jNV6zoO*l z<PSuvTW4l3a+e3UGyCq%$37S+`uW(VFCq8d-{AYh_m)dyrt<M__;Ij8!HkyhL4^Uu z^MKDgEPzLs0jK$98Lg|piB!oaBE@ALO?L}J=}s5rwsO%7C@sv8Z=G5d!qqgXVHyh_ zHW$23SZbiM2^Gzj7~pI51AETHBJ8y~@AG`wZ~bht|D#`7NXCFAsIcQWv}|)H89T7a zvYGg8f!q_56l}P?pQK!(rh_Vu0%lNxpD$-L1*|Z7OXw)%2*wS7E{<mpc{)mSS7d5b PED|;I`K)|<_j8Xwm``#1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/39722794ff193e45909718eb2a478ac3e3274898 b/src/libs/libsrtp/fuzzer/corpus/39722794ff193e45909718eb2a478ac3e3274898 new file mode 100644 index 0000000000000000000000000000000000000000..f0a23f53517b2eea632538b8339423b2b24acd67 GIT binary patch literal 139 zcma#o%VQ{sXJB9`ngk>u;Q#;sz6{LO)eH=bK!Mcwvc#Oy)c68U1`b(}NCS|?0A?{T z%wcE;DglzhK#BvTz3m&2V610ghz9W>peU6ivmUI5gQ1E6XuJmlgB~LT&;l?h&d6b8 HC}02pIi(p- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3998ed85c4361a20be1a98d07b072223194bddb6 b/src/libs/libsrtp/fuzzer/corpus/3998ed85c4361a20be1a98d07b072223194bddb6 new file mode 100644 index 0000000000000000000000000000000000000000..e99db0ef37abd34db508ceae317de25ee6f6a201 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO rti2Ab2PiT}2uLU}2)8pZsLTN}Sr~r&|Ne{N{|8A1hX4Po|1kgnniC|m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/39a5dc856caeb933e18fcee23b89c2c6949287c3 b/src/libs/libsrtp/fuzzer/corpus/39a5dc856caeb933e18fcee23b89c2c6949287c3 new file mode 100644 index 0000000000000000000000000000000000000000..7612c07ad51f51f44747ab94c69a0d3fff0b3cfa GIT binary patch literal 69 zcmZQzU|?VbVj$pRU{J4S2z<#<eBpw<2}neZfq@w)sRsi3U=o#J5UpmYW?;Ai07l*l A_5c6? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/39ac63bbc3262157ee25140961de3d027dfd460b b/src/libs/libsrtp/fuzzer/corpus/39ac63bbc3262157ee25140961de3d027dfd460b new file mode 100644 index 0000000000000000000000000000000000000000..fcb0b8be93b407078d97c38c7736441a2f364ab9 GIT binary patch literal 164 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*Knnb$tsyeH44e!M z?JNv)I2is(fMnXBTK@kB8lwjV3=B)Ffrff8FdSsq4AzL#vWfo<xPU6Ei$OM4zmx`9 F2mt97CiDOR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/39cd4184fe91b6e094078cc42f6251cc2b01e097 b/src/libs/libsrtp/fuzzer/corpus/39cd4184fe91b6e094078cc42f6251cc2b01e097 new file mode 100644 index 0000000000000000000000000000000000000000..64170e66832c4e80dfbe3325978c928eaa02744b GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Ll!7v-T-7V zfLK5<hoK!p3Iiz)kVxA%paBd*3=B*l9>d{yHU@^y)J%?ghIX);DzGq!080F4NGt|g K<EWPkGzI{%1R2Eu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/39df87ce18a963080e1ff6a19dfa5306c8e7c251 b/src/libs/libsrtp/fuzzer/corpus/39df87ce18a963080e1ff6a19dfa5306c8e7c251 new file mode 100644 index 0000000000000000000000000000000000000000..d88be9b3e6ea546fcff46411fcd7efdd5f7eb967 GIT binary patch literal 148 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j&int=nP00gRw j*+AM&8R~!>kU1<MQMgtR2MpAJ1~V{B{ErV*|6>3E0@*!I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a13bc0c12d1f5e485e0ddca176e3a587e2a1fab b/src/libs/libsrtp/fuzzer/corpus/3a13bc0c12d1f5e485e0ddca176e3a587e2a1fab new file mode 100644 index 0000000000000000000000000000000000000000..ef6f89def66a8bc85c1e7225fe0412329ed2f398 GIT binary patch literal 52 pcmXS}W(a)A@Uj{PiWQ|8;J~Dsfq{vEp_&;e^8G&}n3b4Q3ILDW4EX>6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a3c08bd4e1bb5107a4ac4ec6458f876699fdfd5 b/src/libs/libsrtp/fuzzer/corpus/3a3c08bd4e1bb5107a4ac4ec6458f876699fdfd5 new file mode 100644 index 0000000000000000000000000000000000000000..29230c697955c0f24f01bf528cb817a57d0327e3 GIT binary patch literal 220 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5c_5IOQ3or!x-g?*@5Cf6%#=Qf`B}J!{Q<KfUJa>4`c|pgY_0yGvqOp0F^K>Ffrsa c{Qv*o7pN#3s0GMiWH<(LDFXwCb@3bq0Dv?o5C8xG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a4ac91d10b7258c53c547a53d00211d55078059 b/src/libs/libsrtp/fuzzer/corpus/3a4ac91d10b7258c53c547a53d00211d55078059 new file mode 100644 index 0000000000000000000000000000000000000000..328986b6313aa61039048dfebd223d4ebd22d3bd GIT binary patch literal 105 zcmY$>%VUs?XJBwB%8X5|X8?o$|Nr|kFjQAFFfcN3fJLf{)flRa1%YDf5G4!-3=A*9 tOil&{S%%^{ybQ(+3^}QJ@yQ2Di&Nvv6H9Ya;|q%N(=u~77+4t;S^<&F7sdbp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a78363ff2e86b505afe11f8e66433afa06b7f40 b/src/libs/libsrtp/fuzzer/corpus/3a78363ff2e86b505afe11f8e66433afa06b7f40 new file mode 100644 index 0000000000000000000000000000000000000000..500d61e37e4957d4c8593a32b58cc8e85b5f26b3 GIT binary patch literal 197 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M w?JNv)I2is(fMovv2Vy-a02)#ZRt-^%VFwl)z$%F{-#|}~p*X&}o}--s05y0kbpQYW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a9433d99a985eac8383a83fea07cb5b64257070 b/src/libs/libsrtp/fuzzer/corpus/3a9433d99a985eac8383a83fea07cb5b64257070 new file mode 100644 index 0000000000000000000000000000000000000000..e2fd27f7cfe30db67648a959d872dc926fa241f4 GIT binary patch literal 184 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F^?Fv3vNzyVj&08s;0 Ih(d4x0QL(WRsaA1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a95e6d99099003652330f3e02bce38016224beb b/src/libs/libsrtp/fuzzer/corpus/3a95e6d99099003652330f3e02bce38016224beb new file mode 100644 index 0000000000000000000000000000000000000000..3616fdebefd7aa290f29b4b326f6a53cac67c547 GIT binary patch literal 552 zcmZP&T+6_)A%TIRD3c?#o&gO0|NrmHuwRY3VB&wSmoKY<=KuTeAO*2U=^H~aP=pc0 z0}|E6j11KdGnoWH{Qtt4Ac}#}_y2zeoBu#rkY0!ykUB6ABw`K3U>%(746<NjOy>xJ zBp8I-85j&S7#L-NY>+AhaIABI0!Ad~s3AMY%LS;MkpZl%w7M8<<oEw?Di|2%0Il2i z?K=a9G0@Gz3^E8~fh+}(LxJvtd9s>=feEUhfuRAUniEMqUe!R8fDQmE0RqW*Ab}D? r@mhI6p^|u@ALnpD{0OrMq=A6}w;v($1juSgU{)B;Y3=zx^FIRs(wkcI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3a970316106f6c1b35d8f9d5f3e146c2112f14a5 b/src/libs/libsrtp/fuzzer/corpus/3a970316106f6c1b35d8f9d5f3e146c2112f14a5 new file mode 100644 index 0000000000000000000000000000000000000000..db259953b42851e4ce1eec1d4cc8d4bd8f9640f5 GIT binary patch literal 632 zcmb7Cy-EW?5dQWO$X+3+sT3j?5Cw?|q_t77u<;ROIl^KBNeEd_Aq%EagODeXdxSJT zj-Ah7p<t2q+q+8{)PdQVoxh!LW}9k=8wFt8lX^-?a^JA_(oqv+t#0FfqSdH7h&z$# z#>b-&sG%h3Ofk#PDup-T>66D);E2Mflg8+2ImOJ!cv^)_sEZ<Kta}ngjGVwZcL6*< zI9Jp_-Po5rHrPZ1c$~YEHHEiM8;Q1Hn=(R`ZSC(-Ewd|$S5)44@zqR=3a)??KrM&Z zQETvt|KPh`kIz5H8T=g|h$U$Jf^U%(9Y};_?m{$M_AcE(8|dqy>LhW}*UB8gnl0E5 z<eW7EgcYAbTRY{HQVCJZJ!kjlp0ISMyTBKB@D{qc^-JQgd|OQ7$TPNwc~a)e)a+LX XB-W()68Jk-3*d7RFBE84qyc^ae4TZj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3abe683987a7d385ed4976d5c2733f50bca8d5a2 b/src/libs/libsrtp/fuzzer/corpus/3abe683987a7d385ed4976d5c2733f50bca8d5a2 new file mode 100644 index 0000000000000000000000000000000000000000..e30adbbd69d6501f75f0fd3322c8d0fdff025421 GIT binary patch literal 228 zcmZQzU@$1DXJBBc%A5lvA)xZj|DOyT5H=?RgDk@}5Ss}i03wBf7%UHz1<51i{ySQO zgh1f?cc2U-1H;4OIi3&^7)gTpU`zi)K|9D^hUY+B&A?EU$&m_jI0Hj{3z$N(n!yud Lb@l&BooWUEsCpvI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3af86afa0cea1dc18159b6a3090d15b1787914f6 b/src/libs/libsrtp/fuzzer/corpus/3af86afa0cea1dc18159b6a3090d15b1787914f6 new file mode 100644 index 0000000000000000000000000000000000000000..ff12b506a761347c589fd05a30f1864d8d33db24 GIT binary patch literal 373 zcmZXPu?@m75JkU(C4y)WsgQ_55d;!~1;Pr<kcxr=3Pk4`rD240OhCmtj6s#-$HWdO zXIXbAzx(%{Z%(-6fI9CbI>3gA>;PkcxhqtH$@dW*Nc}*;h?FBLc}Oj@_QW88CE#|6 zz)$<4ft-wYqtw&d(sc7DlcBZjcQsI2(ve2UqtJh`dGohSFe`<nS=1#X<E<zoArM=j qRYHIS{Mq#;J#)0f^~imz<1zCrh>9t=sI(oT0!S%tI^sjpT<`(E=}Wf& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3b10e09d3fd23deea69b0ad02423772b41a7eea0 b/src/libs/libsrtp/fuzzer/corpus/3b10e09d3fd23deea69b0ad02423772b41a7eea0 new file mode 100644 index 0000000000000000000000000000000000000000..b24493455f5b4c70e9cff4d30936b0d3d64e4edd GIT binary patch literal 513 zcmah_O-sW-5Ph2p-GD-EZbG5Gco3}zJt=~M2QPyEAcV5eLMtU9ie0c5YZ3bkB!9-g z<e}gPu5Xep;>m%`Y-ZlPH#1!YoWuaqfi_b{n)`sYmyRzMVd9%)n45UqA0@qZ)=&1v zA<#livshqW`G`RhcwEv=6?Pb;otC=3(NoL?BesG}+&du^C^Z8OkI@r2=PrP!2j@Ho zI@#w7lt`ov>;kietJ%y~J3&K;XNzVaW4Cd)(t7seOqf=IfJpGamZg?J$y;jGzkanS zMI!14O(NQe<OE1Z8sQr6qPqL`w%EV{Ff`Y3FHiEJA>hhpo3L-FKEHNYmk#C*3n4>E zR%oae-+o+Ry)4n4-Jg3?_;#mTRepPk%*wTo`OoS8>{qVAe04u*D0e!N4S?6^2Mi2d A(f|Me literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3b3ec9193d98ddc5b68f9080e4644a57cdc3434b b/src/libs/libsrtp/fuzzer/corpus/3b3ec9193d98ddc5b68f9080e4644a57cdc3434b new file mode 100644 index 0000000000000000000000000000000000000000..29f792738d08f8cf48bde21fec3206a84d553c0b GIT binary patch literal 267 zcmdo0-;V44%W4J&28aI+MnDP#p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI zi2VX=*th=<QXqXmzz8>NBC=sb8~Bn)1A&&qT^A2?7sPc8)g|%!CqkT450c7*`L6-& KF`!H|0|NkFV=hMk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3b40fa26ef8d2efd89c7485a7169f8caa153cb81 b/src/libs/libsrtp/fuzzer/corpus/3b40fa26ef8d2efd89c7485a7169f8caa153cb81 new file mode 100644 index 0000000000000000000000000000000000000000..4fcb6158eb190818191bf2830fa2673595ce302d GIT binary patch literal 103 zcmXSBU|=u+V&>lr^({ae3_Mq^tkkJyU}RumWvFIgU}9kSFT%jgz)-IT#2i&D+G@-| pVFrdmpo;3ucpyuyx;j2n0VMVx0)!cuGg5O37}RSnRaZ0o2LR%G8C3uP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3ba6ebc2d5753118c4e8623aa7138470ffccf7f2 b/src/libs/libsrtp/fuzzer/corpus/3ba6ebc2d5753118c4e8623aa7138470ffccf7f2 new file mode 100644 index 0000000000000000000000000000000000000000..2fc9a38dbec47acbefbc38c539af29d29d39b428 GIT binary patch literal 76 vcmbREe?QmDm(>h#P{RmeDuAi#Vn&8)pe$4n$OZ}=g9<`aFfah+L8ux4EFTRk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3bc1ee34a43f22d79553624be0198b945020db01 b/src/libs/libsrtp/fuzzer/corpus/3bc1ee34a43f22d79553624be0198b945020db01 new file mode 100644 index 0000000000000000000000000000000000000000..fc35f936bfd6ead27a527d5732da4f2c844cdcf0 GIT binary patch literal 108 zcmYe&%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E8L1_Oft14A(*LopC1RjV^Fu!2-t kg9s4dWKfo6D4rt(WGXNSgGAaH=787=Kqe!I?^<0A0G)~vlK=n! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3bd120c9c543c838739a7a11e7203be29cd5f6d5 b/src/libs/libsrtp/fuzzer/corpus/3bd120c9c543c838739a7a11e7203be29cd5f6d5 new file mode 100644 index 0000000000000000000000000000000000000000..76801d656cff398bcf2b6d4caf90af41610abaa7 GIT binary patch literal 2680 zcmeHJu@1r@5Ph9&>gd+NPw*SMxx4l=Iw_N1=C8Oo^aos;SnoKfX#-f(1luTSfWX1Q zyZ5+WcF5{l0k}Vk9Bb-O*;Z7kgsKF49#B;RMOHK<b*Vel=TGJu=bT+*Oo5v<>qgw0 z1{czjQhZAt?*w#ea()!I2064jP%us!xs)tcR~&#=%Eq+Zu+gmWb)z2-P#fp(gj7g4 ziIZ;_p%tR(!d^Va*;x7ze@-DOS~MqV(oKnOYvF!h$+4ps!16Ce^Gpl37ZA*s2tD#x zR!AEykf9=i^7%Ma^8-q*Ft~^uv$QV;&;CkgiS$DCel5nO1{)1u){_|eX2<gys^)Zc MHd&9hr6LqapKEjL#Q*>R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3bdd0b395cf4e85b9f9126ac449c8019d2ed05b2 b/src/libs/libsrtp/fuzzer/corpus/3bdd0b395cf4e85b9f9126ac449c8019d2ed05b2 new file mode 100644 index 0000000000000000000000000000000000000000..e580fb7409934a5414a4b4da838d36cb45616e36 GIT binary patch literal 175 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_4GOFEzd_5iATQ7#Y|a3OE@UWEntm z409OTA*3*n;sA-XeFGBzg+NRY0Gr*Jn#obm&<<8p1u`D2mj$8%s4ul1mpLF;AOirr Co*f$i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3c110c2ada493eaa4a3aa4be5c66f9e3f98aee5a b/src/libs/libsrtp/fuzzer/corpus/3c110c2ada493eaa4a3aa4be5c66f9e3f98aee5a new file mode 100644 index 0000000000000000000000000000000000000000..e80db60a6d8a3463fcf249006e7ae3d3d1f39aaf GIT binary patch literal 146 zcmXYoy9t0W6h%*7rB*?~&e|0OXK)0uvanK28No#|hr`*##N@)`Jnm;vFf72i73&=s z<o)|o4nKjlJV}RyG6H)x5<t<QE3AomT=YL-%=9I67*|7^EGIfXS2&sT4z$94$f+LT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3c4bca2dcb7ec37c795be89744956dc098424e2b b/src/libs/libsrtp/fuzzer/corpus/3c4bca2dcb7ec37c795be89744956dc098424e2b new file mode 100644 index 0000000000000000000000000000000000000000..80e332e5ff3cfbfdb0877670d588c2b57f616efc GIT binary patch literal 92 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ U?JNv)I2iu@{}0s<kz%L@0Dx%`qyPW_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3c53ca7f1515bfa6ac4da2758342f01943d85dc1 b/src/libs/libsrtp/fuzzer/corpus/3c53ca7f1515bfa6ac4da2758342f01943d85dc1 new file mode 100644 index 0000000000000000000000000000000000000000..38d091de45192db2eca9d7916bbca6c5201e2859 GIT binary patch literal 183 zcmdO6WMHt3XJB9`%H&9`2hu?B{};pZYTy4r7EqEQHNGq{M-a%!$W2UED9(u0E#PEe zkY!-z0E*3FXorx(Knf(l(DnmJ)H5n*0V$An5cm&fFbOc|*n;^Jfo8WAu`qC$0rfC4 nu$zF?{Qqywz<{de=hR#d22K{BWsG|I)#Y<|!MYjZzcBy+{5K%O literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3c66c6cc5aada6e33563fc14af3a52e1862462bc b/src/libs/libsrtp/fuzzer/corpus/3c66c6cc5aada6e33563fc14af3a52e1862462bc new file mode 100644 index 0000000000000000000000000000000000000000..29c77a5023d9ba9308fe8a75fa5c62630e1acd16 GIT binary patch literal 589 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz#z-O$iPrtj8lOjCxZh}4P_>Pt(YSOwsQ{D zW`r9ES^-o5b0?Z14DF@GDMlbK06{7PgEk&_8o>=A-?Pl$2^&I;8r(i2Ay_E02sP+Z k;|n;e8Gr$)3=YcbVl`l*C}&_)2MPi~b#>f-2Cez?0ZC9-F#rGn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3ccbf6fc3cbc8a832320011b1d6615faf6c2b832 b/src/libs/libsrtp/fuzzer/corpus/3ccbf6fc3cbc8a832320011b1d6615faf6c2b832 new file mode 100644 index 0000000000000000000000000000000000000000..b4f265a2c0fad87b6a62cfabbaea2de4997244aa GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9!Eh$)|efybJG t;a?s|fYY5p7O2{wy=RUPkOrz{YyIB>H0VFWHzuGe2CymyhCl`eM*z6c87Ke% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3cdaad14bf1228cd114e78fd4c8d9abdb1b0b8a3 b/src/libs/libsrtp/fuzzer/corpus/3cdaad14bf1228cd114e78fd4c8d9abdb1b0b8a3 new file mode 100644 index 0000000000000000000000000000000000000000..1947449ce955e3a6c58be09c249ac5022ec67540 GIT binary patch literal 1649 zcmcgt&1+LZ5dXbY?5iNe7KHlQinP!+O|c-ABD4p=54`0j`dVtxKukkkqnHIFk{W~} zc<`X)<|#)n1uypR@YZYT%|luUbp6fjCWhMT&4IT&nVp@_-)y!%*i$<@2Ec(`ILD22 zrG=Q1KzJ^raR9UMiS$F34mphxQ8Ls>VCx%R=^YV~851+yuRm52=`j>d7cd<0u#^k4 zRi|XFy-&;PWkf}9HpbMGG2>1J!`yd-9{?_jOA|NFViw3}3(?AIVXd^92P0FGZR?0^ zDUSa`#<7b6eQi{0<QW+0PE$8snlGoM4?%s1Ybc_(EiTmn6Wn}dOUPxzDpaRerJ^cM zsg%uy@H$}ytmJLrUCml=gB@*ub_NqkOabc~woiJfG)ftXvcw?w5e(IVtCz^0U{oQ# zqJNt|#9EvtgNML85FJPlqvy-{ayBYHeYU(Z5<gu|6<up2od#$~)_>&pq$j`Ww0Y6c zDu|~6glzNaZimau<$N}Z1s1?-?+QumHv~9ga0cclLBUT+s>|FJQ<ouWCfkqv(Ihc$ z#%Bnio}?Q*j3Z;hR0^i<>tlr6t#G$iGfT$I<g872z!J;BVJyG@1ItE(R-eukZV<}- z!gmU$q0IJTc|ow8$z;~}WhN(N1@`IJT1Z4b0<uAOc9^Hm=Z2V8PV%%LyX~e7Z6ea% za`^Mpg1uT3O_G9Ag&G}g9Ed+hQGn#!af7@07fNk1$i?$wr4z~Tv7YzVJ7Zn;U4cRo z7;dn~-&=bKuMx#VxX{s;T!eZGLHr6GS#RvhQP0~ksL0~WQ7OBm(p_@TiGNSJIKC$a zlxA9e993m2&ONFjvdEPPcZ&)_7Hu&BHy-q<L!<iL2ng<Cy6%c=OvF(E)7(C}$DQCS zxYo#PEG>3-wR}=S#pGQa9(ChOGKW?|>KX@T-bjJ`^-lJL%uSX_47<?~9a8r(@DGGM lx%eWMI6VRE5_S9qtgrEhd$j$Z1f#S;u|(Ym1n#6b_ywzJWS;;4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d0b741123a9c155718ad238791e177b3e734456 b/src/libs/libsrtp/fuzzer/corpus/3d0b741123a9c155718ad238791e177b3e734456 new file mode 100644 index 0000000000000000000000000000000000000000..a53c5bf89c9c18b5b971dbfd45b9c5cb846932eb GIT binary patch literal 83 zcmdl!@jutgm(>gmObiSTQVbyAs=&Zd3>4vH1ag45x|orn8psE6K>*ALiTwt0ycjxw LA~4hmWK;tHuqY2z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d18decfdd2aa7c608969f3b117c0ddb3a516cfa b/src/libs/libsrtp/fuzzer/corpus/3d18decfdd2aa7c608969f3b117c0ddb3a516cfa new file mode 100644 index 0000000000000000000000000000000000000000..7abb01c095dc0b32b294247fc1061e00a51cdcf7 GIT binary patch literal 173 zcma$54*~2&nH;J03}65h@nvABu4ZIl;9+0@lBw~DWe_O_29A1$c3~igqly8j4k*ds zzyg;`{qg_*KL)mj0#1fHS&&W!hB*xF5K@?dl>@A>?HiE#F92fWR0CEBbV7A!Y9`di H>dImOb?+v& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d223cb01f3463cd3e3ed7b422b1da522a17b29d b/src/libs/libsrtp/fuzzer/corpus/3d223cb01f3463cd3e3ed7b422b1da522a17b29d new file mode 100644 index 0000000000000000000000000000000000000000..9d3add61a0412c67d6cdf1b0b9849adcc0b51220 GIT binary patch literal 1363 zcmbVMy=zlZ6#qRN&1)8;!Nm^@SPiWp2rd#Naa8FfxCp&;ctfDnkf$ATkrqKi!KL6L zK6G&KKhQCo;(wuICpQI`<L{h%->WGa(39lcd%iz!-1|*DbO1(!G~4D$5Rp}2?16+- z=C;<2Jr9YPE(%PjR(zkQOIcS=MvdKUkZxnrBAJdgvW7%0N^vNso-dOEUbxpmOTcV5 zc~8(bj=y$^_hYi)bMvOmw_Ou86W6m#s8QXyD}U>NN)?iKZ$Q^AmbPRL3o?DK68Ksb zgAtUcaLQLO)?45LkG;P-z;sU<`}={}KOJOWtz=EOEK&JJM;>k)hs^40E}m(#4<?sw z3>_IZ&NY^HgH$rgq%}Za9kB3=Oq8aH&1}`fpGTqdh$U)uHKhC``1D6`9ky&uep-|V z>a|>&D*67Q<V~kb{6TMvbWP~v)o&$E$!XOaUQ`m>(xw}~6SU2QGOmxJ=E3AhjXF(b z0@uT#F>p=|eQw3kH|JNRYIwwS8bQ;V=r6A@P^YxDiOuxeLIzjG)93P%Nt$=M)Rm7* zR7|vq0K2(VwsDzB)W6WP$kzJCqs$Fg{uvgLTC|;ESyhZnw>E!aYG+6QH<=LOjt!8P zwo;l<0DJ4Z_Rj3l?MbiNMY#}k+IGy{MXi2W)j})H00@5+bRNOjPYjEE)48Ig_=iE5 z@^`mRBr^lohefdA5heG4&!id4FGTFCtbZI=-TR8P*xa90!z5TA#YeKOX*_%7QWUq4 ShnAe+@T#Sy%KyMj4}f2%Vd*RY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d275cbc3a9d8483c5a3c9344ee92ad6624f258a b/src/libs/libsrtp/fuzzer/corpus/3d275cbc3a9d8483c5a3c9344ee92ad6624f258a new file mode 100644 index 0000000000000000000000000000000000000000..a4a170757fde6f85c6cc05d42399d5ae311e7827 GIT binary patch literal 217 zcmZ9GJqp4=5QV>>;sz1?!7`A_+9P-Y&#<IOkuD@wj$k@#`<&1Nh*ieftROfrGjI33 zc{5%YTs_cKuH0L<7*tOjMGVfzk7BH_%t)ZCQwV6qyXS74)h#m|<Q!fmxy1nuM)q=) yRE=qr3r_VB=wga)0(e@U{l6wK-;g#z+Pq8axOa{A*m>^fvomS*K_`Q>l6?T8D=vHh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d73a879a78a074c651609b8eeed69133c351bf1 b/src/libs/libsrtp/fuzzer/corpus/3d73a879a78a074c651609b8eeed69133c351bf1 new file mode 100644 index 0000000000000000000000000000000000000000..c4455e27a3a1d63bd0f57023120089a97e95b75e GIT binary patch literal 185 zcma#o%VQ|fVPIe|NUi6{1kyn8|34d;mStdMnB&V(ECl9Z5P}R0?F<}q7#M#3|Ns9l z5QD+}|Nj}Ru?a!-bFwkW?w|Od>*dR81_hv)gA|6roD2*gt4pgH7^<t|<1?-P=oY8O N!<40V*8{cx2LNO6Hx&Q? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d7615c2c1d058eaec88b26db15c6a6400b8e12d b/src/libs/libsrtp/fuzzer/corpus/3d7615c2c1d058eaec88b26db15c6a6400b8e12d new file mode 100644 index 0000000000000000000000000000000000000000..6f31ec6a213736b8a831a33eaee4cfd2578c8336 GIT binary patch literal 216 zcmdO6WMHt3XJB9`%H&9`2hu?B{})4bweNo*3n<Bu8ef)}Q<@rIkdd31tWcbhs9V6v zz#z-O%mI`<!q5&R=P<Mj11XRIL)$kXQP0Sr1*AaQfuM*XGZjcN2{7m|Fc|dwXRa=W s$|wTGfS|SKKa&uUR)DGj@{!a4l`tXHz|28a!*t}x5qls80gzP;0AO+|cK`qY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d82ce853b6cc3ea62e2edbb69bb8af3340a18ba b/src/libs/libsrtp/fuzzer/corpus/3d82ce853b6cc3ea62e2edbb69bb8af3340a18ba new file mode 100644 index 0000000000000000000000000000000000000000..a822f54ff1e6e3c66b658402a6b55bf45d69ecba GIT binary patch literal 468 zcmZWlF-rq67=3Xu?NscfP!xyOMX?lJTu!*DP#5QNlybsBsgkQ81k^?9;Nn=w;vcby zzs5gsZl*8ESr2?ezU1Y7FJB(4wfzKu%4GV$N{||0`D*K5`vr0h2*+~KxqyxqCC2yw zX2}#dQrYucwV7hgzJRl`irOYx-saeBd9FDJjD%?Mv{9-;Ilqrf2>jS+C$R16IQ^KU zfS29sd~JDgIXj(Pk4KaAq{o?ig>xsohnDMy9?5C^^>Gw5@LqgFaP*;T5r>sGes5)P z-F1TC+QmOxfjxhnKq14ni`H7l81T<9b!JRd7|feINym6qtUF;3=EravKn(|Mzxh<@ WRjQJF>LZJs%Ex-wHBT>gVX*>Y3tkxj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d9e73f99911b53a65ccc0af00699a9c1a60b103 b/src/libs/libsrtp/fuzzer/corpus/3d9e73f99911b53a65ccc0af00699a9c1a60b103 new file mode 100644 index 0000000000000000000000000000000000000000..1b1afc67b600f87776d32f18c3a069935eed2ac8 GIT binary patch literal 3134 zcmdT`&2G~`5dQ2&#F04A=2WB*H!7-tCV&JdKwP;*JOQ#Iut+3YRdL}EA9A5oNIXJr z+_=Gox8M<?JOc-WKxCQOpR9l4CTUA0*0T3+y!-9UH?tG8FgOeV^m|@7q?(Elq7B3` z;HUw_k)vK3V}Yl5pk|t=RB&8E<Lo79?Sqjx{ZLeItK}_{>oZ7oY^urJcPBS;mVuu7 z*+Os<5Zo&?o0VwJBr0`C35co@$|z_lWVAPz%L|1wizm9GF+)9TXmAFZwYKwBn!V&$ z_zSoGCjx0`M?y^TMf{PBRM56Zv~LL>Jr2qf>ipDfjc*ZEV?zZ^Q<^`QlE%djl2NJ_ zurBo9a>BU&98RRPuro&st5|2s4EKPV3^rDua8U<&+0h5F7VjA}`1r6?+aO!|ZuJ<T zjYizN3*BQ<Q0%e}kf3r3w&YUAcoz=)P9bb{fbrNKWVu!<h~^HQ4x(e}5;-Ajf<&A+ z7c1Q_JnpHi#13Dc&>@OlzW_G<L!?u8T*5)&Ho&B_s=i^HjT2RCLK6yhbPDPGZ62SC ziE%1TEfFMF#w}rQr`@m^w$kHbK0}{x1y@|ok_CorQDAwLO@DsT1=1Eo5{^1y@TT+X zbr>9U_d3u0sM~2CR5)6#QOp8!Vi$*$J$2`1Pd>@em8!C*U2ebNkI9|@xs-!Z8xhAb zj6hM1zg4Pu2fX`1pP_@BROu+#M=$h-N+u~XU=d#l^~0VAE#nQC?oWXCZ-vlnU@Q84 zRV_%F3PF=`mVnB#rLq?qb2s4ABg5-8np1b~XOt(@;ngCUsy&lu3a0zm3`k+0biq0u z$K$)2h0W+i)LD~>_9fDRyk=Of%j)@MQqQwoP8g#|jmy&!1r}>OevEa*--!|Y>i;Tb zb@#>h<W&Z#>k+wZjRagRl*=`9nMY0{5!h@xXQF+=9k^+BIk6`Fanac*D-(YK&xJ2V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3d9f8c75e3aa2a79f9b56aed46ec3c4eb695bcd3 b/src/libs/libsrtp/fuzzer/corpus/3d9f8c75e3aa2a79f9b56aed46ec3c4eb695bcd3 new file mode 100644 index 0000000000000000000000000000000000000000..faae60d8485943af111a0d6e5c0ab4258e7ef9c5 GIT binary patch literal 116 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vv22$0GKmv%Xiy0ZJfhs^u7zt#+5kwr$1<CAx W3e*Y&3Lujhfl^?74AoX3Rn-7a?-UOJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3dac9c7e9d9df3e3df60a2a045f7629e7ea19bd9 b/src/libs/libsrtp/fuzzer/corpus/3dac9c7e9d9df3e3df60a2a045f7629e7ea19bd9 new file mode 100644 index 0000000000000000000000000000000000000000..95960a7d123f7d4630cfa20715032e2fd70bf219 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^0B12U f%wcE;DglzhK#Bv18QQ)94Pf{-2U!dx4m1z|_3#wz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3dc64a53c5888217ce40fdf659cf4d3925dc91f4 b/src/libs/libsrtp/fuzzer/corpus/3dc64a53c5888217ce40fdf659cf4d3925dc91f4 new file mode 100644 index 0000000000000000000000000000000000000000..e88d941e6ff4efc9f37158c21b9505a8ffd14a64 GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(ad4wK|y3z#z%M r@Dj}AWMGg5ssl>T5n?cAV8}_$i%-taD=Eq^27|<$oMI3YqOTeN=-wDV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3dda8a68d3fff33d141a7ebfd5101e2fd7f19489 b/src/libs/libsrtp/fuzzer/corpus/3dda8a68d3fff33d141a7ebfd5101e2fd7f19489 new file mode 100644 index 0000000000000000000000000000000000000000..a96ab779410695638f72c1f592988e3f3c38ef68 GIT binary patch literal 99 vcmWgiV89CmfU*({)eN^7^mQ1jtE+)buWA<{?ZCjGhYtYtiB=y2>c|8D=>ZPI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3e1a394fa18fe58a522b874cacf9afa093345879 b/src/libs/libsrtp/fuzzer/corpus/3e1a394fa18fe58a522b874cacf9afa093345879 new file mode 100644 index 0000000000000000000000000000000000000000..e8f3aadaf068e6c70b92d4ee1a91432be65a5ec8 GIT binary patch literal 738 zcmbtSK}!Nb7=5Ers|Se$p}?}}(4`2pQwauk5$w`ABt$}x3THbFl!qWM1s$Wkbm=F| zQRzQ)t-F6<3ks+2n_V>vPd!+6=FK<neKT)hO2$;OQK0VBE@5GeDWiL5;=P_Cq8|%r zM3#I=Vg$`!BO$2@_aUly2HeUCu+glyA4zP-)@+BBA~u6G%m>t_H)pxzHQ+fAX_}dV zi(T2hD25Q|o5DgMkstX(l!`=(JzI9J<WO?|z|A#It4EF6R+c)=`m9c{8p^?-@fMv! zVYH80!R%Vce}|wm9`Y8kZawhF!`7lRre-}B6aU0*qEFY)7#CvoF+0k~Po=J?(8u6@ zGT@DfaX|D5C80P$!e{UUzVh<Hbl$KW63x2v!nxo40wu!Fphbb}C#{dQ)@Q-hiFq1p zBFSMY$udf^Bf8SHDP+LG<~-(t@v0Z+$s}Zk3u*4#hM5Bz(@}*oOsPWa)aRu4IeZ^0 KKi@~tmXhB!!J1eA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3e334e58f7c0a6193122088cfc3d45d87f481d64 b/src/libs/libsrtp/fuzzer/corpus/3e334e58f7c0a6193122088cfc3d45d87f481d64 new file mode 100644 index 0000000000000000000000000000000000000000..f4c489a653bd512ca834b7b0f2220aa5404fe5ed GIT binary patch literal 149 zcmZ2=apHf;czr{LqD+p|dIm7i`1{{ipP{;%fq{`h0VvYSz))SR2E>dE)s^ZHH4K&v l3@^b<P6mbqS)fXw{2U>WNOd&<HF;1Y(5QHz85Z#%K>&AY77+jd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3e44ff8f35e193f7b7fa0e1831dc37cefaa4de02 b/src/libs/libsrtp/fuzzer/corpus/3e44ff8f35e193f7b7fa0e1831dc37cefaa4de02 new file mode 100644 index 0000000000000000000000000000000000000000..c67526dc4034e63c88adb874e65e3dc23734d6ed GIT binary patch literal 144 zcma#o%VVgCXJB9`%H)^>q(I>R|Np)W4As>T9*|7TDNT(p;AG&CWng4rXaKSpz$}Iz za~Rrz@<39UA)kQ*q@nE_kf;aZ+|;7<)cEB5ypp2)ocOfNoK#_kRbVx345(@t?)NbK K`=1Iji30%6Ya$N- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3e8b1c5a3088257149e28a9e485e0ba82ab628db b/src/libs/libsrtp/fuzzer/corpus/3e8b1c5a3088257149e28a9e485e0ba82ab628db new file mode 100644 index 0000000000000000000000000000000000000000..8bdf9d0eb0b84f99e9db481e9b5e5e43715c8802 GIT binary patch literal 492 zcmaJ;yGjE=6g?9~$23M$MF>cW6m}tYX(DVD@EaD36oRC1laMfA(gYhDOJO?yL%%0K z5UqAR_s(uu2zX%bYwn!;7=#c;DS+okJ6=%}4Bg}VJ=C|`Wlk5vt9a4bA#;EckAh~z z;G!_jPSMtzTVLgZD_=3sWhS0~pI<6t^A+$GrcJL_)QIZtB`IK#hqA$LwZT!sR0B<$ zxy)B6(ZJX42e!{CbQ<8iq`zj1?D4o{b#`BREjg`&ZKXF8Ob?>mA$|#2rW)czxO6T- zDFgTLG#isvmkyUx3#5_<#~0b8vJz1*sWrsfOizx4K=6ryY7yB)H#HPnKV#AJo44>0 F@CO0*aIgRX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3e9e8ec251dc7ba7c255e8d23c99c0643468233d b/src/libs/libsrtp/fuzzer/corpus/3e9e8ec251dc7ba7c255e8d23c99c0643468233d new file mode 100644 index 0000000000000000000000000000000000000000..d667020dcee3617d102480b5603ffc28deebbb86 GIT binary patch literal 1357 zcmcgsJ5Iwu5Pj=d!tM~MC?X?^K!FlL$>$0PZs00K3Mc{<E0GGN;Rxxt0S$)<AbJh} z1!9=lb-eaQa)K<_D2eCe*|+oFY}Uukbp~KGj0R)==S4)PfYyMr4(KaozwDEQGaTDU z4{?l1h_rUiYNL5D>t8~UsL_DhLtEY<=@yU@Y}#Pu_nT99DxRjs0t8ip5Ug`~KciP< z#0g9W<|hfsYe7?V)%U&PWz%uF3_g^4GPH-vhhLV2S7v+4P(nofQCNFp<1^Qd-eb|| zUG~Tl!3aqd0UaZ(qFV|95^zWF?y03O=Ay&HN!Z!o*S3Q81mKOPV(lZhWLws$JM5pr zW>mj`{ay$AiynzyKAtV|m4?F|(mi<t)8Z{lJXHtgRe}qGg`*&6TqJE+O4C`|gr$Rj zVCi-haq)qQTf`0M5xZG%W1_>7fKtBmxWDG+vkf`tJkz$KhD?dvf=2fe&BZTIKXj?$ A%m4rY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3eb0759adda77c53acce357222fdcf2053313094 b/src/libs/libsrtp/fuzzer/corpus/3eb0759adda77c53acce357222fdcf2053313094 new file mode 100644 index 0000000000000000000000000000000000000000..d176346cba434970e3b52e6edfe7c722a702a6ae GIT binary patch literal 237 zcmZQjWPpI8OpYt{5a$2?|9u%6s;e2cE!zeH1xyfeFb75~+s44a$RG@osV-&&QTvNa z5=#_HfGnU{sSvZkMlk@50;*L2DFP~118b<RRtNJL7)%%#UNR(rI2@aR1SbQ-Hrs8w zVB>S*tLr)18T6_de%H5vRDgiz%6PpzhLU(76Kv7{{|qZDb%0htompM&`yZ?jNJs<i L1%v8hK?Vi@Uluvt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3f0d4db6e8f1b652dfc87aaa7adef1982655ccc0 b/src/libs/libsrtp/fuzzer/corpus/3f0d4db6e8f1b652dfc87aaa7adef1982655ccc0 new file mode 100644 index 0000000000000000000000000000000000000000..d69b38118bfe4c322205afcf8c84c0c4ab58d0fe GIT binary patch literal 489 zcmbVIu?|5|3_aJxCb2LGB0)&x?Gk?=zJOZp@Dee+XY2562EX7Be3``$AXnRmykOGg zw#{iz+j{`95W-v|m^tkLb)*h#kD{2EK|XWRWk%!=nL7bp<A~dmxFjz7EJp~3S4pC4 zVi03`TPUVOx&N$2*qtq<@#brY?3(FCGC+FP@&x%jQ`vqG95q21yAUh`kA{Us6GQ@k zpPBcX|MN=W7Wd1II_=kXfh$1Me&gO>YoSyHs@J8`lxX@~#9o@X#D`j(m!Fyt7%M@v TrIBloxA^yhZf&D++Qa1m_l9BE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3f1349df4a14cc4d102b2583fecdd9082ce76081 b/src/libs/libsrtp/fuzzer/corpus/3f1349df4a14cc4d102b2583fecdd9082ce76081 new file mode 100644 index 0000000000000000000000000000000000000000..21baef834c8b77a6924bb0a359da504a01511d18 GIT binary patch literal 140 zcmXSpXJlaTW6-Pq%~0RM00o{aS61p&GXP~+8LAl=n3x&<i$JCR|NrgFz))Sy(7*_k zmW<~SU?|GusxD>(DFlizq?W}e=9H#Zt1~df7jQB%fXp|I2TFi&QR;u;Oa_Mk|Nn!G Q1CrbfV6DaJsSFH;03fU%pa1{> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3f687d2e945375117d0a2b1caecd4f8c6e6d83ca b/src/libs/libsrtp/fuzzer/corpus/3f687d2e945375117d0a2b1caecd4f8c6e6d83ca new file mode 100644 index 0000000000000000000000000000000000000000..737a50d3709f4797bf2e9baf1ef195d784edb0b8 GIT binary patch literal 458 zcmZWlyGjF55Iq|M*;oW|3sDF}2(b~dNu>dW*aY$oQN$vRgxziAf?5Q$QLq%Zu}NvU zr6K=dEw=juD)<=B%r0p>#k}viGY8TW82|`}{>cSBAtHTD?_@E{9MfOf^Wnoo<&7De zia=Z*sJ%BFV+O>7Q(!9`UO$p-m-E1mS-`7SP=|cNZ70iC3$B2K%yni`Eym34pLYv* z`u|$q>%1f4MxJI~udDXJ#u&H=PPZk#atC~Oq6c|?#d=ZTjW2fN&40A!r9yy9(xsDB zF)A5B6PBgks`*LEZ_9zUTx2^<qu4HMKrd@1?3Ae-FI+JK;3#gy48z%6ZOYdtfm30h lRLmtf<8y9<7wEe-kS!dd5DjOWto?k9$E_T-+uEqq#viLiiC_Q# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3f6ddc51c3619404b9e75f72fd112ec5a76fc64d b/src/libs/libsrtp/fuzzer/corpus/3f6ddc51c3619404b9e75f72fd112ec5a76fc64d new file mode 100644 index 0000000000000000000000000000000000000000..3e6be7d0a6879ec75c6ce08b149a2ed4fe4e1061 GIT binary patch literal 294 zcmYjMy$%6k5S$N*qmo=Bs-w6>BPt5b=`<2=a19B`HFD9|gvJXfJ&MY6P-(q@jy3xo zi7ED*Z+B*YE=R3D9s=O4NsABBc_L@V8E0tc4w9URtA!s5MPwqOqJ+yCJMXa+Nz69m z3DDrTDdOY?4CWrD_(OnzhU%RuEf9X+m%de}oZzQL6p$Z)eXy;JVrP3}%~{e-$zqXo r6<N;P!?G?FS+SqLz)GeD`se|9wppaJnuF3{H4h#L4DD#&9ys9x_#IHU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3f9ac80a27a5cdc533592f2435384f11feca27b7 b/src/libs/libsrtp/fuzzer/corpus/3f9ac80a27a5cdc533592f2435384f11feca27b7 new file mode 100644 index 0000000000000000000000000000000000000000..b0aa5f460636d1fecab67682eaeb87ea93394550 GIT binary patch literal 108 zcma#oD_|&zXJB9`%H&9`2hu?B|Nnnq28QZt28KK!FFU?0F{d;&HNJq8fkBpmk>MXu l9t1#2=P<NGNMQyA1`d!2SgctXNCUazV8k#dC+9EFKmcd-8`}T? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3f9f73ce36478867a4605a96694ad1ac58568b8d b/src/libs/libsrtp/fuzzer/corpus/3f9f73ce36478867a4605a96694ad1ac58568b8d new file mode 100644 index 0000000000000000000000000000000000000000..9d41c6b668c58b8247a377d589fa95a2b1acc7b1 GIT binary patch literal 153 zcmXAhF$w}f5Cm(%Kr`{;g9Qb_zz=L<Vt8*j5H2_blhtS*;3qEkJ-(=&S!a^&uBONH zgXakQ+oaP>J4plB9a0kp-vrx$Ruk3Sf!Fkb;?hxSD6rWv@Zpa_vVq<kuTqztTV=X8 SEL>Qz_V>LUxzxp~xY`eDL?cuH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3fb546812bd87b53fe9c8bd2fb8d4fe5f55b088c b/src/libs/libsrtp/fuzzer/corpus/3fb546812bd87b53fe9c8bd2fb8d4fe5f55b088c new file mode 100644 index 0000000000000000000000000000000000000000..2fb4f34baf974a1d6f6991b818d4e77d4ba2a183 GIT binary patch literal 502 zcmbtQF>V4e5F7^tMl^`4qfj7$6e*#nri{c7PARUqCW`J5jSFZ<gp?;-$4gxBk9!5} zX4bx=04YtjSg*&k<JnDLKCnpvQ)H6l2q7YGK<S8T;k0<d!w8rIhac&<(nKb3T83)W z0`AqYVb(myM_vZNBa~zAdaE&zHZD-)HrvJK=puYhAWOIJ5!Y<c+kaj)QQ?~)bHc+a z;p@UARF0t&;+W-j*K!Q{H8ByU5OD&|=$^v_3s<T$oqpI*!WPyb=g%$NYfO;P;Iv|6 hm;NmM->9nQ|3!hi4}s<C7)d;u%;kH3_TB?4_Y0gQTd4p5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3fc0df015ffc9d645d8e8a217a0b97e0670cba21 b/src/libs/libsrtp/fuzzer/corpus/3fc0df015ffc9d645d8e8a217a0b97e0670cba21 new file mode 100644 index 0000000000000000000000000000000000000000..e42bd125fb5e7a9463bfd45f18dd1900c2103de1 GIT binary patch literal 637 zcma)3!Ab&A6g{JYPcYEj1(Jfe2s4NlK?DXZ+64W<G{_?d#*i5-@IkZ5B=8Gl`k%h1 zg^L!w&htGXLZiEQ_s)Iyopa{gt_Pg^0OC-{l$oJFq13fz#Y;&4A&AD(9}R{<zmW`r z!%+#SBQJQFVP?-7lWE{($s_e}z+|2?VuVtpn3)+9>yZg-&ke;g6d-?%fMNoz^%d~? zthK{H^WR)|+qqWsuw3nx9x-{}z?G<l)s?H@c&_r(gl;$`%?gkMrgNR!C0+wHV?i+< z3X}@;#p@oa$7~0uKqT+|{x}#%k`p&7sX~1Ks`|E%-Yr`|sc2rXcaj+}{y)Jo0k6)Q zEH=vP;^OJjg@-TQ+q3=l5{WYU&iGAr&dU{|mDkF6Q~0$L`c&Ss6N~F`oKKr}^3$iz S-#($0*<I37O!Js4-T4OM?r{zP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3fd5193a7187cb18463bf8da4f4c842f314d5995 b/src/libs/libsrtp/fuzzer/corpus/3fd5193a7187cb18463bf8da4f4c842f314d5995 new file mode 100644 index 0000000000000000000000000000000000000000..c49d7b538c0b1e6522ad10886e24aa44858c5a9f GIT binary patch literal 203 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivITniZIFm2?Yk>b_NEOIY1^00|yW? zGPFP7U|{(FAFPL=T3d^ux>_B=VX%hM44e!MvOuL!qpCq>$}=zt5O4YeA&4Eg?f-8H G2GsyHd?hph literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3fd78ce33b5b209035ba45ca19e86442bf50ecf6 b/src/libs/libsrtp/fuzzer/corpus/3fd78ce33b5b209035ba45ca19e86442bf50ecf6 new file mode 100644 index 0000000000000000000000000000000000000000..f55fca8fe00fe3befc9e197767ff5b778a05edc8 GIT binary patch literal 40 hcmb=HV}O9-c!O#<$czUHsxcHZ07d`*&%7UB3INom4Cep< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3ff19c57ca1f3cc01876498b0a953273906dbbdc b/src/libs/libsrtp/fuzzer/corpus/3ff19c57ca1f3cc01876498b0a953273906dbbdc new file mode 100644 index 0000000000000000000000000000000000000000..8148e4ad47dcbdd9f741534c3511b03b1f851a4a GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ va~Rrz!a!0ONO6Evw0#2-{~3fpY#;!e-I<!nQ4dv91u`CFE&~gQKmZN^)@&A4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3ff51948d3d4d45f4ebd06f358edabbc5b7b9591 b/src/libs/libsrtp/fuzzer/corpus/3ff51948d3d4d45f4ebd06f358edabbc5b7b9591 new file mode 100644 index 0000000000000000000000000000000000000000..4eca15ee58e9e71bfab6dc7a8047460f80a3e10a GIT binary patch literal 458 zcmZWlu}T9$5Pcg#R~w_L6arQj7J_J(=7g&Pe!~$YML@2|B_a%{P0+%|GH{L9`VERd z6|J(qncb714{m4X-ORk*hY&))05Bf;;T<DE>H;6nVaq|XdBP<=-!Lgk;CMWGd|7RU z2;kx@q~er*<RW@IDcRgWSNr6w-ZiT80Ms6?%c_-{VmQCe6C9Qy+mGzw0#zgB`Z-Al zYnw{7x)N=?FTUVUDVFZF-K;;LzTU6dD*jjcUVHZbnNb{-d^msowFuvYdS!_g5mH<$ zX)-dnnhrT@o<f$43RSAX=j+*F@XA<~x7wP`ChKc@PsJ;G7I{>q8I@^mX5O6Cv!^f* F_yIP@a)|%{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/3ffbc29ca6b05a807f47e3fe8b801f024af6baa7 b/src/libs/libsrtp/fuzzer/corpus/3ffbc29ca6b05a807f47e3fe8b801f024af6baa7 new file mode 100644 index 0000000000000000000000000000000000000000..f26da0dd4bafb60cbdaac56f604a289f1645c1f7 GIT binary patch literal 3133 zcmeHJO>3N06n@@x+Dr<CV6e1`bZlUh*p4abLMg$NM9@HS?P?5VpaV@RGmRg;#R<~- z0o`ONj0<t)FK}mY<IX?OjVl+ywIkLt*XKFszVp5_Q&cD-iieqd?|VPadCteZ=QJBT zxY-1<PAe|7VH9J$0(1jsH3%A<!OT4HJaG43JQBK@?*zWQWTW|fBD|3Cz;kKY7x^&< zJOk~?rq1@C0GbH}y6tMK2Lccs?8oDWhm=lQd&)YZi8kPJ4vpWf<~v(yon3}wdvA{< z;__<%vEx(-_t`Z<P8-y04VA`bar9K^<70lZU0_$$%0~k>ktm&HEqvN)S9`QV2wzK{ zlOMT7_>h+N7kcB*LGcUG&Qzw1f%z;N8y=&g<625e!Psql0+%!`$~6vMnY3&?nDHK< zX8UqnIqZU^Ewd?ra?B4+C57av+p<81o~qjt;&1W%u5F~}=kbzeUskgpqv<}5j0+32 zabL!rv7h!HS0l-<w#hyom7vo-PDzk@!Iht{@3xxsZq?$c?B_|(xqfU*0sN-oiu9Iu zY{^x`(I}p3HuK><s+XpPYxLm;x#;%Jt-fnkkAssZ?}(``&zu18&ydfpC@yPifQPHy zRvNLhkc9cNEmLG-a8xRaaq>ZYL#80d_b&7ov4}V<V&&I3D{j+x*Bv{SABlH;0&td< z055(%CgEq3kgUY(JfV8Q3J(e6AEiIDZT$~yyF6vvky+^z`PA+FFAbsB{|}+R6q<i~ z2#uc9JYANb@^HUVZ={_0A9~OEvOo5F&P({L*B|1Bjxw=l>*kOt!$fR*%Fsn^B;xqV z@Ljn3{f<tFGSsXO-FnK^o>GBb&i|yfvBY)3@BSSvgo@e`)yT{;q(8PZ$JFzuJdjG5 z3J!ks{mg7j4l`voPBSDY(oaI=$vOwNw+tL&wHz2L!1dNnbN$B7&CZQiJc|NPo2Xh* zHc7%}+5EZCgZ&>8!ePvdtg{2J{=|ez8-}&d5?#f&V97``HahK3zUY~xF$H{vr-qK+ zzdgHYoXyR8H5e|cQX!>!AY)QdNl>E8A8aJbPyno#0d8(^e+Jv;X;|ltCF{O#2EU-X zLM>JXXPmDUL!mknw8!Z%iiT;=G?%<YX5=Ca)8ipl{X&rj1*}e*_W{%TmB@`;EJ~Ma z+gn#_-D_Lty+l2tGH9}NNku1f{Zb*XgLW$qb)NCMw1?~#$C=6S+kl!WkJ-+46>}At sy76Low|_!KnPTOvkytoM1V>iv(jm1pJ>Grw{<&aYQ!%mx?6J!H9k6OtjsO4v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40329c2dfd0b5557ddad1426bb978a1f6ac5d3d4 b/src/libs/libsrtp/fuzzer/corpus/40329c2dfd0b5557ddad1426bb978a1f6ac5d3d4 new file mode 100644 index 0000000000000000000000000000000000000000..6f2fc779d0a65c091dc336c70986d00d249208c7 GIT binary patch literal 209 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VNd}gxeVyROYZS zFt8YLFmNz1GO#}YivRx)B!Hk=TMMXO9l~L-hSCh23=FbBrKkon34o+qd;T+5=Q4tn u06~K_!(tFEzzB2`2vln`>H-ZktS&~eA1K2Dw4H+y=vEkDU^sa2U^M`Ope#%P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4044f02ae152b5586847f90572fd0213a0e02273 b/src/libs/libsrtp/fuzzer/corpus/4044f02ae152b5586847f90572fd0213a0e02273 new file mode 100644 index 0000000000000000000000000000000000000000..320a92d58be472abeb1f4aa3d2b30932519a2381 GIT binary patch literal 2146 zcmb7F&ud&&6#i}!Coj=O$h4bkaI__D!N{aS5i6KrwOSakxGv9920A!o(s|QjdnGf4 zgdh|(po>5jZv6*>D+fXR2V8aMHd~>I*pTb@o%il!+NJ~#ym#+A_x$|Mx##sa!sO15 z2XGJ;PH`c<xr>Y(r#)Y9WDb5|lk`ZhNV!BsLY@*-uVTe?#472P(=5#a8^7JEf4!WN z)ovv9ZhjO(_=M^n#|7c@XsE?#=H(AKliR>Z3wY%c6Ic>s;tFOcd}saP)->01nJcX= zY=%|33fLV{rY6Vr8WvYJ{lT%$Ek7bKG9?G0+|UB|K4`LL;lqVm4NODkBL<4n9x;s= zWKI*~79{)y1}Q4916v8)4EH0(iLb?#%LN(6MTvwd&6+EB^)iJWOze)&hD~A$zwYiK zxk$+}UW-O;b-uzi^Re)La^SkhgJ;Dl?2AHM5I%WITos}SQhIv#`7-A?ZNHGd+n(E2 z60g#Pp~fZg{;WPp5xM;d5ILq;apw!v1j0B`YjINs#(>|ckOQPnz*qBIYY&6>cQ+C6 zu@OA^aQ$PNe=jzFpH2TLHon$~{ZDzY5yI#fY4uA_wCV(6u=NdgAXAZRQOpUJ6I*sr zx}Kfq<#o8io;w{IiOS|%?HurtWJ<kdSxDbrLZ<-UYbC{dhMJ^#&m>Qf4z&ajTMz6% zTXdLcUy$i=uV7=~6jv{h@j7%T&ggrLYHVPP|HY4gB%I!C-RB;m-S{&G!Z6qgMki7I zRy3KV)kf9(G;QqTUkWF6K!@F2?nd*6Z=^>4A6@{`^OX1ZkT~3CfA8Zn7T2KV38zdm z*Q-#H7tpge;Qq$6ZmTAMGC7<8SVWfkZZbEw4rj^k1)S8yeNb8(OpPHO`r-(x#(IoC ze%#-{=NzF0I;Cr%&3qOClY75}8N|WLknGk<)S+r4>VHPXY4(Ds=6!=^Ndk+x3v#RL zIlh<M%#LSQCBRMp`;0}K?j14vT*kRT5e7NjQn7*vKhnf?g-trqt~ZjRQ2eY3Lx)ig zd}8UK3FuGDCrKb075z?(hej2f&W3{=s|k&SGO3?+ZgeUg?(*(1Px3(73fKWOHEUDj zaALdz?BELmPA$>s6LeRP&Pd0fzWnpOw;1v~@RG9U5Dq7ph?LMx?vGuXH2`s&5&82e zRc6_<jf#|oL@1AjTLI1bGS2!r#wH%jC?(=QFOUtypN4`b9R+iEPrrdYMH9km@jFpr zdPJ`GJfLJhAWh@IW>sFqiqwn2T^)2s#Lmv1#jc9pj<n)r$}2@goAssi!`4!#-TJ`J S^?lR6n~whx<AHZ^nEnHCYVhL# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40458548157c8bd0cf6f4373d3e084a9b6e4fd5e b/src/libs/libsrtp/fuzzer/corpus/40458548157c8bd0cf6f4373d3e084a9b6e4fd5e new file mode 100644 index 0000000000000000000000000000000000000000..bae68f1660d9b05b42ff1cb43334d91d817cd580 GIT binary patch literal 1256 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+8;SR*M$Z8nCDjA|V!2qnDfw3LJBc5b} zXng4g1TSB{BwizmN(Q(~Z9(n?1B7otE=5sJ1rD;i2^dF$x4@=ylAr-%H86hIa5@6n zr6idQ(Z~*t8kp%oo1oDSW&qh>6t9=ZP*Rl1Q2<j1qScW(WU&p9b&>54WJ5R!rxc(U zqX~NsY^XM7aC`x2#Tpza&LE3(4WSDW7*0fH8&-s7oGgT?BxOdhHms=@*+87OVv)d` TpwZOhwjEg^gDkiRU|;|MxixK~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4055d4180d2b5209e04a111dfbe6206c6b327797 b/src/libs/libsrtp/fuzzer/corpus/4055d4180d2b5209e04a111dfbe6206c6b327797 new file mode 100644 index 0000000000000000000000000000000000000000..19e9615b1e4278c9ec577fbc2c071a1890bfa6fa GIT binary patch literal 195 zcmZQzsE=n{&A`CmxpHNtPBjA~0|P5VH3I_^1H*rLpfCuCFfcPP)c^kv!vB3iB0!oD zVDMB_6acAh?fK7KUCby3)bJh1U2F{!WDo#a1Vms$7R0J9o+HH24y1vWGx{ljq=33W aPN^<d1LAnSJO+mN5|B8=1P}`Z{sRCy>_O82 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/405ed43ddaaf49f883d26ffc462dbc7429ce8b00 b/src/libs/libsrtp/fuzzer/corpus/405ed43ddaaf49f883d26ffc462dbc7429ce8b00 new file mode 100644 index 0000000000000000000000000000000000000000..497ca29eebc969d6e5c996b71090c7cf9a4074f5 GIT binary patch literal 136 zcmdOoV`2b<qD+p|dI<CX|Np)W4As>P+wcJ0Z43;I4ALMS)tn5)V7gizVgQ3RlxE;$ oV2}kWE3Gb`BLt)w7=+sy80IhtFzn;!`2XFA(Lq>-3#8T>0KNev{r~^~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/408d40b64b3c54d7d1ab7c510b5577007ea49b1b b/src/libs/libsrtp/fuzzer/corpus/408d40b64b3c54d7d1ab7c510b5577007ea49b1b new file mode 100644 index 0000000000000000000000000000000000000000..2baa9ae8005cb7bb5aa642b6ae6c6f6c4970b346 GIT binary patch literal 156 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYU^NU7G8!lbLtstSN?;03 rD1%rm3@cYww}8|sFsOs27F&ZU0g%}cgP{ukb22czgIWPp4`KlTM1K|q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4091f2765b6198e354d89934aa10a5a0123639e7 b/src/libs/libsrtp/fuzzer/corpus/4091f2765b6198e354d89934aa10a5a0123639e7 new file mode 100644 index 0000000000000000000000000000000000000000..1271bd1e73c46f0a093e698feb475b7d34cfd5e2 GIT binary patch literal 3632 zcmd^C&1w@-7(J6jGXVv)s}^e0QWdpLMJggzwBW)`(HD>*l)(m?P%>7b1GWomDf9^> zyKdaN>Rb2-rCYZyiYR0}_b)S($z&$9U3o)hGWULS@A-c2IX6xXTkjnJ?S}1c^Uf9o z!3yB}fTcR%dzSjLPZ+$$Q#CS=N(Fl*%$&VBwH5>ttL+A34KaN&g5*{Y(iFzk+KKC( zM9*0|B!pNnA`lAKICa0pyk#sZQ;-(Wo^YDJ0Odl)M2L1J)3|T)$YU^LF!jJ$8eBho zSk{qDd&yW3e&*5_VvvN^^Fo22?Qq=^Y<?`1Px$a#SF3-YrRtkf&}GW;;qBY-VKbVE z>%XXp%qWbKovx^G8<>=26Ba27m;!g%?m<xWn}&#(h&CGU>}~9s(o|d_HtLsC4sTo7 z;?2C!b{jUdwY?<><rT31IS7owwC6up*4(jk2Yzwa3wp0l6F@;?DBR$rRgCTNR&F<K zR7wJJZNdN8xr!&iy4!MAH|v}0E-l{p-gWrDxSPb69immr%E_OL9Wfc?WE~dpB!6=i zHZG?(yJ5q0UUr=ib@`IKSh&2iQ88ge2LdRsB1(*|Xv?2o>Sm!EyqHkEw@={_p(Poe z>+66?h{|7`&3m-hK?_qbAmU&9qj|Vgnv~Hii0E-PIrl^9zMh+M6LMCBea^4a;#D*l z(t}h;3f%E=2r}O<lf_WeqJk3Fv}2i%OphhQjJRnAyZb2B-O)0zte99-NBM+Kq%&~} zY`(*Nsg4{G4MkxFf&)ybFR@1Mng`y823MY5s1>aAY<`i%5kT!q$WsXRNgNU0h)~es z(vLv}onAeog_F_9DQtOM^P8Lx&=oLSjqO1NnOrz%8>&cW*F3a)dX7AjoG06nM8{KI zBMCk0Ke7Iy=C6>qCHDwsT;Ft^jkRWdwd$?a=M^&+1ra8h(a1)e;9Qe^5k6xgm8Gg! zFo&}Iod~&5D;W>cvQ4Y=A=Qn_QsqZ-<4umK<bOx`gbzZeyaoQiTL^}Bx-E=5DgIfx zof|5kt@BgR9bBw}%BZDD=mjWV_c7BG9z9}ZA(F(FkiVX4s`0@A(d^e_Egm6+c~T9m bqpJ94#@%6Tso6=}<Pl|Ylp~6tdPMmLd80yu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40aecdc88b99221f72b23e9e2eb43bdc717e45d5 b/src/libs/libsrtp/fuzzer/corpus/40aecdc88b99221f72b23e9e2eb43bdc717e45d5 new file mode 100644 index 0000000000000000000000000000000000000000..c5e660176ca70431b77789423a7fa26740aba01f GIT binary patch literal 102 zcmX@8m&Z^N&%nS?l*y4=52S(M|Nr;C3=GxP3=E7A0fy>gMhFIqF)%3nhXMwMIUJnq b46+P8bA-Suh1)?w0t`?AkTM1a;r2QJb|4(Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40c960d7a807e01bac5411dc8584842e50aca3be b/src/libs/libsrtp/fuzzer/corpus/40c960d7a807e01bac5411dc8584842e50aca3be new file mode 100644 index 0000000000000000000000000000000000000000..e47868d381e7685152057ef59c6d8bf6422e9a85 GIT binary patch literal 54 zcmWN_u@Qhk3<E(yIdtO+91$>t9-?cCw!R9zHr)PSVD9FzJ*dpGk#wq*i|?Wn!5ji@ D>W&x6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40ca56e9bbba92657a7bd8084de43e29bff2ea37 b/src/libs/libsrtp/fuzzer/corpus/40ca56e9bbba92657a7bd8084de43e29bff2ea37 new file mode 100644 index 0000000000000000000000000000000000000000..111e79a7c2064cad039ce9f4db4699abf655bcea GIT binary patch literal 72 zcmXSpude54XV9x=_+8(^00o{aS61p&GcYj01VHq^|NsAk`JN06%<T+})&JQUs#~fZ L9rx)nGGzh)cnJ|> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40dfbf10224d335a28026e0eef1656d4a40505ad b/src/libs/libsrtp/fuzzer/corpus/40dfbf10224d335a28026e0eef1656d4a40505ad new file mode 100644 index 0000000000000000000000000000000000000000..6c21767dae003149ae67fdacacf46a8fbf5c3d78 GIT binary patch literal 229 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;Bm$%vqJct42q*&OzChQ{2-iOm xs=vCJkpYZ>S|A$H4a9H+4nvR)hzC2N1V}L?r7|!Huz;Nk6a?A^1&ghL3;<vSCGG$K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/40f286c2fbf58efd5466f2db430fbf7494614be9 b/src/libs/libsrtp/fuzzer/corpus/40f286c2fbf58efd5466f2db430fbf7494614be9 new file mode 100644 index 0000000000000000000000000000000000000000..6ec07fd45c4aeaa531ebf465df40ef2015f933bd GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Ll!8))&OKN jfLK7#&cHASgxZCH91f63+cyx&QT2@hBm@GE3=GQvZrKwe literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/412720548a693cdd970c50d2a44e5ccc7602db9c b/src/libs/libsrtp/fuzzer/corpus/412720548a693cdd970c50d2a44e5ccc7602db9c new file mode 100644 index 0000000000000000000000000000000000000000..0ac7501a80d732f338f46274ab6d1ee1131a14c5 GIT binary patch literal 1354 zcmcgsJx;?g7=2D7(QJrL3{_CX&wyIN$j=oJ+#pkj4looZEYS&d;RxNh0ZR{4K<pd< z2Ecu`(>QTaD2l*Q;(R~0pTGC)w2SMj6u_Y0><!toDWy&TDFI;}ke9-~^y!3C9N9<* zQG`*5q_RybqggQRUO*!egPv;j?eq@GRt_n~x($}TUrgODdFmPq5JUk&u*&KEj82{r z#V{F|?<7=S3F@LNkM|}onvTn#;6sRsp*<8n{GuehX*S1%5~9gRVC99zd!`$?OVP+3 zdUVr*(IlxR&^E%#t0fR11}l1dryBBnE;`&FhwU{E+Xz}CfD4VawTH~o%TlLqvwsSk zsD1(awF>r!dQj@=?a?A%>TtMCx<Bv0G`M7er}BY$*1-kA!cmYht|e_)N|I?(ho$|0 xVCiNVadAWWE#eO7A>9<*@KYTW1eEa3V|~rd7c=8bX9eGsO-%GfXr#~Hwi&q0;<f+) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/413106b9dc73ca31bdfecd23057e468e374c2f31 b/src/libs/libsrtp/fuzzer/corpus/413106b9dc73ca31bdfecd23057e468e374c2f31 new file mode 100644 index 0000000000000000000000000000000000000000..210e8dda82c06aeba120069a0471ccbb16a8b22f GIT binary patch literal 169 zcma!L00F@bjQz8weXj>|82<nN@5{hg{RhO`$FL6s_CRESWCxsu&iMZiB+?K(M~ERD sA~%QOIEXQ)U6_Fb2thy(h#MM;k=3*VRWLBX)%*vmV?b8JP{d#j0Ee|600000 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41335e0c82bb96a952b1bbfa0c1f00df10fda809 b/src/libs/libsrtp/fuzzer/corpus/41335e0c82bb96a952b1bbfa0c1f00df10fda809 new file mode 100644 index 0000000000000000000000000000000000000000..8d20bf9c12f78c7adf6ef70f74a5742fe06c2b8d GIT binary patch literal 136 zcma!NWMC+X-^{>Jl*y4=&%nU&|NnnqAjQB?UCqD%lmz1J_=*4bbG>{C6u<!0#f)H; z5DB1WFaU{_CFYcZL{n4a3pg1VWEqMR%TnW$^UG3;64O)Ti%WBJ6B!x)L3IECf3_=s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4134fcf90e7cf994669dc6acea4ecc1bd503d2cd b/src/libs/libsrtp/fuzzer/corpus/4134fcf90e7cf994669dc6acea4ecc1bd503d2cd new file mode 100644 index 0000000000000000000000000000000000000000..660d56d860d6f9aa098d1862458ebd9af264a5b7 GIT binary patch literal 108 zcmW-XJq|!X5JsPlLZeeiG-xHx;S3XzEhHNe8=5Ix#08yVP4+e4uXH=L0Oyvw$JB^1 s&Y%hzZE7_1XvnM^Qic(}WD98QXY*S!fp@z&S;KWNmv@I$MsClD{)0>wAOHXW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41584e3427ac6221f95e05d0a4a4d7e3055a240d b/src/libs/libsrtp/fuzzer/corpus/41584e3427ac6221f95e05d0a4a4d7e3055a240d new file mode 100644 index 0000000000000000000000000000000000000000..88dfa4120b7f434ffe1f0912c4e950c512c568b4 GIT binary patch literal 99 zcmZ2k#{dLfAcBE`kwFVYwf=i{rSbm{5EB_Nf;q*h#Z^Go6`(#wqg2LfkRU{cp_)<h Y_kV`J-&>0HfePvw7^<tQ17H3J0F?3;W&i*H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4186b85c4506bba256807c212d3e182743c93181 b/src/libs/libsrtp/fuzzer/corpus/4186b85c4506bba256807c212d3e182743c93181 new file mode 100644 index 0000000000000000000000000000000000000000..b86aec64915d4d259aac17535e4e60b0b5533ac1 GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31(1MWaEVz?esW??s;)YS4+Q26 q3@^b9P6h^9hT=Iw48{x$IjMQ^$@zIDMfna43`{_2DUgy~4AlTV859Ws literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4194d4f0bf534533aaa17f26b09cdf7f12553fb6 b/src/libs/libsrtp/fuzzer/corpus/4194d4f0bf534533aaa17f26b09cdf7f12553fb6 new file mode 100644 index 0000000000000000000000000000000000000000..ff439c589957695038501efc13b389238bceea77 GIT binary patch literal 3123 zcmeHJ&udgy6#j0E=0zxk21PCEXkc0*4oX~9LU1H0NI>e=jjur-IA9W)$w=`Q6N)w! zTr^8zT!?>!yM}JMbJvxduDS?aJ8CL(`<-*|eecbr(1;5WJj~p8f1dN5U-#U!wuF@w zFwM-3H=yL4y9~4}XQgAMa~wlsz*oTihi;E;8NU;FI<392IAKp29{4gW`$Y~$fuoQ; zX2;pi=Rg`zpxH>WRS<yC=7!t9wMFTq`VsvQjnfX7BQ%b)^!7qn=f_~*+O1q7E?xqN z9fz!a!B5RbnxkfQ4A<t1qlat<>m0Hj=O>YspSo-uQF;<<;X&3&R%r!mpNTwA>#`@g zL--Ia^)Kj^KRd<GIz2PI!x$JdP9^gg746qjq!f(3jX%S*ObbPgZA(mAHXhV?+o<Ti zh|AzL`IlMhGMfS@`y9wrP)I!WgIGX3Rn;Z9f86P|ZlveO@U_gImuAB`)x94X7shGh zju>}Hf3kPKG$Q$%2HCs4BIs}ww8|y1nE3f-J4@-^MB}OK=RwbTx3Db*@KtIo^qv2( z6{#fl@_4G~%#RPLUYHhK`M?|GoVRzhdRwjTx(5&56Q+_pqXK|`hJ3W5aH&fJyq#%f zp~sJgB-ED;F@+HZdqqWI9DLxumFytL@6UE7Fag&qV&#n+5pFy2&U)-P^PhNU2LKyW z0zC1!Pr^%;5Uj*>9#Fktg|~$9LFxZ&TYV?n=4Pc&#HT_rAL3nC&O`g6R;`5#Z}-VK z$k&fGB`7!i_#s8%A73&O{|R3_B(>3$Yt&!0X)oscqLct7R|~|^0sFhX|9r_Wh#xB2 zwXLc*M_zN<oc~+a`fi=G-f{P2!46BCQ-#dbqCQiG_61{05{LRTjLpCNewuu;?^@zC zLw(@x2&j~64s7iVu!Wg&U`zowv!!%)d1<A&e8FFVz!xg2;!805A?DO@>3S<ATnPxh z43BZWjpPAo^OsmIdoC}R0&ZSx?JFxg0q^F<pFz1|_sOoW`m%{a6@L9upzHVzd@9fb zwPxezC(%VE-Q}2`>UqWe*xzc>H=`r|6=2Uvg(8JIV0f8GDJap!yK{jI3V_uTKnebp zYi?ULTlPoGp5RQqo2N>+LOD4dV@TrT4^=awftjD<4g(eKuXJIoF!_e~wfhRm6pu`G zkIOuKVYNvPevNaM3@ZGhzkYG-TsrBWTg?V+FI<tbvs2inM*cH{9@}Pxxa_!*i$xW@ zvAA%((z>y5+P`-8NJSm2g5mwbvN2i6Yod|G#N!$N#94*8!@f}&J~yd{=#G)*VuDdg sn@>TAauB|EzyMd;t?Wd6*XYxY0mlSiqqTPvN{s(q#8UB+eeX#47nEP;=Kufz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4196c508d14fe694df32f8204e3d2999f665da6a b/src/libs/libsrtp/fuzzer/corpus/4196c508d14fe694df32f8204e3d2999f665da6a new file mode 100644 index 0000000000000000000000000000000000000000..bf9341218eb916741ab52eff6fd8d400fe4c8a65 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIq2{e%rs-_BLJjh%|7O(;!fzx8J0*LKEO<({P XY66omAtZ@dpsU!bfer*&fC4xGglRVn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41a107ed47ca1cf0fccd6be4290d840d6ff56684 b/src/libs/libsrtp/fuzzer/corpus/41a107ed47ca1cf0fccd6be4290d840d6ff56684 new file mode 100644 index 0000000000000000000000000000000000000000..ac97f72ce79e5ca3907e02992384c42cfa96b4db GIT binary patch literal 199 zcmXYpF$zL45JX?VBBdyZAl6!H{qY1MUO|vw+8BPdg{7S*NasPkfme#-?q3pSc{4ko z1m~3jd$>qqN@D4o?A$*BHZyJ@^q)kFnHW~yqU{8Vc;M*XHlkvBIyd$DA2#98xsH_! fslBc<XY(giZFlmRb+MWc)1ma#oW3HvwQBhRDXb<M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41bba768406de331145bc73184616283a6c21435 b/src/libs/libsrtp/fuzzer/corpus/41bba768406de331145bc73184616283a6c21435 new file mode 100644 index 0000000000000000000000000000000000000000..b84f6380921af03647ae32a4ec4186b2190fe76e GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_6D$lS7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-{~3fpY#;!e-I<!nQ4dv91u~wofq}t_fe);Lfq?}~a{vJ7 CBo`$B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41eb38f14e8b574a8843608940ad38a261f05168 b/src/libs/libsrtp/fuzzer/corpus/41eb38f14e8b574a8843608940ad38a261f05168 new file mode 100644 index 0000000000000000000000000000000000000000..68bb6f88f830d3364be3f2129b363947ba282384 GIT binary patch literal 308 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJih>vnjPeXj0w5Wf3KVIuI;aZl1^`t! zV3@&xW=l0(MQaHgb9FH@*eO6_u{D?_zz7wn)@B5{O&!XENCG*W3=FaiAT?k&1Fd9) b83?rKKO@Wk1Q3l57#Se8F%oSKgIzTM7AZ+| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41ec92787063926df8944fdecefaf53fe1a7b5e5 b/src/libs/libsrtp/fuzzer/corpus/41ec92787063926df8944fdecefaf53fe1a7b5e5 new file mode 100644 index 0000000000000000000000000000000000000000..93cc9ceb25a7f3831ad5d35d131c9874fba28ff5 GIT binary patch literal 69 zcmbREe?QmDm(>hlpzt3AzW<k0fbba@s_RZpVqnOO2l9*KtLr)18T6`uGt{?$<=+8G J&+6ipi~y0_7Ty2= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/41eefbb789679b53a64f6626494d219f1430f879 b/src/libs/libsrtp/fuzzer/corpus/41eefbb789679b53a64f6626494d219f1430f879 new file mode 100644 index 0000000000000000000000000000000000000000..d82b221c91564cf0b59b76f6cdc2bb0ea8dc4803 GIT binary patch literal 374 zcmZ`#y9&ZU5S&=ZrSnk-?QFyk(8@xv$qxv6q(~76DtXwXFqQs93cpgUJZIw(qUgfy z-p<X=?w$s))^tgv!ZRby7~=y)0XWP;eG2ArzS2h*$`h#kNs5C!Y;nkjhwWsKY-gUe z{NXK#3Rf!74;e_a7Q}6V&#V-=5u5k$kn-=mky9dexzpKYBu}J~n860h7%Tzm>lufe w68^LMSV~Z&jvV1xTkubs&#;)=<+ctgAL*cm`rJ`fyq33pmH--2J)1msUI!XNlK=n! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4206806f2d00c457ea5de97e66e55c6de6ffb89e b/src/libs/libsrtp/fuzzer/corpus/4206806f2d00c457ea5de97e66e55c6de6ffb89e new file mode 100644 index 0000000000000000000000000000000000000000..18451dcd04da42283e987e7a946e2f39c4f23c4e GIT binary patch literal 43 jcmZQ%C}a>|U|^77sAjmuP_0vq06<X?5Cw`D0&yk)+42i< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/422488058b968a30cf7764d28d0ded8c1bf8449a b/src/libs/libsrtp/fuzzer/corpus/422488058b968a30cf7764d28d0ded8c1bf8449a new file mode 100644 index 0000000000000000000000000000000000000000..a6812c219e2f1732af050f743294358a45745eac GIT binary patch literal 86 zcmdl#@jutgm(>g);2;I27!(*7s(~VmARdsYE@njVfkI$DRE)t3qLl$iAy72{w{;GB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/424b964fb6a4d92e4437d3110ae7698a7c9688fa b/src/libs/libsrtp/fuzzer/corpus/424b964fb6a4d92e4437d3110ae7698a7c9688fa new file mode 100644 index 0000000000000000000000000000000000000000..bdf9e31508222a8dbee6d16d006d0b31499ddbf0 GIT binary patch literal 136 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j&injIvm08&&9 zRPpcs0ZoQFupW>Q!yF+7h6fD)Ss5%C8^Ff+#~WlDRaaLRi$DNK5kz@>^*;sxv3w%N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4256e705a385c38f2784695a200d16c542ac4a4f b/src/libs/libsrtp/fuzzer/corpus/4256e705a385c38f2784695a200d16c542ac4a4f new file mode 100644 index 0000000000000000000000000000000000000000..60e5c74fdc14256ca8ba478f6ad6f1ae58256bf4 GIT binary patch literal 36 ncmd;zSIDlet}afEug;8TVEhjO{r&y_6&U`<XEKyBFq8rSJ@*k; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/426f5a6d1afbe4ce58a91cafa0529025ccbd075e b/src/libs/libsrtp/fuzzer/corpus/426f5a6d1afbe4ce58a91cafa0529025ccbd075e new file mode 100644 index 0000000000000000000000000000000000000000..bfed2dab9c700d5a62364485ac5d7f234ab738b4 GIT binary patch literal 152 zcmdl#@jur~hX4Pn85mwVNHKtc(l>@;AfFM$0TPPEj11KdGlAeHh?qGSOwI(UP+(91 xs$r-Gs$gPJw_vCP>j4P?8EPOJ1?&e|_7W@vvBL{tNqSmZ4A|2D|NjG30072hBO3q! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/42914883e1e41c0835e439cbec407a8c81153fec b/src/libs/libsrtp/fuzzer/corpus/42914883e1e41c0835e439cbec407a8c81153fec new file mode 100644 index 0000000000000000000000000000000000000000..9f68e2e2c3cfe9e6f32321381d47bc710fb6b1bd GIT binary patch literal 108 zcmY$>%VUs?XJB9`%H&9`2hu?B|NnnqAjQbQP+hG65@4t<Rs&)|AYUEKXJ9a9V0Z~; iaxyT;f|VA};RT82q~^sZmlmf2)x!lC3Q|3j8L9zhn-%i_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/42ba9f5cdfb4bac5fbc46b9290c4d379ddbebfda b/src/libs/libsrtp/fuzzer/corpus/42ba9f5cdfb4bac5fbc46b9290c4d379ddbebfda new file mode 100644 index 0000000000000000000000000000000000000000..f74ed2be4e17ac84f8add13349eb78d227c05697 GIT binary patch literal 1680 zcmd^AziU%b6#iZb_Qiq(-;_c%mC_9Uh?Q<dNa0O|QtH~_4JAX6IwT6>g_=b=cPwOc z>mSk5KSAi?=F*{~gI&ZNzjMxeX<`tgf{TaOdwS0~_uPBF^COTAkqkhmU2nZ5CyB@= zP7meg<z?V@AkBG`<K7jzltkRE>l(TdLh~r6U7RHcKpz#Hgcvh^20i2RUp_nCnvQP# z)NCOA+jLojUbfWdV?`2M^F{CLnFWGA70A#*8`U`5=4P+8$4`>BsXSN&4U19xKX)-x z;RR0TugTTV`45DcR;0#=EA#W`$MXmL0(*VU;t=|e1^&uCJ2iclCdX2@PjinA@i<s& zrV`~?W^#d*sAth`Wsjdz_+(pNl6CkOyc(_`tcE59z@0AA5??d>3D4XUoh7pT=mn~* zsb*(d*#2?c8uMR}hOWnzkHc1)7B<8RTT6sp!XhfyaSb6ni93XR<Rg@$+Y2}Hb!Sw^ zmZbEniFjyCXQ`!j_+1ocLy6xrd9W~K9Wd}WehXIv!B^n@nr$oWyO=IqcVBJm`OXcv zDFX}ER*^h4->~swX60Geg;i^HAerM_A!G|w7jwlOuJ5O5`rif2nA0?GZ^MDj3)w=B z?n6cQprnuuv`z`x@rOgHW{nlj`FJ?zzsY99Cmw2a^X|GXqKWbQU_w#|erq5XzaNM; QQeGLsLU|RsmgxxJ0VPVkv;Y7A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/42c04f4949f6accdb425e809024b0fa34f91f32c b/src/libs/libsrtp/fuzzer/corpus/42c04f4949f6accdb425e809024b0fa34f91f32c new file mode 100644 index 0000000000000000000000000000000000000000..5c51dd11f8f74856c92d9173ecff148e37e94ff1 GIT binary patch literal 138 zcmazS{SO3^|JjQ&Ia2ExzyK)V%fL`w&A`A2<fj60nFB*&JqH6rJVU!MkjqiU08|5# sbYKAzV88)V$H>6eP{7F`APd&XFo&TXC<r7$niw&`e^-zekR(tM0NDc=Qvd(} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/42cc9a350b9d030354e8f34b217062cb7d6a12b5 b/src/libs/libsrtp/fuzzer/corpus/42cc9a350b9d030354e8f34b217062cb7d6a12b5 new file mode 100644 index 0000000000000000000000000000000000000000..92bb93edcdcdb371d7c4e279c585ec404c3fc650 GIT binary patch literal 70 zcmbREe?QmDm(>g)-~c8;M0GJELp4y45h_wGQC-Xc6`KhbtIkNxDPRC90ikLD8rcqE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/42f8549e216d4fc4fb83ec37f4ef82e8d1804270 b/src/libs/libsrtp/fuzzer/corpus/42f8549e216d4fc4fb83ec37f4ef82e8d1804270 new file mode 100644 index 0000000000000000000000000000000000000000..902efedf6059b38c1c817050646a5f1ca61f3f22 GIT binary patch literal 42 kcmXS}W(a)A@Uj{PiWwPzpc+V3S2HloVPIea@<6x}05vEJ%>V!Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/42ff558e612d32805292e10e0d5588aff9ebfdb4 b/src/libs/libsrtp/fuzzer/corpus/42ff558e612d32805292e10e0d5588aff9ebfdb4 new file mode 100644 index 0000000000000000000000000000000000000000..0333076441003c6083de90e7c94b701fadaa1a38 GIT binary patch literal 1066 zcma)6Jxg3c6g{IRK2wR0R6$&@NFjzLmJ%dIN{ck<!XPrm1JSVWB}FE%+n6Op@(Z@J zOuwz9$o`JB`v+_yjOX6_=CP2Vo?YhS&bf0x=lMgR@c;%@5r+Q7DPjcN7O)8i*~_UL zgtT0dMWmFdqpWVRg{5^pD<42QzYyxWlMy&T+;P0_xoxrE&R8=SX#5{D=ND-?)-JWw zOX{qk;Ll<84~2A5P^O)~GOKTM$`?T;w~?vt5q=5qhQVWkamlF=`qyg?i9~~@>RYIa zVaxd}#x#_b%qha}4nq@?lXFHv@Sl!Ep577Spu(8hBilJV9)0K%@n1Kvkg*=l_NZvy zmSc&8iPp@tHY7Y25Aerlrwwb)oe$!r!)wUj@D%+Yf+w}_SN#~huWokh;C=W$bU%&b zFq^$cJdho4h*9kJP}UJ|=cwng#o`*Z6FQ4W<=ITSh}hSW149+un?Yrz^fD*4%dR$} z_NG$Il32T=!AA9D153td>AC0{Acwo%-lkK26!v87gz3$`P#^_9`51gxx`iUj<)m0W zQWACPv4rbMXO=Qe6AN`b&Dfoa^qDApu`KFE)}dBGIa3UPJ&!S8?<-F&zTWO(wlCd5 bT3jLNA+GA?sOdFa$)`Y@4zQr;!f1L60*3Vd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4311d53ab583253003762d5c6df248d9ad0b960d b/src/libs/libsrtp/fuzzer/corpus/4311d53ab583253003762d5c6df248d9ad0b960d new file mode 100644 index 0000000000000000000000000000000000000000..2fa54c47e45cd4fcf47ad47e8996873b92a6d7eb GIT binary patch literal 138 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZt2oFdm=9H$!7jQCg$TBc8Ff;&J3}6<+ zk2wtOKzSf345T<f8rr@AiFzQ;O)W}KjZe<cD=Es)iBHSSNfiQ$a#R70cVu8tEdI~< P|1Z#%xRg|o5eysv2u~oG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/431f6692d5d3b59cd7a4abf3f85e516309faaf23 b/src/libs/libsrtp/fuzzer/corpus/431f6692d5d3b59cd7a4abf3f85e516309faaf23 new file mode 100644 index 0000000000000000000000000000000000000000..61bec26c51db9cdc505b0c4db7c8cb99ddb631ce GIT binary patch literal 894 zcmazQU;qNf4U9#pnH=>XHUq=||Nng%7^|xp8Myy|1@=Jzn2n$K{|_YJP&`M7AsnJ| z4#ROEV-7>RFark=!U3w9c90T;n*TucAa{UOp97P`nL~zM3`5GzT;MQ72_Hz15*I#5 d;apwJ2n^!U_@ZqZV_>MRhC~n=Sp?))0|2AtiKqYo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/434b3aba4fb23b0a1dde7253ba6ce2e5b941280b b/src/libs/libsrtp/fuzzer/corpus/434b3aba4fb23b0a1dde7253ba6ce2e5b941280b new file mode 100644 index 0000000000000000000000000000000000000000..e2743ec040e509e2ba5a8cf74e1d670c0771e01d GIT binary patch literal 647 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Qw{TX3^mOV?Fe%WIpJ#N z2!SQ%Ky5%$Lxf#Ga~y!~!R=ryj=}I0F^)kphav|fnS(O`G2Ana0Tw#<VG%)=IdEeJ IeIPRc08;&0=Kufz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43620b48bdc38c25d3301b1ee5f42aaa9fa22458 b/src/libs/libsrtp/fuzzer/corpus/43620b48bdc38c25d3301b1ee5f42aaa9fa22458 new file mode 100644 index 0000000000000000000000000000000000000000..0819663288d921f3fc1227220f40a1bc6e0e19c8 GIT binary patch literal 739 zcmb7CJxc>Y5Ph4*#3CFCq!5B1m5m}qs~Ct7n?QnKEkVK+2SMR3HZG`zpp{@LrpX^U z@jnPw+UF0Pf|Bv==FFLhVBT@e&D`6WH#-BVi?jgvUfMmUB}Alwhg+E+3^d)LR2OVK zwGts<MA3Um*$|+scQM*{1iGywVBPnw`%JcNIpvtCGIJ<G-k~>oIUCDg0lhR-k)C8? znl(FTwHPX?k4jP>s$L^g?ONK24#p{)``yjXar?02Zk4FC6q)RV?LnvUE&PHpjpQ7q zz*!BWHz@XaV2-FYTLZspST4e;Y^;%;70sywH`yVt-(d2Gkuy<_^N9+DOA;f*^TCoC zogiZd#8>G6+Dwr67#ZNR65LDpisd-Kxj#*o`lt7|(wXFxM|vDyX%5e9!7c^%jBv$0 gv>ljc#@~xbk!@CuQQwukN2dX?&(F5Ffesp{Ur5!HJOBUy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/438a00f2bd6fe62fd7ecaf1d01add57dd249b5d8 b/src/libs/libsrtp/fuzzer/corpus/438a00f2bd6fe62fd7ecaf1d01add57dd249b5d8 new file mode 100644 index 0000000000000000000000000000000000000000..c52e37d125dedeb388d8b24ee8e3c6c4d1a15802 GIT binary patch literal 146 zcmdl#;Xl{Qm(>gm4FCQ+NC7DzU@ZR602E<lV2IbtV<?FS3KeB?q}GEa85sUE`2PQ2 z4N<_59bc9RRtn@BGB6b9l%~c9a5DU6`2YXEF9QQe8HA~jjidvpDmA`<lY!wS*i6ng MAYfpS1zA}Q0G<pc)Bpeg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43a04de428dc347375915abd1f32c95b14e07b9c b/src/libs/libsrtp/fuzzer/corpus/43a04de428dc347375915abd1f32c95b14e07b9c new file mode 100644 index 0000000000000000000000000000000000000000..b661f903c27648e8dccbd29e17b9959234fb6977 GIT binary patch literal 139 zcma#o%VQ{sXJB9`ngk>u;Q#;sz6{LO)eH=bK!Mcwvc#Oy)c68U1`b(}NJ9aT0J9hv z<}kDal>kX$AjJXF-u4Yh)B`a{FBBA|b7a<o)o?IWF#wJCU|^`O)`O`yn30;pP{05H DGdLO> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43a7dac2f22ed58d151d379f1a69492d15c4e4ec b/src/libs/libsrtp/fuzzer/corpus/43a7dac2f22ed58d151d379f1a69492d15c4e4ec new file mode 100644 index 0000000000000000000000000000000000000000..b931e18e16346e1179e719f5129ea9771b48129e GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu>$#t5Mq7(k5F__D;D($x3@P6h^9kVr%E93h5qh>|%B U?LY>Q6b4cpXksv~HiS_P0IK2-)&Kwi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43ab74cc4f5ecacf3a38572f954ed0388ecfd83c b/src/libs/libsrtp/fuzzer/corpus/43ab74cc4f5ecacf3a38572f954ed0388ecfd83c new file mode 100644 index 0000000000000000000000000000000000000000..5a66813c3ef69137d14c0dd2665cf440b9e202f0 GIT binary patch literal 147 zcma#k%VV&OXJB9~O8qaK$p8lb|Nl2)U?{EzivIUyV5kN$q#2k5K$5LJ|E<A_1Q@{- zP+FUjp|n~Z$WsMkYi5veEQo*tP6h^921Z>V4`Lbv!X)PET%dk+Q=o+)aPZ(k1_sw^ E0M(iwP5=M^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43b16532811ba3ce84bd06113126a8e6230bc4e6 b/src/libs/libsrtp/fuzzer/corpus/43b16532811ba3ce84bd06113126a8e6230bc4e6 new file mode 100644 index 0000000000000000000000000000000000000000..8445b85075ccb162aab6091a43f696bd66f1167c GIT binary patch literal 801 zcmb_axlY4C5Pb^~a=IKfq6Ep2h0;b!i-g2C7z!6|EEGp6vPGguBuW(jfxC1xG*o;T z&<(RYcC^mf@QU%=o_VujkYE@BY7kL7h6NEl0jUO>M$xRO8(cJiJK$|impWCF32b^+ zYm^S{D=xS#!V+Yo4qU_JsJ+^}1%!!AfkEs=6DcMN?u(zZBML_^;x|&^YWlkEi5x3- z=2*0Wnr9N`-z<nb3(SUCMzJ@sIq=3H`mr<D_6EY)Wu8wi(<vzZ`X{_s`iv{q5rcUw zS9kc_9+P9I`21idIYsz{%V$#FpB~DCW25~Yba!muH^aF1pJksji>Z7L$jm{X%N_Ha ZdZ3%Qc;?3=K{KIw&A%+|iwxxLrGI#f^K1YB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43c65bc15f4c93adbb6bc2186d02d6d96946ae4b b/src/libs/libsrtp/fuzzer/corpus/43c65bc15f4c93adbb6bc2186d02d6d96946ae4b new file mode 100644 index 0000000000000000000000000000000000000000..1e4ee008e22a1d73e5d676942a244030c39ff31a GIT binary patch literal 116 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&zJP&2mJ=xQtD$&~ p5JNavCBqzsb|3>tN&qPiWHFea22ipnH7&I`KG8Y1DCaNGU;zFO8jt`0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43ccd4b004b8eba10b7981b649f41c212c7aef14 b/src/libs/libsrtp/fuzzer/corpus/43ccd4b004b8eba10b7981b649f41c212c7aef14 new file mode 100644 index 0000000000000000000000000000000000000000..55b425ff8ccdbe9bf1cc2f84fb71fe26f64fb6ff GIT binary patch literal 144 zcma#QmB&yM&k)B@l*y5*#sCKY|Nr-8aHy_kU{GWS3nb>0rp6aIFmT8+Fgg@4a5gY7 z09gzI3_s>Dv;$QDNnr+71`bOg+u$1`14BJn8w1!NAdiC~l_9eTsOCRI6+_+s{}5R) QSzXM?P+hEW69O1y0cbWPAOHXW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/43d0462689d206942c50b10018c5f2667afcaf9b b/src/libs/libsrtp/fuzzer/corpus/43d0462689d206942c50b10018c5f2667afcaf9b new file mode 100644 index 0000000000000000000000000000000000000000..982184abdc62036ac5fed2c8e3e241ccaa7b9608 GIT binary patch literal 73 pcmbRE-=6E`%W4KxpaA4n7c(+c10@)tQeZw*3?c-Sv<9k!AOO~O3n%~p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/44268627072b273b31866855e3d89a46db4c5993 b/src/libs/libsrtp/fuzzer/corpus/44268627072b273b31866855e3d89a46db4c5993 new file mode 100644 index 0000000000000000000000000000000000000000..b6d8210dd719e7dc44e52f40e9b4d89a09739bd9 GIT binary patch literal 141 zcma#o%VQ{sXJB9`n#9lrq(I>R|Np)W%+=Kl42(ctYJ6EjPHAd<0Ve~8EJ&mQ$YKDq z7#QX-v;&m@Nns$x0mKY#-+)9t5QFqW08>#ahh{xk4F^LN$ap3JpiC0TPA~x3#=ua` F005SC8B+iN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/442e7ba06aed4a44c6c60743ed6263a4c154dcc8 b/src/libs/libsrtp/fuzzer/corpus/442e7ba06aed4a44c6c60743ed6263a4c154dcc8 new file mode 100644 index 0000000000000000000000000000000000000000..30cb516df5e1e6dd4876c710496880bd17f93c1a GIT binary patch literal 191 zcma#o%VQ{sXZWAWz*v+i%m4=e|Nr-8V5qKUU|@tZ<QbR*K$8E3Gm#bj#!$orlx{6y zW3Db{geYX-ia7#i3BUxZwHbk?t3#!&p)><01EVa^0tu+qP#b>(T>}IO|Nk>USU{5D M|3M&NkaevF0C#>eL;wH) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/446fbac27ea656dec4a21c616db79a6c45487ee3 b/src/libs/libsrtp/fuzzer/corpus/446fbac27ea656dec4a21c616db79a6c45487ee3 new file mode 100644 index 0000000000000000000000000000000000000000..b0469acf6cb10a1dc171058f8ff2674b1bf28c39 GIT binary patch literal 104 zcma#o%VUs?XJEKhl*y4=&j1Gh|Nr-8V5qKUU|?iWFailx7pnm=BTxbYfRgGEwG5UF n3@;fN<_IwuGce?&=EWzM7N^D=B<7T+#upUjr)B1FfDHfubo?K* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4484889954c72cdccaea7a64af2a633d6efd9e82 b/src/libs/libsrtp/fuzzer/corpus/4484889954c72cdccaea7a64af2a633d6efd9e82 new file mode 100644 index 0000000000000000000000000000000000000000..3f8c9993ab403f4845c09bb5de17adc81f15d332 GIT binary patch literal 142 zcma!7&toWw`~QofD3c>Kp8*X1|NrmHz))Syz`zLNI{?|mj1UYIg8*w7gA=023akjI sY#9iE^n!uhe_Nnw5VkBxWp(i!Ag{Qnq(GCg3?d$%oS#<$v>wO<0L7yoKmY&$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/44be8f2ae55fde174ac024caa7ab85037c4c6700 b/src/libs/libsrtp/fuzzer/corpus/44be8f2ae55fde174ac024caa7ab85037c4c6700 new file mode 100644 index 0000000000000000000000000000000000000000..c4c695f847c82b9c0979296f202361d194798ff9 GIT binary patch literal 99 zcmaz~&aWzsXJB9`%H&9`2hxPV|NsAeA!=+z84UVBfUCGVK0fo0ZgFaSd}?<+<7%iG KJ|HuXRRaJ>)D))x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/44ef353cd648470e438ce3405416d834dd75eece b/src/libs/libsrtp/fuzzer/corpus/44ef353cd648470e438ce3405416d834dd75eece new file mode 100644 index 0000000000000000000000000000000000000000..b989e0fdef23c966810db4b047e30ea80df63f8b GIT binary patch literal 98 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+8;SR*M$Z8nCDjA}IVqjFD-^wV<zy{(0 Sfi)24F)(m~G|DnCg17*v&I}y@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/44f08b3d0f7edb74975426e4cd064027a885c576 b/src/libs/libsrtp/fuzzer/corpus/44f08b3d0f7edb74975426e4cd064027a885c576 new file mode 100644 index 0000000000000000000000000000000000000000..74d147e108415d8698d9bd78d0da4cf0ba38099d GIT binary patch literal 169 zcma#o)y>O~XJB9`%H&9`2hu?B|Nnnq28QZt28MXOJcb&WtQxv3gwK$eQ<_>J%fY}I z&%nsQ&``k1z#t1`IWqj1!_W>?10;nRjxlh6l(&5Y5+G}GQ;X75<CF9AN{aGx;?r_6 VQ-v9r7&xkcmNS~5gX&_&cmNxZC|>{o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/452f898e13f1b1a7096f7b7356ba805fd44e0a16 b/src/libs/libsrtp/fuzzer/corpus/452f898e13f1b1a7096f7b7356ba805fd44e0a16 new file mode 100644 index 0000000000000000000000000000000000000000..cbd18d60c2428a15a5770512e6b218f0ee286b2c GIT binary patch literal 286 zcmZROVPpUSru<Bf)Os+J;s5{tz6|>({^xr6vKlDz@4tf-L_+BsLorYUtOH0?7c(+c zJ1EWsf*CVsCNmslU?_>tWB7KlD6<2_EQV^BE}%I;T{2*uAhW^18phycXOIP%UTru> z2rMSt&cHB-gMm>N$YX-30@IE_XLz{)nT!lBAW&LejL@Sxhe3d0-?#4!940_{VFno# btqMR3Kn?&>5OJsnf!>A!u$N}e^ko152n;{} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/456a4b84afd1e87dd2949a80e6b7de5532369daa b/src/libs/libsrtp/fuzzer/corpus/456a4b84afd1e87dd2949a80e6b7de5532369daa new file mode 100644 index 0000000000000000000000000000000000000000..f3c3ba84aff072dcf632480d8c450184726b0f70 GIT binary patch literal 104 zcmY$>%VUs?XJB9`%H&F|2hu>m$n@WrfuXt@$YM|ci&Ph@F;o`|0>#w9d<F&s28Nel jCMOGnEW?yJybMMR3^}QJ@yVr$r8%kbFb$u827xdDmrNA3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/456e5aba481e9494480dfe0e30103d7a371c36f0 b/src/libs/libsrtp/fuzzer/corpus/456e5aba481e9494480dfe0e30103d7a371c36f0 new file mode 100644 index 0000000000000000000000000000000000000000..90f2696c3d6bad8c4719f55e3f7926e95303c23a GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLr8ggGG25tf4XtoD2-I a5Os5efMP5R!tD$Ub2u0nm|!X(bTt6Tunn#N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4573539cd102309a639d6efa7fb372db109f1c47 b/src/libs/libsrtp/fuzzer/corpus/4573539cd102309a639d6efa7fb372db109f1c47 new file mode 100644 index 0000000000000000000000000000000000000000..52a1efb3532f8f96ae797dc9bb36bd85736b9106 GIT binary patch literal 550 zcmaKpze>YU6vltI(He0xu7!Y-pol1fOBYw4B7zhwlvKTS&^y#()tAWT<O{gE_!4fe zeFQ0ZJts*)2lGMh%{||D{$p_tgEew*QlVSltU^afoGsQ%Tl54WyebeTS}2`0iTuA+ z!Wb296=GQueJIM6PkDGRp%VFw!=++S9KnoJu;mMaIpZnWUd|{J(^Wt0jVnq-aI*Gt zvnwSZz%mY65_W?Cbz&So&fh=2r;><EEqq%;B+h01Se?Bh3jDce(7Pbzn0@YMa7)#! z)_;hQd3H8T*<m=)6s4c{9c(5kOVqQu{xcixm@n;E5bL3EAuZ=jYSmo_`r9dQMA67L fkWeuB7xxpX&Xj9xS2fn>!>Ap|dKR|lZn=mbCNhd_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4580abd8e820990bcb6c9ba78bfca0aa3a0319ef b/src/libs/libsrtp/fuzzer/corpus/4580abd8e820990bcb6c9ba78bfca0aa3a0319ef new file mode 100644 index 0000000000000000000000000000000000000000..12b188a8b961aef46ec04883478e2f736f7fe8d1 GIT binary patch literal 108 zcmdOk&ts6>8lTC)P{hDd&j1Gh|Nr-8V5qKUXkcVyV33UG0ZL|aR2MS>#nd567_7mx s00RRjkWpbgM~LD7zyIyR4F4GzIG{=x7~2@;a4;}cS2L;?R|5?M0Ms!Rz5oCK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4580e371e8fbd69e47e02fa19e675785c501c989 b/src/libs/libsrtp/fuzzer/corpus/4580e371e8fbd69e47e02fa19e675785c501c989 new file mode 100644 index 0000000000000000000000000000000000000000..e3b7139ad577e33bd63e5254c8862289a2e37146 GIT binary patch literal 105 zcmdOk&ts6Bv|!r*|Gode*E4{@|NsAe85pXo85$TF85ktvc{mt~GC8V?8G&Nz5G4%O gU|N8Ifs=tjmI0`&!gvlJR1Rhc#E1q42B5NP0NC3XU;qFB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4596b3e125384fd6616fe9a21c2d84a9e9146b02 b/src/libs/libsrtp/fuzzer/corpus/4596b3e125384fd6616fe9a21c2d84a9e9146b02 new file mode 100644 index 0000000000000000000000000000000000000000..15da728891bd47cc248329f673ed90fd8a683de0 GIT binary patch literal 86 zcmWIhZ@^FzU&N5fz`)^J&j1Gh|Nr-euoy%c4Eun<k%57+5GcgNz);N$ma47>3PBZB Rw?mlm@qc2AQ{&@Ps{s*s5rO~! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/45ad3957454b75c5ffd4b38e42f830a3ce2ddb58 b/src/libs/libsrtp/fuzzer/corpus/45ad3957454b75c5ffd4b38e42f830a3ce2ddb58 new file mode 100644 index 0000000000000000000000000000000000000000..d4b5ecb5ca25cf4deca9f6b72008e39b5da9660e GIT binary patch literal 103 zcmbREe?QmDm(>hlz{tSBs{S7WL>QPE1Q?R@i(UeOo0}Vu0I{H;K);ny7N{JEfS|gV Xkqd}{3?O7+V6tFf12G^-2c!T1?N1~_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/45b1bb3f7e17a0449d0632c3014196ce57acdf4b b/src/libs/libsrtp/fuzzer/corpus/45b1bb3f7e17a0449d0632c3014196ce57acdf4b new file mode 100644 index 0000000000000000000000000000000000000000..44a80130259f576bc9ebb065e2bf97c6eb9bc13f GIT binary patch literal 307 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|Y<}kDi134TZ zfwph|fus<K2?AiFI#V+_>Y-|?K&F9=VQ2vnAb@5MhJZc7<|*?aT0kVw=7s`J1_s%9 zEKX+d1zH1kGEg1Jad6dOKY*MJ6hw76P~g8jkN^X)!|UJ<=Rmld1*Qb(ZgmhF0FNLy AApigX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/45d30863d34d0525446a92da17db464e08f14742 b/src/libs/libsrtp/fuzzer/corpus/45d30863d34d0525446a92da17db464e08f14742 new file mode 100644 index 0000000000000000000000000000000000000000..19c36c91170c81f172492dca1b493e418c205c8b GIT binary patch literal 291 zcmZusy9&ZU5S*amMG-`?45YI56Z`?cA*8tCx{z4qgrp0W>GOqtfLOWCCcZ!iZg+2Y zZf7o$IZg?H+!?!NChj5!?7e3>?Hg$yfklJ>sIw5zYKdEihBL-BCNMyZ-IbJTcp$on zHv<colOrg}GOdo&F=VC1h3BXi&eoX<jW$gQkr9mm?M(h_k@kTv0{G%bOBcK`aN;`5 UUjC&6zxm~7L-Ny)%5$ZU9tsFN-v9sr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/45e5313feec6e4f72bbb7115729571402922d931 b/src/libs/libsrtp/fuzzer/corpus/45e5313feec6e4f72bbb7115729571402922d931 new file mode 100644 index 0000000000000000000000000000000000000000..6d7dc4dbea65e5e00f52bdfabf91712f12d48f20 GIT binary patch literal 458 zcmZWlu}T9$6r4@tCROw*#ek$xNhgX3*PL)wARl0Lf}9}8A$P{Yg=iCOY%BvO_ydAp zp!hlYfoPTI>~54*r+NE^H*fY0<UslvfbvY|H>`w+4Dj|Kt?AUTolCOjcywo|$SB(> z^h~8-l8MLT3EqLrtgvzirx76bVyNa4I#z7<>lMdEcR;P7I_w&YDPImp=>jV7-wgfx zDMuCD*w9qrO0@Ah`+(k~S%md)^U((V?Z>~bGWy5*R_{`vz>!u1tN&8TdIb;Uw!c~7 z^B2ZXR}9eGnDb#y1p~3nJcy<SuSd)hjR4Iz!7eph{*8F~`Q;dBVw?0unV;rmRuwL& P#E!TyuXpP4y-WmOCxmxi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/45fa6f391ca41c78ce36d4626c6b1ac7016e3c13 b/src/libs/libsrtp/fuzzer/corpus/45fa6f391ca41c78ce36d4626c6b1ac7016e3c13 new file mode 100644 index 0000000000000000000000000000000000000000..fcfa66c6fb10b3ea124f7fc8e713af0bd2dbbac7 GIT binary patch literal 600 zcmbu6Jqp4=5QSd~Nn)vxLJ))$f?#1~A%YhWPmv<^A_!a92-fzwi?<3W(Q$S*8#WjP zaUj_rX5P;G=6azrNlrvmVl#ro1W+1?13vK=Xa&vZc2sMX*_(<NZ30;FHb<Xpj6e@k z#oAkwA=yjBz?fzCS{3yj?eZu)@=J$Bks<{>={&UBbfeJhYK_l=zU%<blkek!UwxF$ z$6x)<T=OjeZ~dZ^0{b=re1mKVagu}Ffc4<{R1=F9AzTIE#&VD3z3!iMVQ1Fli<XSk Lj+HRg^P^TTmyD(Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/45fb88e3f3545891f75e3ef9c16e3ce4e1de331d b/src/libs/libsrtp/fuzzer/corpus/45fb88e3f3545891f75e3ef9c16e3ce4e1de331d new file mode 100644 index 0000000000000000000000000000000000000000..b539f62638b07dc11892063ab0d0bfa838ceb56a GIT binary patch literal 151 zcmXSxW`Ka-4D~$>r6uvH6`3{+`6;RO3=E76C7HRY`K2Yr(v^&GWj#O{5b#{NvQnoS wp(x%7jSn=bBpJn|*i#d~cgF+u7Nur#K#lqT|GzH-Lv=OCI-vC+JwP`A08Jt+kN^Mx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/46058ec8608adad0ecd5495eb19e52ccbf96058e b/src/libs/libsrtp/fuzzer/corpus/46058ec8608adad0ecd5495eb19e52ccbf96058e new file mode 100644 index 0000000000000000000000000000000000000000..199cfbdcec72147bae90e53c9fb14f260304974b GIT binary patch literal 3116 zcmc&$OKY4}7=FI#w3!ryV6fC{$3~_lwL{w=R7x-<DM%o6?dmg>fey5Z%ydM1#H7+% zi(S}-3t?P{D}RAIqZ@brfo>GRMR4tiHO%pO-gCaoOo~!T^=0OK=YF2|{-(_}TuXtZ z)AG}87<unkfUe`LI!>J<s7wLJfm?U|KG#jcPT<RP)|<*E+=+w-j>YA$$iXD=JhUg- zb+-Q`kVX{fv}>&m5P)dwo<F#~&DTi_&#2+wc{b3N3>rtR^zBufwkE-W&A0LwasG9H z*m2mo`}{OrMoZ*u0oCSmarCh3<2HwEr}?RA<--9RPn3ZqE!=6fYa5h;b6=CExDt+B zCpL&n`wP9@&rb1k-p*8a2?JA!w`+KejE-`tXNrr1jGw?cO#?S_8N04TS{5E8JUl>M zpBz^PySUPpwWIvwKvR(+Y3e;mK$>dU68xY3WY5fmnxDeiGn{@^OZU7t-ZNbUWL%i0 zjQbL9#eUj*P>o)`kn(!JUk^Q<J+#3k!Ihq`^jaykTQhqq>v>#rfj_n-1AaqxMS3%Q z*y>dhd$~Q;ZRUf!WG_w&S3U>=c_qj@lX}m1^MgZ&Zt7Aw&!hnGPm?zYc55(Vc6a8x ztuV90kC`M)mu-n6(FOa(qAnH#B!5xf!5iN>-Jih>{IIZ<Km3Gk32c<`E`~l%JrwWa z7~mu+0iOAM<b~fR$k`r|uts?^FpLSY0EL}Bdhemv{F4S6kEDUJeMs}7%xkiUn0qT( zcK4f&W(<q}yUPmfzjs+WQ9He`mo6(jm35l^iy_r05TK)=8v=7W%%a0pB@82f5zR;( zKjpr6w|-a)OY+0IbzQd+17L`sK#%j!{i?;0Fm*cU@TL}ARc%gn-e#H&u2ngpuUwQ) z8xvL)Tfc<;jAOGSag5Wn#<5@%VcD&D_S`%LY-7G`BXhu&)>^u_zILs%{#uBcz_a#L zJ>+cmqxqTa(%apXa0Sq!=L=l#p>~I~^+}drhu-q5T|;oo5_d?&+0+UX%8!w`V)xNO zC=;}cj~e`i&mvvIcVKNn6*N2TkG{yXRN~z(*QsG(Jd8sav@0hkLfPQXDy5NP;z$@X zlsigv{{5v$2?~G>1NiA<ry%lVd5MS;7?6+=gwQ~<1o>w0J8E;3)7;>Q<o_R15R{bx zu9iz~lhclP>$bexO4Hd;9MTrxhB1a}Z$HU3(<DFh<M#4^32nu5BNvOLefjF@rF!@B z>d8=??Nb3Tp0s1R#Vj{lyw^dym3cnTgo<nf$#wP<dm{t~GD2CiRyAv}0bc5JQ<arm zjT<L^;vmcUe_N_9@aEh}S^V-G&P?LlpZ)OT8>qIeGSp<n9EF`#k|u^$6Zg6;)iJxg zNIM8&wA98nD@MAgq$M(MP{9>L!6T=QW0F1m(GqDQkmSmqaX>-U<Mim~t9M^^=6l4I K%mSM%D*pn-bvI%F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/462629b211c9a20ad7d076b9fe1c8f223c02b980 b/src/libs/libsrtp/fuzzer/corpus/462629b211c9a20ad7d076b9fe1c8f223c02b980 new file mode 100644 index 0000000000000000000000000000000000000000..81b38e36f63980843bab12c997c35dcb4acab118 GIT binary patch literal 326 zcmZuqI|{-;6r60DwG*v{*oq1sz~06)gdhtEC`f`9*&>ZG2%bPZPR^uYis!^c2<Q}V z-e=y-+yRz8fH=}7BNOt1wQFI=BaD9xwg=<y!(FiPk}#O<d%y^;=CMS<dPgxN)eD>- zESZA|seUJ7L`G+grk=l&l)cl6ViRe!8l6H!R>0*X(t2Q=RJX=a^)Uq&S8;99UdP-K l`Bl__?4i+c?r11c0Ba|!dghG!oAt5&@lj<5jG9{972b4@NEiSB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4639b78e734ba41929677b69493804b8bbc7d2e7 b/src/libs/libsrtp/fuzzer/corpus/4639b78e734ba41929677b69493804b8bbc7d2e7 new file mode 100644 index 0000000000000000000000000000000000000000..132c8d6a4801fbb1451c5ea183af8fd2351b7946 GIT binary patch literal 382 zcmaKoF>V4e5JjI;nGTV()Ko##P*Fsp;R1<-SqT?N2oMW2E<%-bIRQmZ!bP|TprmlV zmn~QcWn|6B_MfMj?|^|*T1~BgS5?FqhY$i7-Mrgo-Pz{FEo<0jdfMF=%{Kl<BQ;H2 zYtDKUe+vBK3S`fx2+EHM#Nl+t>Prn}WcN^pI+seTn&9K4R2f{m_^CaL9(l#a_(q?M zD)W23UV)?BdMrsgMf^Uww#NR~l_U&#FytmV)%jA4CO$3JDj?7+D->49xRCD~U=0t? H=`ZAeD78&C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/464840724f0b6c8590dbc07ec6c5591248351ec2 b/src/libs/libsrtp/fuzzer/corpus/464840724f0b6c8590dbc07ec6c5591248351ec2 new file mode 100644 index 0000000000000000000000000000000000000000..684d134562ec491273eb5758101ebe7e1145bfa4 GIT binary patch literal 106 zcmX@e#PG8uo`Hd(D3c?#9!LYh|Ns9z7#OOn85kIWJPjaLEM{b=24SEW7%*7_sXP#q albt~psLr6hXO0k%MpC5-RRPxESO)-9{}DR? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/465301866d547cf0c589fcb3e75703ce5913de47 b/src/libs/libsrtp/fuzzer/corpus/465301866d547cf0c589fcb3e75703ce5913de47 new file mode 100644 index 0000000000000000000000000000000000000000..63a72d31199593f348dd35d90a830d3d37466b9c GIT binary patch literal 37 kcmb=fuC6XljgS9R9B%+*LP2Ic0|SE^LoowTG&8;w04XpH?*IS* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/46a911b5776c3eb28cdff0d6cd72df92387528b0 b/src/libs/libsrtp/fuzzer/corpus/46a911b5776c3eb28cdff0d6cd72df92387528b0 new file mode 100644 index 0000000000000000000000000000000000000000..b8a435d5242bb2629805228db5d511ff7766df4c GIT binary patch literal 3397 zcmdT`yH3ME5FA7bTS5pSQBolx3W}JP0{9asDAE$TNQtP^Q>EuCkl<6`BcK5J*uCRk z_Hk!pI|xg$EoE<SXLfeZ4|^EjE&$w2vTJ?<hvMQ?zR>Li*vAGioBA=ZF-4AZim4=V z0yf_{N%su#GRC<nb+yao-(yAhE&6%2KD~-^d54h%On+X{MGusG69DCjhFG3BS}q!b zt~glYT=&HV>sLcTgv1u7s)b&AG@GimlBdejYTviNwc&GF@B5o5&4#M)DIjM)kWeuZ zuyd+gZm7VP%V(#vFaNT$X+na;3UwLwH6iPh`mqw2Roo9FS&>>|-gqR#7G#u6-qKvj z+T~J8c5Nd_xI}Bg>ajA#DE|q8H9b;<p(BuwN4D#AOu=W>7KS6UhbbWEVP>Olo;3WF zeKk7!l1Y3I3@L|?rAw=}ew1VL5l?k9Z$AQV*D|V+Phh^hjbdQg&u!NdW-epB)a@{2 zlhCQ=V&EO>7=C33fjmWT<8;u2!gy4MQ`k<C$BF$j{~B?VJE+KfH+xCqV0p`+ih4iA rlfq~>GGVX{K1L({rTt(*q_|(#=9u)Q)5=$bJQ{%^e1)4R?V<PrE^0>I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4702789fc04046636f32d326f926dc29b7d407f6 b/src/libs/libsrtp/fuzzer/corpus/4702789fc04046636f32d326f926dc29b7d407f6 new file mode 100644 index 0000000000000000000000000000000000000000..83e45363d9365025f8334080893346942ed04ee6 GIT binary patch literal 36 dcmZQzU|`^8NUdVA1~O298jx2dn#;gY3IHg-0>J<P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4704a9ae384ff7aa7883898660e6504ae1dceabe b/src/libs/libsrtp/fuzzer/corpus/4704a9ae384ff7aa7883898660e6504ae1dceabe new file mode 100644 index 0000000000000000000000000000000000000000..f3a1a410ddc7c228faffe1ac42c3a198a2f8d0f7 GIT binary patch literal 101 zcmdl#@jsWq%W4J&hJXJZq<|EI8UsTyh|j<X#10^`x)?|VLIfBTfTGpK4i2dL9Dslk UtgzaI0i@dth(U~MhW!&60B<Q3SpWb4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/472b029f7805fc89e06be91239b3fadd74603e52 b/src/libs/libsrtp/fuzzer/corpus/472b029f7805fc89e06be91239b3fadd74603e52 new file mode 100644 index 0000000000000000000000000000000000000000..32b2915b613b84b60e3fe62e874b9f364e66922d GIT binary patch literal 294 zcmdl#A&)^ao`Hd(D3c?#9!LYhf42X=3=GxP3=E763Sg1yVl{^9Vn&AQa&-m<8=#Ob zgDDV$04D>35s;E)U<PVoWMJ?qo+HFi_a6or^Ar?H@)h!n>=_s|7{tI@fCMAZa0MU@ zRVEBm4yJ*o9AseVOwHt|XJ{7&s^X{uDP#q*U;ylxd<P&GDB*_3u?!4m47zA81)2|b JD$%ZD003prQGfsd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/474aa41a3d0eab350d75f7a6b112f0c78c0d0d21 b/src/libs/libsrtp/fuzzer/corpus/474aa41a3d0eab350d75f7a6b112f0c78c0d0d21 new file mode 100644 index 0000000000000000000000000000000000000000..47cdafd7a74b534f1631ad2210b1c318f1243d15 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5a0lr-I<!nQ4dk`qaS2E&|DU<G?>6{F;E#8K-59) aMHmcrG|*s>G|)IS)gXs6`~?wEzySbG(J@8< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/475e9680116fad7e0b31d31ffae25bace7d0c5c2 b/src/libs/libsrtp/fuzzer/corpus/475e9680116fad7e0b31d31ffae25bace7d0c5c2 new file mode 100644 index 0000000000000000000000000000000000000000..5c2a6062996dad1d2f6ffda9af879d3c93cb7064 GIT binary patch literal 109 zcma#o%VQ{sXL!I+l*y4=%>V}f|Nr-8V5kQ27$E`-)y0euT&)fjv4+wNoD2-IKy}7I az7SYUxSfGv4v;0lzyX9nvw#3%a5VsW_!OG} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4761baf77c06ed60f43ce3742ba3eca60cd3bb7b b/src/libs/libsrtp/fuzzer/corpus/4761baf77c06ed60f43ce3742ba3eca60cd3bb7b new file mode 100644 index 0000000000000000000000000000000000000000..02fab4d1ecf15ce82fb3e0dc57e2d2d6aaf1fd17 GIT binary patch literal 79 zcmdl#@jsWq%W4J&hJXJZq<|C<s4*}U14S4?Y#>ox%*ap;<0}Bgzycsa69$k*FCYdn Jsu}iA1OT2{4%q+z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4766e711be17c18a4c6d8398d2c8337c270a90a4 b/src/libs/libsrtp/fuzzer/corpus/4766e711be17c18a4c6d8398d2c8337c270a90a4 new file mode 100644 index 0000000000000000000000000000000000000000..45c0b404eb64068a4d29cb2890fb36426be67db4 GIT binary patch literal 144 zcma!NWMHs}XJB9`%H&9`2hu?B|Nk#A%~bH;mw}<WnqeCR6fgl50|8S$Q~*LTFfcL* zGYD`oR2MV;hX6^iItB)7D9ymhz#t1$R$5&=M~Hzz3?e*-NdU-D2U++ZYH2k94i+hd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/47a1282ecb3d35237e7c7fd8dc1429698af11b39 b/src/libs/libsrtp/fuzzer/corpus/47a1282ecb3d35237e7c7fd8dc1429698af11b39 new file mode 100644 index 0000000000000000000000000000000000000000..35930ca0616d6ac929746aac399c4c50658f2150 GIT binary patch literal 1556 zcmd5+Jx;?g6#g6{k!*-eNK~mT5Cdw&4p*o+LZ%KK%21f_z=XPRglrswJ8%UA;uuIE z%yS$&jvFfosKkq$<UKz>fA6;}aD7z*Sk9B#4Sk8Elv6+mfN255CDV&!O5q%*dS`+( z#VQ8>J(a};6cV<a$*dytF%o(hwqJ>PYru$OLL!bxqDZ0mB)BpGMm1X2LXVJR2e`eH zTVi26!Tni0+NERTC|dys6)MG@py7ahx_HX@lN`&|sX7?ebdHD&V@`|6hHGLkPa6%$ z%qX?C>OXz-uil<<mu+)71Rsn&)M<~|I{cs+ir^+vrCsRMgo&hua_D%p7YL=Pl)!dC z{1T9_L9iJ&A@eo*YvM!I>^q*_L~$Ot^oQcE?G9%nI0*k=)r1PfVEa<@!Wl;<FHR>0 nz28tNe+zc+)afM6X9~_AeVO8Wd!`xZIbrcD6t)P|xK;E8Wa#pd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/47caed181903c894531eb2e19c44c2d2b76fd6fd b/src/libs/libsrtp/fuzzer/corpus/47caed181903c894531eb2e19c44c2d2b76fd6fd new file mode 100644 index 0000000000000000000000000000000000000000..d07e46965c12fcad844ca96593398005a8270cd5 GIT binary patch literal 314 zcma!L00G7gj76!L9Q9xh!~g&PeHj>-|A2Y>AOIqRm;C<^B;8OvM~ERDqHqqwaUf$3 zL%T2o2N1#mNR2&|2b2XVL8$o;7Ww}lEPoD6;xmUByAW!ib{WCk^Zy@`)j)s$XJlYF Rc#r|;23(*TC{YB&)d2D<GqwN# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/47d8da30683459a8a20f3bef9ab28bee627eeac1 b/src/libs/libsrtp/fuzzer/corpus/47d8da30683459a8a20f3bef9ab28bee627eeac1 new file mode 100644 index 0000000000000000000000000000000000000000..189a71640226cfa4d9788c314b49f239da383d0f GIT binary patch literal 466 zcmYjOu}Z^G6g{s5Or6A_q9D{R1r>4EVuiRA>f#3!l?>S=se?Xfbg|;rQ4HcF4$c`Z z{)4Lyenja|dOh#;i5^Jqy(j0LoBJ-LDbfaz#D0`95+c&Vpf9rvi<;#`8Y`B6tPYWq zQLH{omI8F+-r*GQz}-_{u$9EO*EHL;njNQ9<r%C(M$p^&Jh?ptJs=;+<eME)b}}3G zyP<<J{a>cv>VN&AnjuMb5PB4z>(p9;mWM}HJg%n?^7e%_RvsVD_wj$eE3Hu&oRw@S z)Uu7w1zo+sc<9tjib3i_Et!ls?o>L!NhIc$L;~5Enlf+kgoYqT&m8xS{AS3Pm}xCK z?F!Ick77S_qD$jr+jw(M^c%)Z_}4&`iRJvPCR*2Mh}VlvF2e1=EQuFMCzVw31IG7x AmH+?% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/481fe58bfa684ed3e01059d2f6b613ab0edf7c17 b/src/libs/libsrtp/fuzzer/corpus/481fe58bfa684ed3e01059d2f6b613ab0edf7c17 new file mode 100644 index 0000000000000000000000000000000000000000..23db1f47bfe8bff251930c549140de6ad2f8197a GIT binary patch literal 69 zcmZ?tU|<knU|^7_{{Q<w*Cm~5>uLyasg`4KU|`Vm0!lJ4a57xFsHdl=0mMjvfnoo| I|6B|&0jf<B`Tzg` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/48936ec5fdcca6e2d54051d2b5e2943e2894f2ef b/src/libs/libsrtp/fuzzer/corpus/48936ec5fdcca6e2d54051d2b5e2943e2894f2ef new file mode 100644 index 0000000000000000000000000000000000000000..a2a0c4a2622e8d48d0d7a7246375ac899c1762a0 GIT binary patch literal 709 zcma$34+IR18yJgHGdb!RzyK)X%Ww|NoWpP&NY7zt7iQo9LO5tBo+AY3@P>n#5Vc?# zhyX|*NHbiwFjNbw8ay`OFo)qk*kqu?L4X*SBD)ZWZ!qoR0{a-nE{F&4h6>o6Kd64M nE@ot4`2P>2o9=#x`-_Zl9&B#ThJ=3uI59FZv_AmyfvErh6De~_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4895768f927ac10572d9ede5d3bdd301ffdc8ff4 b/src/libs/libsrtp/fuzzer/corpus/4895768f927ac10572d9ede5d3bdd301ffdc8ff4 new file mode 100644 index 0000000000000000000000000000000000000000..59a2c022eec663d8488ea60124b9219b8f3a0350 GIT binary patch literal 1555 zcmd5+J5Iwu5PcggCGHTeC?cZ>L=h#TqJfeIBt&lDDiSG35mK=dp8}=f2oVJwg6rfK zP%+Hx+Fold6Gs*jYx%RY<JmX!-cB;a-8=y>n{>tx{N_PKmw?uQvIgi|WpB2L!xc{K z$^c=AMSx!OkqoC0Bx*LMXkx=VBnLU97`t|{^gJwCnixtDQ~^S3n?w5^gWMyGVLU+5 zHRnJVpX3#&2{Q9<zZk&_UYt5E*TIKUABOfoIrx5#$a6GKqKiM(1f~h*^)-<RHZM+< zCWODu$C_$zK;Pq^XyUCXiC%>!QtX_CJ9o7;ac}yC70&*WV+82%rO;mS<SXqZx-Wvs zNRcM;E$5>HbWO8y>Ou=Kn5E|z+R`^UukWWpcZYx5YefryH(JW<80k#5<=*A8tuJL0 ztrGSt^wV#!IX?}}dv5~!$b+r$c;=vcUs-=7$|}u?kN6hNwO9Nmilmq_EDz^wEGd#1 Q<rACM#V{paDP8jQ14Sh1z5oCK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/48ec9ee1da218d48c07791145a7082d619a8e91e b/src/libs/libsrtp/fuzzer/corpus/48ec9ee1da218d48c07791145a7082d619a8e91e new file mode 100644 index 0000000000000000000000000000000000000000..ae7659cdca05db5d3b9449aa7e81dfa8fdc8099c GIT binary patch literal 106 zcma#|Wnd_YXJB9`%Hv3_2hu?BKleXSwE6)910$FZq^cRJix&f_>RgD(VrvL3z`)7C hAPZDbT3u`}1QcUq5N>5)m;;vOVBi3ozz^b80|56Y4{rbf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/492c4cc59923d3323c34d620755f49db08a1287b b/src/libs/libsrtp/fuzzer/corpus/492c4cc59923d3323c34d620755f49db08a1287b new file mode 100644 index 0000000000000000000000000000000000000000..dabf1ea8c0567e3d30075ee0f9fa94052830841d GIT binary patch literal 115 zcmX?@ky=v_&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji25Kjdv!j#Xzz+=t8 u@GlP}!0FB)3shX%-ZMuCNNW@`vbFwi0h;rl;Tsds90sr|ARWlySO)-^${7{_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/492db680886a5f6596808da294e4f55793c3d78b b/src/libs/libsrtp/fuzzer/corpus/492db680886a5f6596808da294e4f55793c3d78b new file mode 100644 index 0000000000000000000000000000000000000000..fb87805da1423162055e066e3dadd9661e14ec88 GIT binary patch literal 209 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qMKih>x`Aci~xlK@DvwS<kix|k87kbz;b zHJBv;6R6f^1gckuN<$=p98LxXSq6|A#{agc1_JE@fdmMJLP8AzQczn!^lKm&Xd9X{ M7!HB~1A}Wd0Ag-7djJ3c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/494f88aaf4b5b8af268d6544b453ed46bd656e7d b/src/libs/libsrtp/fuzzer/corpus/494f88aaf4b5b8af268d6544b453ed46bd656e7d new file mode 100644 index 0000000000000000000000000000000000000000..68694cafe80fb3d66807bcc2c36cecd16dc5412a GIT binary patch literal 2915 zcmeHJI}XAy41Hlh<O*DX0f`g9!T^V0U}iyxvgL%V4D5^@LF~n~2~8=bO+OMKqDryU z=K1;6FNp$7pkNH3&<BrGgn$C0R=tgGYjh-6IHM7UVZ}6faGlHr(5(klRYl<3WiIdB zkK~0%S&XVZ7DxsKbaP3#OudlZg%+JMaf@KV0mb|*M{Df1Pkl15iyE0-HeO|L_RF0^ zaidU$C2C{1VOEVRjaZYHg4EaHm_Q_YOsg9w0jc9YA=M04@efKQXeM%b7a*4Hy941c ztUmj0X{}f}5;g#Dv$n`=_x`;s?zajxF}v+mwtupDf5H}2mbk)OhgMu+O|g&f9#-;C mFoorkp1<b^lUqUEqp;qMFs<F&#uK_#_P#gX9;dFH(9k#Fcn+Ze literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4966309a70277b9c5588b56c0cd160039a17b3f2 b/src/libs/libsrtp/fuzzer/corpus/4966309a70277b9c5588b56c0cd160039a17b3f2 new file mode 100644 index 0000000000000000000000000000000000000000..e0a13d8ec03f17727ff0498c98bbaa8fd11f1278 GIT binary patch literal 180 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJ) zfC6(E+99Mckm3NTX!`~v{tJPaAOJSIGc}W=o}nGArV3;{$Xo`HelQ?L4MZW3v}Rxc E09_Ux&j0`b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/49808e0f614be22eea31e052f23741e0d28fe1e4 b/src/libs/libsrtp/fuzzer/corpus/49808e0f614be22eea31e052f23741e0d28fe1e4 new file mode 100644 index 0000000000000000000000000000000000000000..1adb232746b09ffad960c7fa462a9b28cedaceff GIT binary patch literal 339 zcmZvYziI+O5XOId)oCFiDa1msGF?Qp2|~yV_z1Fr;|f9U!kyg|vGXN-K}nxR!e(a9 zqzF#2yYu~FznS<{v5yd%GCgeZN-3>DBEp*jQ6(dl&}{Sa!xemY5>X=)hoqe%Z9wF) zldyy{Lu-1kj8&-o>7E7b$|@FhwTDZB0c})PgsbyeEuR}Va@*L{JIG7{{q90epvhmz zJ-_}`)Xn?sm(7m^jccVztj@{e%&l8F;D=^|ugnnP5R@JHHf+?t2i%$1=Ka5$wEh8K C;X>#D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/49a59eea737e131cb4d706b30843d8e8a025d2d1 b/src/libs/libsrtp/fuzzer/corpus/49a59eea737e131cb4d706b30843d8e8a025d2d1 new file mode 100644 index 0000000000000000000000000000000000000000..49e5d3b19118ff72a6e55362f5b147d9f0043e40 GIT binary patch literal 69 zcmbREe?QmDm(>ja;ou*LRjS1R0twX(bA%WafRKTKg@KWQ{Q-~xl4k_cK)_$BRSl#7 DCW;)9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/49ad6606238e6a58ad8d79088492aaead6c32e6b b/src/libs/libsrtp/fuzzer/corpus/49ad6606238e6a58ad8d79088492aaead6c32e6b new file mode 100644 index 0000000000000000000000000000000000000000..341665f1dcd93d9b3d1f5cab4db46dcb533bc4f9 GIT binary patch literal 69 zcmXSxWe9x9@Uj{N7#tZGt&170s~I3%1_lNuhH5V$1qA=As~;x->1rkctIGH&CLj~U KV=S&@oC5%v*AXZH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/49b49874138ada8be9f6ce4be49ef37e4fc2c50a b/src/libs/libsrtp/fuzzer/corpus/49b49874138ada8be9f6ce4be49ef37e4fc2c50a new file mode 100644 index 0000000000000000000000000000000000000000..cf75f188b4b82405ec0b722ca1b5aa9afd569b78 GIT binary patch literal 1995 zcmc&!&ubG=5dJoe%_ava7B7OBgVcjmjMq?TPoDZO_$;zQuvE!59-KoIQhHDbIR=6k zq5noa^)K)uUPSOv@Z`ZB`s4Y{dvCMGg%s4*$>#06d9yR${CG1S*xJE?Kxy@wd!Y^p zC6Vq@L=k!ER=A12lS^$`q@t&(k#4-aybIL;%$+T4o0_tKouapYL%|YF(&vlDNOs=X zp{0*T6}YZIBpqFGUPo@F_qC>SPFly}E^t$i%82=kQ29)Ct0v|Su^LQtx&3(l)NaLz zx*`RX<O-2IEjbN_5Z=G&HtvP6zu42)uNYLjbt$3R21&I~bzyKc`aV~QGnJ{r6gRmA zo@oL<sYKJ2vdTSj$(DKKL|FO(6-F2iUH)gHZWK^YAgQ(gfExJlugG^{1R3U(mYYkl zyBtRrCx^Wrk8tekzj+??SWBE!-ZBF_mXzT1&w6<xlRqNi2I*ZHMK@4dP%SqG?7C;F znba<}ya{$lIEyAsP@1iAS-;QCh=aDjukM7M7L0l)@0#wtz<cgUZfg{`!p<LZlg$DY zpjdmPZT@gCCy-@QYTx|iJJxeI&4Bx~wL%za&D?z=B57izWoXq?zu&iYSkpoW=se)a zTQLen6khl?YA0E2E{jOa^Nr0;VxCnIyJ_>1oF84x_IPj-MsOM9EJ{vSCd2KxWR+9a zNx4oQ^^WmZMFG^OKcvJZmGGEkRVdMzul3B^TAVQ#aa;BBoIOeY9NSgRfF_f~dj8(L Z7vAB8Ud7J#{9FL2AkS$2`Me7RKLI1&p;7<< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4a0b5ed9b9184687f0350584abb89ba3cd3b6260 b/src/libs/libsrtp/fuzzer/corpus/4a0b5ed9b9184687f0350584abb89ba3cd3b6260 new file mode 100644 index 0000000000000000000000000000000000000000..8517242e427587c8c3b999bd7486aa09931c235e GIT binary patch literal 491 zcmbVJu}%U(5Pd6!2h{}%5+el`hFB4`qrrqq<2PJ&CN{*}fg#xhE2XiaB)N|N!0+J) zz=AlwnFGOug7A`^-Ff?Fc4ihLavuRmo`d*}J3;CZUt=lF=brA5w9k~j#>E0D8HW$2 zgq~DQTMyNJ|CEAHUDbGC+ENmsgSRO2KtaAVw;`ADSUg2dWBqMb#!7(72*?7s8ZS?B z@!H-EJ8QVV0)fj-fmFGNj#`+k?^C8!SW1MLEtUvw_*ez!cCj_=rHDp`(Mu9P#qK!N tH(^PXcCGfdzF_?gni)qmVT1q29&z#_S6%e>{RqBy;G<W55^?BQ1i!WmVV?j1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4a3c9992ceb5151e25867043cff3b70b0615975a b/src/libs/libsrtp/fuzzer/corpus/4a3c9992ceb5151e25867043cff3b70b0615975a new file mode 100644 index 0000000000000000000000000000000000000000..79e710cf8e40cec0d5c8303744af561ce88c291f GIT binary patch literal 1528 zcmcgsyH3L}6g^HOk!%&67^+kej{&uUk;g9}J|R<w4looZEWw1j@Cn`c0~S7}fch6O zATHOj9XkP{C<PqlVc%=(+;h%NHp10q24Fgg#y9-tK}08jlz`9+kQYMVyrvRPaik+d z#4%<e(%P}8jhbLKI)_3creo?&^zjbKRsku&h7OjVADp^fT4_2Npf>|H=bRrR;!731 z<l~BA$?zZqT~4Zk915EeC&)A4DydM=6kW5t%HjUhX=%X;1Fi}mLOkZOhc?55|Kl+w z;?|ao_s#f5?y_m*j;TNyMu|ib(9bz8*b)ekfEm5LqmDeYro;Vl*k9*ugTN>>SF=4| zFP6p?`=_uO)o;Omrw5|v*C&U()mNoqI*MrK*SNLZFfS_j#jtP^c%H~rO4CKUic0(c spwe{{bNQsW20hIApf1rtVW4mHP0+@cE9%=uLA$4}mAGX6gHyGC0=)hY1poj5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4a5d59b9bbf454e26e5b8da35934fbe5e56cd5e3 b/src/libs/libsrtp/fuzzer/corpus/4a5d59b9bbf454e26e5b8da35934fbe5e56cd5e3 new file mode 100644 index 0000000000000000000000000000000000000000..d4a051a868e3c1e16d6e42bfaa0674e1a871b7b3 GIT binary patch literal 69 zcmZ?tU|<knU|^7_uI6B1FwkphsRjX;>S_iD1_nJZpcDw`fq({>gcCqv(duJB#hC!o CI}R}b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4a6bf78cf8487aaf4dc9504f580290c58cd3865d b/src/libs/libsrtp/fuzzer/corpus/4a6bf78cf8487aaf4dc9504f580290c58cd3865d new file mode 100644 index 0000000000000000000000000000000000000000..22d2ce017648eefe2dcaeedbb11687259838fae2 GIT binary patch literal 100 zcmcE4W2h<#XJB9`%H&9`2hu?B|Nnnq28JAc1_nkDmy>~^x|orn+JTXQu^Pw*D)48p kZU9L!=z?V1Ss3PUF#Ka;_z%*`1Qh=EA1oXDAr=U#0Vb~(qyPW_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4a8b6c80b64fa974b7a5f514ea78291aff7267c9 b/src/libs/libsrtp/fuzzer/corpus/4a8b6c80b64fa974b7a5f514ea78291aff7267c9 new file mode 100644 index 0000000000000000000000000000000000000000..93a1f6df4d585e0a58691dbcd60406fdb72d45c4 GIT binary patch literal 66 xcmZ3<!+-#c5N0)_<dr%Idp*O;{|tY>x3n<UR)at>P}rD(p}H7|t3kNB5&)5M4~zf+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4ace626cc3e3115df77d85a5c313b24e3a2d2695 b/src/libs/libsrtp/fuzzer/corpus/4ace626cc3e3115df77d85a5c313b24e3a2d2695 new file mode 100644 index 0000000000000000000000000000000000000000..9262dd3a8c0f75e7137ee70f734addb7f6e0765e GIT binary patch literal 2748 zcmb7G&ug4T7=FGaCY$IXBx&(i@Y9w}D<*6diyEN`R;$H;#e*mL3~{AP*WGk?6HG?3 zTSy3nq6YL3$ib`sK=9-ui2s16p7a`zLKAIc#^;&&X0!QGf-mgMd^7LQ=Y8j$ZLZtC z?QH{K-%dWwiS)t_s@#dR=J0$qf|=YP-O~`rbHrjY<e+#C%T7jH-5NY)sSa5G`9}WB zxrAGlLMC7LN7mYRDQ<9@6UKW(DS9(5d%$_G107}Hi3tW!(njx943l|&?e69P=L^-S zdv$WduF#alPKP3Oe4MXiYI(!#pK9F2M+7?hWxx&=G$DEuR5|V3M`Wj`!7!vgU?4Bu zPn(YDq^I5<=OoO_bW$|925e>!4RhV$cET{Vd?h7^ahf7wO0~{ZbnOb6BRIBsQ*Bp? ze*Cnvi_9f*4&vFM)XkBJIaf_cyy<J1Zt&nJJDE+IXy=5<9Aa07$by8HUOS#<kJHv8 z>Fcf0Ed}umRXEf*WsDioCn+Ge*9#)25TlDJY678$sFk@G1iFA<DBuB7CE$zk&DFcs zn1u~kyyFOl`-qyS6#s50{w9n5UMPIc0sHU0vjM_j7fJ4>AzFC?(OQ}UE0Cecv?#;` z7ZXdimAZyI_vwvrl{I%R6cUA<ZI!dd+v4eN%t=EsRzfWW-e@L;dxmLo^PY*HARR~v zAeJ6je{RxYM(dQE4A*itI8Jue0ymz6?!<Y0cTtQ5jGjOE@wb?h+42(Cu$97Z!4bN_ zN^o=rxvxZh)g)KQ8IvT1Jv<<DCJ*Sa?)hel-`<fJ_kT44ke2(6SwtqnE!OuQK45Yk zv^-&#DSEk>oV<XBwSnj_4CuD111OS%4uC0C6I0KOj;<kc!R}g|(Z#*pz1r#;Z8EeK zT9DW~@855(<3qO46rJwtpibY5fWF-y?Jz=PrAzMCiZw#cwW$B;6}#CZyc#zJswD|5 z#xBTRUN3N*t1vpAT@wQr&2Oqq+Cbxk-WOHb7sx^<+e<2B5cWH&_*ia}hAR0&CQTGS zr-fmJPBwgk6G0u&oRdw`grC@=b%&|GRqyJ4EIQX5WLQP$NL5d2R%<i0xW<*Q4rfUg z$Qy$dKvh}SH4Zw)E5J5BA>fn}bv{IW<>ZKT{NCd~EWSjS$AQNbJ)5u{VjvPiJ+ss` zk#zv#mK?vBP$bKmEyNNQ5_YiD-moa<=P+VM>6`Z8l#(O7d6wHicr@fZ=_Hu#8+rzO zh>i&>>2o6F8tj0L<A8GeHfey5@#_y|KP5ApZGUo)m_LqP4vlSR^iZaVXfa<(-YS=B zmGWhGuJ2j*U5xmSct?2`MYuy4835yWD*0VU{@qV&G8tP)+Z9hfweuW#qRg`r4*f%D zxeMG(7G{d``NTCm0`WjV;3En_9n7iLxcDUglpaxPPj?{yS-zV1-I?O&la=DX0C&&Q zPk;>o**rbIB#tx)#i1madF%&;lERYm8!3}|afT#9;?gzhYBI*8HbOfNcZVWv!AQV! zGo#4W>Ks`oCBmh`HZUg^M!OCwv?J03OyX6SHMU%rHQn!{xDO!B;cR&XFQUv&+2M=V zvP-cKdR5_q9z00y?}-loQIjXd8btaRz$;HD+?781@5M9uQ3ajSx^4P@oxTq+{`Zy0 dWyM2^<G2*ZwQ^jpTvk1tWe(CXTSd=z=RY*Lb%g)` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4b108731bb41e672ad5c98713f0250e026616d2c b/src/libs/libsrtp/fuzzer/corpus/4b108731bb41e672ad5c98713f0250e026616d2c new file mode 100644 index 0000000000000000000000000000000000000000..fe1d49fc5ef7907b6b6305393beb49d937043d27 GIT binary patch literal 628 zcmZP&X5e685C@}&{~3xI7#OM<GdT)4IXR<&nEHSTXaf+ubOVByFJF>r0R!Bvw(bxE zf$lD5WT>uYU|?h*Xeh)H*p;C>@IP+w8;cZnLor41IRT;?zaJTZKE*T@Dx!%~1|lKA w$%*Vu0;+LH1MPqLvict|3|^wDi1%e+C`pP3r>UYmj?{Wc4E@jj50n5R0FxqRp8x;= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4b1e095f3fec59b21d71f93800e6b57e3f70cf35 b/src/libs/libsrtp/fuzzer/corpus/4b1e095f3fec59b21d71f93800e6b57e3f70cf35 new file mode 100644 index 0000000000000000000000000000000000000000..4bcbcc7c0933ca9fe938690878916a3ea93a5af5 GIT binary patch literal 106 zcmdOk&ts5Gjn8CYC}QBKX8?o$|Nr|kFjQAFG%zwUFi6Jp03|ays*4$cV(Jhj4Ax*; nfPsONfkBo5sI0<xju6AY|G)nWw*#d(fOrlE0~1s=P+c_uYX}ns literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4b6d6914f78e22b64597583a9226be7526e73397 b/src/libs/libsrtp/fuzzer/corpus/4b6d6914f78e22b64597583a9226be7526e73397 new file mode 100644 index 0000000000000000000000000000000000000000..dcf800694f78612248a22a59eb2b823d6646b21b GIT binary patch literal 69 zcmdl#@jutg#D5Ggs~H#^q!_?J=^G=%zyA*U3=XG2zz!$~W&jBwvwDsYkkn%k22#Qd I4DCP;0HFL9y8r+H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4b8afa2b5592ef534919776fb45430967d939775 b/src/libs/libsrtp/fuzzer/corpus/4b8afa2b5592ef534919776fb45430967d939775 new file mode 100644 index 0000000000000000000000000000000000000000..606ae9c2567fd11efc6f8660ab1218f3053f8647 GIT binary patch literal 209 zcma$5@6TWx&%nS~l=@#dlK~9=|NrmH@S(UGC<<gSRD&4u3`_zb$^ZWUnX8K#Aqp87 z7F&Z^0w4ixpi-bppn7$vG(-}};bdZv1<GJCa87Fvrhy6!U;`N#92ly#!3LUC7c+qj YRcL2mP?^I3wE^f*1OOU;FvhhS0C<iqv;Y7A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4b8e8b45144512387e4c6a3fa6b131170564ca57 b/src/libs/libsrtp/fuzzer/corpus/4b8e8b45144512387e4c6a3fa6b131170564ca57 new file mode 100644 index 0000000000000000000000000000000000000000..93a7ac38a0e0fc68abcca6bbe7d28ebe570c4266 GIT binary patch literal 4085 zcmcInO=w(I6h3c~G%pn-bc&#@_=2^OG!1F}K^kM4MX?m?&#IudFGU6%s7am4RNE^} zki=Lhg@U+{SqS1HJ68okTDlT9g6^e-A~?8kWg?p9`hDl#_ct?Xb<x9{_wLU*=bn51 z=jKf1Of3#YDpIR1h=R5DsE9Elfm@KFdT_wh16`9p73Tex%yKaBvOEs#@s-QX9r!A) zfI*DCqkPq>VI^aKJY!#p&z(MWrg0=bJ0Kx>$Rf}MG5~4$BPRoq&NM1H9AM+bcz9Ok zPuahf{hXJ#DJx)rcbSaj`r5jDiY*X$=*lXPLHVmd3Z;mAvL;e02#&i{sv<AQT4_SU z1s-GNO$n`)X^}SGU(U|goEB6~&<B)a+%@Y^)tIVpts9tOFYbi@ie5R8h9M=PjGHzg z_w_a9*f8VVm=xLJ3|9|=b188IeNnxhx*SR=+0(CqXk^o`HssQR<Ko`_+69saHgReN z`<xEe^)#;o+=Tw2KKg`|2EBL9&;)oC{@E$xSFQl(0==o=(aV=@4}J9i!B^fAFkudU z6LFkkxLtGaHQ8u#7hXpPa^}JKAXHnH-5FtKNH53sZe-82lhM2sK#k`lNg^}3kIs{5 z)dPW-Js1Jg$fYG~6Oy62`GP2cM2?`omqCoEAMPVI6nKB|M=Em?y>;{5N<4-LMFI$F z6<bEw5WoqxtMj;m5xLi98L#p|a8oe*n1pg(;g&nSVj5oY_8@n`@x#p4_BH9``H*Np zMN(do+aU2*Ef=l~5pF7o95E7?`mAk?EUn7wsvJB&ip!+ow8>*Z%MYOkzfos__#DDj z%n(y#_oV3aR+@asU<kj%8~~2Vlp8FB$l2AJrk@Kg{gjI7Ct4gh%Ph&%W}6I_Q1y7a zSFB4Q;6&rdrAn0{$HkD*(zEHLKa2%HdZwG=y_sIFmwdmKfKiAIns`j)mYP_@6DEGz z$LTL>5MbCUVgct!W{lD0`E5x|j%FsxOaL-Mw$L`Z*f!Uxqw#MQ8XD-6cno&)_&Z^r z?{Z-65o`2%K=3&xVWZ00s+L8HWnAQl`2b$}B9`{cbNCV9r3dlRTx}r7E6n4W*uiWR zO-VFYn}QWw^-^QFAccd;1i1kA$?mK6#`e~$I)kiwm0gieWn;2li8t!;xX50y2(ve= zF=|hkVbGZK4D<Kl6C3h+e&^wM+yFpqSf;KyI9sC6z_;hFDf_kp=jw2K@eGufN4KO! zrV8~_NCuN}M>2S-GZ|#@D0`Srd!doA&r1JoOp?gzk_=8_8~ndPx}iras2KwTjrVNm z!gU93_nvR7p}a^top6Xv`5preQb?2$7jagILK8Y11Rqws*gq;!Q?A;n?X4EgimfNL z>+v25#0cvetNbMST~V2(;Rks0G0HiAmOMzA|I6JAIQP_0PA&8}vv1hlF!l4K<DnAl zaW*Jvp7E;Enkn*AE|GX1-Z`E}o;{IE@3N<t2u&KsE4cr*D$yC0p~vV@B<5-jwAM0$ zjF4KWF{1Msv-rd3$a-*UXC}4+5EH)@30#>Nsb~mcv7-roi8qqSS#+yX8KZC0#M42p zX%&3g9^>O7kZp@eSYoN|a<~(FTCuL5!YE$>*fQsm4rT=iX@f|5DC(neaG-Fbxq56C zLO8nIU0+%fvqU{03aAGHbTwXu0$IM}cjhiMsI=Uj6ltp$=#YzZ25<)XSn;j>L#N3s zNf6j{nOy07E)Q0_LN4RvhH3Iy1+Vuc{TJer_##iIzqpn>o}5Kx>Fjp`d&{4FCn+dN zxs;1p)g!a4@Now5@7wR79n5t<Y!0DqJL4U-H+5JHq~)06?FunY`<;_Oa>bW81u;Mw z^yPXV@J}D-?U=InE3}*w<O6tQAc?c!kVZzD5)!dZ{j(h*`vJJh*9c4n6r2n;`{_;7 z)5m@eWw`n)H*V<Lp@0#?2m+|(++uP*wR2KUgc_7<(ujpF$GH*sUA^nG@uofen6h{_ z!nJhN<&_JPKzdy_Rc6w+>v@$Y{I~q`EBXgbqc@}T=h+1}z=rc5Uy{3i_M<!pvWpbH P+x6-gfM(KK=otPBHIbqg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4b9f834b48b7fc4252cbf27c7a86e7438b11fe98 b/src/libs/libsrtp/fuzzer/corpus/4b9f834b48b7fc4252cbf27c7a86e7438b11fe98 new file mode 100644 index 0000000000000000000000000000000000000000..6eac4077b3f18bcaf80864cf20157093d6921e4a GIT binary patch literal 163 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M oSquzw7}^;az_Pq>F|Zj#5)H+3gc!mhios@qOcZ9|075tb0G0w2kpKVy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4bb28aaf30e244c6270e338f040d5f0328680be6 b/src/libs/libsrtp/fuzzer/corpus/4bb28aaf30e244c6270e338f040d5f0328680be6 new file mode 100644 index 0000000000000000000000000000000000000000..dc880ba56c3225637538dfb212b1ca01d87f7e84 GIT binary patch literal 108 zcmY$>%VUs?XJB9`;z-S`2hu?B|Nnnq28Q3&3=E763Sg1yVl{^9VnK%L>O3%?lfi(2 p;U$#GAPZCnl%B)OV8+0Zqgo0UXJ9BbOpVV?%>|-4K#}%p1^{_S6#M`H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4bc35a79dc6599fc0cfbcd77712d7c98c253222c b/src/libs/libsrtp/fuzzer/corpus/4bc35a79dc6599fc0cfbcd77712d7c98c253222c new file mode 100644 index 0000000000000000000000000000000000000000..470dfc7c7cfd565298f8820c8bd11758bf0962f1 GIT binary patch literal 353 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)X|A0mIK>$P+L~<aQsI340K>UW{IYJEK z5Scj)$AOGF4DG@|T}b*+)wF|@Ak_Q^s%HSY18l@OFiD&_l-h;j=GA1mc~vW;I>Z<d GIUN9O7dp)V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4bf138f9eb681100aea715ea17431f737857743c b/src/libs/libsrtp/fuzzer/corpus/4bf138f9eb681100aea715ea17431f737857743c new file mode 100644 index 0000000000000000000000000000000000000000..f2a5b2da24df03428b61fca524228689df9ba3a1 GIT binary patch literal 140 zcma!NWMHs}XJB9`%H&9`2hu?B<Nq&)Iv~wd@ZXn#p}Lx38w3<E0TlxQgk<1{3WEfM v83ec(s*6D~Xa<2aF#YFbV31`fo+HG-AO;d(V3@-s0HSJum?^f{0c<1yW{e%l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4bf43cac903b57260989e5fa2fe06812eabbc932 b/src/libs/libsrtp/fuzzer/corpus/4bf43cac903b57260989e5fa2fe06812eabbc932 new file mode 100644 index 0000000000000000000000000000000000000000..58e32100275e48b59d5ad082a73b55dca660d617 GIT binary patch literal 69 zcmZQzV0T9b3_wsEUtP~=3}hJn{oc~TP~8&Ez{tSB+RngO4U&d{>SCZ6!<~x%{}^fj D5lav7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4bfc7f56dcd681c4cb0ac7564c9202ecb957c411 b/src/libs/libsrtp/fuzzer/corpus/4bfc7f56dcd681c4cb0ac7564c9202ecb957c411 new file mode 100644 index 0000000000000000000000000000000000000000..4ed8edec8aab0fae0156178db90a653da19db2c0 GIT binary patch literal 132 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHZF&?luMnMh0n+`s!k!At1V19ZWMY lSVL(BP6h^9hT=IwV7_oW1H&8!fo}{P#z3vY3^EW^)c`_;B9;IE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c2efcd1ba3a6c5b4363ccbf8ef4b5b9b1703a9a b/src/libs/libsrtp/fuzzer/corpus/4c2efcd1ba3a6c5b4363ccbf8ef4b5b9b1703a9a new file mode 100644 index 0000000000000000000000000000000000000000..8904492efde79944215062efa669a4fa3d4f8ba4 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5D!b~8z2_j$sqCx?v#-SRh S0<66btmi0RU<TCjj{yJ|S~1E1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c4b0bc074912f4c7b56b8e410e182f2337061d5 b/src/libs/libsrtp/fuzzer/corpus/4c4b0bc074912f4c7b56b8e410e182f2337061d5 new file mode 100644 index 0000000000000000000000000000000000000000..a269b20b28df2299b6d2fda421e809eada24dabc GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5hU6GB7h=n4F#MG46<N3 zhB*xFKtUiW45T<f3fjH_iT^AhCI}EP6rzYoLxmu!89)w3asvZHXKE%#J=6_VK<E1a O75=vZ5^!gLbOHcfK_ssL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c5426c031fcd5aebd60c559cca78d725222b4d1 b/src/libs/libsrtp/fuzzer/corpus/4c5426c031fcd5aebd60c559cca78d725222b4d1 new file mode 100644 index 0000000000000000000000000000000000000000..0ed228fb11fc50120f379b640edfa2435daab2bb GIT binary patch literal 256 zcmZ9GJr06!48?y0qJK0dL}wBw&*23;17TnwE(A9)fsHt_a|S1m;yIih47G)gChzs7 zef>ye%RK?g++`=t8l%XCb6u-kPla@1*u{9z79p65_zra1Q;v`U9dW&R(*W6<cq?AE z{*mRbp|hf^kkwC*K);d2o&!RKv*r|6<@)9+pmAj6Ww-R0arPYBu$X^a+!KHFe6@WP MPy2_!*O@y00~EqI@&Et; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c63c52327e53cb7ec69e322c3e5e4d16d127c13 b/src/libs/libsrtp/fuzzer/corpus/4c63c52327e53cb7ec69e322c3e5e4d16d127c13 new file mode 100644 index 0000000000000000000000000000000000000000..740b379f8a3c8a3be9cda7aebf41568e781efed0 GIT binary patch literal 116 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vvW?%q`F#;h&bulADHIN5l!bl(kjv(T2E=Xqo UQ;<1OlNf<gKmb$*Hm15708Nk+)c^nh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c6e73b844b72584d3fd49553db60e9a8c8af22f b/src/libs/libsrtp/fuzzer/corpus/4c6e73b844b72584d3fd49553db60e9a8c8af22f new file mode 100644 index 0000000000000000000000000000000000000000..b8f944112ca3c2a070e380a1970905cac8ab7efc GIT binary patch literal 96 zcmXreW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*fMCBrgEdr!ffK|4 Xs;erV!2uP$Q=FR0&>-9nl&A&(eiIQ< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c8426e1c7917411b91516c601b15c344c5adbf6 b/src/libs/libsrtp/fuzzer/corpus/4c8426e1c7917411b91516c601b15c344c5adbf6 new file mode 100644 index 0000000000000000000000000000000000000000..02944f2806be412a5d50f154e8404c9ffe841f7f GIT binary patch literal 2201 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*Z z+;6OMFg;ME3=B_U%HSf{4aKVws3jU=H-x003xKW$T3!jU78-I4|D_lh96;d&4ml2> z3ibyKK@1H4AwU>PgD8-qK^4B(L!W*D3XA8_C<W&wjNAcCa1>=30tpsjDaaNain)kQ z-N58sg|DQ5MfPZsF<N9m(i)J2AnfH3Ji)+}A?JnBA_I|oA;AX^P2^xADSXL@24wRg lY-HON1wb`kYY(XA69Afya57LWTp>gCOGwoSmS$w&000RAj++1g literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c8c516495d0ebf82ba2e9cf13e50bf1870dad2a b/src/libs/libsrtp/fuzzer/corpus/4c8c516495d0ebf82ba2e9cf13e50bf1870dad2a new file mode 100644 index 0000000000000000000000000000000000000000..6708d6301d4b9ce0e8f9f96b380b65a67857c27a GIT binary patch literal 173 zcmdo0-;V3$%W4J&hHw8Jq<|C{$Q1*rYDOTz$lwkVsV-(@s0OM63PH$dFayYjAc#1e z`xK;ykwGC|FOQ)n9>^|A%~a!HVBo4QRs))43o=X{qy`8K7#LoH8Jr9ZvJ818ML;7n J84h3p3;-e%D7F9q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4c91acd8996e220bd56bd35f88fe8552c233ddcf b/src/libs/libsrtp/fuzzer/corpus/4c91acd8996e220bd56bd35f88fe8552c233ddcf new file mode 100644 index 0000000000000000000000000000000000000000..0221b96974034647d01cd8fd999977dc8523233a GIT binary patch literal 440 zcma)3F;2rk5F95I4i!=;fXbmT0ztZjg2r@dkobXR2}?vWD6yePR>Dn68cLqP6R7eI z_(48EM>eyUoP?ByDfaf}W_L#R{7rWk3jwgy<cJ4x{DX>2U_DEx3Lwcl@nywht%yt{ zR5URE#EY9TicQQl*8^aW*8`DnA=kfiFvVZ!KAJ$Cb{}z=@}V4tdA$~>>J1&7TjVI2 zQ5sHnuHwLQW6ZsBYGbiTI*g3tlxn-F_lhDP;Y2RD!IA$c_?Vmv&KM&L>+KkkbAW|? zGFP()dguaG@tmi(Ei$yR92;Ev2FNR$A;iA1M^-!}W$_D)N=n>oY+E;f!OQ&liWO^0 Bdo=(6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4caf611587e949b11d2873a26ed09b9482b3f893 b/src/libs/libsrtp/fuzzer/corpus/4caf611587e949b11d2873a26ed09b9482b3f893 new file mode 100644 index 0000000000000000000000000000000000000000..fe03479b0efc1a5090ad176b8a3cfc69918e4882 GIT binary patch literal 408 zcmb7Au?oUK41MXK*G+V*bam|1LFl5;N$?vEhYo^>Sn6`1-TaCEi6Hn>6&yTsX^{#d z7`P<7JaX?v6EM{P_G^`$xN=zgkm_|2=1G{GAkVY_lC~kgj}Xk`iRUm$u9+XxHV98U z3mgVaYUE6n#k5EnAqcH7c{LQu=nPaC;9B3IVrEA5SOy3@81??4WYB<gv}N)CMc1}n t@|spsrVp!4k?EZe<y`ej?izoMf-k<~u51MgnfZB%#9iWc;q?0w)e9)5XL|qu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4cd6f1e44b814d74bc5628a097736295f7db45b2 b/src/libs/libsrtp/fuzzer/corpus/4cd6f1e44b814d74bc5628a097736295f7db45b2 new file mode 100644 index 0000000000000000000000000000000000000000..10d92719062af471287e649ec78524fb19bf8091 GIT binary patch literal 1078 zcmazQU;qNf4U9#pnH=>XHUq=||Nng%7^|xp8Myy|1@=Jzn2n$K{|_YJP&`M7AsnJ| z4nsQw!yE>Nc3}n%AOxBY7Ww}lBn?+{9LNER!_<J}fB>&K3}6%ffz&{a0h&ODImqr| zI0v?uICDs{iwnc=V4Fa`CdnKQhU#KQU?5@%XC!m%p@!oRLl%^{pq<|#@s7*Qu(UyM Ue<8>FXgb814iPySu7sf)0KI>%cmMzZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4cee4f3d2d5cdca267340f62aba696d2e2b8fbc4 b/src/libs/libsrtp/fuzzer/corpus/4cee4f3d2d5cdca267340f62aba696d2e2b8fbc4 new file mode 100644 index 0000000000000000000000000000000000000000..35fe46440c1e5c8684fb4648826a9770aea3e741 GIT binary patch literal 290 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zq( ziDCavhB~kwkPwieW(Q&*gZ<bnV`2c>22^gA0tU$H8H$0to#|<5F>uQ`pq63k`TrlH t6{H6U{)0h%3j@Q$k3c8G4S>0JH_)|EEnr8hL9}_UgwQ~8Wu*>C7XU-RKz;xK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4cee5e4e9f91bbb7378f83da87e3cbcdc198a790 b/src/libs/libsrtp/fuzzer/corpus/4cee5e4e9f91bbb7378f83da87e3cbcdc198a790 new file mode 100644 index 0000000000000000000000000000000000000000..d1e6ae6b37884ebda5d6f3d0ede0ed62ecbac47e GIT binary patch literal 69 zcmc~ztxr#lPtMOPDay}@Ps_|n{V%M*00m45)w!i5i6yD=1?BC<@zwPl?F@R=zZn?n NTVP5UJXfx)1OOb~6#oDK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4ceeb92459a82ce4a6045dd52f7a9523f38aea80 b/src/libs/libsrtp/fuzzer/corpus/4ceeb92459a82ce4a6045dd52f7a9523f38aea80 new file mode 100644 index 0000000000000000000000000000000000000000..c55b63ec7ed62a34d383a191c18c6763a590e40e GIT binary patch literal 140 zcmdl#;Xl{Qm(>gm4FCQ+NC7DzU@TT(0E#d&FvRQSF_gpug^DscQtQEz3=IDneE<Ki zhA3djjxS3Di5miOaZYJ!d;lj<-~a#reHj=)YCvpX1_fm0IUrLdL8g|brp6a=GBCUZ IvWqeq00Gw{Bme*a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4d054e710f51b8c97c7a22cd1aac848aa2006612 b/src/libs/libsrtp/fuzzer/corpus/4d054e710f51b8c97c7a22cd1aac848aa2006612 new file mode 100644 index 0000000000000000000000000000000000000000..0bc55d6ff6adcb622ad25f4c6b5aeb6f8a834014 GIT binary patch literal 1504 zcmd6nu};G<5Qcw;NNo^9MJI-+RRlr^H9|;Cz`z4k@CKbabbz5S5eXI$3k!QU9)giK zsk-(J5CiV-xUnN!p{>e*tG2dt@%?xAoqH+n?|J}+gL?mw{~S`vE|6t_&>P5Zh5m9+ z8C>F2Kj|Qfa1kO|fArEDC?#Upm(77b-YVHMl3Li&553=gZ)cqiPl6~(2pT-vwdfd& zsD<1DHWDX6ODSXcYHTeub`CEsWnxsD$y}T(A3}WOWe<ff-y)%oc~Wd>qumkJg{bo* zP@8b^HRmQfBs5u36a~zWilz?4IanrJ0s&fJMxS5hMs{65hxfBE-sWrVp!ovO(MYY1 zFkdOR)MA5OC_6{`-^tbijK?;R<z}li%$SMufrTwWiHSd{(n)odSZI3VE#h~%tH;2l zkg81>!pd;*9YUw?vr>a1NR*6*P4$7DCcmb(pr{gO^7)`}^#Ii#+)8^&DukqLjC1#@ b{$`7HCGaLcH>cCK<Wxc)M_2UDi!z=8&Qbxm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4d1c477534c42641c9b0b9a49f6c057e1cde7db4 b/src/libs/libsrtp/fuzzer/corpus/4d1c477534c42641c9b0b9a49f6c057e1cde7db4 new file mode 100644 index 0000000000000000000000000000000000000000..1f3076e4985d86ddaef2609fe796cccce5e58c34 GIT binary patch literal 106 zcmX@e#PG8uo`Hd(D3c?#9!LYh|Ns9z7#OOn85kIWJPjaLEM{b=24SEW0|OHfSu-#s h<bgPx><qF%bq4J{bA*62LKTB10|QtENEL%)9ROzw5uE@4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4d49541f67c134d92a2703fc1e3637a35be8135b b/src/libs/libsrtp/fuzzer/corpus/4d49541f67c134d92a2703fc1e3637a35be8135b new file mode 100644 index 0000000000000000000000000000000000000000..821f6a3b07896c4c6d877efdd104a1ba12d75ab0 GIT binary patch literal 79 zcmYe!kFP3;FJjPQVBm1AX8?o$|Nr|kaDkbk3<iBb;K;zhSO^qgVqmCd21`^|1BJjW Npiny#m>D1c2LPIp4xs=5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4dae34734a9e1f19378b8344110b583ee40f4e83 b/src/libs/libsrtp/fuzzer/corpus/4dae34734a9e1f19378b8344110b583ee40f4e83 new file mode 100644 index 0000000000000000000000000000000000000000..b080229baefcbc50871f0e0039a245b4cd443501 GIT binary patch literal 69 zcmXSpude54uV(mN-@@?sKl}e*42e1VIr$8zz)Po^fq{vEp#?7d@Bjb*AP!^ofA(Sk D#2*q5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4dc314104fbcdd1e05b81d8a76db145121b1b464 b/src/libs/libsrtp/fuzzer/corpus/4dc314104fbcdd1e05b81d8a76db145121b1b464 new file mode 100644 index 0000000000000000000000000000000000000000..59684cf65d47ac5a71fc2facf74b9e09b9d50d4d GIT binary patch literal 145 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO esNH~}4y*?x#0DZDKn-Xd0|P;OKvq=$V*mi!mnL@r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4e192a34709c41ec0ff89952d29d77143563f3f1 b/src/libs/libsrtp/fuzzer/corpus/4e192a34709c41ec0ff89952d29d77143563f3f1 new file mode 100644 index 0000000000000000000000000000000000000000..0ff40bb72fad969a26cfe95c876431e374fb2062 GIT binary patch literal 491 zcmaJ-yKcfj5FERSNrmEy2uoH9ic~?+kpd(tB!7de6mC-FK#Fuypg}Y=lt}&-@;&^3 zLqm?)wFy>`m||}qvva!(=iDR(@R0>?bG`&q3BEV(e!sUG4j(m-rvio<Pa+y?JlNsZ zZ%XXK4B{lLyix&Hm~<3ngYXP2yQEXJ6$4t;Y}_GI;eP(0m2d^*0lbKjUy-zc(bu?w zhhKLduu~s!GFDxs&8(?Qa?)M#gP_N6L$piD%Enww<~ys}K)zNiX#eO(F2*>%O}E^K p6ry!?<@EU-Q)d649tS~riI@7=mrJN(X>MI2;(njqe7Sa8hZ6`zWkdh~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4e87292c228f8738cbba6e08e7309aa7be7903e5 b/src/libs/libsrtp/fuzzer/corpus/4e87292c228f8738cbba6e08e7309aa7be7903e5 new file mode 100644 index 0000000000000000000000000000000000000000..2ae290a61cdc6b245854e9158f3b3fdcccef7472 GIT binary patch literal 438 zcmaJ+J!`^H6g^2Cp5P$OTu=}Pu^rsIckwrbP#!g)APMb|H)QdHLVkhd2l<OS=x}>( z5-GOm9qzrnd*1nY_JEfNK$;j^aI)kC=jOtVN7(2yUVhkUy;#L>gKQB$t-HV@0>fj4 zebYk@eZcOUt?)46(C@4ii8TfGiqX12a_(LWN^N35{g8wvhlsoaUmFqS_~m)O&7;iJ zs(Hq>mdTITJPH_Q?$8kWeay;pu+5mXRT%aGAJ~@SKM-4>(lJ2Dl%tAk=T9#B>D5|0 f9??c`a_PgxPm}#$E(KiqnU?OJA9@H-I+^|eq_I-L literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4e91084a57241b0a79a1e1017e469635285c8fd6 b/src/libs/libsrtp/fuzzer/corpus/4e91084a57241b0a79a1e1017e469635285c8fd6 new file mode 100644 index 0000000000000000000000000000000000000000..5a6a3697077bc98f962f05aa1de1528bbbf40ee7 GIT binary patch literal 69 zcmdl#@jutgm(>g);2;I27#OOH85ydpw=*y>K?I768LJtpfns1ToCo3padkBSDFhBZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4eb13aab6d110ba031cf58579a3aa65d196a177d b/src/libs/libsrtp/fuzzer/corpus/4eb13aab6d110ba031cf58579a3aa65d196a177d new file mode 100644 index 0000000000000000000000000000000000000000..5b15d2a05f72788f119d31be8cc0a3e9285b4227 GIT binary patch literal 198 zcmX|)u?hk)5JX>WjGcJ3V5ObCAK^CyixdZP$cc>+&g%S$e5csO$#S}|JF~OHPS|%m z0?@ZUZiT8+$`Mi$ottnv-(t8d@M|1A#i(q_C-ag+vk~}e9^V>6Wxq$z_R$a3Q@G>x h{vY7jm@{1+)@f%u942H6(>bq9YZRF+3uaO}#xMRQC1L;o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4f0d2ded2ea1fb09399d5baf8d0426fef5ee932a b/src/libs/libsrtp/fuzzer/corpus/4f0d2ded2ea1fb09399d5baf8d0426fef5ee932a new file mode 100644 index 0000000000000000000000000000000000000000..aaac3ff49299397e44f6d5d852adcd0fdd47e520 GIT binary patch literal 92 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M V?JNv)I2iu@|6k9*1Q7<4)c}8)5uE@4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4f0e3f83c981ba7b753340d23f7f5543ddb36ee5 b/src/libs/libsrtp/fuzzer/corpus/4f0e3f83c981ba7b753340d23f7f5543ddb36ee5 new file mode 100644 index 0000000000000000000000000000000000000000..bdded5ea4e15f83b16d1710f6717bd8ef7133136 GIT binary patch literal 37 YcmXSBfB?~IIH&@#pu!Bb)zyZX0I>xL$^ZZW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4f31000f5101f0168e01a3c0f98d5bcb12300e66 b/src/libs/libsrtp/fuzzer/corpus/4f31000f5101f0168e01a3c0f98d5bcb12300e66 new file mode 100644 index 0000000000000000000000000000000000000000..1115213f962a49d40b7959ff6b5bf5231c2eefcd GIT binary patch literal 69 zcmZ2!@}J@Ve_;j~V1zKL86~S381xtzfcy%m7)S;v{`)V(|L-luK*2hobai!g;C}$J C)DB_* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4f5021168e063c367a32ba82304c09fd8144065e b/src/libs/libsrtp/fuzzer/corpus/4f5021168e063c367a32ba82304c09fd8144065e new file mode 100644 index 0000000000000000000000000000000000000000..5a2d223d0c69d96a24fe52bae6bdb601f5760c04 GIT binary patch literal 508 zcmaKp%}N6?6opS_3dWtZD+Q$yS7Pe}h<i6af`mbW9Z)F^y66bmSc}jnka-E;$d}NC zg6X-FK?_pPF!{OnB)MNQRKTePFe$YQ?5X&PsydGxF$rhyi|adQ$D^C#vhPR5V7v+J zBG*jTn5VYKP6BxPU=tJ$V-jZ*luifC#Y35WJER3_%86>upvRS(vBsmP;Mz0b`SCqU z2_oaac9J*S!VxfA#Juv7HT)T)7|Xio^Xsv!gFS{itV-h*8*iLM?&gm<zy)vu*za3x z+ckXZAHE0jaThtABHz^t-_I2!zSi@HZy<b9QIhfD<(F?!<ulJ0XtRcRS;N=fQ{CmN T7PIECv%a2yRkK)u=AN(wDWPG4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4f516f048cf57bc27abda74d5ed7ed85ea43806d b/src/libs/libsrtp/fuzzer/corpus/4f516f048cf57bc27abda74d5ed7ed85ea43806d new file mode 100644 index 0000000000000000000000000000000000000000..5aa3538cf8302b7a0e2f3ec806e6c9a5e1e27975 GIT binary patch literal 69 ucmZQ%C}a@${$GNjn&B1$L-m^KdLRS=m&$5}RSXOYdbj}t1A{0?X(j;CoD!}8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4f6c0d8cc12b50e35b0007d6d24a7320c22c92e7 b/src/libs/libsrtp/fuzzer/corpus/4f6c0d8cc12b50e35b0007d6d24a7320c22c92e7 new file mode 100644 index 0000000000000000000000000000000000000000..5d5d3c79452e508e9dacb92e8aecc8530d0abc81 GIT binary patch literal 103 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5qKUU|<BXfkbsNBZMEuz;F^M!~_&#W?=l!P;J0a b&GqsnP$>|6=Lb^^42B^6#Ss0BQ2oaMA3qPz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4fa8b27a309641f206e149b137988ef92b57af15 b/src/libs/libsrtp/fuzzer/corpus/4fa8b27a309641f206e149b137988ef92b57af15 new file mode 100644 index 0000000000000000000000000000000000000000..0f68738f9a8a09fd7656daa5dd39175e77812a29 GIT binary patch literal 1328 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgba{v8zkOGS{D1Bon28u9(ctE1M zn318{VJ4G0i2q+W6GSmE+CcO(RD)Ck4FVzv8!Qdg1=0yJ8w{*r3{G|iS+Kz-bA-TR z!tD$U1{w^EvOpdaOcjFwkmXqC0tJjn4paj<P#Nk#FBhOXMh395(&}Qck>CHnsbFB3 z12kgax9<!b#z0>PGswVA1~C*s&IP&;=Iv?@xYZ2|4PfP*NE(331)*GUD4{3^8U=I# zPzex7VuW(MRvu8iBpxH|8Ge8OW>C!GKo1JA$uMHDhRHys6HvGe)-YihO()>2hMIT& jK=K+a%a9dDz(@xdV5DRsJgEdyB2^g9Y3=zx^FIRsMAG13 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4fb887ac3b5beb5ceb252e42134f064fbc645234 b/src/libs/libsrtp/fuzzer/corpus/4fb887ac3b5beb5ceb252e42134f064fbc645234 new file mode 100644 index 0000000000000000000000000000000000000000..09cb6fcd74c3034d87580fa07259095ff0dd0536 GIT binary patch literal 39 lcmXSpude6N)oo{BtY!cM(Q1aj4As@y)lfczuC8cxCIGZ82x$NS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4fb8accd2d976661f63fd26140a3f6b82934a253 b/src/libs/libsrtp/fuzzer/corpus/4fb8accd2d976661f63fd26140a3f6b82934a253 new file mode 100644 index 0000000000000000000000000000000000000000..7237c9f3a91c7794d0ec22ff3fb0063ba970aad9 GIT binary patch literal 79 zcmbREe}D7K|Ns9pGcYhD=NA>|>oPDff{+LUh7eE*Lv=AD1T$2FxJ(udY#<gCRRaJ& C)DUt2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4fba302e5ab0006c79bc187f414c1f2508c21bcc b/src/libs/libsrtp/fuzzer/corpus/4fba302e5ab0006c79bc187f414c1f2508c21bcc new file mode 100644 index 0000000000000000000000000000000000000000..4a3ac61cf094d4e890c862a18b05296a38ea2502 GIT binary patch literal 172 zcma#o%M+-HXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keDNp8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+pW#Q{>>_6<nXgIF+wfM%y=a@2#>{I6o*`2U~5k%1vGrxc5sKLi*! YfK~v3V)1{*|9^qbV2Dde1&eS10Q>wS(EtDd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4fc051a19cebce0a9fa46fd3086d296d1ce4f768 b/src/libs/libsrtp/fuzzer/corpus/4fc051a19cebce0a9fa46fd3086d296d1ce4f768 new file mode 100644 index 0000000000000000000000000000000000000000..a72fdb181edd0539db5cc27addf64d4818fac87d GIT binary patch literal 46 tcmXS}W(a)A@Uj{Pigk7K^5d(E85ydp85rg;FfcJN02z!73<A~Fl>m%E4eS5_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4fc0c97126d20173535a93372152b8ccc353923b b/src/libs/libsrtp/fuzzer/corpus/4fc0c97126d20173535a93372152b8ccc353923b new file mode 100644 index 0000000000000000000000000000000000000000..e27897ab0f88cc5091a8591b8efbce41b9917a6b GIT binary patch literal 116 zcma#oD`P2%XJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;!zJQZ~K^7?TtD$&~ q5JR{vSm_*wb|4KTB^X|T^dSQdunLeQ1A_*TEGSA%OD&FPs0IMdZzlNw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/4ffa879630136e59cc52c1bdf983dc82627a6ab5 b/src/libs/libsrtp/fuzzer/corpus/4ffa879630136e59cc52c1bdf983dc82627a6ab5 new file mode 100644 index 0000000000000000000000000000000000000000..6eda41f496b607ed39ac3ffa673e4376f9663b57 GIT binary patch literal 450 zcmZQ%5?}y=|H7FJj9|w9>i^XYzCb49e;`@y4rJK^>0(BP>S~}MkO?NE!3-c9jN<k3 z7)pvVISM#ozzfD8S_e!6#WbozAjWB9amE)A0C@n@^%T1SWWXFDVAv@z2)8pZsLTP{ z4+1Q}5M+PwpW#0P!!@uaOkiP#mmm%U3s?w2KqMjj0{vD-Sq3&xcmsj;e=tbiU(Emj D;jlT- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/503fa851d5bfe40f5a30ad59c26118790cad5e01 b/src/libs/libsrtp/fuzzer/corpus/503fa851d5bfe40f5a30ad59c26118790cad5e01 new file mode 100644 index 0000000000000000000000000000000000000000..7ec917abf253b0ccdc0e202a9fc5bea0c8f3cbf5 GIT binary patch literal 966 zcmb`FJ5Iwu7=-6H7OXo&DhkWUfKo(>=-~<x+`v_e6i@`JtOONu!x7SP2yTON3<{KG z_T@Mj2_vzRcfAj<zkg<`36>8PfW=(Ro;b1@W2S)CfcORId+`s~?15`s`kgVd40Vd~ zFYWZl!`0*tmP8gaGno79w<PBcQh{T?+3AONWp%{v1j`yYTk$molwu+EniFH#^=usk zu^)c~QDiivKwb_wH8y4}5i%=~9NPcHN@Rbh=Et%pM9*XG%ait`EVo`pI0<mw0_Dxw zp2iamemfH1t_dP5SdkCb1dbBv5ksS$DO|OI+0aj;fZPSEQA?1Z0QGu)F?;$ph7PY+ zY3|(o9C$aKw-*RA>n(E{%l&Uyaj??B(s*n5^f%a~4{U^PkB|_2!&phqn7>mqpzD*f JfN8vm+h1>kl6L?A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5066166ab1196da51226b9c132a6f0c7c1cbe22b b/src/libs/libsrtp/fuzzer/corpus/5066166ab1196da51226b9c132a6f0c7c1cbe22b new file mode 100644 index 0000000000000000000000000000000000000000..6d42b837c78481e364b58f8549040026a2e78b38 GIT binary patch literal 211 zcma#o%VVgCXJB9`%H&T~1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#zf!V-7<*Pz*>4 z11S!WblW!|Q4eAPwWelr)Pv;yGgL8f{QnOWf@$WEWng4rXaE@lVhMnZ0@}gB$N;nq kX#Yuct&T9g4A``SjR9$7DE`m*|1Z$J3~?#0K)1~S06UB?5&!@I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/507021a3175cadd66970ba070a29878ed6520f23 b/src/libs/libsrtp/fuzzer/corpus/507021a3175cadd66970ba070a29878ed6520f23 new file mode 100644 index 0000000000000000000000000000000000000000..dd143d429e5243fbdfab24ac1f6106407a417a6f GIT binary patch literal 83 zcmdl#@jutgm(>g);2;I27!(+a85yb>I2nOlAhrim)gTd|Dv%HmBrr6A1d9KI0E1yY LP{y#D!4Luf-9Qqp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/50bd31f8a41c5c705594112b9329b6ec3eab6f10 b/src/libs/libsrtp/fuzzer/corpus/50bd31f8a41c5c705594112b9329b6ec3eab6f10 new file mode 100644 index 0000000000000000000000000000000000000000..5e9a1299e84c5d26d2f28138bd21864616035691 GIT binary patch literal 66 tcmXSxVSoURc832g|5+IRGjX)EFjTix1BJH$aXSMehzY{z0HkJ1CIGi`3w{6q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/50c152827e67573a02deb9d9a30329e2d55fb74d b/src/libs/libsrtp/fuzzer/corpus/50c152827e67573a02deb9d9a30329e2d55fb74d new file mode 100644 index 0000000000000000000000000000000000000000..3263edeff7d0fd2968867fa2c08f607dfb1b6247 GIT binary patch literal 967 zcma#oV5lmIXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^JO+?U7>iQ>3ui)%N4P{4?j(5zNr)r{sg5B+i2#NZ7?GU7BmguTU4<@O z1*bd%SOvp>;S8W3{{R2}A1#0=aT%swG{cd(h`1!=e5kRYnEeNGGY12MEI0+gy~W7D z#30YW$haMxI#?J%s^|s~L5dpgj6jJGAXhNFnFR3ykPS<}a0W!T${e5y76uL=WMp7} z0Ob6DCh}_SdB7A8OF`Je0I0B<p_;)L90tJXZ|(WdT%8NfAuK?H7Td7M3IS;aCgFAl x2B1ZAKs*BmC=X;U&{4=SgUXKAgJl5RSus1lEHS4vHNJoo8Z`~zEK|%d2LOn*_!|HK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/50f397d584965ccdf5ab70a6bd75bf740f7a358e b/src/libs/libsrtp/fuzzer/corpus/50f397d584965ccdf5ab70a6bd75bf740f7a358e new file mode 100644 index 0000000000000000000000000000000000000000..86f9cce37fdad9f20c1e03b5c675df73c1d1f0c1 GIT binary patch literal 191 zcma#QYxy4p7>hDFQtKJO0Lb-aV5qKU*oFdtazOsFDyX2F?luNS1_o)6mg-_4i=mpK zS{=k=P-d{T1~V8q88T9H3K(R8Dod+1=YUiRGYGXa2r%r!qM8Ap`fuMESVV#5h|55X JW?%u@2mlKfF$Mqt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/518e2b27db6127d24d2c06636b9fb145db4452eb b/src/libs/libsrtp/fuzzer/corpus/518e2b27db6127d24d2c06636b9fb145db4452eb new file mode 100644 index 0000000000000000000000000000000000000000..c4d014e71fe3c9e7fa60d366e99144b900b76e0d GIT binary patch literal 69 ucmbREe?Oz-%W4J&hX4Qn`vNIAs7_{JV1)9jD;OE7i-8!V5Db6}1Ofm%%MCXG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5191a0357a3358dd3290f61cddcd563021505012 b/src/libs/libsrtp/fuzzer/corpus/5191a0357a3358dd3290f61cddcd563021505012 new file mode 100644 index 0000000000000000000000000000000000000000..a6531d4589be4e3163772ac6625de7f7aa0529f2 GIT binary patch literal 70 zcmXS(aKYY$fuZ<XH5kMLN!9-h@eGWq^$ZLQqCm{>^S?ZhjAkgVW@M<YW?*0h2?Dh+ Nf^;x2Rx?yH000ET5^ewh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/51c4b7732852c0709b0438a0f37717cd7499b24d b/src/libs/libsrtp/fuzzer/corpus/51c4b7732852c0709b0438a0f37717cd7499b24d new file mode 100644 index 0000000000000000000000000000000000000000..c3df97ff7997683d5856a9e763489e70c2579989 GIT binary patch literal 458 zcmZ8du}T9$5Pd5FH>pBW83@`$C525I!R7*23Hl35kP8Il2zN$=fy6GhmVs;h5yj8( z2TrSO-tL}q@xd@VZ{E%@4+?-m1KCU`E4~S9?F~L&ZR-mXZ7SU16L>HwaFNYk-s)0_ z0B(+h<SGQYfU7F2<{|n{CznOXbKNyiXsAA`gGv?Bco|nv*xINU*wYgE?<#d2lT`4s zh2-^-Xyd*7h8}U*s5}mz{S486i=Igf2b}o!kzv~NzzkE~`=6yV_}PP)M@Nc3d~&}S z@QZg4vSoH~8w&7P6s_CPuCr`)$!Z3{DwebGM)0l;G;z+xJWHlYX7bd#6*-Z2^l4+U E11aflkN^Mx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/51ca2d31463c473b3abac0e275e3fdbcfa32bc85 b/src/libs/libsrtp/fuzzer/corpus/51ca2d31463c473b3abac0e275e3fdbcfa32bc85 new file mode 100644 index 0000000000000000000000000000000000000000..45b4372b0570e55b8e1c5bb47af5ec70f4145dd9 GIT binary patch literal 111 zcma#oE6U_Zt!Ds(|NsB{GB8wEGcYhRD1b$(i`5vai`60043-QGFBx1IN{dtd%Mx=+ ifyzY~n1OQ1`9%f#x*%QgKrs+tL^72TY7!$uH6s8#3>``U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/51e52a805dcf6774afe3c4876f54034f32aae495 b/src/libs/libsrtp/fuzzer/corpus/51e52a805dcf6774afe3c4876f54034f32aae495 new file mode 100644 index 0000000000000000000000000000000000000000..64de3b6e434b7179e380ec52ee67330f7d0ee29b GIT binary patch literal 3553 zcmd5<-D{gw82`OZx+aA|x8j(>Shcg0>9Teopq63ECWufbcp-ukL&;bm{UB*n`pQzr zW+xU#Zv-WxqJMyQ;?1i6h9VQeiz0X<rn+@G{+{PK???Kv3)zKFlau#7=Q+>!SKoxd zfp3CapMJdA(ib@ArV)f;fXtTc+{SGMJLP&ae%k)vy0WwUYWpBw14@NCJX#7SP_O1H zp7`@5ehOg-1Q;Ri4Ipfc@f+Y;cwBA+Z#)NV*dzM*hvH-UHjzj12!cf+MUq!N$<tGl z9vPWUfEYs4BlYRoja8Qs79PH`3qt{VsQB|trSx{W)~u8k>hqU}@njl+TlmRS331Gx zG7;VA_goLCvY#t>gmP`RSg+j&7V1ESn`#0%4EkvMlz9-Y{^2(05vNzjBg5pgqG#b$ z_)dF2P6M^dTxq6RZq_O#v1VyzevTJ<`B2RN&d2S|XtD0xrTH3iDxxmtQmQw9xmqh9 znLwr0GOdoHZ%9z~@<_>ugii;=KYlK3FqFVZ8D0U7we8S{1JyCBXux`-(Vq04;mI0c z-||A<M+GqT5+M8!hvAR>DTEPRq?d}w7G9Q128Y8o$Q4|N`J?K6(BYF4krWn1+z%_& zT#LaKhTjT51G}=sWYXA{;FCCj(&t0+37y`_?iQa;$?zH#?bTAaC{ZPBiL)P*vMms4 zZ1!7UbAuZj!k(bHbeAR-h~$dIPDtvpVDK{#iEAVxB+2jh!~&AvV|Kyab0?dsD&04P zXJwb^46He)y7x-P1MzHIjLSslM_^D_GJCN~@~+<s2{)rcBI3qbnnzA^KJDl2o-_Rd zjA=4j5WX&HMR>~&hgWE11@84GA+D`bJ-;osh+oVgXU*POUwxWtb=Ns`=sNG9L8QF! z;5P^x76;0R5vQ<qz9ChButnV^B<&4VF-0H*`b9+{?9bdKsi~y+?nHYOqj23MR{n7V za(}117fg1Ho4iq!czG{u6F3M`0*`*y!{IOG;H|_`v?nQSQ4HtO^|(OU_DcU3{%;jo zrGH3E%F9eDbMqvP5qWv+0bU-bmmgvxFrpr}ekl2idYL86%3P@{O<VS6<EHHj9=QDo zzt*~?dRXUXs&iMM$?xy-5U2SJ3;2XYKX6@^Fe_^eBP6EvL|IBqx9p5IpT_#y9bdS* zE~@%ZbTp%sBp1D0{KUfyegGCrY<`7$_2!ppTAFtzh~Dbz%_!62(i!9j{0MPYTTfh| z0!DdMpuG4~S1)=95DO@`{!BHjEIUVzS`Pfe1K-EB=CKjo?rb7=hC-d`95tF+ox|L2 zrS+i921U((%|5nw8B%tXzajjcDu4afxF$N}(qj&^a-2P?b+#A>X;jW@B|lc;N0#%k z#>=uBd)^`>8S9)YotUHHiBzv5?D~x1E82-g3zXr!;UuwjmyVeh-r}3Ms9%{a&x|y# zluugo&PanuX_aortb!*JesxqUQ7rQgv}3mrETLy+Vq;2XCZfH<xJ)Lh$N<4JLc(B@ z!o|k+d-;7DEA44CY$iCcLdj%IS^i>fu`XoNLG&Px?=ZBoNZVPft+adbJ5TRfn_}Vj zqfruRJdNDxCn=?dILdu~7HRdk*Y%8Mv*HZ}PTk-C>bf7jk8D+EAldEHR?LSoK{mRO zp}N_qloJ0kRI>?rYZePOiVeZFB_VTba=D!KGgXl<$xMY6F=|d?GsB4D3^C{!CA-D< z(D;t{PDl552)uSxQe*?VW48O+^nXf{iWooZXi5wxX!gs|&mk9CQ+MO!*h86kd{|$* z@5@&wE?*-+gH-t6l}3D2g!n2l=qk(lZ^{aSZU=g*MNCTor(sso?JnOospgjc1*xj} AX8-^I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/51e5aefb13840b34db2a876123f56f3d2810cc8d b/src/libs/libsrtp/fuzzer/corpus/51e5aefb13840b34db2a876123f56f3d2810cc8d new file mode 100644 index 0000000000000000000000000000000000000000..0d3115c11fdc5d7870764408eb526fba4ddde4f4 GIT binary patch literal 36 dcmXSBWMB}e27-$W2%uiA3lahXHHK<~OaP6!2&e!6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/520b82ffdce9643af41fb4113ae76a121f6a33a1 b/src/libs/libsrtp/fuzzer/corpus/520b82ffdce9643af41fb4113ae76a121f6a33a1 new file mode 100644 index 0000000000000000000000000000000000000000..3e55efcb54cd6ebe41fd7b5eb27eeec26b76cecb GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|34FutgdEYU<7e-N`Mp<GXm8#6weW2`1k++Z=guZ T|56}1hoM~<NO1r$5L5#IF_;wc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/52228d0291c8ba4a0f9749dd9a803362d6ad0efa b/src/libs/libsrtp/fuzzer/corpus/52228d0291c8ba4a0f9749dd9a803362d6ad0efa new file mode 100644 index 0000000000000000000000000000000000000000..f79dbe392a7d4e5ac07700c5ec98ff08538e0880 GIT binary patch literal 76 zcmdl#ks<iy%W4J?aF7C13<?a4j6fC;R~IufWLGzX*&sOukU({H{r~^}w*oN(P#*$S F0|0ew65Id) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/523985886f09a66395616f0fc28f68e6cea0e38f b/src/libs/libsrtp/fuzzer/corpus/523985886f09a66395616f0fc28f68e6cea0e38f new file mode 100644 index 0000000000000000000000000000000000000000..ac18dea0f2e204f0b5792d4ec39956854779d2c1 GIT binary patch literal 136 zcmdnb00xY04B!4cNI^IX3=G8#4AnpmBM<^Pj11L49*_wqfea7=VwgBo1SC++u>UED aW?)bNnZyWI1vaVL3RMm$12XlvRW$$(rxWS` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/526f1564cc0ea0a19ca78d9324c8638ff72477e9 b/src/libs/libsrtp/fuzzer/corpus/526f1564cc0ea0a19ca78d9324c8638ff72477e9 new file mode 100644 index 0000000000000000000000000000000000000000..12124369786bb3de70c492e29a13705e102b8273 GIT binary patch literal 102 zcmdOk&ts5`XJB9`%H&9`2hu?Bf8l>$28QZth6Y9;4<=h(%*ar!Tmx3Yz+erg1sE7O dfodv>=Lj*x|6*VeZf5{%0_iD&sszec0|4S15Xt}m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/532c36b979af8b1003ffbe124f4f1e1dca212516 b/src/libs/libsrtp/fuzzer/corpus/532c36b979af8b1003ffbe124f4f1e1dca212516 new file mode 100644 index 0000000000000000000000000000000000000000..4cb080357e918f69f699453aac32ec0c4a263e06 GIT binary patch literal 69 zcmbREe?QkthU%9M3=9koKnw%|3P8dEh=D*rK@Ut<7c(+cS3{T*)x``@E>Hx70OYm| Ab^rhX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/53b62164ae11fd3c45e2062d9806c6bb51a9bbee b/src/libs/libsrtp/fuzzer/corpus/53b62164ae11fd3c45e2062d9806c6bb51a9bbee new file mode 100644 index 0000000000000000000000000000000000000000..1700199d714d7ba68133722e41d11d10dc98367e GIT binary patch literal 538 zcmbtRJxc>o5S$kX-lYhlkU|L26C^48fM}&c4q_9~#vc$QToDKgxmZ0=3qdQvQb^+; ziR9<x51fKWp0k_7BUn0cyX-Q%^Y#X=<6IZOu<u3p%!G6993QW)G@DtLbJyC?ej!K@ zvtw9=5^Zc?TW=Y9m;$5jHLy4AKfiO?iH;p><e0yLD%=<B!FWx3>rcSggQ>D|en!(2 z-nBEBTpv5RK1`=gra4pEt&M+IUR;h22RFT|L3GsQ8=Hx2C-esEp#U_be&A=3&+#c( ztxu9q7~Z%q6tk-u_@kj*OcvXOsoSVg{x4q2bN+t8@+Q$(lA}LKrSeE(g3KRmigk7P oJX`EBHii`kiSI=M($hFXxFuzZVu>uVw7A`1OzFE$m|7700H_gZIRF3v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/53ffeb0791f8111cbf6c1280a2f8815b66d37a96 b/src/libs/libsrtp/fuzzer/corpus/53ffeb0791f8111cbf6c1280a2f8815b66d37a96 new file mode 100644 index 0000000000000000000000000000000000000000..53a98d3f3aac8f8b7da364b30d7b5758e8be6051 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&vD52S(M|NsBK3=GxP3=E763Sg1yVnzlqE>Ra?umA~Jg2jOZ gCj)~lP#sWuju2Q(xSfGv4hN9Q1V$jSKR{d!02fCPC;$Ke literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54286dc58e34b136b358bf3593882ed78a1b99e7 b/src/libs/libsrtp/fuzzer/corpus/54286dc58e34b136b358bf3593882ed78a1b99e7 new file mode 100644 index 0000000000000000000000000000000000000000..39dfe763545a0156bad4566f2f9821f9b7cadc79 GIT binary patch literal 1041 zcmd^8JxfAi6n?G+UZWv&u|QG?3<4orq6k_Vn;ox_H;_!lkDy-22E)bvfm=&|qlTb= z(OP3m6vXK{=c+iiG<7cbyyxqE-uHaGL7|RL0K}F&05?OKb8VH3?sjdV%UflHDw3+2 z4I**~I0txR;r4fATPARZsVB~y>RdiL0@3kQ5<mtXx~@G+QuX<Hh`&&j9xo!2GA^<m zh~CVoJP|~^sgXM#fCJ~Fhe3(}{w0KqQjULMdQf2vKEr{T{Ul0zCXJvL@-*J2h~ray zi%=)9PTp*VCt;hFb?^KmClYbX1FmR!04YX~m`sKNF^bG?jTo3mekR9pdN?zfMdO3v zh&5o{xMz#^E;Ox=XjT2NrxEu|RidW-*D7!RNtLy@97t`04&}53wJ=RnJveUEJFP~M za?P3wJOT?@>ZG!9Wjd97JdO}L{7=CCO61HEQ{R<phR=vdf2QR$I6ta&!=O2S6kpdm o0woOwDsq9DC!FI<aj$bb%3NDDZ+YX&psBnHzCZeXb6S9hAC}u7DgXcg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54553aed9bc6f2427aecf1b7fc547898cc21230b b/src/libs/libsrtp/fuzzer/corpus/54553aed9bc6f2427aecf1b7fc547898cc21230b new file mode 100644 index 0000000000000000000000000000000000000000..16dac50a6d6c9eb5836fa0d811cedec515b56674 GIT binary patch literal 177 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYU^NU7G8!lbLtstSVnF3A zK&Eyh1A_r0!^{65h4YK!tLr)185n__|G!)Qes5t|xw5(iq*H-G-TyxVfDM7zTn%&z Q#AYA^p~Cn7|9D0Q0MEWN<p2Nx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5456e481d33928590f6151e34693cb1cc497c2d2 b/src/libs/libsrtp/fuzzer/corpus/5456e481d33928590f6151e34693cb1cc497c2d2 new file mode 100644 index 0000000000000000000000000000000000000000..d0e0ccfd2250c5fd4a9479b52a173e3310a0cd7b GIT binary patch literal 280 zcmdl#@jutgm(>ja|Nr~%AjJR%O5YfYs~H#=K^!2VSj@;!?JyGvZh{CHfT&OaDXIpl yU}D(6lc5f*2c$_2WCoB<0m<V6`=ORIFi_EQpk+w*o1}n135pAfK|K6^Wds0x^FFfx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/547dc3ebdd8776281f996bfcb3e9f69ad97974d6 b/src/libs/libsrtp/fuzzer/corpus/547dc3ebdd8776281f996bfcb3e9f69ad97974d6 new file mode 100644 index 0000000000000000000000000000000000000000..c9547bee051f55a053f2c98fc57070aa4b65bd6c GIT binary patch literal 738 zcmcIi!Ae3=5It9r)P+cb3qcBnD5wa`RRs#R5p2^sB*cXv1wLC{uogkBf|in-Xys2B zeMX!1{=h3poX*_$N^Bb)cz50mGjnF{xsaMj13<SOYhBV3B2vfmy(A_ROLr#atcyqT zK0HPYy^5aJGqB~s>%gIj7ogWT1Gc;E+ebFrcV&C-WLbO(ImicWX}IiS=^J1egUQj8 zc$nr)rC$wU=KNTj^TX7t%ru8C?ZSFLEsu_SyPfmqX{S{xa>k;s-3hmYjUf`axT3X~ z*Kri2*2n%k40k-yEVJb}5O6TC`4lXZ(koDmFyd_q|6C-S{44H~Gi^vLc2cs1;i-?G z$y_thN2m{0RXRajXW?h82g_X)pMe3U2i}8>-_)HVnqZbn8s$}l!fVOSuz<pb%s{~m tg4-qCZ#KS$Z!SkPl~SE!vXxmuB*lj5wi5lTlznA@drFJ?8RgCAzX0done6}o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/549f9773b9bc7ecc0b0ba7f26c0bdd8d3b0abf54 b/src/libs/libsrtp/fuzzer/corpus/549f9773b9bc7ecc0b0ba7f26c0bdd8d3b0abf54 new file mode 100644 index 0000000000000000000000000000000000000000..51664db0592640572f4185254296e287aee83ae5 GIT binary patch literal 459 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RODe+MbBIFr&hhGL)yBanBO z2`t3GQ0*`i3X&NPGBA|H=P@wo6=ilT1R7=oR&xxhl97|0L6+hF4~A-kIYMAD;dTaw zIUEd(vOwN{PN*_4<yhwe1&kp3B_MLP2>Tfry<C8TjILm1rPal7BmII)407_56LV5c z|L?oUpa?Y<=)Wt-{%csa4Fn3H{s42fF-n5zW!r!zvj_uqvH`ujzqkZ!xB>&ny()8n z!Ym9NK*%T#HQR`R;U#kdkb|!7&;NfQbqwqeARY!PK?4wdAX%vKZ;{Mr0P5qgtpY^| XD9nM8#Eu?K4As>PRSb+w3`$A>WJ_k= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54b6695b808e5bf6565b2939b3ba6b2123234a6d b/src/libs/libsrtp/fuzzer/corpus/54b6695b808e5bf6565b2939b3ba6b2123234a6d new file mode 100644 index 0000000000000000000000000000000000000000..896a3837de39c2de391172baae43b348737789bf GIT binary patch literal 115 zcmX?@k(yH!&%wZu%21S9&j1Gh|Nr-3V5qKUU|@s@Fenx?8deuGg2foVf&oZ|$(kV# nM02_`$O6?GwD-)pCIn=Fl`;VJ1Hm_-A_j;u28O`@432dGjRG33 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54b813a24e01e8357c43f5275aa8f5b9bd8b06d5 b/src/libs/libsrtp/fuzzer/corpus/54b813a24e01e8357c43f5275aa8f5b9bd8b06d5 new file mode 100644 index 0000000000000000000000000000000000000000..8777c4f802513d40019e5e689e9793780ea72baf GIT binary patch literal 212 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLr8g#{<PIz#1|+@F>pC z<VdZD=!O^vHOU%iDg<ycFvtQeC}r3N0x)SXjmBkQ_ybd1T|7sKfl-rzLAV{r00Ci! PISfDqaVb+i(9IkGM-3#8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54c6b0ff97fdf452114f9359b4d8a07cee10a0f4 b/src/libs/libsrtp/fuzzer/corpus/54c6b0ff97fdf452114f9359b4d8a07cee10a0f4 new file mode 100644 index 0000000000000000000000000000000000000000..e820aed254de02257a4761fbd05eedf66600eec7 GIT binary patch literal 139 zcma#o%VQ{sXJB9`ngk>u;Q#;sz6{LO)eH=bK!Mcwvc#Oy)c68U1`b(}NCS|?0A?{T z%wb??2a)Z<K$RQ}EDQ{7-+-)oAO`7$f}&K8%zCgI4u&cQpz%xsK$+t(I~%~}F#rHB Cuo%$* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54c767f752d5b845f29062012dd30c58f90eb170 b/src/libs/libsrtp/fuzzer/corpus/54c767f752d5b845f29062012dd30c58f90eb170 new file mode 100644 index 0000000000000000000000000000000000000000..b50fa7f6d4c504caa9c2b55bdbc696d9f7595dfa GIT binary patch literal 1408 zcmc&!y-ve05dK_Jk!%R24k%Sbg%D~-7Ty2}@d%kZbZC*%PW1o_V&MT8`W}ot35b<9 zK;p;T*{&1pAlhc&qB!#Ta{heZ=gS9}&vF38C>~zXmrN;j4oC?I<A9tB^OBDPE^umA z`bZMoM#!35KA3=!h+?SrMkalUq~{=|=$OS|JPbTd903GTfzaBa)P6+YMI<S71j>_m z1!{sU{MSofot9kw1s_5@XxbwY!v8hR!GhpKi0Kj7exb>m)r~wR(a0q!ESN9iQ^ml( z7M81)Knp3TqBnPHOOCbZ%n|-e6VC*;&V0sEp23#PkEqwg2N&WUPgSC_tZv86eKxli z;<_ZcUAYiULZ_}pbWMxs>S)t3+7-sh|4K{ONS2K2KpNU>S#ZxbuKF46y+Y+F#P+`* qU8l#zAeQK1^IO%Y{pmzb7rQKV>Xm#e*zVP%QkRq2QK6@95b_)G&&<~V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/54eabcdf24bad3d8029203a754988def9d2f4d8f b/src/libs/libsrtp/fuzzer/corpus/54eabcdf24bad3d8029203a754988def9d2f4d8f new file mode 100644 index 0000000000000000000000000000000000000000..063f7fac101a9df2baef11e2a22309fcdc2b14c1 GIT binary patch literal 103 zcma#o%VQ{sX8?jZ4DBEa2-+ASGy?;Oks4o?m{Xb>U%=_eAPW*{D4r|C5Drl?hXJGu Ps8txI1%u`Qic|vt2{jC7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/55022bdea04bef0d4770f2496c9dbb0c0c8d92c8 b/src/libs/libsrtp/fuzzer/corpus/55022bdea04bef0d4770f2496c9dbb0c0c8d92c8 new file mode 100644 index 0000000000000000000000000000000000000000..9a7d7a9fb56f7fb5775a11461a0b1000c68df3b8 GIT binary patch literal 315 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbO*A6E*~9 z%N!xF&2ymkBV0liTY!e(u!y0(v^d2G<WnF>O^q+$tY!f6l)?P!Vl`j@FqW%Bc-8j* K8MGJ}<^uo+I4^nt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5520e0231a9026268e73739f5006c3a7a3605701 b/src/libs/libsrtp/fuzzer/corpus/5520e0231a9026268e73739f5006c3a7a3605701 new file mode 100644 index 0000000000000000000000000000000000000000..c70e30462c153fe9bdd67d92b12c499cf61b247f GIT binary patch literal 1146 zcma)6y-EW?5dKb1vMB^fz(&Lqlt4s%fHYdGh?SKDiz|W(l2Z$}NDwiIm5ANFfG^<# z_!Pc@T~dgw-^|`6F^Q6a%<az3&$r*q<|2T~Y_nnFmR~#P_JKVMWQVXx;D5HFE_0}P zSD*+ijr)}no<}HmfYlT*;Z$x2VNlz|&1Ie8V~FfTL<+<mpq7>}Kd8B&$;>xU_@Ik( zRMX3Sm%h#>>7vH$fR_Mv3D3wP5`~g#Duw$%+5&XS+?yNL<AxF-^loKI;oK$<1|lB+ z$Vf->`^Ul#aD5_rB-yRlX#CXs=DVTW+l&atvB^vs;B}&q&b);~OX()U8G~1T&xzse zDz0DT-EGrIh5}rXy6oN@0f~9*_L91_Lf;GyS=h_(ebh+Nx|1Y-3e!nGnXFXcvslDs ziOE~0gEFe_&b8>IR{iEv=qG{!g%8@D8%#Xh3oSmIOs=8|bCg4<$l4l^NZE|OQv}N_ z&!7m;*|?*krTT?%{QlH?l&&@7h7oX-egg;yi0e6(cIZ8+<20%*bRT)o6rLkLihn<+ ziFwbqMqd3k(Xng1u}VMriVS)|ZFap%?ke6vw7kZ)Za3urp%VgM&aIQUnp#B_e*odr B*EawF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/553402a2a319ba6c83bf602f993b7728b5b00273 b/src/libs/libsrtp/fuzzer/corpus/553402a2a319ba6c83bf602f993b7728b5b00273 new file mode 100644 index 0000000000000000000000000000000000000000..4574396d205a2c5081ec1411dac38175f5ad4f4d GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq1_rxo1_nk31+YkUu^K})V>Lr{u{xN~z#z%M t@Dj}AWMGhGD4rw4V9daflbRQwoS#=xl<&a6z{J2Hzz`2Jo`Fxj8USK+6QckC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/554884ce961a82608cc14679fa8f93dfa3707bca b/src/libs/libsrtp/fuzzer/corpus/554884ce961a82608cc14679fa8f93dfa3707bca new file mode 100644 index 0000000000000000000000000000000000000000..b31f41d3835b529921e55f37def55295bfc0db0a GIT binary patch literal 103 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5qKUU|<BXfkbsNBZMCY5~yZosOEb45-1M@-}%85 Zh)`f)D6VGE0;*>OX$oL~bAZ~90RZg<4bK1o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/558d59eba1bee63332fa787ad31a66030ac890bc b/src/libs/libsrtp/fuzzer/corpus/558d59eba1bee63332fa787ad31a66030ac890bc new file mode 100644 index 0000000000000000000000000000000000000000..128b0a9710860b4609e42f2f34836bd1a822949a GIT binary patch literal 92 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BM>)&#Xt)D8LS~Px(u8Q Y4DBoob2u3O{r|7=pMeRg14vZ^0HAOZ#Q*>R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/55d105dace85e02cb95ecb9e1c8dc78b3ace8bb5 b/src/libs/libsrtp/fuzzer/corpus/55d105dace85e02cb95ecb9e1c8dc78b3ace8bb5 new file mode 100644 index 0000000000000000000000000000000000000000..d7d20d1b009f88dc401afd8a5ff3fcb1242f0395 GIT binary patch literal 1507 zcmcIkyG{Z@6g{)75v+*VSP;xcG{Hc$^YsgcPr!y^3oTF^Cs7+iV`F1Q=O5TuTKf$u zq2&v-FkbK7S!Z@30uj7~h5MR4Gw0lC)Np><0MH7v%}f4eBccO9Ye1O*^ocTGj!8is zdnQvwE{C>{V5Gf_%*M$^?HGbYwVG52&GHUO*+ME|*(6iXFD_k6MW%H^?8*`jf=WQ} z@|+q3S+y0p5~2#YourSTGcCGwe|qth=eQgPA4)w&wEJop{;$id%2s@2`J*u3W9K8* zjox6<=yi^WiC}~z$^ykmSoX9OJe0sEdVNC~ee@$b-0%CvMQ&U13T=R2)DdqJu_v!( zox0urD{MwJE7+g(K=k(h>X85G-@w3R_-qntO%F_0l0$-pqabEnBptC71TVofEN#u6 zrMVu1ON#4a5^-^l9bq@1GTJP-3ek=g&_w)hb0gbWX&R1~qT&R*ma|(j*PO8Sw9xNs mL7A|qaqvNB6%=f+Oe}wQOCRd1=R4%XIv2=&E%#&>%ELDfG6}T+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/55dc1e38a4fdb1b1aef71b65a08523376171d8eb b/src/libs/libsrtp/fuzzer/corpus/55dc1e38a4fdb1b1aef71b65a08523376171d8eb new file mode 100644 index 0000000000000000000000000000000000000000..9db7834e6b67c5f9b41528c63d9443cbc151b196 GIT binary patch literal 139 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VP=&IDn9Wk)7es zeTM(v8In@}GXRzU|1bPs`@aWNEyNTCMG(zo4J7m!7&w8{Q;+}%fCZ6lVGw3$X8-_? CyC9VS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/55f5592b8c6806a1ef9f8c438ca06e3f30b5e1f3 b/src/libs/libsrtp/fuzzer/corpus/55f5592b8c6806a1ef9f8c438ca06e3f30b5e1f3 new file mode 100644 index 0000000000000000000000000000000000000000..3f357c39ba6d66c5eacce18fa2d9f8613837cefb GIT binary patch literal 136 zcmdo0-;V3$%W4J&hHw8Jq<|C<m@~)~1F33828L)Lg@k}2KrWnw%VMg8D?`=}WIshR J0U`x44FIlj6>I<i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5603da87ba03b13667501638a1d9788036c4634c b/src/libs/libsrtp/fuzzer/corpus/5603da87ba03b13667501638a1d9788036c4634c new file mode 100644 index 0000000000000000000000000000000000000000..885541c76e3f63b94dc4aa4c0da6450f8dc9543d GIT binary patch literal 104 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRas|6XV)pH<fOc@wn of?1qkat<$pF#|(RYF>QufzsmC__D;(oYeRNmX~RnIUFDr0B2Gb%K!iX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/562ebbe8126d4344da90d35c7249294b52d4a6ae b/src/libs/libsrtp/fuzzer/corpus/562ebbe8126d4344da90d35c7249294b52d4a6ae new file mode 100644 index 0000000000000000000000000000000000000000..ecad2666137d9ad300d315597fc31ec73a91b0b2 GIT binary patch literal 704 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+8;SR*M$Z8nCDjA}IVh9wkm&Z_2l*v)R zi2;Cykf;O02=WA&z<yzP=>`NZU%n*C5QYH`f`JJ!EI~v`AR-w@z!)Y5bzo$<F}!4e p#MR4}z{F@Ug@K_!zm-vzfen;`fWR7v^B5R7L8(%fff2-I006WkP09cO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/563a9475b5b449fd62634f1df5bb3e00907be925 b/src/libs/libsrtp/fuzzer/corpus/563a9475b5b449fd62634f1df5bb3e00907be925 new file mode 100644 index 0000000000000000000000000000000000000000..50e36db56d3b7622ad11641e02e6a0ebe3bc3cf0 GIT binary patch literal 823 zcmb_aJ!`^17=Esb#Ld=O94iDw=R((l;BN>H8M1_uh=UoFfJ#gI53+T0cIpqS<N4fO zt_DL0LZ0DxzwdcJym5%72Z+d*{Qw$L$~h1xz@rip3Sx+d9xwuSU$T|N!bAc;FIwtZ zL*fc1Jm+rXq|yZjP%)yEn>_(u&H_>3_#1viki|6roSN^g7TT;IfzI~*za}z#(wyPY z2ilH`*#Gg7tZbk<#D^a^8yy2@&GKi>xm_ZJhMM_p2*>;DaE`Wh&eMoyt9qF<)Xek1 z5Hn8{=Na1l%Qw4lUVwXp$&K#1ia~MzX?jX)@Lj+w(+g^ySXr5zXBAGx&|Y)-B8~St G!T16kW%z*r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/566cb4d31a6fcc30c90f98c08afd1dce884649cc b/src/libs/libsrtp/fuzzer/corpus/566cb4d31a6fcc30c90f98c08afd1dce884649cc new file mode 100644 index 0000000000000000000000000000000000000000..371e08a1aabe52171fe7dbb928bf11dee6cd6a3f GIT binary patch literal 150 zcmazqC`wIBEs8JBP0Y!uX8?o$|Nr|kC{$N7Y{LU|w=pm>Fi3+mR2KtTAi7!|L@6`a rT7zg1;AF^1%_(4z1*$Er)|>-UC(Iz!&cHB-L4aW&SV=6HL?NmH-R~$p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/56d8fb3d29f055ddae16b829cb094bb0ed754a18 b/src/libs/libsrtp/fuzzer/corpus/56d8fb3d29f055ddae16b829cb094bb0ed754a18 new file mode 100644 index 0000000000000000000000000000000000000000..69c5f4270c1b7c08a8e6ad466fe3e1a87e26572f GIT binary patch literal 1360 zcmcgsyH3L}6g_Suk!*-g3{_CXV?eE7<nap#{vcC_4looZEWw1j@Cn`c1D1YF0r3|w zAk4XTi1UDg2;eA*@5A=-J;zS_I6q4PjE3Rhl7BX1%mJV^pqvBxRJoTvNjSuwi}Vmh z7zaq^w%Och7EJpm5F~0eFrA^B-XmGdA;nmB!P57Ysp}<AQ=<k!6(F=0Iej&wmuEyV zYzF*JDkW%&t~|andC~M-egz*&O)c$#s>A<un$-!R1PJ*kEIiV9&UB+UDH^>&k2DdC zkYqxjYlW3pOQD4rtmxIXY3t*6(cxx4=q_>CN~<#lxX?tbEo7D~OP%`7{wZvt`YqTm z=GK_|r#p}QN4?5{X|pzkqgy^O4-%{i7M_BPagnrTDM@BY6PC9Bfu)P@h>IJ_ZxMe$ mcj>0!7}+TZDB+z)D(ubY3Ub7}56Y&dauHhTOG2i9>Ae9dqT#jx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/574195f4c56357d6e3ab2c688ace9f7c5526872d b/src/libs/libsrtp/fuzzer/corpus/574195f4c56357d6e3ab2c688ace9f7c5526872d new file mode 100644 index 0000000000000000000000000000000000000000..71cc130e0593760a6ee2f9666c51af6b1eef38e0 GIT binary patch literal 106 zcmXAfAr62r5Co^Fk{}2u1R94yV)y`Ws6x~rs3AE4j!*Qh98Fm>$<B;!r`w!|1ACFD tsw;?a8v~uIlJr)BN#F1%%$YTm(37%riVgbe)1qLLj+R2i3_%tM?gM<Q6`TM7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/574754a107554e54128a886ae4ee46e8df527827 b/src/libs/libsrtp/fuzzer/corpus/574754a107554e54128a886ae4ee46e8df527827 new file mode 100644 index 0000000000000000000000000000000000000000..1f01cd07ccb6c349b2d32731390d777536b0bc90 GIT binary patch literal 190 zcma!LU|=x%|NlQ@QEDbfJ&*$gK&~$XV|6uzml|J|m{Xb>59A$@WnhE|5>GZ1&k<q> lhp3;!&<<n(Nnr*KAcO<_YCyU&!5|(&WrEDm(=RS60RYFWAEN*O literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5754d14d803f9268f6cbb6cf305d0e8dcc2bf4e0 b/src/libs/libsrtp/fuzzer/corpus/5754d14d803f9268f6cbb6cf305d0e8dcc2bf4e0 new file mode 100644 index 0000000000000000000000000000000000000000..8f346fea2ecfadada86c92c1b0202a30dbb3deb8 GIT binary patch literal 378 zcmbtQy9&ZU5S*ltvlCOP2-X&9M6eZX{f5ILg&;vRvAM!j`V;pp`d1MwTxauuR5ng= zGyA;VwE?iQ08V?8T*-vUyW+6xVIJWC6^Xs<4tZjaeV8ddy@Cp=2#<UHMh2Lv2c!B2 zE#4?{clN_75;50ffJga)S+G7XCshDrC1()UCJHqX*f`~Y4W6y|&E3^x`|lR*RYdGO dMaI>d{!0#~-9ODVSaam|8Y191aMKtW{tF17b?g8D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/57de5380db49002b5f581b318ca337f7c6ba7b0d b/src/libs/libsrtp/fuzzer/corpus/57de5380db49002b5f581b318ca337f7c6ba7b0d new file mode 100644 index 0000000000000000000000000000000000000000..85106390ce962fd66b392427569f0f63a6babf8a GIT binary patch literal 43 qcmXS}W(a)A@Uj{Pigk7K^5d(E85ydp85rg;FfajG3=FZ143z+7&kaNX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/57e00ddcd6236f2c282b1b57d8d67b3fd4a28eb1 b/src/libs/libsrtp/fuzzer/corpus/57e00ddcd6236f2c282b1b57d8d67b3fd4a28eb1 new file mode 100644 index 0000000000000000000000000000000000000000..eb0487e4b98bc0b83362e5c3ed2a14e0c90641c6 GIT binary patch literal 36 lcmXSpude6N)oo{BtY!d$zYNvY+0|eskSAJQZIV!(2>`272?+oI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/57e57debf4de3850f747f985bed9784124047c0d b/src/libs/libsrtp/fuzzer/corpus/57e57debf4de3850f747f985bed9784124047c0d new file mode 100644 index 0000000000000000000000000000000000000000..7d6ce73a73cc0c51695283c4c3928596f23fd83d GIT binary patch literal 69 zcma$54+JI*)gINwsqxjBKu&QrL*W1F>i_>=GB7YO#RCZjgFpt5GChV;t?FusG!IZX NH9r1Nb#;98e*m23A6)<d literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/583b5f47f4aaf0611fb0d3c51036a539e2e4a629 b/src/libs/libsrtp/fuzzer/corpus/583b5f47f4aaf0611fb0d3c51036a539e2e4a629 new file mode 100644 index 0000000000000000000000000000000000000000..47e7ad34d520522b68722f4fe5a9b2d3b2417a4c GIT binary patch literal 175 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0W>uY9B?%aa5WH> F901%x9wYz& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5877ed503eb8389c81bc0692e2362f979c1eb075 b/src/libs/libsrtp/fuzzer/corpus/5877ed503eb8389c81bc0692e2362f979c1eb075 new file mode 100644 index 0000000000000000000000000000000000000000..d06d564128ecc1cb934873c9de287ff45a2c0a48 GIT binary patch literal 166 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{F;V0ZxJ|NjpWt=48_sIFFra2TwiGy^9C zg8~C1kjMDnmjS2%$N*}AfSlC4_+*GewQpbpK?*^ttBZk#%>)C8JdkYd`OjRP%g6u{ TEoQM+<7j7KtmgRrAIJp&&=4zH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/589e034121a252d445e72104dacc057c387c7d4e b/src/libs/libsrtp/fuzzer/corpus/589e034121a252d445e72104dacc057c387c7d4e new file mode 100644 index 0000000000000000000000000000000000000000..1f4549b1e0387679a4dcd3a28f02188561663d46 GIT binary patch literal 94 zcmdl#@o#ByYJ6E@PHAd<K~a8MW=^Ut14A(bLp1{f10xVJR2MTcR0DY+CX56!K=KSP YAs`b-F&F|>HgZ)%v{o}-&t_l%09+&-y8r+H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58a3195b9dad3b35b48f68b9ee2bd5f8a4d187a8 b/src/libs/libsrtp/fuzzer/corpus/58a3195b9dad3b35b48f68b9ee2bd5f8a4d187a8 new file mode 100644 index 0000000000000000000000000000000000000000..193d44f82fa143123c92be7ceb8a0e16fb5c9fe3 GIT binary patch literal 470 zcmb`DF$%&^42FMEF;xW7$)T&W-oOiZhSH%!w^Fx0p`9#_1;?Jy1BjFHPm3T@3W9-` zmzVrWK3<?RoB{x8EYXHH?Wuae-Z_SoCJ{CsnEMz2MdAS#E%2yOvPQqc7-F*Boszt5 zP#eUTAVQo{qsSntZPomlVza_aIKG*wHMm+TONS%q(t;b$)i5tnEICR`N(R*-VS#F@ iM)sTh6My~2-}d4EV*$attaq<{Tla5&w}lFKbp8vx{AJbv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58a3dc918b9fd6004263929c54b81b880d2069d7 b/src/libs/libsrtp/fuzzer/corpus/58a3dc918b9fd6004263929c54b81b880d2069d7 new file mode 100644 index 0000000000000000000000000000000000000000..17143dd4134f51980c0a3438051e5fbc91af8a2c GIT binary patch literal 41 ncmXS}W-!p!W~i>NW`F=u5LI2w2oz#qn8U!p1mrO>R96B3l#vGS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58a966b45ac74ebf015a47770686ca4d61f372d8 b/src/libs/libsrtp/fuzzer/corpus/58a966b45ac74ebf015a47770686ca4d61f372d8 new file mode 100644 index 0000000000000000000000000000000000000000..b730e0d8c9cafe4a5e4dd4e220c6706e6bf7b500 GIT binary patch literal 246 zcmZvUy$ZrW5QHa}=IjJ(!Bm1j@ilCGh8W}^0fmsDg;%6egWwZLY9BF$%{pfeD;IWW zcIRW`6@Y|Y=GxR$mb_u@M(6^zNlxkhXp$m3q`OI#rORTl#TcPx*#1lLOVKz6&4}V~ zyt*k+2bj^j=d2RB(RI(b{nl|1i7A1HN|P&iMxP-fYv6tn@jnn%_Sv&)hy`$cNN6jc NM!e0xHw9R<3LjEnF`obc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58c34f65a8fc98e52e2039dded3f230c3bfdf099 b/src/libs/libsrtp/fuzzer/corpus/58c34f65a8fc98e52e2039dded3f230c3bfdf099 new file mode 100644 index 0000000000000000000000000000000000000000..c5a1b18218874163cf908dc5be7802ab196123a8 GIT binary patch literal 852 zcma)4(MkeA6g}$-u24|<QiA1z^$?{mJp{cJ1O*ZG1F?xLDX7Q}7C4YEnFM}8>`(MZ zeM1jEWH_DKSy>Vc?=o}m-nn<?o^x+mDRtoi2pW#xr>3ZHNO`SjSzNyNSZ#KFuTyVT zYeiA79(J-o0k*@#5JR))s3u%^9dqkj*r(FzlmHFi>0_v4w9G<!w5>QO@EZ=|7^eqT zbqTz^C>7rUS4{FIHnoNWU@%g)6!ED`ABDcu26Yj+A+~9hkcPwW1DQ|$>f1zx2JV0p zz?-(Q<t@NxCHN3VwQGkdeh1NmtWwLpQOO=tVDRZAa<Bm3Rf12xC-_FvwoPKRyM&jT z!v|!7mV<1Xy|Bs^`4q0=7-;%!uhy-0n?5sdrC5jjf?4Lm-E2l@(03GSvY^RA=)fw_ z<|{^4X2#j`c`O#D>NIcsdt(Tx+eaF~>SBD+jS>AQg*-{m&B4RsIbie;@Rx&u;1te! ryd(!lOK^aHIWP!0!@7Z_g!49vEOz)NGNhEk1vaIfRLEJ3=27Ao!3n7j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58c440c190619330a10ea3a88c453abee1956bfd b/src/libs/libsrtp/fuzzer/corpus/58c440c190619330a10ea3a88c453abee1956bfd new file mode 100644 index 0000000000000000000000000000000000000000..3572dd0e841784db498e96a13449516151048319 GIT binary patch literal 457 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RL?<Nl}rLE=nG-x!L4B8))x zT_%tS5L7$Ngo0#-gA5EM@p%jkdPSKX3xS5&fK^z7NuV}Pb_Q97|34V24d)1f#e~}# z80K&=Fv<dX|2d(`z?5U13luOi{QK`91(CBw*w4V|<pR{izzK2;5HnU6GgN0ol>LTK z3=Ds4i)a7ecaK34DggB36(m23!PL>2wq;;|x&mr(bv47bW!pfY02-`7CL@b51A`_* hbuq|?4Eu{qfPn@NzIeSnU{C`CU=C1@g@J=X7y#L7PT&9l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58c61f6124427c2e45eb0ad6761e702618f969c4 b/src/libs/libsrtp/fuzzer/corpus/58c61f6124427c2e45eb0ad6761e702618f969c4 new file mode 100644 index 0000000000000000000000000000000000000000..00e8c9c7f890beac62cd85f896aeadd36884f880 GIT binary patch literal 679 zcmc&yu}T9$5Pf@!CKe$oqzDA{5VTQ*Xr)4gRD$3Sh)75w1dCk6VnI_VRtjkZ@fyL8 zu)63cSXn7pSmXyzLCN@LlYmKU;e*}Tc{4jRyEBkYkzD}Q{Y3eMk`R$C+&5&b)v{FE zrui<)dwz_7jN$pkQ--jG>n=)o1ZsB;k*ABRqgw`Ba~`X1=e6W0a*$8hrEtP=ljlH~ zfXPvlWY^7!jpJe$25l*1NtX61<&`{h=VSFp9m>Kc&?}`*HAH$oia%gj=Z@Ov7K+@5 z;ldr-;CE`I5e?i2vZ=q~GS%i6D*7X7IeqDx4T&?EQ#!_QZ=}Pte!n28pUh=!0IOXf zzB&T<UJq_0dc_QhZ9M!V-g+es$mfo(g9IzE2JU2Grr?dM@vOFZ0L}y7=$f(&R7Qqu S;OS7zhG3t3nqaDc@BaWQ-_79w literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58f7d611e702da8140ea3cfba8ff69abfe6d2d46 b/src/libs/libsrtp/fuzzer/corpus/58f7d611e702da8140ea3cfba8ff69abfe6d2d46 new file mode 100644 index 0000000000000000000000000000000000000000..2da07d1b8850e330ba861d6c9c69439d3a5d9fc0 GIT binary patch literal 344 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5F5iVMz~=Ukqx7|fk4YauJ}&`0IQ5<VEF$(-hsjINCHr6GSq9;CGq<w{)Yz1KUk2c j0fV3zs0ysH1myH4Fq45n0UQ7jlA#?KM5+IUGlA*=a@=3q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/58f9e0111a6833627938e0dfbaad4c901d107df8 b/src/libs/libsrtp/fuzzer/corpus/58f9e0111a6833627938e0dfbaad4c901d107df8 new file mode 100644 index 0000000000000000000000000000000000000000..32e650ee5f54b8404586f32f441918c9a099f266 GIT binary patch literal 113 zcma#o%VQ{EU=Z_UC}N0bfPnx1|NAm9R97=FFfu4GFt7mG#f%KaK!IvTbpePP6CS8y qP6h^9pgN$EIYJCFKn4SYHdsoyoq=JF3XsW}8ef)}QwkPjhz9@=K@gb$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/590e3b30215b7d037913d0c26b8ae24c0843a452 b/src/libs/libsrtp/fuzzer/corpus/590e3b30215b7d037913d0c26b8ae24c0843a452 new file mode 100644 index 0000000000000000000000000000000000000000..81aafc063721d7b63ff0d13ea314f787a6efebc1 GIT binary patch literal 106 zcma#o%VQ{sXL!I+l*y4=&j1Ei|Nr|kFjSW^Ffc*{7^;gI!MM0u9V%iCr5QLG7-WI! a3>X-e3xUOi+aXdM3>*yq!Jrx>Pz?YL(G$b~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5934c811fcae83db8a8a576efc1a2472c08eea1d b/src/libs/libsrtp/fuzzer/corpus/5934c811fcae83db8a8a576efc1a2472c08eea1d new file mode 100644 index 0000000000000000000000000000000000000000..fecd69f42e61dd5b896419aa0fa5839a0da90b14 GIT binary patch literal 2814 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjB3VAjsi|v0VarDFWrFP<;$03TEhT$tF1f4 zKxF?g0DVQK!8o-cyBnt>bO~&l7=bPY1v*1Cm;q#iQM_IrLrD=@$g86pND&{|HKYgq zC#c<ogPu6QfsNC~42>^9016YV0Ya4jAwf!_IW9yQjZkzA!9;|s6ZuIRVF)Gp0^ukm z7T9P`(qkOiNl3<#$|S*JGF=KxL~J-+h3pF?rzGLj0Fyx02ou9huA`Y3IlGgX={Rvm z8!W_8=)s)nkdq5iIzw?kVGiNam9QD4sX%r&0i7gx3v4PU2^t_)larGPI2tI8&5P8^ d$z+uH!@MRX93QAEsGX@%O-JQ1Fj|9}ivabd3V;9r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5951b46082cb84e45c8bebf9d5ea3f6a1018733f b/src/libs/libsrtp/fuzzer/corpus/5951b46082cb84e45c8bebf9d5ea3f6a1018733f new file mode 100644 index 0000000000000000000000000000000000000000..2e1f24a8b67637ad956362acdc4c31a339a9aa24 GIT binary patch literal 233 zcma#wmd8*M&%nS?l*y4=52S(M|NsBK3=GxP3=E7wUTS<<B3KwqFfy<;6mT*y$b#h< z<}kDag@L3nkm3NTX!`~v{tJPaAOJSIGc}W=9;&7aWIV`R1{M$j0%#W7BW#{B526A@ h!flS%!*nu(FVIx5lNlI6P60Z<7;FhcHAn*JLI9S2EI<GN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5977f8d34f45745f63ff61e271623427d41da0c2 b/src/libs/libsrtp/fuzzer/corpus/5977f8d34f45745f63ff61e271623427d41da0c2 new file mode 100644 index 0000000000000000000000000000000000000000..46fa98abcda88abd1edf13dc18dee9deecf744b4 GIT binary patch literal 73 tcmbPe|B~zF|7r$g@a#VbwDd4CR0Aa#p;FbwKt2e=6$2U83=BXLgaG~Q5eonS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/59983fa03a6675fdd23b40b1cfd51debc20726ee b/src/libs/libsrtp/fuzzer/corpus/59983fa03a6675fdd23b40b1cfd51debc20726ee new file mode 100644 index 0000000000000000000000000000000000000000..fbf6607d91460dcb5e118801f906d3d6fe40a508 GIT binary patch literal 37 kcmYf1i#MnSg5uQp_&=W^Y!JV?nk_S)fq_AdfuXb*03kvRs{jB1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/599a6b95c82ebc7b9f00050ecebb14392abe51c3 b/src/libs/libsrtp/fuzzer/corpus/599a6b95c82ebc7b9f00050ecebb14392abe51c3 new file mode 100644 index 0000000000000000000000000000000000000000..38d13d7bd3062f36140f53b63690cd122c36c8e1 GIT binary patch literal 169 zcma!LU|=x#|NlQ@QEDbfJ&*$gK&~$XV|6u{vkwBmZ2ZLke<1mW;yFSL;SiN`7>)xO pa~Rr%890Ct4p7y!gOnhtnFHkN=@%E36zG0SE3K+ZEdpw+1^~EDA!h&p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/59b4a9f480a1c995f5d9c5fca19d1eac5c367017 b/src/libs/libsrtp/fuzzer/corpus/59b4a9f480a1c995f5d9c5fca19d1eac5c367017 new file mode 100644 index 0000000000000000000000000000000000000000..a62291b18cc1fe803e65718af22f867f4a1d143d GIT binary patch literal 102 zcmdOk&ts5Gjn8CYC}QBKX8?o$|Nr|kFjQAFG%zwUFi6Jp03|ays*4$cV(Jhj4Ax*; mfPsONfkC#yc#aUmKcF_@_ISNKhLU)O2Mi1x44E9MP!j=cOBLDx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5a0667e778e29501120b35a61c79eb6d6766acf1 b/src/libs/libsrtp/fuzzer/corpus/5a0667e778e29501120b35a61c79eb6d6766acf1 new file mode 100644 index 0000000000000000000000000000000000000000..6169d5f0f3755e3035aae24abe535ceb005e6fb3 GIT binary patch literal 209 zcma#k%VV&OXJB9|O8qaK$p8lb|NmEIU?{F;U|{_3%fL_#V#qVh5dumoFbKCZATw3w z07Y3CIDqga1N#FY=l}m|bsz--))0z;fs=tjmVpt-LpG2}03_Yo^Pjmo7bFJ;iy?Xh k7=dmAfog3=paawms*92ASD6EJ;{X4`U=l_EjW`Gd0AoWlqW}N^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5a0adbb9d45f626e8fb08e03d1fac37b33bf6ada b/src/libs/libsrtp/fuzzer/corpus/5a0adbb9d45f626e8fb08e03d1fac37b33bf6ada new file mode 100644 index 0000000000000000000000000000000000000000..d23404d80f0a0d7e455547ffb9c9ba950bb28d36 GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H&9`2hu?B|39NI14DH+0|O(Fml|J|2ohBX5kL{Ph5}9o23fEi z!<@Qypx_*ac3~jJ0aDQR4M_YK0x>}V$<Y7EhL$nJGk}c+DMB}tfq<bv2P3(GfuS=s ZlcOH$hAN=*|NjFyoPh;IKtMUrB>=K(B-{W1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5a3ec3051c1e08289c821a3ba9de31c94cc07787 b/src/libs/libsrtp/fuzzer/corpus/5a3ec3051c1e08289c821a3ba9de31c94cc07787 new file mode 100644 index 0000000000000000000000000000000000000000..2ac06355562f83352c2830f76d83bb9ec6e15558 GIT binary patch literal 137 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDoXx<%2x0>X#bQQ=YKNIXa1)5LKnxH7>H$hB zfD}~&RRFbXGSq?ffP@(4I5IG>KKTEJ!IH57tkOT;0B9(KQFV2-ZEAdV=Kufy)r+f{ Ns{b=E#8>}g000mzDUSdE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5a7930a948550d09baa6ee015b329e072581fade b/src/libs/libsrtp/fuzzer/corpus/5a7930a948550d09baa6ee015b329e072581fade new file mode 100644 index 0000000000000000000000000000000000000000..0ebc9887fa0269c2194a800ba9da7512380d2249 GIT binary patch literal 102 zcmdl#@jutgm(>gm4FCQ+NC7DzP(xue6a!@$LE=E7x|orndL|lx$tytRfod2Kx`2Y! E0NJV;>Hq)$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5aa9b976c14d72f436487381eff2b555371cc2f3 b/src/libs/libsrtp/fuzzer/corpus/5aa9b976c14d72f436487381eff2b555371cc2f3 new file mode 100644 index 0000000000000000000000000000000000000000..83afd6e9a4e29d4b6dd1455382b608a934c04b06 GIT binary patch literal 173 zcma$54+QuB|7R@9<VdY&00W?iF9Sn$HRm=6fQV8=LQR5F)-ba;88T9HtP2=q85kK# jt2O5c0ci#X;dTawISc{}`@VhWFa(MSGsu86uv7y8j!Y#V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5aaafe06a140849cbc6e14647b219241b85cd867 b/src/libs/libsrtp/fuzzer/corpus/5aaafe06a140849cbc6e14647b219241b85cd867 new file mode 100644 index 0000000000000000000000000000000000000000..44bb5f74a64256626a29f3adab2a52de1fdd5973 GIT binary patch literal 69 zcmd=1$Ie*Iz`&5m@b`O53&TH#zdu?U7^+)9VhjxJ3_!{MaPa&8|Ab<QT)Zv=gLk#5 KErS|^B?ABms2sWg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5ab4f4c621236226bf559041e869257f28131ecb b/src/libs/libsrtp/fuzzer/corpus/5ab4f4c621236226bf559041e869257f28131ecb new file mode 100644 index 0000000000000000000000000000000000000000..cece132a88d52842286b9538d8cca52e70e40a3f GIT binary patch literal 128 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtAd``yx)_Q<Tm}UOhISB*0E`Sk1;?t@ p8H%bI0$(z`tOkS1YM?$T1_n-`39=vqkpN@ye}4w+29OaR>;Sn)CIbKf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5add5469d7e867fe432d6958178e6863be5af6c9 b/src/libs/libsrtp/fuzzer/corpus/5add5469d7e867fe432d6958178e6863be5af6c9 new file mode 100644 index 0000000000000000000000000000000000000000..71dc22024614b049a2d14d5c5fbc4d89d151d424 GIT binary patch literal 123 zcma#o%VQ{sXJB9`%Hfz<52S(M|NsBK3=GxP3=E7A0fy>gAO|~OWGH3?s#S-`T01~h gaWXK-g0xo`&k+I(3AZyaZ~$3z7#RKmEda^@0GYQE`v3p{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5b010a8b7dcaa3e995f9032893010eb4d0e4ebe9 b/src/libs/libsrtp/fuzzer/corpus/5b010a8b7dcaa3e995f9032893010eb4d0e4ebe9 new file mode 100644 index 0000000000000000000000000000000000000000..7315ff4fd638d7b89e4964c77a34fd058f7a24ee GIT binary patch literal 186 zcmZQzV60<cWB`IW4DBGY8U!-qflM`qVus>)y?DJmh7b_HD3c?#9!LYh|NsAe85pXo z85j(JyzKb0#GKO9_ySG_23e3{4aG%54B<p;W?)bNyMSRk*l-9@6<^Gd$Hc&}9V@6V GVgLYZD>3*0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5b35017750540a5b1cdd4008558347708b568a84 b/src/libs/libsrtp/fuzzer/corpus/5b35017750540a5b1cdd4008558347708b568a84 new file mode 100644 index 0000000000000000000000000000000000000000..7752bd0aa4a7c000465d1ce25545789e15815e35 GIT binary patch literal 308 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0-*zB!xgs5CEIqnVQK_4^>kIG9F|uLkoxi0W^#45jIbm2T=hc s;Wo!(aWaE1&{VLKf$BhRfvd*tPN1s)sP3%8>P{Ar?H~Yjr#grR03^vZ7ytkO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5b53d0a4e6ee6bc73a29391ad5f4cd6fa2d3017e b/src/libs/libsrtp/fuzzer/corpus/5b53d0a4e6ee6bc73a29391ad5f4cd6fa2d3017e new file mode 100644 index 0000000000000000000000000000000000000000..7ad7dd8a72f721a69feb9d3c6700bdf84f8af18e GIT binary patch literal 143 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHZF&?luMnMh0n+`s!k!At1V19ZWMY vSVL(BP6h^9pt92H;yFS<nt?&Moq=Hvg8;+6f8QB6jDYgO3^Gu~EI<<g^fo0> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5b7ea3bba13d17d8fa4176ffa5cea0bc7a7f6c44 b/src/libs/libsrtp/fuzzer/corpus/5b7ea3bba13d17d8fa4176ffa5cea0bc7a7f6c44 new file mode 100644 index 0000000000000000000000000000000000000000..f3de68549d18b850562ca468ec01713051bed0b1 GIT binary patch literal 628 zcmah{%SyvQ6g_DQor2<{D}_o6f*{&%+^Dz^T(}YR17rwguz|LegjVQ)-B^oIa4AUe zAN&=6K)=C77YZHEBxx7L;)Tq;nR|2QoHMC7z=;G9_(JuW8Ri>WUl>+wLdmYz=qTB) zH@#XZtb6<IJWzxy*o-ht)&i5=z{8kJ-@z`E{hSfNSE7%hov|?;>9Kawp+NZp>5S;X z7;_Fh-W!u*pd9{eCbOAU>;Z$3adnt>%iLpdFSE{ELV>ilw^(M$O5hE-Prg{Ru*w40 zz%d{vEo?~H-I?k87(KtfKaCCbIjKJXW-)gQMScHs*DvHwK+Aok-9boqr`$<BGtV8l zpec~gS{{|EzKxb~2sBhn);eCNp?K=04%eW+kUTLFAfH3=h`{<FvPK{_A`)<lta(Zj oOKDy?y*rBo@pNq4Rou(Y-QOP`7&Dm6L@e~cqLrr#?H@pLzxxq)KL7v# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5b9d48b61c7c6c9abc2669ad417cb1487b9934aa b/src/libs/libsrtp/fuzzer/corpus/5b9d48b61c7c6c9abc2669ad417cb1487b9934aa new file mode 100644 index 0000000000000000000000000000000000000000..c4de1a465eba6c3ee176ac7fb26821cac8c4f8c7 GIT binary patch literal 136 zcmZS3V_;yYE@oiJNzIE-2C{)***AvbY6b>I5F1ET7c(+c&qRP?7Hc(*b_T|3hTs1g z{(f(10ZK726lHRx)`N5~{Qv*o7pMzjLVH0`YFa8-9EqrkFJ{PN0t;0C|6dJc0RY^6 BBc1>N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5ba0b298eb42875f33ba8e5e0471faafa7b49e7d b/src/libs/libsrtp/fuzzer/corpus/5ba0b298eb42875f33ba8e5e0471faafa7b49e7d new file mode 100644 index 0000000000000000000000000000000000000000..c681ea7f59b0e6eb52da4b22481024998788400c GIT binary patch literal 40 lcmXS}W-!#&W~jEUW&i_G5LsQ!$WRRwn8U!p1VlhqB>;$_1~&iz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5bd352048873f6d2ac8fbc0356ea7e7d05918ddd b/src/libs/libsrtp/fuzzer/corpus/5bd352048873f6d2ac8fbc0356ea7e7d05918ddd new file mode 100644 index 0000000000000000000000000000000000000000..868e43c7bc8f63356bcf0bc8b99e638fdf66e97c GIT binary patch literal 136 zcmZQzU@$1DXJB9`Vqlm9q`;tE7|NI<1ZE&hurP2iFhQhmLsfyPmTFUmVnzlAAcFEu WKzxKS$V|9auo8&s=L`(h3=9BTS_~5a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5bf83221f44d32022c5c3adf4241f715f0794461 b/src/libs/libsrtp/fuzzer/corpus/5bf83221f44d32022c5c3adf4241f715f0794461 new file mode 100644 index 0000000000000000000000000000000000000000..92ee9ad041180d5f307fe1d574df365e7fa18f43 GIT binary patch literal 69 scmdl#@h`{Am(>gm46F?M|3d&fkjKEl2qHK@1QKBU!cdK>4yd&n09l9@l>h($ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5bffd900d1d343c268a7cdfa08c8faf000319974 b/src/libs/libsrtp/fuzzer/corpus/5bffd900d1d343c268a7cdfa08c8faf000319974 new file mode 100644 index 0000000000000000000000000000000000000000..5ea03c8ea8487c4861f1eb576fe849bcf7f09607 GIT binary patch literal 354 zcmX|-v5LY#5Qe`M(b$Pru}X0u2nvG5fz7>u;2Y%NND+_-YPW?JiuE;D<vFgjzqhc> z3uw8{>|XN2?msg-{4@Kf^MXSP?D8l(3JaWbE3j5V!%!=BZ<M4q_6$qU-~00E;w01t zo`zQ_CAvL{9^t{?pZ4_k1G&ypsHC3D`M0a7#aJd;%ay8=pgM0V)Sg8|vPkzXiE|Ry zNF*?RKWxxz)_aG_xAn9MT5<*~V3QT;my84XtWUPZVYmGVEhFs}tXYZ)(~wN*!L>G} V!%4iTY7qaM=l|2p5BBtNh8Ow&Lva8A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5c1ab7ce9dfefe55249e883d3359ade7e76e5ce0 b/src/libs/libsrtp/fuzzer/corpus/5c1ab7ce9dfefe55249e883d3359ade7e76e5ce0 new file mode 100644 index 0000000000000000000000000000000000000000..b4b796aa18b05fed84a2a059538ebbc9518de8e2 GIT binary patch literal 944 zcma!N6k{lfXOLh(0{{R2_hn$Hu4Z6h1d67{mn9-385!6b3OE@UWEmJ&0Y&F9v_nW? zAjJVv*7glZ{1*Z-K>%nr14CzOCPzI(J6KH>1JHPoxehEKc@W@8t%oom7TafoY*ql- zJY^n4f`Ner=oYpHAg?GBO*zP&CxH_9+&PDVXm>WTP{Ezx5Q^8!W8eX~AIZrKzCb^M jgBIu?P<YTJJY6Xb&%qY&BRD*PnE;fA7#OU9cn$*qb|j<K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5c50457a8a183a1b286327c78b52a83a8c5e4c60 b/src/libs/libsrtp/fuzzer/corpus/5c50457a8a183a1b286327c78b52a83a8c5e4c60 new file mode 100644 index 0000000000000000000000000000000000000000..765afad6e7a756aca858d182802aa146c977c4d0 GIT binary patch literal 60 ucmdl#@jutgm(>gm4FCQ+NC7DzP+(vv28u9(*g&GXn316x!UvKFR1E;)B@EU8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5c65a7b3d7df8b9a962fc82df75b0d7b930a81b0 b/src/libs/libsrtp/fuzzer/corpus/5c65a7b3d7df8b9a962fc82df75b0d7b930a81b0 new file mode 100644 index 0000000000000000000000000000000000000000..dde671f79de68dc72463071be08c3ac00251e436 GIT binary patch literal 144 zcma!NWMHs}XJB9`%H&9`2hu?B<Nq%(%~bH;mw}<WnqeCR6fgl50|8S$Q~*LTFfcL* zGYD`oR2M_!tE<()>KGWTq4a-F1_oK6veN3}IYJB!Vi4guOadTA4HE;yzePR&{xdLm GR|5dDS0h~j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5c7b86ea4762bf763c3134ec0aa3580f82cc70f9 b/src/libs/libsrtp/fuzzer/corpus/5c7b86ea4762bf763c3134ec0aa3580f82cc70f9 new file mode 100644 index 0000000000000000000000000000000000000000..4af04efbb64f2f80c8747a8c04988c0b2094d5cb GIT binary patch literal 733 zcmbtSK}!Nb6#m8pwS$O)Q6QLj=u!mcAxbc?LxNpAhsokWkQ8@2#6Won>Qc}#^3uhh zut%l;(6#95AJ~G#>Ai7ksh~^Wvb>#d-}~O1`39=2R1HA48E%|WBq*gS7~QD(@mSJw zs)|dR4`e*p#0XkF1vCZ7;;n&&2f(Qv0c+jn<vodQ>zpl<DIy`Hpxz+Y`*F=BE`WX* zB1J0|F=;yNoR$oP-ya3PKSa4inPOL`9ZUO5a=+?qwAxm^)yU^)(wxWY1ic3t#^>NY z;w1b!Yyz>Bq4x?wdpzJ0v8sFER}UH+F${mGQIF_<aUGq~@iV?F@i^bwkw0ECc}|HQ zj6X=TbqWzSh+ZLWNOq9$J`2F4VBe|XGnNfOzCUW;ul|6!6FpLM2QH&CJH{;Z$`y+` z4qWOQOt7@Hc?yhdM>~@So1N_w6-1aGvB19xbtmmmF!yi5R1O%=9nuGvQYu0(algJ@ b1OinjZ#gHOJ&W}!KqkX(>izQ>h%QqfL%pU~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5c818e280c90078b385ac1cd9316bd4465144508 b/src/libs/libsrtp/fuzzer/corpus/5c818e280c90078b385ac1cd9316bd4465144508 new file mode 100644 index 0000000000000000000000000000000000000000..a9a99d6f8a01706b56a717a24e60ac2490fe524b GIT binary patch literal 70 zcmbREe?QmDm(>hFpzt38Bo#nBFi5CwI5~}hAu}Gxt1cD<;$=Xf!^luw?FAHJXlG!o JX86yl1pw4!7#RQn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5caeea41da4372ca05b0e28a15c4533d7517b203 b/src/libs/libsrtp/fuzzer/corpus/5caeea41da4372ca05b0e28a15c4533d7517b203 new file mode 100644 index 0000000000000000000000000000000000000000..a1ec99d57a1fb609f04f3b7defa156d855690039 GIT binary patch literal 133 zcma!LU|=x#|NlQ@QEDbfJ&*$gK&~$XV|6u{vv1!%Zy*M<@e}|5f#e&C=Lj)?Squzw m7>)x)<}kDiGjISQ14wEPgPwkIQAvUBx3to#s?;K&f@%Q#ksZGP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5cbd957537442bcf267687c9e3fae175a93da3a9 b/src/libs/libsrtp/fuzzer/corpus/5cbd957537442bcf267687c9e3fae175a93da3a9 new file mode 100644 index 0000000000000000000000000000000000000000..18c3eaf48f0ffb3751b07e41688ae0397f993fe1 GIT binary patch literal 733 zcmbtS!Ae3w6g^{-+Crj0C<sh~+9ZOyD#1V(1+{4%k9fEcM8)@7#6U>|wF+8BZrTL> zfJ>u)sAbW%A9w|c)0t_?tYzmd?z@+J&$%;apf;3p0JN&n${{16l-k7Yxte%+kxU1w zIBV*mQ~-|^!R#?)N`Ne0Sh%<Ye5VeiTh-GmlC4H`(~9jBu?Xg%-XJrbDN~z10Xk8L zIc6$m+e}zHC|OXfI8dJp6o&c`8zpv%vT56s-Z$mewx6pt+}&CwpXG2i(CmbvkWqXs z-eyf=ILB2mxzr0@A$Z0eJtCHk2L5Q6Ui5ykQ6v6eoW%#cevMHkz0Qan{Rt9@V>Sk` z{vfHXQ;6}{+9V-8NbMl;{uzLN!MjwwC(PRdeZT+ddz%y8>#j!AUX@9@V#dVlE{Ve& zHW!|R_Hd!YJd7wmfygt><rYBs#!1)V^UtEsXx^DpQZ8~A@Ii1<<6aJ^jgLt$WEsit q02#MYKWZ732d&a50-<d`@A~`Abyury0;!a?5^4>Oz5qhBboB!iXQH$K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5cf363baadf037f6b2d9ba6bc43274685aebf7bd b/src/libs/libsrtp/fuzzer/corpus/5cf363baadf037f6b2d9ba6bc43274685aebf7bd new file mode 100644 index 0000000000000000000000000000000000000000..eb6d057e3c43abfd5baaca3caad3011948bec44c GIT binary patch literal 245 zcmazqEl!P3&M(a?Ni8a_X8?o$|Nr|kFjQAFFfc*{7^;gIA-Gx{ECSL5mEr`dYAed* nNF`IVEYOnD>f$*<V9SKt85rg;FsL(p`_8}twE;Iprrv4*x6LK3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5cfd0e042d6237d0436a3ca12d8c1dfb536f8be3 b/src/libs/libsrtp/fuzzer/corpus/5cfd0e042d6237d0436a3ca12d8c1dfb536f8be3 new file mode 100644 index 0000000000000000000000000000000000000000..fe91a386fbe5e004e174b00c36245e72763a701f GIT binary patch literal 101 zcmaz~&d)1}XJBB+<ft!71=0x&jtq>BKn56~@I)C5`ue*1`nZad3^EO><Kr{`=oW(o b`}+E{AcDp1j0{{Lt=84mFJFEIt9c6mTgn@C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5d01f5a9544ad63f156ec2b9e9a30326e35d67b0 b/src/libs/libsrtp/fuzzer/corpus/5d01f5a9544ad63f156ec2b9e9a30326e35d67b0 new file mode 100644 index 0000000000000000000000000000000000000000..8e882423f42a9765568374db2cb5df50972d3b8a GIT binary patch literal 101 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28Q3&3=E763Sg1yVl{^9VnK%LYIQK5fx&=* g;U$>K$-p2BR0ouv!^>dCz|ac^ISfD(7?^-001+@11^@s6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5d0a2b8e5ab4c6220f70b408d5d82bf08a723732 b/src/libs/libsrtp/fuzzer/corpus/5d0a2b8e5ab4c6220f70b408d5d82bf08a723732 new file mode 100644 index 0000000000000000000000000000000000000000..9e7921e66a4e1f3ab19f5a5ee675cc36116c42cd GIT binary patch literal 96 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG9e?>~qk az`&rZ%OJ}DR90ayhl8Pkfe9)PrK$n1eh>fv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5d7a38cb9399eeda448bc84e1449e7a5bab0f5e6 b/src/libs/libsrtp/fuzzer/corpus/5d7a38cb9399eeda448bc84e1449e7a5bab0f5e6 new file mode 100644 index 0000000000000000000000000000000000000000..5b0ebf6c2d27106c4ca406a98bb8b361af7bff3d GIT binary patch literal 43 pcmXSpude6N)oo{BtY!cM(Q1aj4As@y)lfczuC8cxwNXNKCIH!T3Gn~` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5d813c4465a4269409085a072f39cdf4234ef6fa b/src/libs/libsrtp/fuzzer/corpus/5d813c4465a4269409085a072f39cdf4234ef6fa new file mode 100644 index 0000000000000000000000000000000000000000..03a9dd27aec921ca69a44888f8039e7d995e8a24 GIT binary patch literal 1429 zcmds1u?oU45Pgw?qN7^}zonbt=$emk=wvhbW&VnbLw}%)V7<#r3YAm^X%R!YyCg5Y z<lalphZ)$Kdy!+scvFgZMvTE$hg@mkoOVHLeIT)ZoVz9G;+g;jt`XLaq<{Kyp)9e? zO*`EVWY?1X$h37WT{LKOpwK!&E4L8D{DM8uvaN$xry!5|mHMWuKV3m1&tp;gmEPX4 z?bYw4pjigM%TJ}znyebUW;>sTWc|m53uoa?>c0zPX~D*1LKWF!Ks&%;0@)kVb7VmY ZJk#^`qr|&pohIRGc@e5p5RU+)xd)04@h<=X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5d9c2ba3bf785afa9339494d24e0c36fbea03ff6 b/src/libs/libsrtp/fuzzer/corpus/5d9c2ba3bf785afa9339494d24e0c36fbea03ff6 new file mode 100644 index 0000000000000000000000000000000000000000..a7b77f6c30c265dffb0a1d309a13930969c811ae GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+Yj{j~YXDF(Xh+9n5E7umsXC kL2OP223dyUIYJD^3=BD`dGX2lc_l^pIUrM@1_O-+04T~8;{X5v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5d9e462a5151e631a1389f52fd7f220fd8c6a3d6 b/src/libs/libsrtp/fuzzer/corpus/5d9e462a5151e631a1389f52fd7f220fd8c6a3d6 new file mode 100644 index 0000000000000000000000000000000000000000..e9f05b0cd6447e14db78519e5cee155ce0f35d53 GIT binary patch literal 106 zcmdOk&ts5`XJB9`%H)V*0@6V6|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc j7&sXiWEp_UDh%cbfyIQ|ffNTr1H&8+2B?98KoJiB)zc2s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5dd124861b5618cade180cb240caf3678b42c591 b/src/libs/libsrtp/fuzzer/corpus/5dd124861b5618cade180cb240caf3678b42c591 new file mode 100644 index 0000000000000000000000000000000000000000..dcaa43dd6b3ac1c1baa157822f52f6b7b51784c5 GIT binary patch literal 175 zcma$5&&^O1&%nS?l*y5*2Bd-D-~a!<3=Y-RKqfm_AQ4P5F!0JUFfuSS6mT*yfLH<y zKjtvB1Lc6EFas+C2LpowgTXhTl6r`S{~&{aJPw9bhRh<Mn*R({3>^RePXtLPvM~G? b0x@0zaY;P78juVa%>M&aCkkW&)yV<?2%jY< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e065bc6b58574b3c83484e7dc6e1faf3fa5d161 b/src/libs/libsrtp/fuzzer/corpus/5e065bc6b58574b3c83484e7dc6e1faf3fa5d161 new file mode 100644 index 0000000000000000000000000000000000000000..5df976699dcbb270182cce0987749385f4dde038 GIT binary patch literal 75 zcmbRE|G(GEm(>g)AOpnzh5ti<2m>>ao19-%pbwN~1jz$Ibul9ZGk~=)v4LnH3TCJ_ F1OVm>6qNt~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e1a550e7021865bfcc959952a844d3b6a6bda24 b/src/libs/libsrtp/fuzzer/corpus/5e1a550e7021865bfcc959952a844d3b6a6bda24 new file mode 100644 index 0000000000000000000000000000000000000000..adffcadc0ecc2306e80acb86128c008bd0b528c5 GIT binary patch literal 41 ocmb=fuC6XljgS9R9B%+*LP2Ic0|SE^LoowTH1q%e|M%ld0dFc1%K!iX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e1a5b7ad4d785ddcb1849465ada15d4d3beaf83 b/src/libs/libsrtp/fuzzer/corpus/5e1a5b7ad4d785ddcb1849465ada15d4d3beaf83 new file mode 100644 index 0000000000000000000000000000000000000000..3f23ebd1ebbe5fe41df77e2d8e41265ceff26d5a GIT binary patch literal 271 zcma#o%VQ{sXJB9`$mB?^2hu?B|Nnnq28QZt1_nk3hQF!tWr+}R5Xs2E)=<F7!0-?x z$G|X$p&ddB11S!WNZU6c@m~nU1OcGg3Jjg8nH=>D?O-)kAmhP$Ss*Ha`mkEe0J4}H grUq`YEQZBdxGV;_6RMm6!wo(_labs3b`b*y07c0yFaQ7m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e1f0fb312d887f114c0faf847c95ee3219a757f b/src/libs/libsrtp/fuzzer/corpus/5e1f0fb312d887f114c0faf847c95ee3219a757f new file mode 100644 index 0000000000000000000000000000000000000000..8b32f63f76988fdaad076174dfaf6c3abe04e0f2 GIT binary patch literal 135 zcma#o%VQ{sXJBA3Vc>XL52S(M|Nrm43=GxP3=E763P64}Lv=AD1XrsIfK)IrSbl@h z44gn(7N`&?ucimm``;Icppqa;)SwRpxQgQq463W+<8?Ft=oTLX0-*Uo&@e|xhoKq( D(dZ!% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e47a25d23087289945f9226c0a37f9668dc1942 b/src/libs/libsrtp/fuzzer/corpus/5e47a25d23087289945f9226c0a37f9668dc1942 new file mode 100644 index 0000000000000000000000000000000000000000..bd78b34a0764d745f3aad3b5dcee11b5006efb50 GIT binary patch literal 69 zcmZQ%C}a>|U|^77sAjmuP_0u911{CoKw$<w1Ylrb{O`-a02F6rlxJW9>H1$?ZCG8M F2>>D*5E%df literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e625071f529dad68777f7a1f675743a528d366c b/src/libs/libsrtp/fuzzer/corpus/5e625071f529dad68777f7a1f675743a528d366c new file mode 100644 index 0000000000000000000000000000000000000000..97f760fc98dfc2ac77c8d06ddd090e10082ef512 GIT binary patch literal 102 zcma$5m&YI(&%nS?l*y4=52S(M|9=MG{|wdD3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO ngV>x546+QxbA%X-85nY2#wX`jfr-+1hCCoAucRpde+~lxk7OBN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e739c9eb9d9e4cbd0ecbaef1bdeb999d28a2d48 b/src/libs/libsrtp/fuzzer/corpus/5e739c9eb9d9e4cbd0ecbaef1bdeb999d28a2d48 new file mode 100644 index 0000000000000000000000000000000000000000..fc9556dbeca7faa6622c5d8253ef914a2d592db8 GIT binary patch literal 100 zcma#gWnd_YXJB9`%Hv3_2hu?BKli^c14DH+0|O&OfRUk^p}Kf6kg8UPh%B~-&<qTm e3=Fai><p#V#r8sAG2wO)#Q}ss-No_z)%5^*b`OgH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5e8a84ddf667f21a9b423ae1c08fc8feb7e5ce8f b/src/libs/libsrtp/fuzzer/corpus/5e8a84ddf667f21a9b423ae1c08fc8feb7e5ce8f new file mode 100644 index 0000000000000000000000000000000000000000..642180dc3991c82a87d7429496f8c18826fcf25d GIT binary patch literal 40 tcmdPpiZ{rvuC9)c&n#vrPOUEf4+IR=)dn043=Dh>@eDl045{(eEC4W84O{>K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5eae25a49caeb548e54a3ef3c984fab8d9902622 b/src/libs/libsrtp/fuzzer/corpus/5eae25a49caeb548e54a3ef3c984fab8d9902622 new file mode 100644 index 0000000000000000000000000000000000000000..cf791dc4afaf7acee4aa5449290e9667dcc8b990 GIT binary patch literal 164 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~l6q7cXV+0}%7#d!J zd7KOk#z2NFP%T3>5JSvjsOMlv1<51KLT00x3pNOB43Gsh&`37l9wa6PA{eUyaZwu3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5eb71bd7ad624545905508d552b6dc10a2f847bb b/src/libs/libsrtp/fuzzer/corpus/5eb71bd7ad624545905508d552b6dc10a2f847bb new file mode 100644 index 0000000000000000000000000000000000000000..9074f0ce578bc0d6e9325f23be0aab3dc473589e GIT binary patch literal 143 zcma!NfB?bV#GIUZ2>bv4|Go?g)zu8!umKf_pzbyXMg|6HkdEqNAPYoStAi+I23u<o m4Fa4D8L2r146;DArPZ2qK<b1UgxVPx<}e5_>;o%7CaM9*k0c2I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5ebcffacdabd75a178673efcbdeefb1f79ed394b b/src/libs/libsrtp/fuzzer/corpus/5ebcffacdabd75a178673efcbdeefb1f79ed394b new file mode 100644 index 0000000000000000000000000000000000000000..88eeaab9685d72911ebfe12556d372135349fe55 GIT binary patch literal 136 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHVf~zyuM8a$yt$10#blNT#|NXb6a| nRtM7z4AxMZfs=tj7O1SWx_FKdSWLK`fng4iwGXBOLRSL-0CpZ1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5ec15755d11256b26300505f389936752ffe31c7 b/src/libs/libsrtp/fuzzer/corpus/5ec15755d11256b26300505f389936752ffe31c7 new file mode 100644 index 0000000000000000000000000000000000000000..e4a5ef43b96ff35ad896395e909f6138246388cf GIT binary patch literal 69 zcmbREe?QmDm(>hl5D%dgAQX^vsBSnpje#K(D4|_l%*X)75XCkOjMWTGtp7m(03gi~ AK>z>% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5ee63fec474fb8683ba8926218ae3de284e07282 b/src/libs/libsrtp/fuzzer/corpus/5ee63fec474fb8683ba8926218ae3de284e07282 new file mode 100644 index 0000000000000000000000000000000000000000..222ecec6258603d8382adb1a1457f3740a04ca5c GIT binary patch literal 459 zcmaJ-u}T9$5Pfq9=Bz|PP>7OCWg}^<V&DR?NFbFTa7D04qv7@}WI-(iZ7s!XZ1M?L zDpvkLTJ7@#hhWHLc3g>-5ANQ*w{tu52Hay#0Hnjp>9w$cnfrKs;I--0ikx%2qka&T zFyfG?k3cQJ#*ZEYya8Eq1{|cr`)9fANNbwDlEPI~!C$bAd_%p>J0P!ss-igbWlHU< zjt4FKqqXc0>UE@&j`b}c*1)=H1>Zje%v$D&Up{qU@pfzeK(bE$X1$R=i*eyF^0`zL zw5>cYTmy?nUPpbO=a3wP3u`0?ms_{8uo7-bHkRGU6n>E3IsRv3L$^`)Xaw3ru#R^p e&to7s$quv2QFj2Wpbtcm-p}nO5^3x}sk0ZY+iAi8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5f140446c99237df25e408d21c553069f5c891ba b/src/libs/libsrtp/fuzzer/corpus/5f140446c99237df25e408d21c553069f5c891ba new file mode 100644 index 0000000000000000000000000000000000000000..bd4ba444f63fb083270dd5475f0261d994cb355b GIT binary patch literal 242 zcmXYrAr1mD5JmrN2$WR>MG$}hZh%LDBEh3qpdhT<3fAB-_=c-+6%@%{0D&3)v^#C4 zZ~n}0`@%kN8V}&B>oE_D&!lAbG6Mu#BA%tdb4n=3e273!JL$%W9`uj^Rozi#M|9J| z6xjfn2evzKT!P*kR=UazX4Dl^3|Cweq^qz%##+wZx*v7>>e3^(V${BMyK7bo4XQs} Nj;=Vd8Ke$F;16r}FzNsR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5f41358a7ecee7c3300274553aa6c2b8761e45ec b/src/libs/libsrtp/fuzzer/corpus/5f41358a7ecee7c3300274553aa6c2b8761e45ec new file mode 100644 index 0000000000000000000000000000000000000000..206b4001443719bb0a94b9cd43d7d0d2f20fd7ca GIT binary patch literal 44 rcmXTk%@FwV`^#zwC}w1+u4Z7E!@$7Az);Op%)p?{0F(m?0zokVfb<W7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5f456be4a8881ef761297b4ee2b2396be9cd06f8 b/src/libs/libsrtp/fuzzer/corpus/5f456be4a8881ef761297b4ee2b2396be9cd06f8 new file mode 100644 index 0000000000000000000000000000000000000000..fe34a9c6c2618910e0c882a9a53c96dc1f8482d6 GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu?B|NnnqeTM341_nk31+YkUu^K~lF(Xh+9n5E7uw-C( w31)IKFvtSc0j1{%F&Hy2<fP`sC+Fvt6y-ZGFfcJNB<AGgC+C$E^Fa&(0OjKrVE_OC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5f4a78fae92e6d4e3cdc99e83ad125a2f7818c8f b/src/libs/libsrtp/fuzzer/corpus/5f4a78fae92e6d4e3cdc99e83ad125a2f7818c8f new file mode 100644 index 0000000000000000000000000000000000000000..88bee1cb5012d2fed1eacabbece82dca222419b6 GIT binary patch literal 2643 zcmb_e-)me&6#i~Ew7adA)U8mJ;wm<2)ojxrMB5sYKpwPE+IPWgh*u1x+pss=l8$6o z{1H@qs4pVyn}2}_#V6xmP;fy(d=bHiMM3Z(X-U}e`)2Oly~(aM4<7c;&YU^t%=z)n zx%Z871(P8VR3lqlfFo<|2_QD)S~8YlCyNw8bs--a*gBck?t6@!5{hg5d+^!k_X~v~ z97j+-ZEiIm#RRYzRl@n&Tx~I;#5EHif%zLSEk0z33J0XY_4%fZLB@h+9>H<W_c;!S zN7Bj6>TE&*I(GU=&mY-vo=)Ks*TZx&TF9dgXVJU&T$4LP$WMT#ao|_3EKlVT!+3F0 z6Wp=u4AxB%>OXwhhg<hNX5`8SjKSRu?dFZ$m5ryUaUCZ1){GhT7My#UZWq9)WBM1I zauK6Rt&A<YIyYa655lzHX){%Mh4s+}RqbYC3(G3U$BeX&wIaPOt27y3nNw;8C^-ca zk2r^V&RhW6m_;p)uHKwmtTDW!$WeCwMs?}*m^4F+{B64BGv&-=hP+`BOUMQ89OjqR z(uu~b{L9g|n1@$nVH{&TfE04AI8x-T-?0bV3OG~TXE#P;<1<O0@C>tRroSZptRW?u z=4MGomG_Qa<y!bSDi%o?ado|*yzR^t&IJvpe^q;;LmH|qHGS+<@I=4Pl|ey%!RXUs zw_2_9H1Y=u!wJM^Uabh7IA)kr9YDHlNVDbyrh)Qh$10%pL%Cc&$tOeHdfePI<_P6^ zN5B8gc0PTNI8h|rn<GiPqk-nF!2gRDTIwEu;1`3(0Q(zD4wcLz2*)*qA=`oj+0JBj z0|%n;CS6HsfDLDf;1qz702uzBv!^JjJpiXzYXBE<Sn{MHH#%+3257i_q@EkyDQT%C zv5WLNh?fI_9!K{ugZpX-B+2Ri+(3T*a5%1N#B6XR<}e$oIEm+8C=9n_ub?%HqHsnC zGIAH}Dc*)!8mS!5WOq>1I?)HKnWN|bC;I6}5~InV)7|i}rN6qR!0UYU;}h(u;0|Tp z!95l{n}z=jeOC*cGG+h>FY3kMyIblB*J`)?HHd*mx7Bu`AvW8>#1=K)vNevb?g=#2 z8+stBbN6<po6cO)F*<aoO!i`U8Od#KCimTgQ3oZo@~3^^uYzanO_FDR*L`0CUpZ$m z>@F(pm>1N6eb?Dm8g@5&mc5NP`7%$u$ZetiKHnGpiFE?69U5pF{V7F|zT&9p-O}|7 zEB%(OEsys~#=h||7=1!>zBohf=AS93Xy|@i#QeB8%d1-?GieP?tbBu$R9dP=Z%5TI zt~iJ|K)`OZ+rG<usSOsCH$GGRll!KQ2F9?Y(ykFx{%a%_1d{UZ$kZzNBwnX)d+~_l zY{fw%Ed}sW>Rb;rt~>FKPkD7G>g4EB7glUvwu_@P4AD6=I-ayO|0$D^U}gK<rM>Pi z`!$#LvcJ;F)B5%yeYm_o=j*uTRDX9PGt@QX=S&r)*S{Y0h8DK2v9q$S6bfqi2idOv Aa{vGU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5fb6f5c740bc17d3b279ab715fd08fa81686d5b1 b/src/libs/libsrtp/fuzzer/corpus/5fb6f5c740bc17d3b279ab715fd08fa81686d5b1 new file mode 100644 index 0000000000000000000000000000000000000000..b07d8723c49eda564d4a9c6b64c96741090226d6 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763Sg1yWJZSSVj!+o7XS+|Sk4gw eGlbh280K(XWe{Lsf=Dnha6uSw5r`52hH3y|O%P)M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5fcbf48d19223180ace1731b23b2c23e386d576b b/src/libs/libsrtp/fuzzer/corpus/5fcbf48d19223180ace1731b23b2c23e386d576b new file mode 100644 index 0000000000000000000000000000000000000000..e7acb779fe0be0c6b8ae2a1f8595b407f5b972bf GIT binary patch literal 69 ocmbRE|0LJTmkbc#UJV4rj37=m7(vB3P*g+%mFz{Rc~e~t09FwYL;wH) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5fe2d782d294f56e1391600e414ee2eeff844f08 b/src/libs/libsrtp/fuzzer/corpus/5fe2d782d294f56e1391600e414ee2eeff844f08 new file mode 100644 index 0000000000000000000000000000000000000000..011dbee05635ff0574c8fccec3aa576f1fe0f8a3 GIT binary patch literal 80 ycmdl#@jutgm(>g);2;I27!(*7s(~VmARdsYE@njVfkI$DRE)t3qzI@OimCx)_6>vp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/5ffd8ca2bda62b93f05301fc0a06c7e73a416bc8 b/src/libs/libsrtp/fuzzer/corpus/5ffd8ca2bda62b93f05301fc0a06c7e73a416bc8 new file mode 100644 index 0000000000000000000000000000000000000000..3810390ba35a56740e01355dec3e29b90cd8a59f GIT binary patch literal 1146 zcmd5*u}T9$5PcUTo`N7rV<S0H6Ho&7Hn9^mg<o)_xFQ%y$dNP)Nf5=x&h~yFKjA0% z4c0bxNx8n6y}P6k6|`_5WM}8?yqUQ-Jr8QD{k9*C-Pu};3tSo?4PqR7F!D1sg>2%) zL4kE(C&wv9aHW{>0Obc@KLPwA-zh99<$<Kc^a~7%@Ih)}S6i;9339u7qEMs5mi#$< z{^nLg*1l^B=lxNdjKjoLj$$OE=r(`?(CT!$%F6=nX+D@0y#wZRcD~D^y?$iNZFkFT z2SD89<P5Czb`7rrosKk>^*jC41hzc5f{!Wl-eB1345F~dZ}QK}Q!Pwn7CuKXFtO`g z1w*~yc{YzjV|*S9xMDXnU_w_OsOzGmJZyq?g7KX|XcQipNCfDFH{s#8WZ!co@+sL- zAZ*l$XhqlNORc=&Ct{JrsW28|3GkHe7;3sf9@bt-oh^|$IutGNCbL|iREcNLaqLR2 zps*#7`$u+gdIpHMU9X2>yIPlRPR;I7o-fu*;i~8*!P@4A<|CT*W){dHS9N11-Ulx( B1@8a= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/603367d28ab8b9045648cb64bbc5030d1d15e5d9 b/src/libs/libsrtp/fuzzer/corpus/603367d28ab8b9045648cb64bbc5030d1d15e5d9 new file mode 100644 index 0000000000000000000000000000000000000000..f9ace3c5eae8f340c3ea8c4bc1040405fbda24fd GIT binary patch literal 102 zcma#o%VQ{s`~QofD3c>Kp8*UCnIJR+10#bFl*!0YT@1w4Fd6GSFiZ9dBLhQqOz|9u ZI$@w-HA6sYacX>7Voqsld;wTS7yxrd5+?uv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6042bfb5a12f07ee9eb070e5e2dff8697cad3908 b/src/libs/libsrtp/fuzzer/corpus/6042bfb5a12f07ee9eb070e5e2dff8697cad3908 new file mode 100644 index 0000000000000000000000000000000000000000..48761acc72da75124b9cbff5c2815bcaef93fcea GIT binary patch literal 189 zcmdl#@h{iQm(>gm3@i-$p8_c$P+(vvu4Z6lU;qk($YRE7hW*$j7^<OaAS%IHfFji_ WAmwnN05%YZJrIlVNCJ()VG96_3?AYD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6043853a809a2e832897ad614133f55e14e2455a b/src/libs/libsrtp/fuzzer/corpus/6043853a809a2e832897ad614133f55e14e2455a new file mode 100644 index 0000000000000000000000000000000000000000..3e3492d180b1d56c8f031fe745a2031fcfdc40f7 GIT binary patch literal 36 lcmXSp*JWTR_O3QyP-9?-PpxNUfC5nl1Fquu_<F|FQUH1$2CV=9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6073e7130e4f96a16e97395e06e222a81366cc3a b/src/libs/libsrtp/fuzzer/corpus/6073e7130e4f96a16e97395e06e222a81366cc3a new file mode 100644 index 0000000000000000000000000000000000000000..d059ca2fdbeff51440f65d26717186de420925ae GIT binary patch literal 185 zcma!LU|=wE`v0G?C^eI#9>@WL|NsB{GB8$GLwKq2Wr;bZsqqE83=Faij1WQM$%f)N rLJZ*$^>Y~7feaui%)kMJaDb$S5mOCRL{GoCsH8wQtu(a=sIeLVaa9|( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/609a69b86e5efde2de102c337a161b03e9c8876e b/src/libs/libsrtp/fuzzer/corpus/609a69b86e5efde2de102c337a161b03e9c8876e new file mode 100644 index 0000000000000000000000000000000000000000..b27f587d18d63a58148a0c9d6f9095dce8987889 GIT binary patch literal 783 zcmbtSO-lk%6g^L{W?YygNEk*WeMlLCxT;_T+Z45F9TGB-FjP3YdQdF_TLmqH+4Lu7 zY4mga15=Rty7xIEPPB;5;$80LzWa3!7NAreK&xrkcVr1lsS~_Ct3<yq$sH*xtK+e? z04_xYc~yR;EAT?tkrurTyaVm}6|mcCKE6`1eUvD5Pk*Lw<~(vxpOB^PMIB3b0ndQQ zk*CZsO`Ga%Ergi%$Hufj#8Hhh#i35?NY|T`JUweyoa@GgV^_*FV|mEc33>-<AU1Y! zPgY{`Z;3}iYO5D~K+ulooF$672Y&R>x#&fzS;!{;i>Ks>&d->w#N*7gBYuKR=7ACe zg#2KYsZ%g%ZKg*^7m^tye2on-IB;!Zk1#+y0j8d@66K$N`p5pSDEibwupHv+e8^BX zD0zA03u-*c9M2QQFd7JbD)FZcmw9fMptf>T+o{}O;?j0*NOA%lS@8HGtPw9o4_{|i J&FL-+=NmL~%?|(o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60b0c36b3f192b5f6316e5e0b9a417df091b37d5 b/src/libs/libsrtp/fuzzer/corpus/60b0c36b3f192b5f6316e5e0b9a417df091b37d5 new file mode 100644 index 0000000000000000000000000000000000000000..850ebe8b42d48c13964f743896b283a0cbed5d0a GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ ya~Rrz!a!0ONO6Evw0#2-{~3fpY#;!e-I<!nQ4dv91u`CJ?mu$|7Kjok$pHZC>lcau literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60b765c94aed815e0f753d1afbde5ee97bfb72ff b/src/libs/libsrtp/fuzzer/corpus/60b765c94aed815e0f753d1afbde5ee97bfb72ff new file mode 100644 index 0000000000000000000000000000000000000000..4d967285059c62d63c77d4cbb4657eafbea5a927 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H-Hk52S(M|NsBK3=GxP3=E763Sg1yVzpv015QXXFuVkFI2jmZ l8H%R}F&Hy2<fP`sC+Fvt6y+C#L1Il#F_`JVz{KFs004HA7f%2H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60c6babf6298dbab7c90c76280d5a94c88ea9222 b/src/libs/libsrtp/fuzzer/corpus/60c6babf6298dbab7c90c76280d5a94c88ea9222 new file mode 100644 index 0000000000000000000000000000000000000000..bfde6becf7d62f7f5c92c10bb0ee9651e923692e GIT binary patch literal 99 rcmWgiV89CmfU*({)eN^7^mTwtuWAr*sZIlF(!&RU@}fYchSiw>)Nc*h literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60c9128e76153d16fe8e7ba2adbb9ab7bbb220cc b/src/libs/libsrtp/fuzzer/corpus/60c9128e76153d16fe8e7ba2adbb9ab7bbb220cc new file mode 100644 index 0000000000000000000000000000000000000000..d2c2d5b2b2fa2a1e3b447d1ebe321ce774d4a976 GIT binary patch literal 101 zcmXSpXJlaTW6)#31FC;Bbhg0cJy))*)Tw3w>SAT6W?*1qhDrSU|DUn?KRZJ;P-!)T Q0)qpPRIk>pu4ecT09Qy5s{jB1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60d0b929af1da32a0e54a72d27ee4407284a10f2 b/src/libs/libsrtp/fuzzer/corpus/60d0b929af1da32a0e54a72d27ee4407284a10f2 new file mode 100644 index 0000000000000000000000000000000000000000..6f0da99d50ac9753d2a4b99e8167f446c7384703 GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9#eS1<s{@K`f2 t{L2HeINcd!fvOGKd*%oMX`ouR*8eR)gZ?voV*;vT0IOnP2xM@q0{{W19`gVI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60e4e9b585c7e41a5becab1dcbc0225e68d563d0 b/src/libs/libsrtp/fuzzer/corpus/60e4e9b585c7e41a5becab1dcbc0225e68d563d0 new file mode 100644 index 0000000000000000000000000000000000000000..d49c87536aefe5639f2a7334c1097a6b06059164 GIT binary patch literal 314 zcmaitF$%(96obEt!tZKv>>w0e>+IxVI&`&e9qJ%>iJrxacz|BPt-ib`f*_h933=fK zs7^g_tW)2Z8m7bk>;{&wCWEf^PLpb>!8&2s6;T*g9t>h9nQQ)lB<H^hZgMl&N)3yU rH`_^=UeMEfL>IEM?a&x(@(7(R8O_*D_%r!+P-~x4)sLyUO_e+Wuy7~K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60e7223c4b5304a98587b2478afdead8125c22aa b/src/libs/libsrtp/fuzzer/corpus/60e7223c4b5304a98587b2478afdead8125c22aa new file mode 100644 index 0000000000000000000000000000000000000000..8bb88e0d215df399456b7eb1f733ca6ec1383de7 GIT binary patch literal 220 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO zsNIyI4#>e_jsvmgd<K~Vwi{$Ln*)dh12v$t7#Jr02U8f1W@OL=s)9Nf=-TRk3;?j0 BJ1GDF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/60f3638d7c58e1d52e2638cf50e68fa0cf3491db b/src/libs/libsrtp/fuzzer/corpus/60f3638d7c58e1d52e2638cf50e68fa0cf3491db new file mode 100644 index 0000000000000000000000000000000000000000..394a6ba005e3559dcbb17772eb699e9985dbbbca GIT binary patch literal 296 zcma$34*?=YshJ%03}65h@nvAFu4ZIl{sR`+r@9Xa3?Q<2$^ZXA(hbFPgc!mh3g<8! z2Qua`v<owE03jSe)Bvse4w9_~5ePN^f$A9;{{IK7KL^tzj@ulF5=^_0-SZ!;XfC>Y YelZjStrlv4IvC_yBv1rm3oujz043l!tpET3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/61177a0f4a0c9ee089cb9388d13ef562be8831bd b/src/libs/libsrtp/fuzzer/corpus/61177a0f4a0c9ee089cb9388d13ef562be8831bd new file mode 100644 index 0000000000000000000000000000000000000000..8c3c6f82b31600221a956b77b209567b3893980f GIT binary patch literal 1319 zcmc&!u}T9$5Ph2>UaZusA_js&6e}@yT0}?{2>1tASzKe`84woqI%`Ye{=-hcCt#ge zxxU%m$jPla#UjJqEi*UscJ}dRVT>6i0It*M@}4V=p)p<`&H8kz>3*2OwvA(VhKvy< z9zQx$(1WMOzW63iWq~?#_0W<@AU@EizKRL9N-7208h<)#t)XLqPl_!Yi64NY1E>zY zhEH<K`Q6Z)DmB=X2KRh}qajljY}!O;7IJRhZh-<Dc$v)+^?8aIJ0;{}blIZxxHz_s zzP8Sh+w@kcfa#mwwJd#0Cloti3awpXIXS#y{3fYzk9V;u6-5-H!lKKkmXoFmaq?Wp z3I55+A9Ny`@#p!CPWmg;Nq`e8(MY;qy-pm7GCl#T)d_++SvEV|?}9sZYi6hIyKz?q smMEWhP}QpA;_$fbVg`BngvZKWA6n~XDs$N5oAdp7Jb{UW%49@80q~CWYXATM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/613413787bc761296f663cb8d45a447118b001cc b/src/libs/libsrtp/fuzzer/corpus/613413787bc761296f663cb8d45a447118b001cc new file mode 100644 index 0000000000000000000000000000000000000000..a7e9f372341c5ce6b9350010105325823f5c71fb GIT binary patch literal 54 rcmZQz0D)pXhI&S05X%BYRJT-vD28?hMhFAU0}=_<4JW5DF#HDqolytF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6138aa043c89611152dcdf360c687f014ca2a219 b/src/libs/libsrtp/fuzzer/corpus/6138aa043c89611152dcdf360c687f014ca2a219 new file mode 100644 index 0000000000000000000000000000000000000000..8469d6523d8a321882cf54fa27efacb0b7dabac4 GIT binary patch literal 1953 zcmZQzU|?Wm;5iMZq<|z4Jp9j445X?VGdT)4DFfBjAmbT;BxUAc>Sh8vmEolu5Maup zh`fCH5`~Y412&Zts-YE+LR2ZB7uirnka);0CBZ42oX8qs=0O4zNJfK06&SE!6t9=Z zP*Q{zU+OSTRH2bwLy|YZwts@U0g<?D-61gu^g%Hr10taS{r2xa1mN*o0$u>NOdB(- zz5oFz#IObz<)L&9VFV(yoZLtcEvPvNL)^$WgsNr{jy^;XP=|#a1_VqrBr~5AFcwJ~ zn4-wYWtvDP5Mm;Gm-KW)QZ6H+1OdAiB_9!TKPmE*`4!bBs9E=^R~>*&<Rm!`fJuZZ PRl)xMc3dwxd0zqmD&f0{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/614e63bb137505589f4486d646ad255bf62d39da b/src/libs/libsrtp/fuzzer/corpus/614e63bb137505589f4486d646ad255bf62d39da new file mode 100644 index 0000000000000000000000000000000000000000..92d324b3d110a8996b1d16c5996642807661bc58 GIT binary patch literal 48 rcmXTEa6!w20S1KI85rhpfOypm3JlDQ4As>@0R{#ppa76nU0n$P$WRDK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/617962216ea9a3e7d6b293fab5df70773c10c552 b/src/libs/libsrtp/fuzzer/corpus/617962216ea9a3e7d6b293fab5df70773c10c552 new file mode 100644 index 0000000000000000000000000000000000000000..03ccdb1047dce8eadfeaecec3d0ac5a3bd7c57f8 GIT binary patch literal 139 zcma!NU|=Ze0TM--9I5p{8VLUX|L@DdP+iTyzzF1}#+N1Ll%~cPa58Ynf<zkTaWXJ~ xSquzw7}|kKfTS>x;s9cXwr@ZJWDrO%7*sM8rDk%}L)5?ok?H^c9T^!47yuGL7IOdq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/618221ce08ce7422808dc657b7aedeb762b31b09 b/src/libs/libsrtp/fuzzer/corpus/618221ce08ce7422808dc657b7aedeb762b31b09 new file mode 100644 index 0000000000000000000000000000000000000000..d3a6fc67b304902b3cc6fa3cd82fcdc22c4476a2 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO kti2Ab2P6apY9M1Qz()AT8)R2kR~M(oS7-kJ{~u^N0F>_}BLDyZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/61a0f4708cac4433f56b999985950ffbf610dc92 b/src/libs/libsrtp/fuzzer/corpus/61a0f4708cac4433f56b999985950ffbf610dc92 new file mode 100644 index 0000000000000000000000000000000000000000..b7a0d023aba986b06e6d40d490a638d627c0c8e0 GIT binary patch literal 124 zcma#wmd8*M&%nS?l*y4=52S(M|NsBK3=CD(3=E7wUTS<<B3KxSP=K?efh;4S77egk dhB*uZ-`asfbKnY)8P@-WAlx|&3l}ml000*N5xoEa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/61ab084dc7aa99e837e0309fcd63f2e199cf0aae b/src/libs/libsrtp/fuzzer/corpus/61ab084dc7aa99e837e0309fcd63f2e199cf0aae new file mode 100644 index 0000000000000000000000000000000000000000..c21585db196a68fac7a004818e9f2feb0f18d5e1 GIT binary patch literal 97 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcN3fJLf{)flRa1%YDf5G4!-3=A*9 kOimzKT|9@E!I*&|Cp9lV`9NuLYJ7QOX-;bV|Np-k0Lro#iU0rr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/61f39c557fde0b40d5e2fe7fbb3747d5c8b822a7 b/src/libs/libsrtp/fuzzer/corpus/61f39c557fde0b40d5e2fe7fbb3747d5c8b822a7 new file mode 100644 index 0000000000000000000000000000000000000000..cedcab453643ccd6a5aa138a66d35962dc3bd2b3 GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq1_rxo1_nk31+YkUu^K~lF(X5DwK|y3z#z%M s@Dj}AWMGg5ssl>T5n?cAh-b)2%}dVDD=Er%U|?VZDT#+#0n*D40HwVY5C8xG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/622482024bba090a3fdcf1683e6e82f3382d8086 b/src/libs/libsrtp/fuzzer/corpus/622482024bba090a3fdcf1683e6e82f3382d8086 new file mode 100644 index 0000000000000000000000000000000000000000..3135c080b08ba2a2707b6390d51dfdc0ed318365 GIT binary patch literal 69 zcmbREe?QmDm(>hFpz!bae-MyV0P(;ep}OJZGzNyucp$I3m=S{YKpcj42F7Xzt@zUa HasRadl5H0M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/623a1074c0969b1c02dc5f11fc7efc12fea52d24 b/src/libs/libsrtp/fuzzer/corpus/623a1074c0969b1c02dc5f11fc7efc12fea52d24 new file mode 100644 index 0000000000000000000000000000000000000000..e6d9afa6aeb5acc38a1b20c6e248f469c71ce4dd GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B---!HR#!7HFoO9&b}=Iug9I9i=Lj`0SVLtPIH5ue a|NdM21`4M9F9niw7=(c&2Ut-tLp%VcuM$51 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6240592d3790fdf15fbd60321b06dd507cf22831 b/src/libs/libsrtp/fuzzer/corpus/6240592d3790fdf15fbd60321b06dd507cf22831 new file mode 100644 index 0000000000000000000000000000000000000000..356e6da236179391d1857da0fa42fdd6a0304fb7 GIT binary patch literal 75 zcmbRE|G(GEm(>g)AOpnzh5ti<2m>>ao19-%pbwN~1jz$Ibul9lGl11I`GIH{sx|-s D==c=_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/626b74498e05ec6bc5d445f60f4dc60dba76336a b/src/libs/libsrtp/fuzzer/corpus/626b74498e05ec6bc5d445f60f4dc60dba76336a new file mode 100644 index 0000000000000000000000000000000000000000..c0c6973c00813dddd69386313df1df50b73b30b3 GIT binary patch literal 69 zcmZ2k$AAEgV5V?2qoj77E|^`MYLLoU4Prv%7^?q%Zz%?{uK@KiR##UCzGQg$9{@dx B4c-6% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/627d90fcc60f0bf1f70d75c9a31d84139216e488 b/src/libs/libsrtp/fuzzer/corpus/627d90fcc60f0bf1f70d75c9a31d84139216e488 new file mode 100644 index 0000000000000000000000000000000000000000..0a79665149a13968d95e3ec2b0253b02f479f0c3 GIT binary patch literal 101 xcmZ2k#{dV#)gUG#gb!vLFr=n30)?ef0VBgo{D9#K&{zY;>gwvimkcle0{~@OAf5mK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/629382ca7562123161a091d5f0d795a235b5ca95 b/src/libs/libsrtp/fuzzer/corpus/629382ca7562123161a091d5f0d795a235b5ca95 new file mode 100644 index 0000000000000000000000000000000000000000..0f8068da40e463829ae6dcf15f7fd365dec4efbd GIT binary patch literal 46 mcmXS}W(a)A@Ups^0SKxgpqLTN0a760ISdR6Kq)35t^@!^RtxI@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/62959435635107ddca7d9e4126a6f5d0c76fb1fd b/src/libs/libsrtp/fuzzer/corpus/62959435635107ddca7d9e4126a6f5d0c76fb1fd new file mode 100644 index 0000000000000000000000000000000000000000..094f7f72d3f8e42ff492a75ed952fe69c8f73dd4 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATM1Q;3E8VWcW7-Ye6 z409OTfucZC7)Wt|RJ45q690ujOb`H@-3c_25vryNWIV`RpaCo(3aAg4#b8;8?LbW+ b02XNilMn$I2^NY4nhA0q*m$rAoZtWeTy!;} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/62aa7143e0e3298c6876a5f4dd7246847f6af3c7 b/src/libs/libsrtp/fuzzer/corpus/62aa7143e0e3298c6876a5f4dd7246847f6af3c7 new file mode 100644 index 0000000000000000000000000000000000000000..82562cd6d92ac9ff8bf678ded31f5bbf75a4d9d5 GIT binary patch literal 362 zcmZ3^z+g~P&%nS~l*y3_q(R`nqcw!Vz+l9{Aj`nWz))Qbk^`!FicsSKQDn%;-~dzu zG6bXm(-7wG=!Rgb0U83cXpRur+&K`_ksM=);TTMFjL2{d(0d>t1oat+jbRhm+lX)> Y>|8+xpi>S!`v0$+85p4d8UF7A0FGxlg8%>k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/62b23c4cd05662a84d93389e973a6da6a2b8b410 b/src/libs/libsrtp/fuzzer/corpus/62b23c4cd05662a84d93389e973a6da6a2b8b410 new file mode 100644 index 0000000000000000000000000000000000000000..38401902fa2e00357db3be50ff90b7da11c5e205 GIT binary patch literal 1152 zcmcgrO=}cE5Ph92I=N}~AR2^Ska*D`;!Oe@7!Mxe#UC){FyKOn%gid8MrH}Cd&wUV z#%o}&f`j0}KjD7}{(*S#qkXTt$FN`yg7}v0s;;W3u6|vGJ_3qi^0^ACb8Z_GYtbAv z!e}Yj{iZROy*z3F)9K1%OC#~A9M`LqJ#=TlwVG-N34i92+{DhfH>N0tu=YCeUA8;G zm*q#&l6Pn}o14mu-ON_W3>y~Ts;Qj9y?M5=hjB)g)#jCRn7_DTfmoll+s+66qcqI5 zrhEn9Dd~_B*4Fd4#nKbHGCG9wz90q1Sl&>vK%PC@@n&AI!c2rE`^qQhpc7q4a%u+W zCZiSLs{ax-$m25Y-9LKd5B!tkQ|Msajr)h|K;w5jF3_}T>!iHM!~PQeHonNpJ)dfz zLwv2zZ`H33-5aqViAd8_-v5V#$-x;=RU&%<tS?Ose!9VxU|&B$8J`U1{YUneiS*L{ z`h-hmun#<-{iQyBYRfw2E%IT4@VFWPJ{TXaWuiwlv?bhD`!2X0nX_ee8cNN_WNInG zEOgc5e0QXwjQG$hl7q0}@bIQ<$`gk&OqvY8djhe;bb(cW1C?9jg6}mSs-@3=DC5i( hI9BB1z`y0d%gV);?WgzWoKzZre4S2VrzBdS_yupG_{jhO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6300716f023e6c5963aae1d4a456de340e099717 b/src/libs/libsrtp/fuzzer/corpus/6300716f023e6c5963aae1d4a456de340e099717 new file mode 100644 index 0000000000000000000000000000000000000000..b66735ea15cc88a1752236e2ea489cc618a35d3d GIT binary patch literal 1917 zcmds2u};G<5Pc4j+DHtAih-d@6@d^!tzck+jT!L;C{u?HWoVi3z(Q3a^%J`B5&TWn zl|O)`=4{8Y<ETnSV8KybUwl5lyL)#{`*?ax0gQ*u!885R5JKDnoC8dM0G}}Z(l@Da zhbz6)Llj{aBB?*p{sSZuHXexfP@A_%j&n#c4uJ!`Uz|^hVoj+8fjJO@7FqW-dbvgv zLutTz;st0caOA!myOqkGaYqzMjyhjt;C%RC>|LcjWEOtq)qkQ;hUS4kTF|{An)EO< zRwR68Y~^P}Rc@$|(UkUoW%#&Qo^ca0U*kV=!uJt=6w29Y2;ED{*;z}5H-U~)u$B-Y z236T~E_V3HG$OoRhn;=OWjAQg0J>-)rAuUzBn9;@TL306P9@szR)bV^V0R7d^Np~z z1Iwj#WV=<diR!3Pe6x10ny4}KqsYi2Ypf{Zy4=37bwcS(4#X)61PKt|v<#{wIkn5A z=nk21t*AdJ>Qq<@vb~W)a|lcog&f1qQd=$0l9x29o3A>0kI3b)J}YOuzR<)cd*Gw& K5{3)lgM@DyKp!3e literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/630d4de33f784094077355d0d707a77a258d7848 b/src/libs/libsrtp/fuzzer/corpus/630d4de33f784094077355d0d707a77a258d7848 new file mode 100644 index 0000000000000000000000000000000000000000..8f7b68488690804c28d8037d3f6b0d0513362d3c GIT binary patch literal 204 zcma#o%VQ{sXJB9`%H&9`2hu?BpBF+iFfalcsqtlrFg{3xt)YOEfk755$1sPX9ViDR zg@F_YNLkxAAn{)a!~_Ab*`2AG9Q6$UeHj?4tD%OLF>u7gjfEJ>gktD7gc<SJ-1r}8 JGQuHXvjNpzAMXGF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6314c3808ec7e85751b4d7b742cdefdb1d6e5856 b/src/libs/libsrtp/fuzzer/corpus/6314c3808ec7e85751b4d7b742cdefdb1d6e5856 new file mode 100644 index 0000000000000000000000000000000000000000..52c97d66312f57660c216602fc94d0e46edd3f3e GIT binary patch literal 37 ecmXSpude3M)n%w|*R2Kt1_%%ZQ=-+OU;zNI3<ov< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6317f6a493095cac0ca169a694f660d878919b01 b/src/libs/libsrtp/fuzzer/corpus/6317f6a493095cac0ca169a694f660d878919b01 new file mode 100644 index 0000000000000000000000000000000000000000..5f8a95d12cb7cca86a9aae9130a7f7260ca5b406 GIT binary patch literal 70 vcmbREe?Oz-%W4J&hX4QnmjNj_s4iw;V1)9jD;OE7i-8!V5Db6}1gZuARZb1- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6364e84f407080cfe95722fe371595fce30ede1e b/src/libs/libsrtp/fuzzer/corpus/6364e84f407080cfe95722fe371595fce30ede1e new file mode 100644 index 0000000000000000000000000000000000000000..6388fd3c0688704be0311d7fc267c1ac7db0c50d GIT binary patch literal 245 zcma$34*?=YshJ%03}65h@nvAFu4ZIl{sR`+r@9Xa3?Q<2$^ZXA(hbFPgc!mh3g<8! z2Qua`v<owE03jTJ)i9ic@x^hf!D$Y%UH?Jm{7gc(>lZ`u90mrVhIqX^1_l*|;+lA% HvZ71?Q++SU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6374541bb9f70f78ffa594342ea59578337b8b18 b/src/libs/libsrtp/fuzzer/corpus/6374541bb9f70f78ffa594342ea59578337b8b18 new file mode 100644 index 0000000000000000000000000000000000000000..6f3ef32e85f82fb304e06c490f86c046c3af11a4 GIT binary patch literal 735 zcmbtRze~el5PjFh#GwR*4nje*=%NVKNedO~QqaX&s+10eqL9?-1I-}lBshv){6|up z{0CfhbLc-11tsTQezaP_r4Pb=_wv4%%RO*|xe37QSnUg`0%qRB;Ff2HLnCcWgEv;b z;70I;AvwPklo6QPU4|AOfnM_jSo1p94`Q|rJONv&5M<Aw4E}&w@6RRN{1wo*KxOIJ z&SXj1Ij?6R#9UiQ-#OLs0H8))SlUf=XT~3S?jQ6vx~Hw<ZhNyLqgEod7bGUeLOyvQ zoWbaxvl2${Ao;&TRWGk5_V{BjBf~*BVI=m&X>n7GW%Y{RPCAZ$F3<xIXf{!)bSc6J z`EC|9HioU?$V0}5(ewnLX#u{f{ym4USjq^={P}0*K`zWHO@j%qY1*TIFQ>~=$v6{c I@&MQU24(?q(f|Me literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/63961e70de1b626a269c1da07b22e12d1bdbc080 b/src/libs/libsrtp/fuzzer/corpus/63961e70de1b626a269c1da07b22e12d1bdbc080 new file mode 100644 index 0000000000000000000000000000000000000000..16670b2ae046966c1ebd6db75955330da86b8c3b GIT binary patch literal 211 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+pW#Q{>>_6<nXgIF+wfM%y=a@2#={AZ|Q;Q0Ta!I6OhW@ZPvnR-A& bfp&8MZHk9D4u@T;U^|fQV^Cx$X5at-D>o@U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/63bf338dc5d47dffab0f003a1c5a7c5621cca9ad b/src/libs/libsrtp/fuzzer/corpus/63bf338dc5d47dffab0f003a1c5a7c5621cca9ad new file mode 100644 index 0000000000000000000000000000000000000000..50cc6f665065a776e19e1eac2a45c22d21b08483 GIT binary patch literal 134 zcma#wmd8*M&%nS?l*y4=52S(M|NsBK3=CD(3=E7wUTS<<B3KwJ5e*bI0&39!t7VwO cAn>gnC^QGFV(b4xaPc_|3xR;apaf(o0La-C0ssI2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/63ca389b82b7722d6a57d17ccf887e94dc378f68 b/src/libs/libsrtp/fuzzer/corpus/63ca389b82b7722d6a57d17ccf887e94dc378f68 new file mode 100644 index 0000000000000000000000000000000000000000..9b763b068be55181879b775261235058262ff3a1 GIT binary patch literal 126 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF*`#wgmjpxJ9FmEnKNf912Gst r)G2_JRu?lu45<U_1d6DAV_-03Y(O%Ffsuv5Ki(jlfg$jJb#(~<!<8UM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/63e4e38559bec6e6f834d2ef344929d0cad600ba b/src/libs/libsrtp/fuzzer/corpus/63e4e38559bec6e6f834d2ef344929d0cad600ba new file mode 100644 index 0000000000000000000000000000000000000000..1ffff1c3ca07a8c0a97a1d17135b937259f425c9 GIT binary patch literal 158 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rsJf65 yqP-5R2P6apYCvNc7)%%&X3j)b3p5RE6-ezQWR>v@20$VI`0DEaB_Q!41_l7Qk0&nx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/63e69871719679ce08615d1de566a614371cb4e3 b/src/libs/libsrtp/fuzzer/corpus/63e69871719679ce08615d1de566a614371cb4e3 new file mode 100644 index 0000000000000000000000000000000000000000..9a4aef9babca2658851dc6db61ecb8937bc2282d GIT binary patch literal 69 zcmbREe?QmDm(>hl5D%dgAQX^HsBSnpje#LEel`O`bul9ZR{<re8QK{bs~O^%SpNe7 E06OLo_5c6? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/640580c9fd14ff70774f93394b5ca76cd2e83529 b/src/libs/libsrtp/fuzzer/corpus/640580c9fd14ff70774f93394b5ca76cd2e83529 new file mode 100644 index 0000000000000000000000000000000000000000..9bc232a12d03d05526362c8e229257b99f8f2623 GIT binary patch literal 2043 zcmb_cF>b>!45XJfNXKp&@`U`LK(_8(^^8odr@X9R>Czz|=n|mnQ72KdEIDuy!w_il zcz3dBe;#Cexr`$6^LyOM69QcO6P9tnGRUhY#?v4pP)KogAwaA*Yu9Ei^+c%1cY;}_ zM=Fl=T$>_n1yc-G`?k&`RoVmT#6kj_YTQE8TCAlWdo+Owb*89Ab0ttsy87fMN3S($ z+O5LsS{7ulQJHhg^vID{FmQ<8DHf+p{7&SkGgWw40B<8$M{)zY$1iyk@w}eBe~6*? zA|JHA;EMZIW7i-Ls4ILR&t?SWUGBVY$*(Ik*X0@G3a({qB%)2azLR!ML-Nx1YEd+R zWj+Z!yup(YtEx1?_dIuQ=(c7a)q46cyf48!CeSV<|MTlyoDiC%VXSUCmzL)%vnqnK zA@hLN1i2DCSo?Sg&145PZ<{w$%?&*~I)R>_`?^1XSs<N0Hm$dfHK9h?++>+-lNN{O d(hKVPS{7sVrVL@_SBMtZ*6vqyM3rff%^xK!Znyvd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/642a6b1533f4e765b30b75b115672a85d01e4365 b/src/libs/libsrtp/fuzzer/corpus/642a6b1533f4e765b30b75b115672a85d01e4365 new file mode 100644 index 0000000000000000000000000000000000000000..9168d6c676fa7a76767123f1e2d1ec1dd45ad104 GIT binary patch literal 102 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tIhfDDU;(6G ngV>x546;mxbA%WS85nZnlk=-e!KR(aOa*fCN{aGx7#NrUa7`AB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64777b1e4c8a4527989efb144e2226f2fda89c78 b/src/libs/libsrtp/fuzzer/corpus/64777b1e4c8a4527989efb144e2226f2fda89c78 new file mode 100644 index 0000000000000000000000000000000000000000..b576f72eb38d3a40f3a02c679d50fe657bf3ae65 GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc1_nlm07G>#BSW<VkXH>x|NR-P8^BV! i44e!M?JNv)I2ishG5iN<WrFHq$Sp0&i2cLB&<Fq$U=|4g literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/648e42a480516eb541712b5431709d711167b633 b/src/libs/libsrtp/fuzzer/corpus/648e42a480516eb541712b5431709d711167b633 new file mode 100644 index 0000000000000000000000000000000000000000..7c56a602c1feac733f907c3917802f1eb6d37203 GIT binary patch literal 122 zcmdo0-;V3$%W4J&hHw8Jq<|C{$Q1*rYDOTz$dC>asV-(@s0OM63PH$dFayYjAc#1e U`xL097Ni{p{xhV20E`Qw0fpQX1ONa4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64913d4d83f772e4fe0423803e2852b30d0fefb0 b/src/libs/libsrtp/fuzzer/corpus/64913d4d83f772e4fe0423803e2852b30d0fefb0 new file mode 100644 index 0000000000000000000000000000000000000000..cbaf6bea140bd50ec4ceed7109811ad9b18857a4 GIT binary patch literal 377 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#$9fGBC*DmNNLp ze3PLbtgZ@T5C=o!|5^Vti`s=5{xeiDaQy$z;K;;)WF{j6Ljz|41A{CBBZC0Lk2xT# zIe>x;3|w>PVsTRgND4_mh|9o$X)!}R2SX|YK8xdlzAu6K9^z=QTR`GiLxr)rS^;bu RkU((()a_6?JZ^z`4ggiNQ)U1F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/649666a82a6e54135c69c0570d39af075c72b74d b/src/libs/libsrtp/fuzzer/corpus/649666a82a6e54135c69c0570d39af075c72b74d new file mode 100644 index 0000000000000000000000000000000000000000..36b7f9dd76c86ddec70d1c269d85af3147369162 GIT binary patch literal 106 zcma#o%VW@CC}ChI%HT+?X8?o$|Nr|kFjQAFFfcMGfJLf{85w|B2gFGMi&%q6Ai>GN gAPZDC$Csg42rMSp&cMJi2h0Q+#0Dh({|6ce0QJHa0{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64a0471018b066406886ee21802fc46eac77c8b4 b/src/libs/libsrtp/fuzzer/corpus/64a0471018b066406886ee21802fc46eac77c8b4 new file mode 100644 index 0000000000000000000000000000000000000000..e1bae3a02a46a30af6c11726ddf22a03f91e2ef4 GIT binary patch literal 877 zcmb`Gv1$TA5QhJ&Tw{}9rI28i(gz3xw6d~EYjFg;LXZ$57TyN52=OI+7hlCDg>8xu zNO1Dcta~WPLBQph9cI7Xo1K3)Z9m~P1@JO**)3-d5$OZo)2&#bJDz6ga~19y39z8I zZsTIRRpM*cX`*HrZYG>P5n??J`AK5uFhrJiU=Dr#!rITtHKX^O0Ur@7f~OBH-FU_f z7R;kOgWNJErl|*d7DD^V0b0*Xe6O%%v1sd@oEGl=ie|1}l!FRoBR4ljaySumfyZ%R zDAcD7X#yRKsTi)6pt8Y(9>U-~l@+O*4W=N^EF1L=Iz`!j-(oe&i*~rGjmQDyWnC0y s_(wb41x<>bmfGQ;L+)nd1@t~d2JsrYc+|kETguneh_C5LKJSOXAM^mCRsaA1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64b49b5bd2d20ba64bea48d0d7766ad2c79408a6 b/src/libs/libsrtp/fuzzer/corpus/64b49b5bd2d20ba64bea48d0d7766ad2c79408a6 new file mode 100644 index 0000000000000000000000000000000000000000..760b2ce6e8c468d45ad041be8b6df86903382595 GIT binary patch literal 133 zcma$54*~K;nH;J03}65h@nvABu4Z6hWKaN#FfvrDGce@m0L7TVszIt+d;T+57c+vG zAh6h)f#E%n=4WJpn#jUnz|ioLfkBp`c#aT*F#|(RYF>PDzB+>z*eE8bx_ViLY5-1X BE-L^4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64b549f9658ff3b1d1ab5649b705f77f72120898 b/src/libs/libsrtp/fuzzer/corpus/64b549f9658ff3b1d1ab5649b705f77f72120898 new file mode 100644 index 0000000000000000000000000000000000000000..38ce82c16a8669801d2738cf61a5c82c7738d5f2 GIT binary patch literal 676 zcmbtSu}T9$5Ph4*#3BR(0mXn?*(hkVih%@T6VS#|<d6_B5H#dswV)}4SP7QFG&X+1 zVU^%N*lM32I0Yr+%;e5oY<+Od?7O#bW_K1;A#wn;>han&M+OlcV0cgSqmkw1n2Jlv z$JTtf%otw1#gqbUu@|6<7ohE&1Dmb-?IWA*sU{yNO=1pN&}YhS^%s;&cY%H!Cd(^I z1Tqb!t8xG{tzRrm>%&yatTg*7yR@!YZUgD=;Zb|1aZx>O)OK^+Y0ejShMvL35jNgo z&O-NbrmY~gKJY(a_>3pa!E9&^L~HzNk1_b;#x;`v#a(jD*DsiLl6Gdw@qGMD=7xnn zg85)YMmI!42E?DSF04$D@ihs+cfoz2!8=wb1dpATU!#NX@D}gM6EyX%H1*7)rx%<R nXY0z2=#wes;c#(*iSl$-Yc$0%z;l>L413ZiS8--7r$2uHbYq|@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64bc29377bd012c7df1b8a7bdc7f5475a4f0643d b/src/libs/libsrtp/fuzzer/corpus/64bc29377bd012c7df1b8a7bdc7f5475a4f0643d new file mode 100644 index 0000000000000000000000000000000000000000..3f67686791174004483cc73e1ce953c214fc727f GIT binary patch literal 206 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5nx4XP6@dlu=+1Zf9UnnFD09 zFmM1NBSZTGAm{&oAOQr`+FA_N)#?xqgEf?9;ACKs1uBJ^1~OKjfk^-)-P$9-2(+BR m2&9=2q}ial7-ZK+1qLLmkj0Q~XMX@x3Un<996WfCfdK$VFe(WE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64c4a66da785d46d25a68f571261e07d669019a3 b/src/libs/libsrtp/fuzzer/corpus/64c4a66da785d46d25a68f571261e07d669019a3 new file mode 100644 index 0000000000000000000000000000000000000000..b39c16db58d560ef095973bbc33f66941af1efe9 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%9H_;VDSI{e_sZM>S_iCMj$^mzAO<c0i+li*cu8r85m^2atw1A z+JS;VQW!{afRwd;0}}uLgP0%yHoG%5lcOH0rs@h%_CL_z1_l<05(eY6G$1P;0Kiol A8~^|S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/64dc6434cd5154dbca58a499214a180c006662ce b/src/libs/libsrtp/fuzzer/corpus/64dc6434cd5154dbca58a499214a180c006662ce new file mode 100644 index 0000000000000000000000000000000000000000..769e78a21d4993b88cd9975f7c4731eb3c9d9d71 GIT binary patch literal 218 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQB|Llpy14M@^~1uDhB zkqTrnGO#ria56B+0$C0W409OTfr3C1q=|!pft8`{8<6#12uOfINjw9Cac62K(BOVy zpfm@P!TTrv=X&`P=m-Xe-}|K?>J=Ekd=RG^2#SGDum%d{W#(p9rN$>0fdmBp*SEB^ HR>uPX?SeFc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65169785c05132f61cb0fe7a4cac4d83eccfc261 b/src/libs/libsrtp/fuzzer/corpus/65169785c05132f61cb0fe7a4cac4d83eccfc261 new file mode 100644 index 0000000000000000000000000000000000000000..512fe7a7822edd53a4b3ef9b9769fa1ef5618981 GIT binary patch literal 110 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763Sg1yWJZSSVj!+o7XS+|Sk4gw cGlbh280K(XWe{Lsf=Dnha6uSw5rmRz0EH$IH~;_u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6519b017ccf082ce0b1a7670929e1e73547c16f5 b/src/libs/libsrtp/fuzzer/corpus/6519b017ccf082ce0b1a7670929e1e73547c16f5 new file mode 100644 index 0000000000000000000000000000000000000000..b5779a211831198a0442c4efce4bf376d545fcd9 GIT binary patch literal 289 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8U?{Ezih>x`Aci~xlK@DvwdX%`bulAEVJnE1 zWdM<ImGk7$RB<Ai!HA-tlYwEeHP|EpsDTXC+TlR^)J?04=Li916c~itfolGtDoSAB z<UqF;=s=j`&`mXfnyLyj6=bx^9H4p@26YAwp!3-u06G8v3j;ll0F1)b>Of%t|BXJa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/654041ce1022141719a977cf50e702d2686afb2d b/src/libs/libsrtp/fuzzer/corpus/654041ce1022141719a977cf50e702d2686afb2d new file mode 100644 index 0000000000000000000000000000000000000000..989c095abc7638118d547410ad420bb394256353 GIT binary patch literal 224 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3IY4R|ic&K<80Ijv1DQZl7)XJ|+r9x=^&tHaQyAj^1A!?+HINU|QV&rJR0CE5 zw6HiezB&`Arns6R@PBnR&=C;e4AQ8_P^wi76=43&P~QU708{r8D(<;*<^M{ZYLKH@ Lf%a5q#seh)g55i{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/654638b7d49e574401a253175531490edc4bd788 b/src/libs/libsrtp/fuzzer/corpus/654638b7d49e574401a253175531490edc4bd788 new file mode 100644 index 0000000000000000000000000000000000000000..5ec696b23d42b16af42d13cb51e2a5134e9f70ca GIT binary patch literal 75 zcmbREfB)x|FRK|C*chPT|Nj3VAi}^56iCi5D$obYGJ+)kD>GCVGeR&!H3Jg^!@r;Z MTmA!?K=lmO0Qj{U=>Px# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65505a2237073f73dbf9cf827e743adef46e97c0 b/src/libs/libsrtp/fuzzer/corpus/65505a2237073f73dbf9cf827e743adef46e97c0 new file mode 100644 index 0000000000000000000000000000000000000000..76a464886d9374913bd992b698a54f06465fbf7c GIT binary patch literal 99 zcma#oi)WBz$YWqA%H&9`X8?o$|Nr|kFjQAFFfcMHfJLf{)flRa8G&Nz5G4!-3=J>A hOil&{Sq4U+^5QvM4FCRr2WozwpI1_p4^_xm4FD?+7oY$D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6552662b273f17b5c04d28e15daa334e7dd1e283 b/src/libs/libsrtp/fuzzer/corpus/6552662b273f17b5c04d28e15daa334e7dd1e283 new file mode 100644 index 0000000000000000000000000000000000000000..64a454e63ded0cbbeff440d91a63f89a4fa2df90 GIT binary patch literal 244 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5c>tXVT^FYCL$Y#*FX#x;V=YfA>2jrV7HV2DTbs}1||U(kh_5Z<a8)lYz<}r0Q}h~ APXGV_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/655e5fa01790ddc5c121f3c41e0a06c6d3dfb41a b/src/libs/libsrtp/fuzzer/corpus/655e5fa01790ddc5c121f3c41e0a06c6d3dfb41a new file mode 100644 index 0000000000000000000000000000000000000000..98f87f191dd0baf437868dfa039ddb5f03573dcd GIT binary patch literal 78 zcmbREe?P~|m(>gi@E-*3{}*Op28t!;7ZvF1GB7ZL5d*`f>S9I)FlGSjVX|Og1F?W; IKf}ao0J1X_EdT%j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/656817d0384adc45c1846f58001d4a2817d6dfe8 b/src/libs/libsrtp/fuzzer/corpus/656817d0384adc45c1846f58001d4a2817d6dfe8 new file mode 100644 index 0000000000000000000000000000000000000000..1c9801276b1e810b718f27e078c62ee34c837be2 GIT binary patch literal 107 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq2L0-41_nk31+YkUu^K~lF(X5DwK|y3z+lP1 r@Dj}AWMGg5ssl>T5n?cBV8}_$i%-taE9slC{~H4nL^aSr;pS=pjiDGk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65686a887886829e0edc41d9d34cafecea09eb11 b/src/libs/libsrtp/fuzzer/corpus/65686a887886829e0edc41d9d34cafecea09eb11 new file mode 100644 index 0000000000000000000000000000000000000000..8ca96c32839940c9c3a5ab5052d93e46d2414046 GIT binary patch literal 102 zcmbREe?QmDm(>gm467L!7#SE?)&E0)2m>=i0TWOh2wu7Y!Al@G2_itCK);ny7N{JE cfS|gVkqd|!su`*;f%r@o3~WFS3{_VH03I_U%>V!Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65690bee1d02b8c2a2c5b7b02b0e4d5e79d25934 b/src/libs/libsrtp/fuzzer/corpus/65690bee1d02b8c2a2c5b7b02b0e4d5e79d25934 new file mode 100644 index 0000000000000000000000000000000000000000..a490b9955d057cfce99cc877d300b0ec8b6417c5 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763hE${>S9I+u2vTS@fjE_Aru1x fCj)~lL-8CTFkiTxfng2@1A_nq6PV8hQB@59>z5Ax literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65a24581d01b510d102c9b5a29b48dd081f9fbf8 b/src/libs/libsrtp/fuzzer/corpus/65a24581d01b510d102c9b5a29b48dd081f9fbf8 new file mode 100644 index 0000000000000000000000000000000000000000..65ca1ff0dfda5ea2f7263d4849742579aac4e594 GIT binary patch literal 457 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wp{vk^ ztKgJp0IOiYVi#Ny&@QaTFfcN1XAl57iv^~F7-LlC0A0kwzyXAe4D1hpoF72n0x5=S zZAPFcnHc05fR1kM`OnP2n9Bh4GzcuVVUZOA(h5w%?F<Y+Gv<JK3{W1(L}(B}-4X!O y1@d@siD`04WkITEvMbOYpo>8P$>K<Y$MLvWnE~u(b&zF1U=76oco+@>0RsRNDpn)_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65ba55f8e41894702c8d2e9df35b8b17197345d1 b/src/libs/libsrtp/fuzzer/corpus/65ba55f8e41894702c8d2e9df35b8b17197345d1 new file mode 100644 index 0000000000000000000000000000000000000000..74bb08ffd9e151f464b64c3f34739784503a1d19 GIT binary patch literal 1776 zcmZ23%3x4Z&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbO*A6J-d@ zqB%lf%jZCyfN+c<{TyRY*fE@NPYnhKqd8_81D4?9WH|8X|G(}=1{QE+1H(5F2tdL7 z4@CTDU@#z{1UZd>w2USdLr%g;WeBE!qLUM%q~L}m2w-VIFz*<dz}3*YR2kW^Gn(09 O6&a|KnmKbO!%P5O=MCEc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65dda6438e7d606cc149433add5df57db4e2dc62 b/src/libs/libsrtp/fuzzer/corpus/65dda6438e7d606cc149433add5df57db4e2dc62 new file mode 100644 index 0000000000000000000000000000000000000000..970ac01e2360777a7169e0abebdf873973b96ab6 GIT binary patch literal 249 zcma!NU|{fw2NFe@9I5p{8VLUX|L@DdP+iTyzzF1}#+M~p<&?U{7jQCg$by6#uq(<b zO+``zRLuZZ&A>2+p&h6LND2cf4v^-yZ$RQd!?!teKs;Ok#RzN$T)+;%=EmyfF_eHk RmYT^?54F1r<Tnqn-vIM@K79ZH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/65fda704bb8e39446ad2aa103004305ad1eafabf b/src/libs/libsrtp/fuzzer/corpus/65fda704bb8e39446ad2aa103004305ad1eafabf new file mode 100644 index 0000000000000000000000000000000000000000..abc298a7f0941a49ead58e7f2549f63351a5ad21 GIT binary patch literal 73 zcmXSpude54XV9x=_+8(^00o{aS61p&GcYj01VHq^|NsBP_{{ALjMe|y8LC^V9Ub@S JGBRw*1OS8|5zGJp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/661f78aeacd3ba77d84959e5824fb5842d375da8 b/src/libs/libsrtp/fuzzer/corpus/661f78aeacd3ba77d84959e5824fb5842d375da8 new file mode 100644 index 0000000000000000000000000000000000000000..4fe460b9927204b1dccf2e7aec446c07e2dedc91 GIT binary patch literal 530 zcmbtRJxjw-6g{sk<V6(JZbG32aS*MGh#&<82N%JA5JGv-Kq@663VmP}YY<#qOMaEV zz_qJG2L+$!C9e*yUda7A=bqe~^aU^o03?xAIU~({LhEb8j388S7si<iCZlmU?53me zaN+|UG$p|jMeW-Rwt=T5T`sWCV8>|*A|-PamSb&2nKBoSl&DC;apV-nm@DA<(HN(J zUivk!xs6R60J9g<)Tu*z?9pa?*B>2Vw<OYnJmG!<-aD&W)anda0k6E(OU6?4kMw=H zG0eg&Ruxj6XCe44-s}iC1!8p@{1R_;x&{3K=r=xglKc3conU=jZdYRM0;1#+9afF1 uL$|(4E*>tO34ELLow~obL`p${Gu9M!_f?8rQ1PGl)t?lo{_Wagw9r3jTV7ZI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6622b04b6c6539d170a6c203f7c8047a2627ef1a b/src/libs/libsrtp/fuzzer/corpus/6622b04b6c6539d170a6c203f7c8047a2627ef1a new file mode 100644 index 0000000000000000000000000000000000000000..0e79b6089fe041fa95d508eacb246e2579575455 GIT binary patch literal 103 zcmdOk&ts5`XJB9`%H)V*0@6V6|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc h7&sXiWEl+R2!Z*+?Ldlyp@Crz2LseF20@^Z2LPtb4q5;J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/666c2f6d446832815b4142f23c41f946c744a506 b/src/libs/libsrtp/fuzzer/corpus/666c2f6d446832815b4142f23c41f946c744a506 new file mode 100644 index 0000000000000000000000000000000000000000..831f2b67d2e9d8ed3828e21e2dabb232c17e5ca9 GIT binary patch literal 458 zcmcJMu}T9`6hzMpf=Np4gcL5;i+zkFkQ4^;4O;|@G(mQ?T2L#swUlgQBlrVbD*l75 z_NnZGpm?2qd64)4PII|4!@I*gY-pAM>7;&qp(&Wzi04~t&gZ$-AM5UTz7{RW#5iql zHBUj_y$cxg0;kCo;&gIzug4C&ryZQGu}KU2B;PN#Jhy!fMIG1DW{qI;qj%m9aI5=t zR`+qkzMO90ZD+VVBd^j5U&{gCoor@L@9fH0>G4wds~>tDB{GvfcueBy>_4DxLNImx ty59Arl9vx<g_F>0$<;z`RjrQp3XaCG!3d&AohxgvO=9+;zcQCr^e=z6kHi1~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/66701a843b5dffba78ad7e1e6c44cfc806ab31ff b/src/libs/libsrtp/fuzzer/corpus/66701a843b5dffba78ad7e1e6c44cfc806ab31ff new file mode 100644 index 0000000000000000000000000000000000000000..8c4c3aab346f498f50d8a0b55a0947879f5c5fe8 GIT binary patch literal 631 zcmb7BO-sW-5Ph2lx&ei1Z$hDh^dMR<JqRKwc<>_l4?-x54Wv>MqR<6%u@<2}KxF@* zR}VdSaGlAn2x6f=$jmVN<|A+V0yvEU<f&8@d4m0b)>oDydW4GalB`tmWHe5O-C~p+ zP9mU#hNMS>xwCC@oWRqPOeL^Sj>`!-QY9<QnZx*|Oeq$gl&e(2bL14(+DqX1(OQ8P z5CF4<4YsMEi#CsJ=3|K{q&-CcNZ*@H90QrUjfZ7YW{Mcsy4Zq#hx;hOh?-mhybTOD zL*2|shz`Xxg+Svr>VVAo!-a>yr#;(o`Q8$R=G9Le-S1v^<n=W6484S`LHMJ=&1wx? w-&dza(89q&H)aK0z*q0Cslnhs8tBy;{8HeBMfgL3HTC7c^XH?x_Fw{h0hxGhq5uE@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/668d1a8784fc7de20c2eb87f613a517cbf42d080 b/src/libs/libsrtp/fuzzer/corpus/668d1a8784fc7de20c2eb87f613a517cbf42d080 new file mode 100644 index 0000000000000000000000000000000000000000..26c4c2ee41ba14bd9cb37afd329564e6380f41b0 GIT binary patch literal 660 zcmah{K}!Nb6#m8)9HF4{lwc@WhbX;t2)YzRbqTt8ie-@{1r^!F0tfO^N#HM#{S*D8 zenSTj8BX8qtc8a3hBxoqH}AcD-<zputuI{wK~wqzT8jRJQrDVDP<{8_YxR7$+h}|B zV%YEwyIG(BNAfVj(C#^!DHSghZUcdR8k0^5(Dda1Lla|U9?~ZkNl@T7C6XA~2fMlg zUZ1p1YM>NO^ENiMfdk-qq#YFsT$qX_`Y80JwrGpU4Y5N|MjDdq4Via-nrdN{0Jp#i z;LbYOc31EdfA|^4PxFiX?pE_NNu0s|{M7iD-$*%*O^o*v>7|zV0hypJkxlb1M5U@8 zqIDbtEx+T|dtR^QGxJ7;n@}IHY76dWGbV$+qsR;kW>|<MM1h!pv9dM?XOHKJ2+Z_p q-um|@2$i`$juGrG;TKno$B%Nvll0O%i03pfz4#6o{Z*?0<Jvdp33gxr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/66b27b57d4d7de1c90d7ee89bbd43c5468f21f52 b/src/libs/libsrtp/fuzzer/corpus/66b27b57d4d7de1c90d7ee89bbd43c5468f21f52 new file mode 100644 index 0000000000000000000000000000000000000000..6b44c5ab724fa94c390eb23c5172562ca19b91a8 GIT binary patch literal 106 zcma#|Wnd_YXJB9`%Hv3_2hu?BKleXSw7Qysfe|9W$WYBtUA!1bRjWfp7F$DT1_n+B X23erG(&}P+AqJ>E6m1OrV5QXn^L7yy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/66b586f381f61302f2e7058a5b53361e7b8135f2 b/src/libs/libsrtp/fuzzer/corpus/66b586f381f61302f2e7058a5b53361e7b8135f2 new file mode 100644 index 0000000000000000000000000000000000000000..3356fa27517b0ea3045be37bd4f857474ad1ef6b GIT binary patch literal 69 zcmZ2k#{dP4Fa|?4qoj5ngj<|ykjhvMl7aAnQosK*d}mO<0@TM?U0ogclHuil05jJO A<p2Nx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/66b87b59b7233b0c628c1061b6058336157f50cf b/src/libs/libsrtp/fuzzer/corpus/66b87b59b7233b0c628c1061b6058336157f50cf new file mode 100644 index 0000000000000000000000000000000000000000..a4d031f3e0b54423c377bab4d0318cc9ba89ba8b GIT binary patch literal 202 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8U?{Ezih>vnjPeXj0w9^zp8w3%#f)G@Kw_~q zm?Z!csMcm=sIFFrN<$=p98LxXSq7jQ#{UeS3_t}8430npV_+s$AWZ!4k78!EHaEi@ eA)pBg48rXU4}c7y%RoRFLP1HO(FYG6tOfwzHZo`c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/66ba0612397b891e0d5ec9a985b824650ba536c4 b/src/libs/libsrtp/fuzzer/corpus/66ba0612397b891e0d5ec9a985b824650ba536c4 new file mode 100644 index 0000000000000000000000000000000000000000..208d249449a47dbb0eb2f82959cc6bbadee66bc6 GIT binary patch literal 404 zcma)2%?d$L5dOyM%0}!&DMhlhBSqbn@(8k$lq~M0WXioOUcy6o0#9UpZ7}AXdnB?j zi!*2D`{tXUF^tiPg6Z6gYyc4%ftU%o8!}Ck%u@=1TLk8Yi@MGu3smspypq-rcD^&h zL;9r@tS1P$mR8Wv*CfHx)*K!S8eZkH0glMyoLu3xRlA6CTI}8`bdvC`${sQfiV<77 zj`cOv-;0p+jQ&T*UxCvPFrVrD4n@b=C;Ev9TXlLdvs4>cOqn}uEF>YhD`-0`A)^&0 IdMjo7Pf-;)(*OVf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/66e5621c43fc9403d3e093d20018379455932343 b/src/libs/libsrtp/fuzzer/corpus/66e5621c43fc9403d3e093d20018379455932343 new file mode 100644 index 0000000000000000000000000000000000000000..703f1392d25819ee449d6fd8f84b76cb0ce85ffc GIT binary patch literal 83 zcmWGxh_5P%uP;jFU|?X#1Y#ig|DVDCKbVyy%3#<B0zjS)SOiIuK@=>)1|*r;bamS; Gp#T6E{}9Ij literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/67278b928ece08b649bb41dd10a477f20f965570 b/src/libs/libsrtp/fuzzer/corpus/67278b928ece08b649bb41dd10a477f20f965570 new file mode 100644 index 0000000000000000000000000000000000000000..7b10a810ae35dc92135163999fa6ca277ef1c75f GIT binary patch literal 144 zcma!NWMHs}XJB9`%H&9`2hu?B|Nk#A%~bH;mw}<WnqeCR6fgl50|8S$Q~*LTFfcL* zGYD`oR2M_!tE<()>KNJ~d?1IDfk76ithBm#jt~Qb7({vwlK`0U|Nnay1_n!zD;xlu C6d?`( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6745bbeb17c4281b97cee9be2f04b25f9b0bffe8 b/src/libs/libsrtp/fuzzer/corpus/6745bbeb17c4281b97cee9be2f04b25f9b0bffe8 new file mode 100644 index 0000000000000000000000000000000000000000..84a59248e7ed35aa2105cdbc19e29508d6dd491f GIT binary patch literal 1360 zcmcgsyH3L}6g^HOk!*-g3{_CXV?eE7<narL{z0Y=9bhO-SfUf^!Y6d&4_Nv!1;k&# zfVkXin>Y_Bhyad~_&#hO-*fD&hl}$Jz-Sl^#{B0-L`Q(ufU*wgGi6`)Ny0G>Y@~}g z#w0|#u+0}nT`=pNLXfD@fZ9Vly+^W<LrSn}gQf2)r*4)!O^q4^Re%sI^Yqn>Zk`b* zFd6VWsg$58y7KtS<VDkS`4xO9H8Zq_st*6tY1XF<B}BxJ!qOuf&rUabn?<9y*dt8@ zBP3A-bd0d_YAFOrz!kl^rj|Z=7aeX6!_Ep1TMOC~fESvIwF76#vaD0T**}HNsD2Cf z3*8dkKizrcKk8KuOp9w%IJ)Hn^B}>RVBslnjEkfVOKCb!o3OO|4=i1NM_jz2{1)*C nbf4WUxG~XQK|m?rc}#`5`D{V@ocBT5)J!fyBYjD5`j_4t0HWbG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6756444b0a6fed74818a7ee4e7f56c23577ca520 b/src/libs/libsrtp/fuzzer/corpus/6756444b0a6fed74818a7ee4e7f56c23577ca520 new file mode 100644 index 0000000000000000000000000000000000000000..05b83fd312c896684feccfe3748ca27c62557ef2 GIT binary patch literal 496 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RL?<Nl}rLE=nG-x!L4B8))x zT_%tS5L7$Ngo0#-gA5EM@p%jkdPSKX3xS5&fK^z7NuV}Pb_Q97|34V24dw`e#f01c z{-49az$gpk{pW-#15=K5E>OV8@bABa6i`r&fx#9;1Azj_i9`VgPLN}Pn6bK;p&H~H zAovZT7#RN87SH~_?;e99Q~($TSCGS?0j3Z{=OA-v!%i$wC}Ch|Ktu)5kG{Ylu7>$n sfT6lr4Tu?mV(LKmgPdW)urgjR4;b)ZH(?1l2B5cr1~C>fFeoVj02@1k0ssI2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/67630f5a980563718164a404ee8e24148c120bb8 b/src/libs/libsrtp/fuzzer/corpus/67630f5a980563718164a404ee8e24148c120bb8 new file mode 100644 index 0000000000000000000000000000000000000000..bcf712ebdb45c947250f07bd65e782261a9b23c2 GIT binary patch literal 1618 zcmd5+y-ve05dIt@k-&n;#89QGKnzu@E=({oA))pSA|X|x0}O=;4~PME;SnkpUVx3) z;SCsJs=2ch+j7dEGEhrS{Bu5k=lkv}`nb6+08A&z_?G_Elv1aFlz=b`kXOQVT4RGD z4$V#vX^L5lPV-juFTqH}bgZ(8aqp1qSx7l{%x3MoUt4LiP=g>m2+<a~4lR1tBF&*K zpt5s{L7lv-;DMST(`UQB2j~3E4b8~q@+bHZ;zg%D77l(GBW#S?h<UL}oTvzEA7^Da z5&a)0LP~VL;6#~gdOKHlf9Ax1Dr0v}K4K);Bn4T2rO8LBC9=zesglAXvf%nifR+{; z$1X(3LB8%E)SA4od3`#HTibN39c43p(VS-oC}(^vX_t%m_f+;^Cw175kayp~ruZZz z-Mt)ku@v?ofK5>zJLtiv(nqDVGE<3C;3Mj!Lv6Md`NranUlUF~X}5u}2MD~W#~?;f IwGqVgCmxRSpa1{> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/680ac624889085a04c01325b19dca2ebddb9beda b/src/libs/libsrtp/fuzzer/corpus/680ac624889085a04c01325b19dca2ebddb9beda new file mode 100644 index 0000000000000000000000000000000000000000..40deee7b9fa5a96d325a2be0c96c58ac22568dd9 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&8b1JXe7|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDgm0 ab@3b_u$XW=1H&8+h%^(BvIT2qs0IM({}3qv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6852c0ab304a4b0503da5ab3c4c3bb2cb47fb964 b/src/libs/libsrtp/fuzzer/corpus/6852c0ab304a4b0503da5ab3c4c3bb2cb47fb964 new file mode 100644 index 0000000000000000000000000000000000000000..e90b07b7cdd29b5e5acccdd68cbaa43fb20cd237 GIT binary patch literal 390 zcma!L00G7gj76!LT=ifM!~g&PeIYEYBx7|oBLnvzu-rZf0JH!9V_;%nXegc|#1IbA zI7jz5kTGXfyD$R>5W>Jg6g3R(KqU+ea5ewufJFZP2dh2@Cg(7K%|WPvnuKZ&Sd9bR r9IR^4>|y}A83?eLL%=RHbD(YpIvZ#jem64)FjzyK#=r^oD$w%)zD+-{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/68655185e37a948f14d5e22748576cb4d8ab7cc5 b/src/libs/libsrtp/fuzzer/corpus/68655185e37a948f14d5e22748576cb4d8ab7cc5 new file mode 100644 index 0000000000000000000000000000000000000000..9e803565e81f18c99e8f15fb5f2a41b38ead79cb GIT binary patch literal 36 mcmd<$iZ{rvuC6Xljjzs(XJGsf0sX1*|EudcbamSq7#IL5;1DSQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/687375f623183b3f91d4dbbc6d811d3772a94fe4 b/src/libs/libsrtp/fuzzer/corpus/687375f623183b3f91d4dbbc6d811d3772a94fe4 new file mode 100644 index 0000000000000000000000000000000000000000..de7fc32f5eeae5252061b88138900d2fccad7e24 GIT binary patch literal 140 zcma!NWMHs}XJB9`%H(jZ2hu?B<Nq%(%~bH;mw}<WnqeCR6fgl50|8S$Q~*M~W?*Cx zW)R?Fs4j-cS68cp)iE$wL+SsVAQ@Q(AqEC9h|nA+0T82xiGktYqMrZ%85q2)0XP*R ADgXcg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6883b75c90df30d660e6d7b966c1ec516df0171e b/src/libs/libsrtp/fuzzer/corpus/6883b75c90df30d660e6d7b966c1ec516df0171e new file mode 100644 index 0000000000000000000000000000000000000000..0b4a6f121828f302adc7921100f223ccd9def5f0 GIT binary patch literal 103 zcmezW9|V&3S99f8mBcgr`v1R(0SFj@m=lPriy0ZJt3end29g7dfyIFwuhjpN3UE=N TDhL2ESb$i8admNgad!&<m&zIL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6896f40df04bf1bdfcfa03df222b6e99bbb7aadd b/src/libs/libsrtp/fuzzer/corpus/6896f40df04bf1bdfcfa03df222b6e99bbb7aadd new file mode 100644 index 0000000000000000000000000000000000000000..c5f88e78f2881aa997719edcbe3bf5d6c956530f GIT binary patch literal 54 zcmazy$gZxgE>4ZF&iw!Xe{nTK;Q#9C|NmbyFfcGN1Tp}{{_8Q6Y5~<$XT}2s85pdA FY5=`T7Ipvt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/689b5a59a782b95c72f11da560c6e6a13259eea0 b/src/libs/libsrtp/fuzzer/corpus/689b5a59a782b95c72f11da560c6e6a13259eea0 new file mode 100644 index 0000000000000000000000000000000000000000..4d7bf23893617935ce3189a1ad75dce6df010481 GIT binary patch literal 106 zcma#|Wnd_YXJB9`%H&9`2hu?BKleXSw7Qysfe|9W$WYBtU0e*Ls?{MP4AxMZfs=tj h7O1YYx_FKdSWLK`fng3rmW6?XgW>=G|6)LHH2}9A5j+3@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/68afd8113b1f5dc78c6e363fa7b3235bb9f3e998 b/src/libs/libsrtp/fuzzer/corpus/68afd8113b1f5dc78c6e363fa7b3235bb9f3e998 new file mode 100644 index 0000000000000000000000000000000000000000..aea831a7ad17916fa065a0ce942e56563ddbf6ed GIT binary patch literal 463 zcmaKoF$%&^42J)rVycLulS5Z$kKhG7L+Q|=Tj?aN_&Qk}3yuZv=K(}Sj7h7lNHy^C zLf-fO{KVxUwl07uAb%mZ#DjT_Rgy^AFB@K&fsq3XNJAUYYJzKlOx`5V&;u#9ya-~d z4=h4A<{iOD5DCMGLCn>w=DolgsU5yGxqytOT-#n3Jk{bP=cqOhen1A9HYo;kN6Z5G zfYn)zpBsGB;AG)06u<CK`}1G+Mab0lTL=91(>g!|+v0m|!ZdSrZMyC8|81MZc>+)$ BVF3UD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/68cd0772f3b8b697bf0883a6b3324ecceb820962 b/src/libs/libsrtp/fuzzer/corpus/68cd0772f3b8b697bf0883a6b3324ecceb820962 new file mode 100644 index 0000000000000000000000000000000000000000..e63676cc32eee46137241c7b784147927082cd87 GIT binary patch literal 205 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VNd}gxeVyRBC}t z76uLm4%Yt+><@sP|Nnsm5L9b30@bTSI1JWMnt>B&0#FgcFeU+zRBO+F=IUIa3<NBO ks25-ax(5WHhM86uBilU(D8v2$NC2G)2L}%_Ft}C&0CdSMRsaA1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/68f7d41620a0c7ddec132492611badf720f6b5cd b/src/libs/libsrtp/fuzzer/corpus/68f7d41620a0c7ddec132492611badf720f6b5cd new file mode 100644 index 0000000000000000000000000000000000000000..8f26808465db598305ca4ffe4af32568895eb3aa GIT binary patch literal 607 zcmb_ayGjE=6g|5JcG9V-6aooIK+&Yo&PKt)#!rx834;kFOUM|-47iON1i?Nm_zhP6 zhhHH02NsJcWIU7I2tEo656s+q&zxEAxjS_k;aCFbw}pxs3HyejIk3z;E+tRG&Opgt zs~a{ex^?$>n_BxEc!GxsM%i9saK!6bkr!hRYb@M#qK~!`F-A_~aFueSWXO<9&{u7N zTqB0C*6st>7uL=MRc*$Z+MmZdaCu|rjLuK1<Op*9B4Y(5wzZNlEwC$rdjwA`+}Cu2 z2@Zj6Ku#ho$#4F`jb0Hb<9C0b&42ZG^e2B0*$n>49|zkNg{;?l!<;6o*aSK%lFdOl z=qRacFnR&z1=(`OiDKZ~k=sh#urM7~BFK~hf6C0Z-SfR19wv5YIpb?7v|&1(x%&q! L%6R|r9uglPT9<Xg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/691f85fd1300bd2e5746fdc9bef75768040ece0b b/src/libs/libsrtp/fuzzer/corpus/691f85fd1300bd2e5746fdc9bef75768040ece0b new file mode 100644 index 0000000000000000000000000000000000000000..69066f49e599c0c00ebab8f1b05848e81b2948c3 GIT binary patch literal 187 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}_DEFpvU)wr@b99;6SV8$=hSW^yppGqeNMq<^ad8voye0cZn4fnss> qEU;Y+Oacr#3=FM3|Cy_cA%-w00>yv;D8>X9E7oUVD6VGU*be~Sz9xqN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/69217d1e52829e915878d9886d2219317400a4fb b/src/libs/libsrtp/fuzzer/corpus/69217d1e52829e915878d9886d2219317400a4fb new file mode 100644 index 0000000000000000000000000000000000000000..dcc0ee3cdfb68dd1df166c812f15a9933d2c0bd5 GIT binary patch literal 106 zcma#o%VQ|fVPIe=%JfLB2hu?B|Nnnq28QZt1_nk31+YkUF(U&IgVaHRHH^W@z#t1$ bH^-NuSO_d8*v>Eq$f#mq0vQAXVBu;20$~*b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6967d470ff997b6398be723dc3d3ce9364a56885 b/src/libs/libsrtp/fuzzer/corpus/6967d470ff997b6398be723dc3d3ce9364a56885 new file mode 100644 index 0000000000000000000000000000000000000000..f7e8d733b3b7b76ec1459350426988d126657cae GIT binary patch literal 466 zcmb7>F-rqM5QV?7@nRvOl|n!)><mKC#wLN-1WaQshlDE*LIQWOT2MP}Erm4x5yhXA zKX6)QoZYNOW0hCz><n+-o7qLXswq(9Np@$^psE+VJ?X}D>MWgUYcJF}s3@%>mbLxq zO2M_BBl^6<I2}Tx$RA&#7@W<Uk=i<S^b>bH*$%ax2bd&C-7>93S_tjiPK5mOKV0}D z-HtKkJkV}j`6Jo89G?zG{p&$?(zF?yl~*@}9bCfNJmub^W6@`$u*GZjf!K~$o+U@Y qgMS{8yQF3wn-RV5%c^l^kMHrf&kwU?wr>^x5s*@lvzuh9ezz|SUsa6& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/69c251669ae44e3eced748d2199b1dc431196b6c b/src/libs/libsrtp/fuzzer/corpus/69c251669ae44e3eced748d2199b1dc431196b6c new file mode 100644 index 0000000000000000000000000000000000000000..b55917f6e370bde48a48a02bd0fc0094b9256858 GIT binary patch literal 99 xcmXS5fB+r_Mh1q4|6l+WLZVnfY$hZDOlCY#zePMyyeN|+wH_i5G|iWR0RW2S4F>=K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/69c3e05de7d033aefde7f8044c9ee29988c2046d b/src/libs/libsrtp/fuzzer/corpus/69c3e05de7d033aefde7f8044c9ee29988c2046d new file mode 100644 index 0000000000000000000000000000000000000000..8439d4f6d845f033f39a12d391cf6388b6cefdc1 GIT binary patch literal 571 zcmaJ;!AiqG5Pc~H(}E!8CRi0gPv$Imu_sS{f#_0nD}mUQ#ClmlPkQ#A@95QE@HhGc z#Y<V=OjcVI9GacY%<G#sFD4z~(Eup3*d8!5y!YpTbG)u;VUSO(`RE|tMg%;MJAm9a z@LA)P2%ZTp5i6KP7f*UyA>!XOTopkdcc|~{I0+pDQnu?&*4ju&U6Zr*jR=`)DjT6M z(`CF)FPiBubC`!g-XoNf$7Qk9ni9^HMB1HA5v!zbd27veF}g2{+zhkaCTw&6ezU(| z6n7jfV%n>G<QMD%S9aLGA!G-ZXGZS${cX{m&BVI7Kiy(t>;e^&3vA8)N=zJ!JXe1| x74a${mVL+4^q)AI3a6~0Mr#gc<B!>sU^YLh02z(OGn%mfTPJPt-iZ-Sd;vu!c546t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/69c3fde5efff19e925d9ddd1d3ea12111a603aac b/src/libs/libsrtp/fuzzer/corpus/69c3fde5efff19e925d9ddd1d3ea12111a603aac new file mode 100644 index 0000000000000000000000000000000000000000..9b48ab4845bde99fe3eec1f49ecd0d077294eec1 GIT binary patch literal 499 zcmbV}KT88a5XFC+G^f>(0|hZfQm9yoh>cBztCW0(R4LMk+$A6^Xr-~Ru@tWJd+6s$ zWfwcgnYsLH^})@~d-rB{b_Wr;8UV#889wN$P^r)7t8C9^kp@4~+cWu;?wm40;3=43 znYlG~QlpPA(u`%;bsgR>Oe76NuX2VO>QA*AwT+!6C!SR;C)pILgwR&jSpBx-@;+Z6 ztQv%aWrOMn*SSU9Hi_ltmZW^lze&!u^^ASna1Fi67DpA++hQ302F%{^ny)@Y&o;uF u=rP6U*<RYOFETj3VQd3HPt0^lEO(a2!#e+8^atx%ZQBNNcT(wmw1Zz107Rbv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/69cae98d93cf1a78af05aec89b343ff693445378 b/src/libs/libsrtp/fuzzer/corpus/69cae98d93cf1a78af05aec89b343ff693445378 new file mode 100644 index 0000000000000000000000000000000000000000..fd266589c4b6088c2cac34b71f5a40624a0a12a4 GIT binary patch literal 1587 zcmd5*F%rTc5L_(O(b6u3Z%Jown<jrqr995B*jVHPX`B%cHen<oWN0!n3_0L#Z`r#% z>J2!$Pg&qd``pM^D_ImS_DDAhTH7tSR?ZOHPTswvcSB6?3cLn4e-Z~x21-c9++5dV zAgm?%jcMCfw&-9AptL%{D!0#mV_bp7NByakL1mI<6!oYl*X2O^&8qLZ(P3I?W}FW} zsT6ikTmi#zGG^PG#sK$J+xw?27D|}-nOC$Cv`1mb_-!8OKs@^|nx+v3DJmoS)sGJ3 k9`F1KXxuH0p5o<r#6c&y{i8?hd;FD2Q1F1tdJJ6hFAD1PWdHyG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6a0592a9b603e91657d7ef842fe0343287577d83 b/src/libs/libsrtp/fuzzer/corpus/6a0592a9b603e91657d7ef842fe0343287577d83 new file mode 100644 index 0000000000000000000000000000000000000000..69bc84364eeff1929f64197e7e60d283fff37175 GIT binary patch literal 420 zcmZ`#O$z~06g>}VWHXtas3}D@*2;#Om721%kgP0hEDWWdn2r32`4LuDnwtM(ZBlaG zH!}vwS=_p>^UlW|LqQzHVmi}y(E=i}A*2*2-jQhnzVFlNABY-&gn$Vc2f))Hsw|X= z#gdtOZN06PK;S{$a{OMu!jUx=VTit^CL-EOI$nv_kS=T1h7SK4LTfYAKt<70m>feo zZ&j(K8C<v#y`Xfzp{sR2Smv|pFX95D-va5csK7bkbZ;x*Pl1p4n~(T$_KwMSQ?3$x Vb9Tn?7POSn9AqysVJi-7JpsgqTL}OF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6a237c7db7dd04afb407ebb379f5cec036c6f6ad b/src/libs/libsrtp/fuzzer/corpus/6a237c7db7dd04afb407ebb379f5cec036c6f6ad new file mode 100644 index 0000000000000000000000000000000000000000..8914fd9451e88b2c6585c048cafaf97c661901b1 GIT binary patch literal 271 zcmZ2JM~FdyL4iTIoq<7R4g&)N3j+rbGBU6~0CN8SXJC+Js4lJtvWqe~Qb9BjSUUm< zpcDgxAt!?a1Ezxij@BSqATZzrnZO8A1GEVQK$d_2LJdp-nk@(gM#R{HVFe4+3Xnq$ cjlj-;dIW4g&~yL){{b`q|1Yj)U}yod0d;9DbpQYW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6a2e403401c57d45174788ef50b720afdd9b9d4b b/src/libs/libsrtp/fuzzer/corpus/6a2e403401c57d45174788ef50b720afdd9b9d4b new file mode 100644 index 0000000000000000000000000000000000000000..9bca8bd9277340031518f03bf2be5f68edeba76a GIT binary patch literal 2607 zcmd^B%WB&|6g{H|EI}5fUbSFsOp?+Tn?g%AO`!#EL%yI0Qv@+ICD?5j5!9<Tn|?qS z+T|ni7ySg2uLz}!s^`wgnz0;L7I9V`W6kSIbLQT2&rH<E*~bXLcof7_)+||;9Rf)L zC^LX$qRgLTVsM0)W~PTQ#JP{|?Mu}E070V0an>A}&s!wB1*A3}n8~H*qotAC3@kxV z4g~KWKV7!y6&7I|+5&bbB?qmAjN6y8U1?nUxYNzL1?r-agDb;_QkOdHzOwKum%bB& zWoRYvJ1N)o5%8zbxMJs5&er59shZ5Gkkgd&8!45z{tHf2dZA8q{s_YZprys8$RGs| zZ7|Eee$Td&lerM#;=pg+XDmBj^Bmwpsq~&B?+GcWT{Zz6D&H||-w0+M*v|^sZ%eSv z24*w65w^UA-i@6)B0AG4QRx*;>5W8bzu4|Zq9h65xZ)-jQh(y6{tDQ9hom!SoFm%s zx)9P?&px)z?mu0tV^7t@iWOJW`R7f1w#3+or`8b3+PF3Boy9a<4cqv!#AnC3^Ct3q zt)U?6MRL9XYd4U63d^hV_2)Maki(255!H#K&%^hh;^_4FWcaQ#IUe>-Ls6?OY8FyZ zgyh*|B?I_&&Bs*X39DSR#u&xH)Y!NtXJXRHjlzaez~qG%H0V@G8Mqd$Jb6uuz6tEI z@#f25F!;g$K#_8<AL?1`U1OqeZF1~UJIC=Tz|=@&$4$Oq-yWRiqNgt9#WoXT52@T; ObOg-OzU)o!4u1hY&WQW~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6a716e6e19ded33bf8a122c334d86e4b24be29fa b/src/libs/libsrtp/fuzzer/corpus/6a716e6e19ded33bf8a122c334d86e4b24be29fa new file mode 100644 index 0000000000000000000000000000000000000000..06424b42a3b1e66c3f81a42fe4b5919bec960e83 GIT binary patch literal 310 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5F5iVMwnq76Oj!g!a!|^>Bzc(Hjv~5LT-jy0d{l)FbIG)mc+;D<uTX-Eh<X=FPsVT UJp;r4|Nm7Pib1vmmAF;|0Gug2c>n+a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6a7460d2afcb28811279ace5576a11f8b308b7ec b/src/libs/libsrtp/fuzzer/corpus/6a7460d2afcb28811279ace5576a11f8b308b7ec new file mode 100644 index 0000000000000000000000000000000000000000..8791ab55cbdbd1883c881c799d8f4fd6e9751a96 GIT binary patch literal 295 zcmdn5r_c5BWi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI zh>c+w1KhBQ#2S_iF}5Ur|J46r*Re4CgSk!(=$c}nMIgt4o%0_EKx|Y15(NVf5a|wK ZqmT$6F)%0qEd=qQVhmm&!{D9+G5|d)PX_=1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6a9b91a7baaaf95e8f33593d92a08fbfe955d256 b/src/libs/libsrtp/fuzzer/corpus/6a9b91a7baaaf95e8f33593d92a08fbfe955d256 new file mode 100644 index 0000000000000000000000000000000000000000..bc68fdf358ec3a9b4a071a2a5962db43cb5654ea GIT binary patch literal 220 zcma$3|Np-`1LFq9qSQ=|dIm563i&cHR#!7JF#iDy?1KP^ESPL4o+HE%4iT8ca2&{( z!_Y3wzyXAC&|W-80HLNIqy(yliGkriP(6_R4_18+OyV-9p?EGfyWsXPARIFXXePv# I>+Mw~0B}ewWdHyG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6abba7f854ad692202a9cd2f470a548f41c7c587 b/src/libs/libsrtp/fuzzer/corpus/6abba7f854ad692202a9cd2f470a548f41c7c587 new file mode 100644 index 0000000000000000000000000000000000000000..d8dabc94ded05afd82b770d65fbb9ea1b2fa7874 GIT binary patch literal 182 zcma!LV}O97)J%?g2=o8{|Go^2)zuJQYJ6E@PHAd<0WVY~l(I+VLU@`i4aIYW7{VdE xISlPU#vBF)8wL&_goB1;gc_i9J3}T40BO<FFD@!!NK0K?#86NL*9c`)0|5GF9RdIV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6ac1f2adf0a276b930ac333f30e61009d3932ba0 b/src/libs/libsrtp/fuzzer/corpus/6ac1f2adf0a276b930ac333f30e61009d3932ba0 new file mode 100644 index 0000000000000000000000000000000000000000..93f45bb977c80f71a65599a286624c5e3397f302 GIT binary patch literal 202 zcma$5&&^a5&%nS?l*y5*2Bd-D-~a!<3=Y-RKqfm_AQ4P5F!0JUFfuSS6mT*yfLH<y zKjtvB1Lc6EFas+C2S}O0H=vSwh=%_lgMd5^hE#^kBA}Z83{?yq|Nlc|!DMwYBSUqu rLIY<3%*_9D7=TuDOaw_MvM~G?0x@0zF{(0%lyc&K=70ZzQq{5mY#}Lr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6afe5384c398e825595d124e174f5e403153e1b8 b/src/libs/libsrtp/fuzzer/corpus/6afe5384c398e825595d124e174f5e403153e1b8 new file mode 100644 index 0000000000000000000000000000000000000000..a06dc602575e4eec43b403fc46fe88c7f34d86ec GIT binary patch literal 1510 zcmd5*J5B>J6r62H6iT`j5##{e0Lfi?S|4L8*i%q)nw%pY4Mi@H6p>=a9^0`j?`j(m zPphZ5_Pp=-?Vqta9tQxYt6Afo24&Mz4INd7oj(}*4g*m<lD5I1?LXaJns>=3LV@oD z%O~xila6$;$}L@1ptwE_Edt*JiCx020mGJjiyJIWhs76O0q1z|;=DWrEycs%okul> z{9DdxyxsAe(7P>%G&xb_WjGpj(59nsBg5s)6p(s?iB(`i^IbCSA~F$1PZsVn5y1P@ z3(OUk4`Egt*)w%MxBui=XZgDd8Vuy2>#o!`QnLSWapSL!8y{qQLN6?E2A=%3n@`HY zt0W2W$Vf!|!_}|3NF1?peOfBn>R_fz8+_xs4s*K+HP}=@nOZh=x#}gL4%%#o4#YL~ IFwtv(AI>2Xc>n+a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6b1393f61366e6ab27d618e095db5652dd640853 b/src/libs/libsrtp/fuzzer/corpus/6b1393f61366e6ab27d618e095db5652dd640853 new file mode 100644 index 0000000000000000000000000000000000000000..43f209ee6abe247fecb8befd9ce6af2360e2330a GIT binary patch literal 430 zcma!LVBEj}1dK(gnH=>X76Zfo|Nng%7^|xp8JPco1@=Jzn2n$K{|_YJP&`M7AsnJ| z4#ROEV-7>RFark=!U3w9c90T;n*TucAa{UOp97QV<^UZDmPR#)47(WU=VqAaNptfY KXlO7nR09CwjY>rT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6b285d460e5309ad9d2e141c37ee6e50432f06a1 b/src/libs/libsrtp/fuzzer/corpus/6b285d460e5309ad9d2e141c37ee6e50432f06a1 new file mode 100644 index 0000000000000000000000000000000000000000..d84446ea2b4e1e8061c85f0b33ea8a44f1ff6621 GIT binary patch literal 346 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))QbRr3@>jUgw415gcaLzus# z8-m3ms4a7Zz&6i;+K+IFp%IERFikKb!x=!2fq)RyPaw7#x?8~>hPy)>=v!EbK-~(L UV*ongz@z{Fx*7ieXZXJh0D)gPY5)KL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6b296b18dc6f859767385a7a1afb4e873b758285 b/src/libs/libsrtp/fuzzer/corpus/6b296b18dc6f859767385a7a1afb4e873b758285 new file mode 100644 index 0000000000000000000000000000000000000000..74fa6df5cd24376894b1a5c352224d85ab4e0ca6 GIT binary patch literal 677 zcmah{K}!Nr5dNMk_>6+eQ-Yyn9isFSbm&qL)g|Z;#Ineef{N^7fe-SMN#Mn6?4Rgo z^e?)0?cgE7*Y|vDQDMz8Z)WGsd^_LFmbBKVE`XpW{Vpv<zeA~WO;1pL_u8wseYaI@ zc$Iuu^>$lnAO}bCGD6>;8JaN__ah!%fo&R7P6<%+Wfy&uV`P@np)ca3z^_TfIkE$G zbp|}#X&qyr5RS7pH?fQzpf}Kt3I$FKVu3LVV~JJT4l;eL(<vee$>#~F7rq*_uuKP+ zzyaV+npkt^@DsoInZRfB-}zn5=VyvIga7%d$1i>Z<v6x*dKO48G2=JZdBYD#1r3RG zlDiP4vbu?uun*Mzrdw%y?Yhs53l*+Fy}_yl+)SrT1!H^MpBa|{izGyjKEGmRapoM| z9>*du(T7<Z-x?uQW_=tZ*j>zTif7v^M!ZS>_z(V`Q)RkrvtRP>g+sl8p?+R?{QyYD BeZl|$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6b4e197ca4238a48008c54faa8e6a44a3447cd74 b/src/libs/libsrtp/fuzzer/corpus/6b4e197ca4238a48008c54faa8e6a44a3447cd74 new file mode 100644 index 0000000000000000000000000000000000000000..76be326e77ef8ae197ef07ed3550b71f8f125d22 GIT binary patch literal 38 mcmdPZjgQa#qg$LBAD`M?&$yZa3Pe*=;~CT#G#N^PQVamr)(MpW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6b5f61a47bbe9c1058e2d7b6248f2c4a532ae0c2 b/src/libs/libsrtp/fuzzer/corpus/6b5f61a47bbe9c1058e2d7b6248f2c4a532ae0c2 new file mode 100644 index 0000000000000000000000000000000000000000..ada096de6f674acc4f465c9c75016c3ead4d2815 GIT binary patch literal 180 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}_DEFpvTPt8YM}9;6SVn+Zr4rDk$4)HAe$)NoV*jsNe#0JH(Dz!s!X pvAB8`*e(Vp0R|lghSr|{%+<v}LqNI}fnq=a6a(^#s~I@<0|07OBbERF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6ba5f404e1f4c1a61205ca8819686c19b8a7e72d b/src/libs/libsrtp/fuzzer/corpus/6ba5f404e1f4c1a61205ca8819686c19b8a7e72d new file mode 100644 index 0000000000000000000000000000000000000000..ade91dc087207a3bc787a01728d1eeb1dda572bb GIT binary patch literal 150 zcma#o%VQ{sXJAlHO8qaK$p8lb|Nr-8sAkA!U|<9?7^15g7%nn0FbIGotBV=I_znXD zP}%?G3=GylQJ@q=xC$g)tqxMD;<f}N1qPf946;BKrPjrBgn$D76&Qru85rg;ILNaw VZ~!6DbOn(3|Np}O|1-E&0|08@A_M>c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6bc23a666a9a3964a045462b36d4ac19f0355323 b/src/libs/libsrtp/fuzzer/corpus/6bc23a666a9a3964a045462b36d4ac19f0355323 new file mode 100644 index 0000000000000000000000000000000000000000..7198c45c79168aa913211583e69267cfb0bee30a GIT binary patch literal 99 zcmdnbz`!8P&Q<*%NIOUY2_R5lVyLceU}RwU!2l$xiy47j1_s8}Yz!xXvP^~y)y&mQ XKo)bxCy;U!puoUT3{nh6V7<ox{-F)} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6bc8f0d768c1b81bd2280da42902103f8feb64c7 b/src/libs/libsrtp/fuzzer/corpus/6bc8f0d768c1b81bd2280da42902103f8feb64c7 new file mode 100644 index 0000000000000000000000000000000000000000..425adcdc424d1505ea76cf539375afde0bd815a4 GIT binary patch literal 403 zcmZvYu?@m75Jmq5qa+dqA{7M+1&9K{0<Z!zq@tjJ0@1lfG>njrAy_A4P;vY?aX=ww zS?80V|G#s#KH-u9a^7olfD2XK0oDR@e~=X8>JopD{6N8wRGU~eM4ZAA=<sSFdUeV` z<muWnp71g;FoDq7YltVbYWh2oCr}f!oP<HdB?t=^FUl~%E`@)vD36Q{_nR^rwY^9O qNWsCcckS7udt5$wY|UiEJPnc?K%?AMsH@6$&{u>7DP^mM8TbIBJ4^il literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6bdde9f513ee4f442b4a3b1eea8b3cc47d812e5e b/src/libs/libsrtp/fuzzer/corpus/6bdde9f513ee4f442b4a3b1eea8b3cc47d812e5e new file mode 100644 index 0000000000000000000000000000000000000000..712d42c9c5c35c58fa9b4133cb15abd3545f6fff GIT binary patch literal 85 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYj01VHq^|NsBP_{{ALjMe|y8LC^VfudmW Q{{Mf+TaNp585uM(0p-aY{{R30 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c165f1717d532249cdf43720fd746883396d020 b/src/libs/libsrtp/fuzzer/corpus/6c165f1717d532249cdf43720fd746883396d020 new file mode 100644 index 0000000000000000000000000000000000000000..b876c282ff7cfea76e6f08ab38b117329e04f2e3 GIT binary patch literal 118 zcmX@8m&Z^N&%nS?l*y4=52S(M|NsBK3=GxP3=E7A0fy>gMhFIqL4Y-o$^$Vu*%@Sk p>e$<R<_LkMgxMJw=5PR+ObiTu!6jxn`N@ensit5#Fd<MJ4*&~^6FvX{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c1cc0329fd20f56a8d91897348cf5faa5f953c3 b/src/libs/libsrtp/fuzzer/corpus/6c1cc0329fd20f56a8d91897348cf5faa5f953c3 new file mode 100644 index 0000000000000000000000000000000000000000..6ce0fa4b60787d171b2e3c0acde1d4557562aa0a GIT binary patch literal 108 zcmdOk&ts5eWME(@%H&9`2hu?B|NsA8jQ?Az85$UYGLrE;K-pZb>S9KQ>S}d}5(aB9 nEx^FQ31n25&Jkh|ZU?eB7#bMna4`HUV1lYsU|`UThp?*wuSXJ_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c232a2066785dafb0b517009ee1c90380c5fe24 b/src/libs/libsrtp/fuzzer/corpus/6c232a2066785dafb0b517009ee1c90380c5fe24 new file mode 100644 index 0000000000000000000000000000000000000000..ac4e4a766edb5ee5f6570fb9d3f45095eaff77c1 GIT binary patch literal 69 zcmbREpHb-L%W5F7s;;)Kt}bR^1R`AqhU#ht2w)Nb(#ILURu?luMHm)aLs>vI)j*X1 Dq!bTU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c464ff758fc5da32f56415ea4d312ea0787fe52 b/src/libs/libsrtp/fuzzer/corpus/6c464ff758fc5da32f56415ea4d312ea0787fe52 new file mode 100644 index 0000000000000000000000000000000000000000..4f509abf7ba2b7f2b8d95cda7bfcd20fb13dd332 GIT binary patch literal 255 zcma$5&&^O1&%nS?l*y5*2Bd-D-~a!<3=Y-RKqfm_AQ4P5F!0JUFfuSS6mT*yfLH<y zKjtvB1Lc6E0K@+|3_vX$6G3VdSs4Bcff!eScniq*&eTkfdWLq8AV(F$e}+FmOBfg? Wa{Wg$M;Ita2lsRWt*I`qmIVMK+cyya literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c506ead05f651d80e1ae8bd0d4510ea68174972 b/src/libs/libsrtp/fuzzer/corpus/6c506ead05f651d80e1ae8bd0d4510ea68174972 new file mode 100644 index 0000000000000000000000000000000000000000..31b206a93487f6a0d53b5c5bba39e60efdc79a95 GIT binary patch literal 538 zcmazQU;qNf4U9#pnH=>XHUq=||Nng%7^|xp8Myy|1@=Jzn2n$K{|_YJP&`M7AsnJ| z4#ROEV-7>RFark=!U3w9c90T;n*TucAa{UOp97P`nL~zM3`5GzT;MQ72_Hz15*I#5 U;apwJ$WUDkj}K%<5s*_20DX~ChyVZp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c5328b0c624f44f8ccf49ea0c819e94d4afebfd b/src/libs/libsrtp/fuzzer/corpus/6c5328b0c624f44f8ccf49ea0c819e94d4afebfd new file mode 100644 index 0000000000000000000000000000000000000000..cf928c6ce4e42e005f140add65b42e6ddadc0727 GIT binary patch literal 239 zcmb>XZ^w22Wi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI si2VZHFh;mx6Oj!g+Q65@7|05DT`b6r@i2GI12cdg5O~aBT{wpU0N-^gDF6Tf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6c61eeb721779feda1ea0e9c706ac4cb858e5d6d b/src/libs/libsrtp/fuzzer/corpus/6c61eeb721779feda1ea0e9c706ac4cb858e5d6d new file mode 100644 index 0000000000000000000000000000000000000000..fdba90a6050081ed31d2947fd3e8c5229da80143 GIT binary patch literal 112 zcma#o%VU&`XJB9`%H&9`2hu>$_y4~y14DH+0|O(20$8NFSdF2&m=P$Z4(2m3STZoY yWCyW185m?47&(B_bA%X-85nX>^Wu~9^Gb^H9T*sx7(zlqN`N>-`#%UUR09CU4H`)R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6cabfbf82683b2378758215959a71fa0afa7bb2b b/src/libs/libsrtp/fuzzer/corpus/6cabfbf82683b2378758215959a71fa0afa7bb2b new file mode 100644 index 0000000000000000000000000000000000000000..e13182d548ef7eed7e926a0555dea975af0908c2 GIT binary patch literal 319 zcma!NWMC+XXJB9`%H&X~2hu?B|Nnnq28QZt1_q!c5NF3v{J)>;<x8Ld1n|HZKvl(z zV3jZt5MK=}R+gAk3KC6CjW6J2V31`fPAp4}PtGq(U6+`i8ed$Ro14hU@DFGi2*C8u zfil46)&X@fGL%*q&k+I(3%4^cfE4We_PsbB=o$_thH8dDp#2cQ0W*XwR}~TIDrC1X F0stzdP8k3I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6cf49e1edbe3662a9f9c3eda6c221edfc1ae1de3 b/src/libs/libsrtp/fuzzer/corpus/6cf49e1edbe3662a9f9c3eda6c221edfc1ae1de3 new file mode 100644 index 0000000000000000000000000000000000000000..7ed19b4abbc2c3f55663d3fab13e747f27d47cca GIT binary patch literal 103 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJih>!8@(fHsF$jPt0h0zma<MhTYak`S a$k1BC##~*@2$Kg&Ffed|BpCkxKL7v?RT}jG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6d63a35f78c5150ceb4ce1ca98ec8ff95f4684e6 b/src/libs/libsrtp/fuzzer/corpus/6d63a35f78c5150ceb4ce1ca98ec8ff95f4684e6 new file mode 100644 index 0000000000000000000000000000000000000000..06b3f0517de19e1561634a8fb863d64242adc2e1 GIT binary patch literal 70 ycmbREe?QmDm(>g~pa5o67c(+c0|glw7{2`nf-1)9Vg{%f16)Y~15gPFRRaL2>=E4n literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6d6c93b5582cdc7fdad3d1dd778c61c6e1990b9a b/src/libs/libsrtp/fuzzer/corpus/6d6c93b5582cdc7fdad3d1dd778c61c6e1990b9a new file mode 100644 index 0000000000000000000000000000000000000000..8d459d98ac94ad0c02f25b119b0e128fe0b5046d GIT binary patch literal 167 zcmZ3@z`zino0<zm|AjMw93c4r|GzH-Lv=L+10$Rv&%h)AlB+Ie1Y-sU4F(PdhQ-z( tK?VUvFvZ{qmabL@^R5sBl(n_Bq3R$;07*^;23ZD11_j~&{~3S~1OU?wK4|~| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6d8e0536752ddbb305adfd65f1be91358ff7aa99 b/src/libs/libsrtp/fuzzer/corpus/6d8e0536752ddbb305adfd65f1be91358ff7aa99 new file mode 100644 index 0000000000000000000000000000000000000000..3b433896abfab01ebd05b9cda9070de0343a092d GIT binary patch literal 126 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF*`#wgA#~zn5jE+=FOQ%0HRI- iq_n!25n@OkSSLt`NdQFt7tRDx4F7$Bia;7*jA{Vjk04$E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6d8e5a6ba49e6fb393694bc7fdcdf4034aa59583 b/src/libs/libsrtp/fuzzer/corpus/6d8e5a6ba49e6fb393694bc7fdcdf4034aa59583 new file mode 100644 index 0000000000000000000000000000000000000000..e6451ce30a3c09a13e493d8aa4bd69fc2a0d5117 GIT binary patch literal 80 zcmWGzU|=YTFJj1KVBm1A2XcVm|NsBK5Eg?dgFzn<I5IFW76OHs7#OOV!BW-LKq082 Q>UIXk_&>45sqyit0A5EAcmMzZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6d9bcef0193d298b54d7d03635f2a5d755e3ad2c b/src/libs/libsrtp/fuzzer/corpus/6d9bcef0193d298b54d7d03635f2a5d755e3ad2c new file mode 100644 index 0000000000000000000000000000000000000000..0507b0202e5f94b44d35011b9f103d2494994939 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763Sg1yVnzlqu2vTS3ouwhC<X>j c1_oK6I-v9%A+VTmI|IWU4wy6p7nD^E03VbOK>z>% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6da3f86619934a68744f1f90bd569cc8d53e97d5 b/src/libs/libsrtp/fuzzer/corpus/6da3f86619934a68744f1f90bd569cc8d53e97d5 new file mode 100644 index 0000000000000000000000000000000000000000..7ddb4ba75a2edd6a4c037ace89b4f90fadbf3c59 GIT binary patch literal 73 zcmYe!kFP3;XJB9`%H&9`2hu?B|Nnnq2#Z0K!JrQWxQgSwG7YM$<Kr{`=oY8O$ESAJ PGp>dxI>yLw?9ed)3XK+K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6da74210deac7eeed903ca6c059d2b0adb942a8e b/src/libs/libsrtp/fuzzer/corpus/6da74210deac7eeed903ca6c059d2b0adb942a8e new file mode 100644 index 0000000000000000000000000000000000000000..990f2c859bd76b70e7539581e33b92660b1b03bd GIT binary patch literal 1138 zcmeHEJ8l9o5Pd6wFa-@;qbw4i0+9<u+yJhSRSFj?p=h-$C@>OK$t8S=+$g7@fMW7& zFH4jt-4+xX$)nNu&GYk{ybBD#C^DrFt^h=21uP8^g$7I+g=40^)5BAB13&)@*DraW zAbtl%mSyX2*z@Bn7AfB<w8UAUrGha~ItAws5#x#n*!~YvD5$oe^U1yl6T{3XwUUXO z%mlU4*yHXrrF3IYH~c;(L8M${zTv0BK6JW$S#LCQ45F?g^qAkwwV>l*cAr#k{O#m2 sFysmujv9r|)S<%cAlL2H>-N}`Ox9DlktXBVBw6EJm&O_Y3BNn=1<iLqjQ{`u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6dc013b62c35f729a9eb71008215d4c64457a0f6 b/src/libs/libsrtp/fuzzer/corpus/6dc013b62c35f729a9eb71008215d4c64457a0f6 new file mode 100644 index 0000000000000000000000000000000000000000..91b0909c5eb0f98a28fddd200b06af3acbe73210 GIT binary patch literal 507 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+2dMxS|NoDHiGiV^c#aT5 zI7HzbhT}lS9ENsb1`Z&EfrF@O+CfSXYW@S&GXUKIR(%dk;xLC8yU^62*#&jc0u(o+ zse!r&=p>+OLhhMM$nOj-G7w7(fMEp&sD4LS&|3VTxw@DUs)}K;H884x9OA+P=!c?A Sj#Ox*G63~L04F$b85jU7w@qaL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6dddd2c93c97ec6b7dfc6e73dd7602bd4099f384 b/src/libs/libsrtp/fuzzer/corpus/6dddd2c93c97ec6b7dfc6e73dd7602bd4099f384 new file mode 100644 index 0000000000000000000000000000000000000000..51ff1329cabfa37142e64cdeabc29871e52139f9 GIT binary patch literal 1076 zcmbtTO-~d-6s%^@tnorzW8gsC#AMOL-Jk{&#Y7TL96WPuHZaDG!?MoIl1LwR4;U`~ zguQw44{-ITc*dUqxJ^~>4B+6!_%hQU?{!yK*L#f&&cPrv>>pujt3{7Hz#@Zi+4x@Y z)sKK0a4Z8O^>U>n0PRPXck)KgQQED=fcO3#w>zzE0Ox{g^4Dog+CX~&oL~#c!VHMc zFg%29_mEq<1T-u{>Nf6v|NNAcp8>Z(;2EBB9}%<(!`i{@YSYjSd=l{|f@nHtyAAos z$NPHZKX@c@A4{%9Zt@|3az%NZryICVp240)yGqKxCWGRN9MBGRJ?UZk3ej!|I+CCh z|LV+bSLMJ6%K=UbEL0RA(+Z`VdM;yh($cAaWREH*anG*r_40J@t-@ix9p;H~6W&%v z>8?H}br<YU1*T~jgB9?2Y}@-qb{N_51GbE)8dx1y3A;`g_-OY#$so4<g4k(LVUwF6 z)Bvq^9=`-5D~`iaKaJnVnbe?llC^X<`3=zfAn<K*e>0|RD~da1G*}SQ4KOJIwF?JI zxnXiu-2cI1cP;%pi<kez0+<b7cowQ1IOTp3nGJ<3FcY2}n--2SGbh)VuRbcCou>FU rtul)@$W02^*w?!uqU)Arb2)fe!sNH3=c?AJ5v6>3Caof{tjXvCw!!h2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6dee58677ab1dda486feaa2d72dd789605a4d7e8 b/src/libs/libsrtp/fuzzer/corpus/6dee58677ab1dda486feaa2d72dd789605a4d7e8 new file mode 100644 index 0000000000000000000000000000000000000000..3dce7fe5da6724ae862213dc9acbb99e2a8b67aa GIT binary patch literal 109 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`{^_FaWDD1e1%c8D0Y!0*nl; dC2YkE%na3xU~vYZ1PBO#2%siLR)&K>005G#9k2iZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e22495ba490e0ee875284788badb9c14eaa0e69 b/src/libs/libsrtp/fuzzer/corpus/6e22495ba490e0ee875284788badb9c14eaa0e69 new file mode 100644 index 0000000000000000000000000000000000000000..cd2d1b1cefd935a595a100a68ef7a13a0668b4a4 GIT binary patch literal 92 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M W?JNv)I2ir`wJ~S{F$ib_aWw#w<P=E& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e23c1f30efe0d956cb742e503ea7658e07cfa02 b/src/libs/libsrtp/fuzzer/corpus/6e23c1f30efe0d956cb742e503ea7658e07cfa02 new file mode 100644 index 0000000000000000000000000000000000000000..de63aa8898f3cdca2c92daf1c59488387927cadd GIT binary patch literal 1044 zcmd5*F>b;z6n#HLBH2*Wr2|TZKnxYAQ<wG%RgaK~fq@Rdga;;+rANrtL-aOPkI|{_ zvmIg@BUPmfw&M7Ie}6y!_gqY|Sr-77^JKQ=pG|B12q*=Jb3m=cee{`tC)~T03DOj0 zjKTj~F@1(XBFmZ1<}STQGHM{@xN?iZI1W6gJER*xkOK%&kEz=clO`g~VI!b3#_3jZ zPDgcYXDj)k>3RGOIz-+q<*|6^?fap*UmY~82q;FvF6e&H_^dUfZYUVFC&Y;5i(Kji z=vz_wOo)(!)!e=4j#}&mhu4R=f5C0nQC0#xs4~_aYReo;jrz-;HSF6Tun8LMkq7^$ fS^YB2Gk9l7LKy}$9T6&Nay(lKZJJBVqnUmKEEkn9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e38f2a1804a36b5667b60f6a1731aed2549873f b/src/libs/libsrtp/fuzzer/corpus/6e38f2a1804a36b5667b60f6a1731aed2549873f new file mode 100644 index 0000000000000000000000000000000000000000..737ff94e3f60bffe958208a27e46fe63831955da GIT binary patch literal 1126 zcmb_bO-oxr6g^`jKDv@-qZT28#7&V3y3tL9x=^tHK%Ooh7$_3*s<aOJTm-XrAGbn& zfI;wY_yf8t`2$w)V?1Zxn5twE#FM=H?%X-=&fIfnFa->Os8^$_Ob+0jTgQ>L=$v(g znkN8$&@toweb$MRobTx%osKXHo0j<)#%6#!rJM)4A2#W<KGBp=Yy#6Qx&=i18I1hl zgma9nwBy+w{EX=i0B$?Uocq7h!kbnKY0&=t#RfqDdWK5qjWs@YUHkL+EL#s!6<9k< zC@~aE0Aj=^JYpnpqz^ej67OyKFc4*E7U@U(l1`HY<n*k(MX>!68dHzc9pAEw$dg+3 zm--v}#gAVMRN~DG*mzIDo)E!ZKKvG7@Zc&F3IpY9q@gyL^Go*7XnXI06X!m5yOvm# zv1z`d?4aqr!200$nkF;Y2flNM2dZS(rY+wT>Yh|1<o(bIg+HNBqLnxft#`{yniakV zZEc!y^juPM;;=zepL?eJcJia9dlhi;<mg>dPTd-hg6xBHxB1b7-SFp-LhEmBg}i)_ z^ZVIDARXhxmPbEEFE-rsUORamz+X+gy13?)ch?{5-oCNg<{e`2{$Ha3+fX?ckAh2L A&Hw-a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e39726dcdcfe6bb695fd902a5028f4fb8a6fb9a b/src/libs/libsrtp/fuzzer/corpus/6e39726dcdcfe6bb695fd902a5028f4fb8a6fb9a new file mode 100644 index 0000000000000000000000000000000000000000..de69be7810e83ced9cb05dfbd656954a27c345c9 GIT binary patch literal 280 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zq( ziDCavhB~kwkPwie2BJ~Ge$p(P3$|(}h{UiA=t7_s#wlO`w8R03ZNZimgGq+}U{K$} g!0-_TZ2b5Y%KrdV2xJ0D&y^58KyqcJ4k$1f0daj-8vp<R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e42d7365c2f21d5bc4eb1f73135670519597f20 b/src/libs/libsrtp/fuzzer/corpus/6e42d7365c2f21d5bc4eb1f73135670519597f20 new file mode 100644 index 0000000000000000000000000000000000000000..e8e92fc3af10b2e7ec81b3a1a5c281dedb09ee04 GIT binary patch literal 671 zcmZ3^$N&biMVTC_^$_-dM{5X!fx(D@L6!liq`DX+hp7gS6i~e(CxZh}dkIjl9;RNP z0_N`o%!e2PbHf}VAfJI@4wz(MK)91gb6}3a;t`;cL>fZSF-FEjc?#wj>>*=FDCB_- lCOvpNFrye~2tgka88R>*AqOuL@c^FcK-O`jGPD4_2ml5VTWSCR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e5e3e737a9fb09147a771b5290bfd8cd1f76aa3 b/src/libs/libsrtp/fuzzer/corpus/6e5e3e737a9fb09147a771b5290bfd8cd1f76aa3 new file mode 100644 index 0000000000000000000000000000000000000000..a63e27d29886ee796a73e670ed3f06d363ac5223 GIT binary patch literal 255 zcma$54*~2&nH;J03}65h@nvABu4ZIl;9+0@lBw~DWe_O_29A1$c3~igqly8j4k*ds zzyg;`1+o|!*cu8r8R}#~IvE(|FtkHRVFp$XkN`v5Hz4s}0K_Dqh99H`1WMw8L}zLy s#Bx?l%SC|>f;<0Tu`EO2ONN)#AW#f+g*8Jp!*d`23&4%3t}JE*08IiqHUIzs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e5fa073de61a515f4fdd0117c509fc1ba8edab3 b/src/libs/libsrtp/fuzzer/corpus/6e5fa073de61a515f4fdd0117c509fc1ba8edab3 new file mode 100644 index 0000000000000000000000000000000000000000..4844e6cf2030a2fc892c223e7c3404073b762d57 GIT binary patch literal 105 zcmY$>%VUs?XK-*R%H&9`X8;48|Nng%7^<ro7#JB8z#`SfY7EuIf<Q5Kh!O?^28Nel rCMN@fC`0iaUIt?ZhMd&A_~Zkn#i{XSiKRKI@fAh+X_+}3Aa&IMN~ada literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6e89c0bd2c624eaf3aa5669c2660ecaa499be4ac b/src/libs/libsrtp/fuzzer/corpus/6e89c0bd2c624eaf3aa5669c2660ecaa499be4ac new file mode 100644 index 0000000000000000000000000000000000000000..1bdc9a2d50d57d60a1f8f27ad56cca8f29dbed8e GIT binary patch literal 69 zcmbRE-=6E`%W4J?_<r|47~J0n;xP#TiA*5YV_*OZ`!X<8uLG)M1hO=$AsT>^txx|q GRs#Un2pIVQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6ebb0862deb584ba9219dbdfdc4b4d74109843dd b/src/libs/libsrtp/fuzzer/corpus/6ebb0862deb584ba9219dbdfdc4b4d74109843dd new file mode 100644 index 0000000000000000000000000000000000000000..0a83f61612e847db9c23ac49d036f85b35d6483e GIT binary patch literal 816 zcmb_aO-sW-5PkW8Zb3oqtx#y8c#v2{JqRKw^x#3ke-L6>Y#^1A5QQw5i?tN`3nahN zLk|kBv)N5=Vh{(iJ3I4s-sH^=Ea2P+5QmKCw3EpX2yr9Hqa?Wh7(^-er{hU5>L%l0 zf7%2(a2O>E%=Ox$O$G3}q9wPmhr{wZonnNX<(MmsvI>%sZy8X`Lk5Fk8Kjg~z~V(p z)q=8K^4Zo{dkY>gTS`YHCflQ!HsZSfnaf~)=MryguA`-JW(lcLaS@eW^4mL9uZxzF zpb<|Pnl9;L4GzRpv58Y4;t&2P4bq4c;#MTv5bw~R?gY(-x<RqyLKQ<<tYEM@<P(dw zjmo)vz8-3`@Fg$WI=;I?B2<58bf)f%mSsiVUcaD>OEX#j#sBN%)zZoRvrc!VPA4^W cGBOS8>6Do<8lB8@q9>+CtmfMXJb}W-H(G{_f&c&j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6ebb3b2e935646d3e2f02eec8f13219db747732d b/src/libs/libsrtp/fuzzer/corpus/6ebb3b2e935646d3e2f02eec8f13219db747732d new file mode 100644 index 0000000000000000000000000000000000000000..8661ab79d15240f23583e32f5926c207f45e5cf2 GIT binary patch literal 69 scmdl#@jutgm(>hlAk_e&8LEpJ8LEMTj6nV>7y!wEC7_ZJwLn$X0G1CB>i_@% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6edde592b588d9013667a98ca56af9cd19af386b b/src/libs/libsrtp/fuzzer/corpus/6edde592b588d9013667a98ca56af9cd19af386b new file mode 100644 index 0000000000000000000000000000000000000000..23d9de25043a79e5b14b78554b17dde6e9c7cbea GIT binary patch literal 298 zcma#o%VVgCXK-LB%H&8@V*rEy|Nr|kFjQ9qIqYD8#GKO9_)DA&9I_0I`+*{J7}|w_ z6bDGM?HiEzF9c$OKuJ81=uFMzsE4YlVgMS)2$Es}5g@>kQqRD^2VpY+ZDC|kU|_HY z+87UX49Eb+qSXJwnGgjC$1uWN1vE_nBw1a|2*wbF49mfW0HuKL3RGZlWcZgS4wWKI g8MODz0eQl)6i8GvN-|^`0U5IS_CQh$=t71H0OQatY5)KL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6ee0ea0911fe6ce73316255b0b5b2bb3bd103e6c b/src/libs/libsrtp/fuzzer/corpus/6ee0ea0911fe6ce73316255b0b5b2bb3bd103e6c new file mode 100644 index 0000000000000000000000000000000000000000..ac75d5b76a307e3fb6deafd669faef63d5f12e30 GIT binary patch literal 548 zcma)&F$%&!5Jmq&z{E<l6v56S*jNc7SPMBr8dIdrYPE%>2sZW>p1~reUPZ9V1+;UV zSp}0|)CpuV%l`l01UialA%H>bMoaEoL=@n(rFxbb9`7{aw*!|Sh1!`11q?-$lthj( zNWWA+6>Xc92m@fw9&QrF$OnTx_)=Fc!Dxl`M)6sXCtr?6Xh;J(@ZgQPF^$o?rkpi! zycY6pB4K~wr4D2h3)C+c^>$epZLQE+0Xspl;Ulq^XwQDwE~00!LRnUU0s*1@ClvYX Wzm_j=pW_zNGQ^+kH%u#weCGixxrb)} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6f15d9f4f8330bee8bc89e4b45c8645fe94dc02a b/src/libs/libsrtp/fuzzer/corpus/6f15d9f4f8330bee8bc89e4b45c8645fe94dc02a new file mode 100644 index 0000000000000000000000000000000000000000..0f8c44255d145ca3c0a01b498729c9e41b263b19 GIT binary patch literal 64 ncmXT^|NlQ%I|CYEZf9Vu{?E=(-BRtif1fT~7D*T^z9ka?>+BFe literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6f162cea130c89a0059ee343501343de3d01855a b/src/libs/libsrtp/fuzzer/corpus/6f162cea130c89a0059ee343501343de3d01855a new file mode 100644 index 0000000000000000000000000000000000000000..81e6ab946e88d36600e0e41afc80fc02700d747b GIT binary patch literal 74 zcmbREe?QmDm(>hl-~gc*yr48gLUqH*X$%aR@j!v<VnzrCDXwN{XJD*mh-YH`|G!i# JHST}ue*l176FvX{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6f2d29720f689464424daee284b20b078c2c2948 b/src/libs/libsrtp/fuzzer/corpus/6f2d29720f689464424daee284b20b078c2c2948 new file mode 100644 index 0000000000000000000000000000000000000000..86ed14d0e097f0c310f6747352c47764d2eb86bb GIT binary patch literal 197 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nm!%u=xM`GB8wE1Eu8|m;^v#ttD*C)x}V028PAf z5QU6jNuXM7Mxc6ih#&)05@?=3gDe9`6XSndR0Dx>Adv9?fBpaabu}P1)Ntni3@@SP Uz$l<?uYqg<hE_Jl5+r8;0CLqTQUCw| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6f72524ca639aa946a6fbf266661c60fa9a12a12 b/src/libs/libsrtp/fuzzer/corpus/6f72524ca639aa946a6fbf266661c60fa9a12a12 new file mode 100644 index 0000000000000000000000000000000000000000..5220b57b57e5fdd6066e40be4afdda44535e632a GIT binary patch literal 106 zcma#o%VQ{sXJh~YrhG8P@c;jRUj~NiY6b>~IFMb;2*K6r5G4%OP?~|0fk76euDW=R U5KL?iLpzWOB!z(#2Sl_Q0CBPoR{#J2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6f99aed6a2d7debe2cf490f4cea897b250a57398 b/src/libs/libsrtp/fuzzer/corpus/6f99aed6a2d7debe2cf490f4cea897b250a57398 new file mode 100644 index 0000000000000000000000000000000000000000..62b77311327312ccd28be958f3f8f596c1238c40 GIT binary patch literal 140 zcmdl#@jutgm(>gm4FCQ+hyf`eQ2NGD3>0Amv4MnQF(X5@!%QH!2_j~L2q1u{P+(wS sW2gqI0BYA~r~~T(=>q~apfL;#ri={`qh>aOXa!`&ATAI{m8yY70rsCFSpWb4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6f9f35de55db285af5758d2ababf322255ac4be4 b/src/libs/libsrtp/fuzzer/corpus/6f9f35de55db285af5758d2ababf322255ac4be4 new file mode 100644 index 0000000000000000000000000000000000000000..fe7c01b970b1f13d9f8ca6dd2d27274d87dc5aa0 GIT binary patch literal 2449 zcmd^BK}y3w6n&Eh+JFl&D;K3DR79kuE?lWcD0+iXBw)cxY1KuuaHZXNgzP+ox9|w1 zrx0;r{C_4*Vq#2cD-@j4WaiJGnK$#_e-pcf@wE+L*sC~q^rqtbeg|+}Kqv#;kx+lK zvBN2jR8JFzfr$=l`C_-Oz(~Z<@y(u^K0>k+LaJd~b*7%XDa$g36a*22pl#CBNsnge zVbmZ!5bY#!K!uRe_PK22IwvNNHGL~Y9aaKxN%#=rS%zH~5&Ybx|HL5;Edjpa(YiV+ z^b;u0sPPuC)!iqmx<mzyjB}cDbrmHS*T3LI?kN<Aj*JG2$OkjL0#v2ggc&3#el<{* z-9P#zw?7vmJRR%REgDwW%n3jXdE7cc&|*@Mc0~ygqw@N}ZfC+)8<<X`jTEabBBE0n zgWOY*lwL`c4l}p=t0-~8muIwzRO*vWrG5r%>Lt>tJ1!>L&@3?NqNCo6s@9K3D=$k@ z&Bf{b@*SVsL~VE`h~jI_=f>AGT%OMen6Q9?6pLg=AX_9XC;a&{j(z^T(*@G;$;hhX z*tgxw8^<2F{qA{vbkS`N3|6ZWX%;+=5I;?Nu>lXSQnECuQIhWnh!#==IAhNs@#H<F I^JqC9pBGJaF#rGn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6fa722fc9c87d3928d8ef6026b0251a22b9e755d b/src/libs/libsrtp/fuzzer/corpus/6fa722fc9c87d3928d8ef6026b0251a22b9e755d new file mode 100644 index 0000000000000000000000000000000000000000..d8f9ff6d2cad9df1fd97d8addef542b3d1ae7f89 GIT binary patch literal 136 zcmdo0-;V3$%W4J&hHw8mfg}XT6$9yNMpgy}Mg}*KP<1gQLp4wpBaq3!@Dxk}8E^y< VhjZZ!h)QHx2pdR7BWbT@000td7Rvwt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6fa7c05cb238ec372624a1626cb9d012f1639491 b/src/libs/libsrtp/fuzzer/corpus/6fa7c05cb238ec372624a1626cb9d012f1639491 new file mode 100644 index 0000000000000000000000000000000000000000..83c9533a19c1734fab7865538ffb48089c0fe6e3 GIT binary patch literal 547 zcma)3F>b;@5S+sjGAU!4NFYIjyYK*h5Ge&OAW~!rO9&ZAnrs0@B<l2j2Q4*ap5Zbt zxXj+#0z|{w-aGG&cXr0WI*+q0LU`|A0TIAi0kUy?9)LXyCH4uIxH)zN4hdk)G_A8d z-qx5ec!woE^xzH#vPh~u7!zB74$$W$pRy?*LoMMHW!S|!1uzINn&cOpz7BWAIL{UZ zH63n)@PoG&W&s6(eHva&D^#K}dtTz{Ld%aozEo9!+xN!)=Y1DZ&r0vbn1E|1sgoC@ z)z<ZVYjH)a<jOK4V?N-f5tSfP8K6hstkzQQo?kl!w<cjjV;ghr4@+u}y~*wr5OpF! F7yooHibMba literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6fb5c7b62731e01283505b7467e5e76e1f74d0fd b/src/libs/libsrtp/fuzzer/corpus/6fb5c7b62731e01283505b7467e5e76e1f74d0fd new file mode 100644 index 0000000000000000000000000000000000000000..ffd918e25ffa57e81abea61c6bf91b8c79af788f GIT binary patch literal 102 zcmezW9|V&3S99f8mBcgr`v1R(0SFj@m=lPriy0ZJt3end1{6vMVlV)SF?gl^ms9|8 XAu2&E5NHJ&$^xVn7*`j^7k2{yU!xlO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/6fb69b5f0565450159d46ee596b9ec9232a0b797 b/src/libs/libsrtp/fuzzer/corpus/6fb69b5f0565450159d46ee596b9ec9232a0b797 new file mode 100644 index 0000000000000000000000000000000000000000..a72059316f7e4cacfac3ba430560fc53440bf168 GIT binary patch literal 70 zcmbREe?QmDm(|tPy+>PGs!bS*85w|}8c0=FgIFK{WPn9s6jOn4HN*e^|3MN!EkKn3 D<FFB# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7033ed258d94c307bfbea0a744b17e170ab55770 b/src/libs/libsrtp/fuzzer/corpus/7033ed258d94c307bfbea0a744b17e170ab55770 new file mode 100644 index 0000000000000000000000000000000000000000..a73c921e990fee989acd74ea58358d0e398daae1 GIT binary patch literal 632 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zb$<`7!=IUZbh(ZR2#nxb! z08F4-n-Qo{9V!ix1adeT7-SiM#xgSgw}qMvH4rEW0tpZbm1KAcvj$27ZF>!50&PQc z22c!W*J1{+GyX%A07;;6!if;QKqiKt;Oc-3d=3YhN;QY~{QT3>^Y8y(h_g__59C~o xDDeFcv>qH6REPpppO6%Ls9M2pQ3VAs2%yCtYM4Wm*uVVG$jWdK3>X+(s{#2isO$g$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7049f5d714d906f4b91b6158edad152aeec36afb b/src/libs/libsrtp/fuzzer/corpus/7049f5d714d906f4b91b6158edad152aeec36afb new file mode 100644 index 0000000000000000000000000000000000000000..8e558c15628a4d1bc9caf82bd983a7ff54bcab0e GIT binary patch literal 3123 zcmc&$&1+m$6hCh|O=b#(&|s;GIyO3$*o=)IPzk{)i6DWXTUXB^40Iq#WnRaRUNKP` zYcUJ66vl<P@*k)>qZ@br1KlWsi{RQ6Ynkiscg}quGb0hP(8J7o_uX^vJ->6#Js)vn zQ?AA$QMc`<JEG*hUlmClW;t*iJRzkik!M79cKtDzM7C1o>jfQ6r4#Pi2pi4?wlVQh z6?sg!CK}t@KP3_e6w>Wf+FJqur2RdA;@|+%LCr_>1vFj<V5iXV-HzXB1wLMpOl-fM zNt8>ki2%Etaqc!=4VTg~G;2z^v662+<N9&~pLkB=RUzk-Lp(fC8qr#Ev)!p|!3xfO zOL<1N<r?4%wbVb+>-iYuKj(E%dCV9x6?r`d+o0&MmXwkoY&JeA3!EmU8oPuhEgDbM zcz30y>rz}P?EFY&<B<c!7$2Mp3ei&^&;s;SU0LG)@^d|12+vQ+#pf~oGFf}xtM0?d zz?g=O`!sGze_VTl4@!PD#_|3*1wEV!+5(Gk>F4!cJBD{FdY_7Z9`&5*hiBmezsY+A zddpsTQYr|e>^{|W=Hp$c7p93T`!IvNWcE(2-czgl!_%j)^H2s)l>qR^l~1k6Q<{8; z+*?fAVT6}nNl{;RXo`pj9H)vrIQYQ7&gj62@6GpTWJdfTzbk+GNuD;2cge8Jg@44m zGy*t^3V>(69Fp*dN(fd$IFG2FA0_ty<AKt@*|z?lY@3-CKA}%ZX*{I4t{8{zcB9@1 z3GaaiBf<WUVC>xAV1xyqwBo_gmM+t%rP_Fq#`^|KfRb+n!q-FYN4N9SrZMP;nhsr3 z4~f?Dp~#E(pL!7WJH-tpvU$4;*U4~YJ~OHTpWYA)zS0EW_%Sbpl2(@e-)ucH-Rw}N z!!)92Bpn4s_0+7sZeI{Nkj3I%dqHHqy%{fE*}U4l@``0ukw;Zj&8j-a;To$i;u}c} zxCE&A^>OffQn?A*|2(b01D{o3f?J{ctXN|Z@b2&Z9F)sfpFOljf{P$j;Wxhsv?f0Y zx(_(D(d~TtRqFME?%bxk2Bx@uTcYGRs!m#C;V!c1fkJ7Cke^sx3Uuki<v@|-0P977 zE6Z3Pi7vB@&i#5MT8Qrs@6aemlF8G0>na(5ZA?2HTvPVAv*TIo!eCNygOED8wx285 zfcX|j&3+e^W7T6Jn0a-)ywO^#C6`-s)&(77r5&w~p|3$Xna$;OrPEFW5__!m*^=lQ z#*xafn1v!VicEGlDpD=e1&!z2yZw_)HN1Xny;g6X_3aHrM$QcvAc@X{6=(stvw9xp zsuSwf{;DLW(pVTZ%hTg6s$Kzu_EaB7mC?Xe0DJNme59rR$PTp$J+sKOo;S3-8?>;} zd{w^x)ek=VNXi{;5II}YXuzNa;>18(<6hEcJ2Mt4TmeYaoiNZVF9)8jo92}TZG>%A z8V|RQpt)O8iY&}`c44YJFtt0!n<4&eflQuG!|iyh29R3IIfc<T@1J+-3br7#BHIA? EH<^O-JOBUy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/706e99b5200a33d92fe18770621f8affdc6a418c b/src/libs/libsrtp/fuzzer/corpus/706e99b5200a33d92fe18770621f8affdc6a418c new file mode 100644 index 0000000000000000000000000000000000000000..57609e348dc29212e044d5ddc6fc5f54c934c86e GIT binary patch literal 113 zcma#o&ts5`XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(X5DxjF-b4M^z1 s|2w*1DNY6kLm)#IsFtA`h<%FZ2r>Kv8UX?dV8C3IZ_l8?AO=<s0F2QZCIA2c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7075b3ea0b6a92bf0a84d76fbd52d526ec0b55e7 b/src/libs/libsrtp/fuzzer/corpus/7075b3ea0b6a92bf0a84d76fbd52d526ec0b55e7 new file mode 100644 index 0000000000000000000000000000000000000000..e7eac61e8b4ee311ebf9a28f11e5c2e708593580 GIT binary patch literal 75 zcmWgqzn|;n%W4J)@CQ==AwYnE8OTY_FDlRn$}&O~R2MTcfH6b08B~aY!JB~rsH7SI DWoZ&D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/70a772af87ee494dc824e44162f95f5f83113e1a b/src/libs/libsrtp/fuzzer/corpus/70a772af87ee494dc824e44162f95f5f83113e1a new file mode 100644 index 0000000000000000000000000000000000000000..65711cd35f55c7db2079f30b676ece936bd3a4e1 GIT binary patch literal 73 zcmZ?tU|<knU|^7_{{R0!kOl#-Y9Mf_mSb>WV9@gd3vn`Bx~Qk8rvb!B04OC|eXd#% Hs5}z@On4BR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/70ace6ab4c748bac8cd6f0d153ebb8dabeb24d20 b/src/libs/libsrtp/fuzzer/corpus/70ace6ab4c748bac8cd6f0d153ebb8dabeb24d20 new file mode 100644 index 0000000000000000000000000000000000000000..a6602fc58c8c17e54c5cd8284b14198ab5157a96 GIT binary patch literal 69 vcmbRE-=6E`%W4J?_^-^+0HR=kK>;Yv2$BI&)x|&zQ3&J%8P;I38Yl<=Uw0Ga literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/70b2ad450966a79ee222fafce5d7608f72672bf2 b/src/libs/libsrtp/fuzzer/corpus/70b2ad450966a79ee222fafce5d7608f72672bf2 new file mode 100644 index 0000000000000000000000000000000000000000..d62cdf3b58da9439375689fbe6a5e4a942411a03 GIT binary patch literal 106 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2WME3>0Amv4KQ&F(X6uOf&$KSAfWaG^1$q0%?w} JW&o;#A^_rw9R2_R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/70b68da82d72f9d9f56c8f563ea751bbc7a08713 b/src/libs/libsrtp/fuzzer/corpus/70b68da82d72f9d9f56c8f563ea751bbc7a08713 new file mode 100644 index 0000000000000000000000000000000000000000..0f89b56f21700040ec73cbece7a95babd1e6387c GIT binary patch literal 108 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRa1%YDf5G4!-3=A*9 rOil&{S)e+g^c-FWV+Mwt)V%oQ1Es~O@nwmnIjQjlNosmv8}b<do3j?v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/70bfe0c45d94a9c0fb11584127e1c3718a215392 b/src/libs/libsrtp/fuzzer/corpus/70bfe0c45d94a9c0fb11584127e1c3718a215392 new file mode 100644 index 0000000000000000000000000000000000000000..1c2ce65aaf2f550f28f4cb4b552fc1a1ac480f56 GIT binary patch literal 69 zcmbREe?QmDm(>gikWk%lavGEiVRK~01Nqg(j1UY`T+PtVz*x=jzf>#rf9Zb!m>m<d literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/70d5c52f63225e602835946dcb386d1aa700078b b/src/libs/libsrtp/fuzzer/corpus/70d5c52f63225e602835946dcb386d1aa700078b new file mode 100644 index 0000000000000000000000000000000000000000..f4325e958b816d958a282aea4c5ed2667cd14190 GIT binary patch literal 121 zcma#o%VQ{sXJAlHO8qaK$p8lb|Nr-8sAkA!U|<9?7^15g7%nn0FbIGotE-9`8LF$* z85$TER00^R!5V-BCj)~l10zGJb@3b_AosrlgK#?o!yE<&1{MYmAOz}H0Ez$C_%Hnb IKZ9#E071SP)&Kwi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/710b4648ba54b121f44898006b76b69bd8b66cbd b/src/libs/libsrtp/fuzzer/corpus/710b4648ba54b121f44898006b76b69bd8b66cbd new file mode 100644 index 0000000000000000000000000000000000000000..1b6841b87af3896260af6a2ce9ba283b51d21ffb GIT binary patch literal 108 zcma#m%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^P&`M7 ZAsnodVGct(kO3rxffNT0F>Q!=H2~uW6AS<V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7124f8dec00a51babc1db2595c27e2bf098c02f4 b/src/libs/libsrtp/fuzzer/corpus/7124f8dec00a51babc1db2595c27e2bf098c02f4 new file mode 100644 index 0000000000000000000000000000000000000000..fd14b9e6075b294d0e59c558a5967fbc71ffaba7 GIT binary patch literal 103 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+Yj{j~YXDF-S}u%x7S*1kx`- jY)%FSS%&O6LJY<X3^}QJ@yYplISdR;5M^NMCr}>%2)z<9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/712e306cce235fd7c07acc4f9542e3e8d176b4f0 b/src/libs/libsrtp/fuzzer/corpus/712e306cce235fd7c07acc4f9542e3e8d176b4f0 new file mode 100644 index 0000000000000000000000000000000000000000..d1e101b3a918954b8436e15f79b75f3741559dae GIT binary patch literal 338 zcmZQjWPpI8OpYt{5a$2?|9u%6s;e2cE!zeH1xyfeFlQU1B$!^dje&uYK^P=cUCaog z_7|5VmMD|}SwOQ=A!dP%VgMQiRI30|1XQdB)=*uo4(2m3m@qKBWJmyUI5q(ZP6mc; zw%c^U#`A$hfuNe<cYO<l$-v;bGF~r_p=2SD54Pz4e}<KnFvBdd8%CVhARYwzns~1% QfL#Uh6wuYx#exhB0MZv(od5s; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/717743fb883b330706bbea0e9a49afbe3dc907aa b/src/libs/libsrtp/fuzzer/corpus/717743fb883b330706bbea0e9a49afbe3dc907aa new file mode 100644 index 0000000000000000000000000000000000000000..b16b3ddda47835914760b45aa683cc9fa5787f58 GIT binary patch literal 133 zcma$34*`rtnH;J03}Ep8e@1FfL3K65HZa%^q0mU(Z48VI4ALMC)x|&-h^|%#(+mvO iP?~`gA|nJ+%OKp&z%YkFfMMUa?+n5WGEg-v4AlU&1}U!q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/717c5019bfa5d9d92e954c407084ee36a07f1d48 b/src/libs/libsrtp/fuzzer/corpus/717c5019bfa5d9d92e954c407084ee36a07f1d48 new file mode 100644 index 0000000000000000000000000000000000000000..499ab73ffc104ca84d3ef88beab64a80535613d3 GIT binary patch literal 180 zcmaKmF$%&^5Jcav+*k?L7HKTSD|i5};79NmfgnM#F+!}8OL$JPk<I+ryT#0~3^Nlq zXC4u_RF>9aoxAU$Z6#;Z<5=HPYzk~efTt8$E%>|`<Pa`Jmd*WJ(7{&p3sQEftjiwf aj=8ggf0?Q_6~P?Js|WvT4u?}xS-?hJU?y?^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/719f9b36bafc225926b18d5b31ea111c0d20571e b/src/libs/libsrtp/fuzzer/corpus/719f9b36bafc225926b18d5b31ea111c0d20571e new file mode 100644 index 0000000000000000000000000000000000000000..d766e8039ba384a7f9f529039ccc83d2ddf7e03d GIT binary patch literal 2975 zcmds3u};G<5Ir*>%qK9hF(4s+fQ11hexZY>4iOSU1ST*1LH>@NF)L!OdpXy!Q^z&u zBn-7G$E|bk-aX&>Dhv%_00dkBjc)@rF0`o5Ugc8b#QJI<aI|e(=mvVOcaIhjdDjB8 z?&1NQ3xShnA@Af%c7qWXp-P5<^?)IsCP{=$S;(QGL$_k$ydqUmSo)}&7kGc$%abc- zG|Mw&!wQ4E|Li#A69r@2*kUjTVk5ZgSdCvCohGA#OxNMdLwG&z%L~VYd`>Ap%gTdI z!OEYI*I=Gi$UB1=CtmVmAygR~WISL>#id-LCoALsP|d`9knx#FSli(lur=#FEtES? z*iw2Q!$rt@xD$P2gf(aGI36KW1{EnoLkAXLd`H*@ii(1Cfaz^uE*y7aqtE5qNy&{h zO40pzpd_qRG)HasT-`ovt?RYYl>)JA>`l{{O8}#)j}HIe|EMId6C|^DZ%bmh1z-Xz A!vFvP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/71cd1c25e8b6affaf2286d31730f641b4d1203d8 b/src/libs/libsrtp/fuzzer/corpus/71cd1c25e8b6affaf2286d31730f641b4d1203d8 new file mode 100644 index 0000000000000000000000000000000000000000..05e7aa35e95ca691cb54c6d833aa39ad7e0daf7b GIT binary patch literal 48 ocmXTEP|d(Fhk=2KfuXt@gc#;<FaSX{g8~CHBSZiu3*=P-0P>Rwg#Z8m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/71ec5ab0e76d1b30deeefd5304b3733a4597ebe7 b/src/libs/libsrtp/fuzzer/corpus/71ec5ab0e76d1b30deeefd5304b3733a4597ebe7 new file mode 100644 index 0000000000000000000000000000000000000000..b8adae35a1e9f81ec6008be31816a277d3475039 GIT binary patch literal 1577 zcmd5+J5Izf5Pc4jNIFC+id9yK6+&nu3M$|VD~^zAi!Gp7sIUYTq~QqZI0UERa||Q| zW+ryx#MxaoN&#c#<B2nRe(#Ob1UJ_yfcY$#-qDjnDK!D41cXjNUI~3sju)KcRDT&G z43YWR?H_4!2}UC3Qx(m0d5dIJL5i`XKeq1stxTUp3xcRY@V2P5yJB3e2xAm0V0Q8a z<q*^dS^Hn7cztTM{0%;YcrIl3g#*7~38&0nPH=n#Gz2!^Y4TxwBM-?mvJ{04^G$lH z02ma;s@M|n5Q7-Ke^eXtqA;D_!e4pfmB20vtN4Ry5QmKpp1AGgiIYWeR^>Wy&1Ig> z{J}OohhCHcBx=sHW0)CBJRwc+wr;B@brah6E{bXu4ChNR9yKtchVLKPm{2dFwh5c5 srLi*BVYE24M=H-SL<EqARev6o{b^4GK1yFc8KX6JdGeRW=Emmu0ovx`rT_o{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/720990112fdf8cd26c132d3aace3e5653f0c4756 b/src/libs/libsrtp/fuzzer/corpus/720990112fdf8cd26c132d3aace3e5653f0c4756 new file mode 100644 index 0000000000000000000000000000000000000000..5f7d51475c71c30998c332942406092b8a1ec85b GIT binary patch literal 207 zcmdnb00GPl-~KyDLD&im48=fJH6xH<WN-%wRu?leR9DM@nIJ)iXrLGp0*XMmXF=4@ zDj*>MQiiPNDM&Y%sD_GTQ^260z`$U@z}WjAsCqw0`M>|)<v}iD1R4f25yXN3-~azP OfTGp^8TT`&GXMbfA0wv# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/721fd414791e3f0e8509752ce857e5743e11016d b/src/libs/libsrtp/fuzzer/corpus/721fd414791e3f0e8509752ce857e5743e11016d new file mode 100644 index 0000000000000000000000000000000000000000..69973d2ff7e13782f612ac31d9b149fd4d994728 GIT binary patch literal 74 wcmdnr|DWsS%W4KNkZNFHaAaUm0CTE~85yd95{zIT0|S^36@v%?B@w6^06Q-YJOBUy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/724d34b3d32e78744b9757c8e7282e26389ddd4e b/src/libs/libsrtp/fuzzer/corpus/724d34b3d32e78744b9757c8e7282e26389ddd4e new file mode 100644 index 0000000000000000000000000000000000000000..d7732978f53fe24a19358a76c0e06e80dad84ea2 GIT binary patch literal 551 zcma)2!Ab)$6r5}Yv!I~vO(=9P9;E6)Zz3po@FMsJ%TfYe*h<;33JtgywFrKJ<a7KY z4?QRtC(ZUysNz8KUM7<_FRu~6Sq7jgq-q!m_X%UJ9W!1+Wp{a5t86?R<%6Cc<_F^# z=%OQeX)z6Z!r%!!&$u-L`wad$QK3+>!PIL!7Lo~b(TXZnNVFO`fphK(czJZbi#byL z^%k_z7W%-`tLqruI;7+Xa?uWB56Nn;c_sYn)mB5Q%^zO0ik7_m2vChA;x*1i93Gi_ zyNP3<RJYln&g)W9aAWi~%m=~>ogiNKFUXx(-#C!4n3WJ+=5z_zSR@w@mn{Uo-T7|d c_h!(>kMfjfcK46}t)6A{z6?K)zJZPK1J)gGwg3PC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7256851ae102c901118178247d0608dd2bede61c b/src/libs/libsrtp/fuzzer/corpus/7256851ae102c901118178247d0608dd2bede61c new file mode 100644 index 0000000000000000000000000000000000000000..a2ff598e25b02d4c478a68786ebed93d0790950b GIT binary patch literal 109 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxPKo%pE!N|Z62$T_oO7nwg2FBv*>S9Kq kLUk~gfx#L`3xKo(X-**ZpMjB~w4!*9kOG4(1A}Wd0KfhlhX4Qo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7258166ffb827db0f294ad3f169a72c23f2195b7 b/src/libs/libsrtp/fuzzer/corpus/7258166ffb827db0f294ad3f169a72c23f2195b7 new file mode 100644 index 0000000000000000000000000000000000000000..4f69520e1fec87bd87aa2cb6c512037ae34474d8 GIT binary patch literal 101 zcmdl#;Xl{Qm(>gm4F4EUGBPj#S%yGPF(X6uG$73Y5(066;&55G8lVVRAtOi+Q1mHS NCtOq=tc`);KLBP<6M_H$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/725f1f53fb6c5be7ab5815edc4ad728801c8f9af b/src/libs/libsrtp/fuzzer/corpus/725f1f53fb6c5be7ab5815edc4ad728801c8f9af new file mode 100644 index 0000000000000000000000000000000000000000..1167c28ca26b2cb4941730253c39b7c1fee5cc81 GIT binary patch literal 108 zcma#o%VQ{Eh-Y9Z%H&9`X8?o$|Nr|kFjQAFFfao7sqtlrIi;!b1)K~FvLKNLIE#T{ k4nsRo36K;9QXC8nK&}7(GcdG$12P%D&4EY&#X+DN0AZ>b=Kufz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/72a41f35244bd47df22cff8cb97d7a0c1cbb0c83 b/src/libs/libsrtp/fuzzer/corpus/72a41f35244bd47df22cff8cb97d7a0c1cbb0c83 new file mode 100644 index 0000000000000000000000000000000000000000..19c74d4b2c1bc6f8b8bdd4ad31555f61de65ed7b GIT binary patch literal 102 zcmdOk&l8Z0XJB9`%H&9`2hu?B|Nnnq28QZth6YAP1_sG^9*`_obulAQOdX<x!5T~p kFfece85IU|gcwSTQ{&4Lb4pX=3mO>aa4;}IRaOCM05-G}WB>pF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/72baa8a47cb281f053c39fb483d4af8f45b48ee1 b/src/libs/libsrtp/fuzzer/corpus/72baa8a47cb281f053c39fb483d4af8f45b48ee1 new file mode 100644 index 0000000000000000000000000000000000000000..11a5df640f7705956946f56cf85dae899a75af4f GIT binary patch literal 174 zcma#o)y>O~XJB9`%H&9`2hu?B|Nnnq28QZt28MXOJcb&WtQxv3gwK$eQ<_>J%fY}I z&%nsQ&{@FAz#t1`IWqj1!_W>?10;nRjxlh6l(&5Y5+G}GQ;X75<CF9AN{aGx;?r_6 XQ-v9rfNFqtJ2KwF0RK&Zpqc>yzTq|s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/72c83d7c35ffb01b9daa045a9a5b5b76bd80657b b/src/libs/libsrtp/fuzzer/corpus/72c83d7c35ffb01b9daa045a9a5b5b76bd80657b new file mode 100644 index 0000000000000000000000000000000000000000..4a9a7c4d9709169bf4f483761e3ab64cfd55c06f GIT binary patch literal 122 zcma#wmd8*M&%nS?l*y4=52S(M|NsBK3=CD(3=E7wUTS<<B3Kv?QEj3IRLl0Cxw;sn f1q>EjgDC;VczZBIxSfGPWe$+Z!oa~Wb0z}-(8v($ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/72e12abdb30b4051d58c2336d12455da88bc74bf b/src/libs/libsrtp/fuzzer/corpus/72e12abdb30b4051d58c2336d12455da88bc74bf new file mode 100644 index 0000000000000000000000000000000000000000..313b75921e58846c0ac53f55b8a0b35b3c8516a1 GIT binary patch literal 1011 zcmb_bu}T9$5PhfMZM2D`3n;1Vygv{wm6eU{6^F$YfgobAFe}7HZTtj(!`ff5u}FJ` z2m#kOGj~xrqY*OP%?z_|XNUK8^W+p)Ie_zlEA|*^A%r8qd#14#`ooJNKWoA5AOfzL zJtf$jP6hG$o_4XNFzk*PJt2f0O39BR?ZXnW^qD5i9~CHP%o=Mf^0Pgb)4w!|&8B~D z{5pYvZMs?AI@83u(64d=Yj<e}RLlXwXB%%1xFcEg9R?@F-EPxOB&+41LdC#M6cfg9 zA)pVO3=Kn}O101hQmu&?t`{MG#<4VE@qo&P&{1!0j$BeU;bxVjrJ^)H{&P8vs!Z#P z1zWuG{i0ca&aD0Df4N9C_7hy;8F-$mx9<^Gj4Fj>bAw4)60p`5K5y>Bx?Fr(P4c+; S43htwjkn|!3jX1J!G8c5cFivU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/72f6619412fb7889db222ac3afccf525864b5755 b/src/libs/libsrtp/fuzzer/corpus/72f6619412fb7889db222ac3afccf525864b5755 new file mode 100644 index 0000000000000000000000000000000000000000..a699ccb179065903fea02fa4f99f23cbd7cd5157 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Ll!8))&OKN yfLK5<hoK!p3Iiz)kVxA%paBd*ASMWu#IrFlbf#u<)HAe$)l@;mfh14@1pokY&=r~h literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/72f69427262628bc7b55884ca42782885ce749bc b/src/libs/libsrtp/fuzzer/corpus/72f69427262628bc7b55884ca42782885ce749bc new file mode 100644 index 0000000000000000000000000000000000000000..531fb31216ce27ad87637c5e401c99c3d7793e43 GIT binary patch literal 109 zcma#o%VQ{sXJB9`%H()j52S(M|NsBKc?_*U9wS76p}Lrnp;`-wtJR?*)=-*(lYv1N Zq^_cPju2Q(xSfGv4v3||0aF8|s{vMC4_N>J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7300d5491974cf7008bb306f6ce0f28294c3f4ad b/src/libs/libsrtp/fuzzer/corpus/7300d5491974cf7008bb306f6ce0f28294c3f4ad new file mode 100644 index 0000000000000000000000000000000000000000..9981c15d41c0a7059e5e887c3257a1829ccbf5e4 GIT binary patch literal 151 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO hsNIyI4y*?x#0DZDKn-Xd0|P#LG=U0{EUNy;006gECprKC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7309d83b1f178d7ac52771891d0f87921cd2f282 b/src/libs/libsrtp/fuzzer/corpus/7309d83b1f178d7ac52771891d0f87921cd2f282 new file mode 100644 index 0000000000000000000000000000000000000000..f4fb1bfecdb08df735f4f75f1385500702699770 GIT binary patch literal 119 zcma#o%VQ{sXJBARO4St31kyn8|Nnnq28QZv1_nkjqnd%?A|nHX07$O7m=TP@(hLmN noFG9U0MfDyj0~mL#dCy!Tm=RO4iEt{3j~DOm_ZcOJlARf?o1u* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/734c48b7b6f5c2e412aa8036c6bccd849c76dfca b/src/libs/libsrtp/fuzzer/corpus/734c48b7b6f5c2e412aa8036c6bccd849c76dfca new file mode 100644 index 0000000000000000000000000000000000000000..7d538307ccac8be61b31822eac2b4b3a03842460 GIT binary patch literal 172 zcmXwzF$%&!5JjJgI@<}>f;N`o5%d6_VNJ0`AcQ4iV+7NA33E9Qp@PLY+29nz{Nc@G z{HEmUp~{i4CY6?YU{}``rfHEC=iuX4-%ke6L<b9-W_%vpjj%pvjCAn!HG*3@L)Ao< lgg{;yqg)VG_7i%iLpsy4aq;i$DHWsI7KR+NVs%pc;0L_PDi;6% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7350c3788104634e2be77eaf02556badd86f13de b/src/libs/libsrtp/fuzzer/corpus/7350c3788104634e2be77eaf02556badd86f13de new file mode 100644 index 0000000000000000000000000000000000000000..d330d9a1ed1694dab9c6baddb2abfb95fcee7c30 GIT binary patch literal 99 zcmdn5$H4XSWi<l>!?%A9QXJes1`x;<1Bq%z28ISk26vD^bulADHBc2$=r@>*28w}E UC5-VD%m6BYC=&!}1A^*j0JX0WYybcN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/735add7f4b427ce83da42ae0b564095f4cea3dce b/src/libs/libsrtp/fuzzer/corpus/735add7f4b427ce83da42ae0b564095f4cea3dce new file mode 100644 index 0000000000000000000000000000000000000000..0660ba92fe5bdc8c8dfce8395e234a5b6508c819 GIT binary patch literal 775 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgba{v8zkOGS{D1Bon28u9(ctE1M zn318{VJ4G0i2q+W6GSmE+CcO(RD)Ck4FVzv8!Qdg1=0yJ8w{*r3|4jqS+K!obA-TR z!tD$U1{w^EvOpdaOcj`RtaE_^MkEKSfgGp|b)c6EP$eS+SXpUxG1$oO|KC(FFw9{P zVA%KVI|GL?&=<lCGAJf1fSe0-AI#g;9B``}7#hIJIgvB~l?y_-;7~$Q4m1kr0-zEg zki-b(c&$93cu71)*fab90Z34oAO*!74s1aIHXTF^nlOR82+mLdhY~Cb8-U^@1dJls Y7;vg2F=X(B2qdLd7|v<!`9JeN0DDb{y#N3J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/735b475e744643a1e493e9a89ac3a6c41e8e05a6 b/src/libs/libsrtp/fuzzer/corpus/735b475e744643a1e493e9a89ac3a6c41e8e05a6 new file mode 100644 index 0000000000000000000000000000000000000000..b8a632e587b1f57d2dfaa3994537a6929db2c154 GIT binary patch literal 458 zcmb_Yv1$TA5PfTPiiPB=69uubv`mxc0$T<AhArd@A&7XfTJY>r2Vx=Irv#&gAL9?4 zh2ZAR-ig}h!S1kcXWq;kbO0Eh`6Ng(M#4Ea!ta-B9FLaIi;E*tXP{pw*mzT6jQwzm z4<q>=%w3hmuq;%fMc9;8azxDIC4cfU`~>m<s>@fc{HpHPr6zuMS}W<_F6lvm^eU|0 zG)V=?(+d~d^j;J#Y>N|uXM7`sc)X#<kz}5mF2^QEF@6zQIvAQMBEJ^T(3L5@R*SM& rDf)}%m^4kpyIa36lElpFK$l7vZX|QaL5p&S41s7J1pm_Tu^;{bzc6n> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7377effcd188d737f5235d4693db795b9d153167 b/src/libs/libsrtp/fuzzer/corpus/7377effcd188d737f5235d4693db795b9d153167 new file mode 100644 index 0000000000000000000000000000000000000000..53149afeec089a50844c35112d749f4591b4a6d4 GIT binary patch literal 800 zcma$3|Np-~1LFq9qSQ=|dIm563i&cHR#!7J{Nw%u7TE^@5NW*R|9>FqhGH2ZhH!|& zISj{vj5!SL!VDZh2nP+tbCA@ugOniD{0FLMVEF$Ztoj_7B+eYdc7@>sU~7>aA`Epd zs$&UT0yifZ>S-E!2yT}!0~a`eQS5?vfN<db0Ywoa5~_<Cf#DB~Ob%dVB1aSneuqUk hihHOVnJ8`sCoWh5B*D!vLqMJddK%0HGKzq>8UUaMhI;@2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/737d1a08227e4ce4424999f7c884f18607a0a3a8 b/src/libs/libsrtp/fuzzer/corpus/737d1a08227e4ce4424999f7c884f18607a0a3a8 new file mode 100644 index 0000000000000000000000000000000000000000..87a3115175415287665cfd46fe5c0db94672ce32 GIT binary patch literal 140 zcmZQzU@$1DXJB9`%H&7|(LnIu(Hg>FVBln65C*b2AbcQC_WwQ*n+Yaf#|V*<Wq^r8 Y_z<!ks5uH7fSDMtmj|??Bpz%%0C2Pu2><{9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7399da9b1d75f2d484579109e92912ad332539c2 b/src/libs/libsrtp/fuzzer/corpus/7399da9b1d75f2d484579109e92912ad332539c2 new file mode 100644 index 0000000000000000000000000000000000000000..6fe33301f5fa1637b4aad571354a056ee34095e3 GIT binary patch literal 82 zcmdl#k>TY^cCPCG3=9koQa}O-6c`w)s~H#=L2MvVUCapMp9Bek`A{(iFOUcj0M%DB HFo8$_een&O literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/73b2f62c4cc2dbdef1e4fa54ac8295b898862d62 b/src/libs/libsrtp/fuzzer/corpus/73b2f62c4cc2dbdef1e4fa54ac8295b898862d62 new file mode 100644 index 0000000000000000000000000000000000000000..e3abcaa590c748304f53fe070de5380e59ee2674 GIT binary patch literal 161 zcmdnb00ZCtJH$cR&*X}MtZGIe!N}ka609y}WT>tNaTy?FGy_96j13e4p_ea#Bm>YG jDUc2zV1yep5tlIxa2Y0$2B4|`e}D}GSylamVShXT22>ik literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/73e0eea6754e70efff92e2dfee68999220a9f6ac b/src/libs/libsrtp/fuzzer/corpus/73e0eea6754e70efff92e2dfee68999220a9f6ac new file mode 100644 index 0000000000000000000000000000000000000000..b0bfb44c8c455fbd214e953eb871a5a0d485636c GIT binary patch literal 164 zcmZQ%V5lyxXJB9`%H&7|(LnIu(Hg>FU|@zazJF(sWnkn0s+}VQ7McT7(Jl;Rae#TU zKvMqyJ`kIUfdL`Tz{$WM&Hxh!D}@q3%@I+^0Bq9!iMs!}UcRgbD*DS{CB*;$%!n9B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/73fa14e72a41c83f9a884f055b91e0d573add7b5 b/src/libs/libsrtp/fuzzer/corpus/73fa14e72a41c83f9a884f055b91e0d573add7b5 new file mode 100644 index 0000000000000000000000000000000000000000..8eddc78875c9c67253bc2ad541eb86fb422b5e31 GIT binary patch literal 40 rcmXSpude54XJD*m`2C;Z@AsA#hDx1k28JyR3=AOA|LhFaEg(JsFgy*} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7400ab608ee8af900cb7263b444387d62b213722 b/src/libs/libsrtp/fuzzer/corpus/7400ab608ee8af900cb7263b444387d62b213722 new file mode 100644 index 0000000000000000000000000000000000000000..d4351dfb60df3a3d7155f92baa1682bdcee1e6d5 GIT binary patch literal 69 zcmXSpude54XV9x=_+8(^z_{ys%SwioD;bO`b*dQ{m>3{H;2((o|K~pgLk*)SR1icl Lw=+y+w66vL$te){ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/740733262b0594c2fdb0c044a2645a6a958d89d0 b/src/libs/libsrtp/fuzzer/corpus/740733262b0594c2fdb0c044a2645a6a958d89d0 new file mode 100644 index 0000000000000000000000000000000000000000..340754a815771dc13f10166c027f7f38acda2cd3 GIT binary patch literal 336 zcma#o%VQ{sXJB9`%H&9`2hu?BpBF+iFfalcsqtlrFg{3xt)YOEfk755$1sPX9ViDR zg@F_YNLkxAAn{)a!~_Ab*`2AG9Q6$UeHj?4tD%OLF)+l#jTHnN%7ieKE^a_^0>ocP mP5}CA4#Y?Os6MKPdbWz;|NsC0Kq17y!Vtjq@+Ht~3=9AyF)=~_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7408f6d49d112aee38c9fe3d7bada867c97f43c4 b/src/libs/libsrtp/fuzzer/corpus/7408f6d49d112aee38c9fe3d7bada867c97f43c4 new file mode 100644 index 0000000000000000000000000000000000000000..d20561a760c671309d52f3fb6fab008ebc6d8b3a GIT binary patch literal 168 zcmdnb$N&ax4FCQ+NI}?2-x!Ls85qDaKti#Yk)hgQCJ@{N;w%tjrWjrTR8S4puK+Tz z8mJ#=xF$m#)Gnad97hHQ)(8LJa9T1pfK~d(8vw0jFsiPuwoQ$%&iw!Xzj|>sQ}utK JV0`sI1_0{}C`<qV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7418b4823963f002f17f45004f69e28a548260c5 b/src/libs/libsrtp/fuzzer/corpus/7418b4823963f002f17f45004f69e28a548260c5 new file mode 100644 index 0000000000000000000000000000000000000000..4f314bfc67344490d3c4b12a6c9094cfc60fda23 GIT binary patch literal 69 zcmXTEaKYY$fuT6Q8Vo=bBLhQxYCVu-U=Rfn3=E9b3=B-wU?uU@mDP;ZKt8e(0J2{Y A#{d8T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/741ac6075767d7cd8a080cf54ecde55c3d287e93 b/src/libs/libsrtp/fuzzer/corpus/741ac6075767d7cd8a080cf54ecde55c3d287e93 new file mode 100644 index 0000000000000000000000000000000000000000..fa631b32239964b928d9953e10f82cffd6d3deca GIT binary patch literal 36 mcmXSpude6N)oo{BtY%<fVEoHa4FW(W5VSK?GbA(^WC8%LFbNU> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/742f841e65a01b5f484eac4a95c4b8b30814358c b/src/libs/libsrtp/fuzzer/corpus/742f841e65a01b5f484eac4a95c4b8b30814358c new file mode 100644 index 0000000000000000000000000000000000000000..b964f5892dd911e01f5388f934f0c0c2b3a7cc07 GIT binary patch literal 69 xcmbRE-=6DbYBd80{J-@d1Q;2rfqX`=5CcPXF(U&IfrP+f)zutO88?`UY5?*75CZ@J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7437a96fab759f43e25826c80da66186fdcddd3d b/src/libs/libsrtp/fuzzer/corpus/7437a96fab759f43e25826c80da66186fdcddd3d new file mode 100644 index 0000000000000000000000000000000000000000..6b5030f68d49aff4ab3f472913d41bdadcc0bae9 GIT binary patch literal 562 zcma!L00G7gj76!L9Q9xh!~g&P&6ps}KVWJf1VDuFlK=k!rG*&6A&TZO90xMyFtiIZ zZ~!43G!)N4QqvAnf>84xsGb4n2C(XLU=pV}K$n66P!&!!MB4>%9x>*~K$J4PtOhdv z{dbUp@RhzX6az&VK|CO#Sj@;!oiGy!Zh{CHfT&Oas&S|WssL-R1M4}87Z~9RCME`? z@SO8sI1^~}e_sZMYKTn&KrREwCNQp62XTQw*BVHG<Yre-{BO_oQa3*SPi%2&e0*v> T*fAhAPyqHOLkWntiGcwC;p2US literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/744542b36afbf140eb5e868bba0a56ec55a13fd3 b/src/libs/libsrtp/fuzzer/corpus/744542b36afbf140eb5e868bba0a56ec55a13fd3 new file mode 100644 index 0000000000000000000000000000000000000000..787aee67fd19adc5b638ee357c72a30cc4403221 GIT binary patch literal 132 zcma$54*~K;nH;J03}65h@nvABu4Z6hWKdvW-~>|D>I@9|a~T+zsv*jm1Q-}p<^WZ* zFmM1NBLn*bAm;~22Lpoxg8@T>Ap=7dNH2pdL-8CT24e<>oYcJd<a~7oEr$FYph*l+ Ho8zkitUV_j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/74578fad6a1e649a527682134507ac1188c4427d b/src/libs/libsrtp/fuzzer/corpus/74578fad6a1e649a527682134507ac1188c4427d new file mode 100644 index 0000000000000000000000000000000000000000..c2f591b71aec8e7a676e5a072c32abcf6ed8cd5a GIT binary patch literal 83 zcmdl#@jutgm(>gm4FCQ+NC7DjC{|zqiZFthK%%;sk)ayGuLg1jK*9_lv1t%-V=s^Z IPyrMH01`zHWdHyG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/74737f3ba6fec08624c0adab88eb827a40abdd4a b/src/libs/libsrtp/fuzzer/corpus/74737f3ba6fec08624c0adab88eb827a40abdd4a new file mode 100644 index 0000000000000000000000000000000000000000..30bc4879ae6392c0311e429bfe83a220bedf7ddd GIT binary patch literal 91 zcmYe!kFP3;uP;jFU|?X#1Y#ig|DVDCKZGgDVAux&5FUyIL@2epKK?I+$-vB}tJ`h~ F2LSB|6Yc;2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/747841eb33d25b135b6473f3d38d57da4c82b4fa b/src/libs/libsrtp/fuzzer/corpus/747841eb33d25b135b6473f3d38d57da4c82b4fa new file mode 100644 index 0000000000000000000000000000000000000000..b6bc240471b8527cbf9b98b802ccf92f6a7e8f42 GIT binary patch literal 174 zcma$54*~2&nH;J03}65hfiM_Yd>I(3s~H&>co-OfBu70%yKn-Ku3`YH0SYiUus~HZ z{7wb37#Y|a3OE_+WI?JK80IjwgGitz238J`Kxo@H1_t~80w6X_4Fj4QkQ@?d`^Ugg M63@WOzyY)q02~h@CjbBd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/748ae3bc9858646fa7ff250aae3d42c80453786d b/src/libs/libsrtp/fuzzer/corpus/748ae3bc9858646fa7ff250aae3d42c80453786d new file mode 100644 index 0000000000000000000000000000000000000000..d2f16f953d87b8cd11273fe2dec8110230cb8e2d GIT binary patch literal 53 zcmazy$gZxgE>4ZF&ioGq)zu&p2uihp!qu7a3=9lv3=GwO7z9|<{wD*~F_bbe000L~ B7^(mO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/74a4199d9a46e774a9be78a793a1796554311c26 b/src/libs/libsrtp/fuzzer/corpus/74a4199d9a46e774a9be78a793a1796554311c26 new file mode 100644 index 0000000000000000000000000000000000000000..c8090195b5fadae095a398274883c574653a523a GIT binary patch literal 97 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vv22$0GKmv%Xiy0ZJfhs^u7zt!R5QyIY6sQmg P6oC35D!|G>nyRY-_QMfv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/74b67a22359f591b61329d8783b312cc359f8aa5 b/src/libs/libsrtp/fuzzer/corpus/74b67a22359f591b61329d8783b312cc359f8aa5 new file mode 100644 index 0000000000000000000000000000000000000000..b12643460990906805363c1d2ae31c22afc605b3 GIT binary patch literal 69 ycmdl#@jutgm(>hlAO$3?L9FUxMuuvjAR|~9$nX94zXc@L`5yupfRZp&T@3)STNS<l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/74df8a5ae0458398c81f0be2a0c53d3b20df722f b/src/libs/libsrtp/fuzzer/corpus/74df8a5ae0458398c81f0be2a0c53d3b20df722f new file mode 100644 index 0000000000000000000000000000000000000000..0220d33d3dae7686be31605cb7a9e8e8ae89ce52 GIT binary patch literal 102 zcma#gEe%X8NsUiQEhx#TX8?o$R!l&;x|)H35hB1)UChW(oeSgu1saOy2sJQRLuD8^ mzx|g12{HWp&+z;Ie}>W&MutKLh8O?q7>t01tceC1Qw;$7AR93N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7504de0f47a357b3a5dbd3edd09cd792c5d84ed7 b/src/libs/libsrtp/fuzzer/corpus/7504de0f47a357b3a5dbd3edd09cd792c5d84ed7 new file mode 100644 index 0000000000000000000000000000000000000000..bdde1b9ba4c9cd2113f3edc0b732e9c1f06dacad GIT binary patch literal 153 zcma#o%VQ{sXJAlHO8qaK$p8lb|Nr-8V5rV!U|<9@su>tAGBPj-fF!Gn8Nv7t0|QXm z|K$t})<9996hs&-U9ApMsREG#F&Q`+7-WGeO0A3M2m!hO6`l*XGce3yaA06z-~d9P S=?Wn6|Nn(Srv7Jetp)(kt0e#c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7506432336562377cfed58373d1e46e6a1f6f2d4 b/src/libs/libsrtp/fuzzer/corpus/7506432336562377cfed58373d1e46e6a1f6f2d4 new file mode 100644 index 0000000000000000000000000000000000000000..fb7f6c315c946a2733ffd07ea61794caa62268ea GIT binary patch literal 69 qcmbRE-(Dj<odE(^7+9dJLM9NyfuWd@0mw>60a-AfJ(yv~Pz?aRzYsP6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/752d4ae7a84e10fc41d07919fad52db415214535 b/src/libs/libsrtp/fuzzer/corpus/752d4ae7a84e10fc41d07919fad52db415214535 new file mode 100644 index 0000000000000000000000000000000000000000..877c02deda9ec0f13e2dac84413ab90bd197771e GIT binary patch literal 106 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO qgV>x546;CVK<PO`48{x$IjMQ^$rC4b_fDAn|34E@0T)OWP#yrlvKEN| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/753513327efc6ddee8f2815b143748dc0f88b7e8 b/src/libs/libsrtp/fuzzer/corpus/753513327efc6ddee8f2815b143748dc0f88b7e8 new file mode 100644 index 0000000000000000000000000000000000000000..c2e78cb73f4912a8a08122857e5efd86bc814a0f GIT binary patch literal 917 zcmb_aF$%&!5S)uCl1{L)kU&5LA$}ll5MLmvEK+EpR$gJF*!UPbe`6=ULf75goyH_q zx{$rg-m=WhPIkp+odH<p!EMVY2N8_{tpQ~U&?{v=u1UiLsd-5dhB)|$e~)amfFM!J z8Fg|qo+!0Q`Y%Wky5_N#2eryC1rdd#BnCqe{#r%w+I)F|wAd2mK!&yhmdPDd7HAm9 zGWvf}9$vY>cj>@=gAb+7#oB$>;ow(QFy3H};t@7Uhx1et)QQ)Z2i8bz8ts-MhIz1< z6ac-#SZ}r9Ap$G9KT=E23)2}E&7N>XoF{gS_rIRF2$zO18?Pwb_&cgpKP0urskL}u GaX6l!Om;y4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/755ec363058b3d5326029c35fafb59fd13bdafcf b/src/libs/libsrtp/fuzzer/corpus/755ec363058b3d5326029c35fafb59fd13bdafcf new file mode 100644 index 0000000000000000000000000000000000000000..04263609ebcfd0ea9df1d1ec90029e3f98caecb4 GIT binary patch literal 1175 zcmZ23%3x4Z&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R0M+hV~jbRQ{3Zcl5li|Rl z|Npuh8Cbxk02L$x0Z83H5b>XZ!GM60qD+G3BisZs69|CTqPh*c7l6tffL_4kN0{Rd zBDwz|lKWwP$KrM7?{GID!tg%?z#WVhJ}E%AlNdg~3y~rR?0M{Qgm42`5lR$60|8$| zAtwRKY{8M7um%^JQ-QI88m&}FayXJS&fo&2Ent#{#~>syuq8PxxdE7Ez<^-FBPKKq zIqgwH14|+VT7;?wHN@&*t^sFKT!|ceCdKYOXo-L``0)DN&<Gr?NSO*)yfCE3mw^im LAd{n>q1^!he<IlG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/75615998f9dad6af47a16b949e0f5999afc6ec2c b/src/libs/libsrtp/fuzzer/corpus/75615998f9dad6af47a16b949e0f5999afc6ec2c new file mode 100644 index 0000000000000000000000000000000000000000..68dcfcd68d39172adf9b96d9bedadaf3c44d2c8e GIT binary patch literal 240 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0h|_3nFmn-B4HMT aZ3FU=?bJZB6yg$uEkLDUH-O9lS_J^))+l=b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/757f4aac1cb731b1db1aa933e1b8f4695a239550 b/src/libs/libsrtp/fuzzer/corpus/757f4aac1cb731b1db1aa933e1b8f4695a239550 new file mode 100644 index 0000000000000000000000000000000000000000..4e86234f4949beff923abc206ff7c86179a7eff6 GIT binary patch literal 143 zcmaz&HSv3QJOcwmQEDbfJ&*>1|NsB{GB8wEGcYg$d8zSbi8-aI1)K~FvJ8yh{)3f3 xl>t@$7Xk|u!G+Nn4aIYW7{Vcfa~Rrz3?RwNz{<b@6Z_A={`>!b?P4Im8UQpIAeaCE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/75ad40df9fb13569165c4587a686b8624f4f902e b/src/libs/libsrtp/fuzzer/corpus/75ad40df9fb13569165c4587a686b8624f4f902e new file mode 100644 index 0000000000000000000000000000000000000000..5f40e2383c8552e8663ef193a87661fa80a29aa3 GIT binary patch literal 180 zcma#I&0{EuXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^bhobqhEd z7-Sh3Ie?OL7}_DEFpvTXFtmLG67?XB5bYqkC^eI#o}nG2hJl5Fx#}B(073~HNEEDu f0j!2e;6D<W0+eg*`OjQk%*bHPz))RW&A<Tw_jW7Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/75b96fe8745b1f80dbe3a909c8b87d0780279fe5 b/src/libs/libsrtp/fuzzer/corpus/75b96fe8745b1f80dbe3a909c8b87d0780279fe5 new file mode 100644 index 0000000000000000000000000000000000000000..cb601600f2513b47c93016f14368e6aacd7cf95f GIT binary patch literal 507 zcmb7BJ!=9%5PgS7G6n>>)Phy2AXlf!RTe^i!(ws8K@jm`b1U3+lG5J);!m;m4+J6N z<jtLe*k~T?eC)oRd9&*V6D%BnStjWVJ)x=}NW5qGSZ|C!=c${vA-&fCs2HJ#0A1|Y zSdu~ej5mmp;~!GW`dU+nnIJ_rBS%p{RGZV<`aEE>n;iJOU$v*_zPbkG$;wKMLuk}x zkZ^t3DBo!&C6<&E6*f)lXf0PydaapC4G;g<d`pj&O}H-gM9ihQ)U(^{?2(DYOvg-v i5#AXL?*o~K)4lD<(}ngXXXLJ`WZ>~zawi5Hzx@xhGiv+* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/75d45b9d9d3e7a5a6002b0300ca160d2da6f465a b/src/libs/libsrtp/fuzzer/corpus/75d45b9d9d3e7a5a6002b0300ca160d2da6f465a new file mode 100644 index 0000000000000000000000000000000000000000..a000fba707323681ecd181ba4182327b8e8407c1 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kKfTS>x;s9cXwr@ZJWDrO%6cnXqa@2#>a4=MXjQ0Q;?+8;<lzA{Ur+@(f DmYf@B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76148cce4f02e4e8f1d5ced7e32e93293f22b631 b/src/libs/libsrtp/fuzzer/corpus/76148cce4f02e4e8f1d5ced7e32e93293f22b631 new file mode 100644 index 0000000000000000000000000000000000000000..e1527af303be122b7e0189a2ae4c479ca7820046 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&zJQZ~K^7?TtD$&~ o5JNavCBqzsb|3>t3Iiz)Bry%3SV2*0T5558Voq*R&R?J$09H^LZU6uP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76567b98296bfd1a9e043a8e7acf8cfca5a6de90 b/src/libs/libsrtp/fuzzer/corpus/76567b98296bfd1a9e043a8e7acf8cfca5a6de90 new file mode 100644 index 0000000000000000000000000000000000000000..0d24e985f1a7e7bbce77cb9b1853b1c1caef1f64 GIT binary patch literal 457 zcmaJ-Jxjw-6g@8#nsgE~h(e(TXLT=y7IYE(4WUDaEK-te53E}!2S+h;!POz7{S&T= zYyW^Kiq~_mflPWr-p9H3zI)DvoQb3W@+_P!xDz6Bj`fZ7HXG0Dw~Y6Ucfe7QyrCe= zGoAyZ0YAPCw)8A<#+5X~4+5`=d<%ZqWV)z}KI9$#xY{-@UIJAJ*Vpo>NwaNodD6hO z8Zc`6Qzs%7!r%GA+G*vdm2>$T6?gLZf_)?C@W~ur|AWT;6{Xj!S~351c>ufBZrAoz z&7PfDANGZ6z`7{S(g3tnk?0`g=XNwmOv^z@rQKKhrf}f&K0UlZsl)#Z9~#JKS%?Le RY}SqplOa+LK#>DU@&ot2a5Vq` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/767297ace089d3ea2baeec77b980188359549401 b/src/libs/libsrtp/fuzzer/corpus/767297ace089d3ea2baeec77b980188359549401 new file mode 100644 index 0000000000000000000000000000000000000000..1c540930cf9ac73684449982dbfcdef33de46021 GIT binary patch literal 97 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lu^>=P9n5E7FkoPK h31)IKFvwOH&*5b-W?;x+0O|pQwzf8gb|9;r0RVvb5hDNq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76a452ce995b841d441c1aacc1d31beb1571fd11 b/src/libs/libsrtp/fuzzer/corpus/76a452ce995b841d441c1aacc1d31beb1571fd11 new file mode 100644 index 0000000000000000000000000000000000000000..133a5f477a6bc409aa55173e75250a5c3c79f4f5 GIT binary patch literal 43 icmbREe?QmDm(@UE1tO}885w{8L{(RVSRepofDiz2Z483| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76c051330fe32f41b2b6cd58178d35d7b92c7596 b/src/libs/libsrtp/fuzzer/corpus/76c051330fe32f41b2b6cd58178d35d7b92c7596 new file mode 100644 index 0000000000000000000000000000000000000000..ae19eed6e12a0d27eb80323d0addfb1f08f92630 GIT binary patch literal 41 kcmXS}W|Y)scv%gjsv)45k%6I_fng2<0~3(J#86!g01l!HlmGw# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76ca0885b51d330c14e6b8e9188b064b881b13b5 b/src/libs/libsrtp/fuzzer/corpus/76ca0885b51d330c14e6b8e9188b064b881b13b5 new file mode 100644 index 0000000000000000000000000000000000000000..4c977c4c7a818de1fc7375569b3c1522c2686028 GIT binary patch literal 48 kcmbREe?QmDm(@UE1tO}885w{8L{(RVSRepoKoC$20I_Wic>n+a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76ce253bab0df4024f59b4fb3b0fdf193285d994 b/src/libs/libsrtp/fuzzer/corpus/76ce253bab0df4024f59b4fb3b0fdf193285d994 new file mode 100644 index 0000000000000000000000000000000000000000..772998456ab766c99e82d1caf3de5cbd19db3ef1 GIT binary patch literal 96 zcmWIhZ@^FzU&N5fz`)^J&j1Ghfxs7tAUp<929rJ@aD;MEC`KkAw~(Ql8A$mvR98bK Is~KSo03H$$ga7~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76fe24e81d0e53ac5d96c74603050609b04e2f4d b/src/libs/libsrtp/fuzzer/corpus/76fe24e81d0e53ac5d96c74603050609b04e2f4d new file mode 100644 index 0000000000000000000000000000000000000000..201e415a302261304fac289907538ac1db44430b GIT binary patch literal 220 zcmY+7u?oUK5Jcw$F=-W22!fEp%EBg%3jToj6&9%vLD(Wqz}i0l;$H=X=s0(0p##hA z&hEZ_+}RgJOR~pdj;JNz4al83g)<LR|F2>1&&e5-EC|@DtdaBO0$_}ICH66F#O(?> zun_iQzWaJS)fF0jx^B7>CHUrTme_o9qN>X<GIQ9a5rIr@BL48EG6S1f*}Ab0Aa^qQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/76ffdbfcb856f1c0e670aca18e7f6a17c26486ee b/src/libs/libsrtp/fuzzer/corpus/76ffdbfcb856f1c0e670aca18e7f6a17c26486ee new file mode 100644 index 0000000000000000000000000000000000000000..91ae43f244fcb5632a341f2db2835a52f353e8f1 GIT binary patch literal 771 zcmbtSu}T9$5PchhUMxaLAfgbA!NNunqLl^`h)qBnYY9Q31cKu2SuLoApp{@L#=^!= zxH7?iu+=_4a0&@oXU0oHENt?QV{YHh&70Y`uoY{o0NjRCzoJO6*6yM6VCTABL(73J zE(#yX1<=GOT75)>0!;ByaB}=S^9Fd;Q()a~+`Uk-9m&}aGgWLB8Q5=_jaE{))Gg3* zpfa?wu`o?S>9QO`jrCC&>qAw_l&N+l?ZW6$$^8Rwvw3z@Yu2~&)M-B8>I9j=I2bm5 zO`O5_KWYVu)pqa&MKd1qFKSIRFw{u4n1!^B1loV9kw$!4+{XuW{EW#;tUDn`{sigt z4J8H${Xv$kvxu=l^eUra*g-<?Hvs*DezNUPEQbX7{!Ui;=hK0ONBFOluNHj9t4|F^ zQ{08o+%P)Y6BDy?z$<*#Q8@IddEO?}ysSsT)n+)N%-5&uDj#YIkpw5&RD*+DWv)W| Sxg6UKTiQmo7j~*#=6?VeyT9oG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/770b4547f11111b3dc124d0fbbba277545378ffa b/src/libs/libsrtp/fuzzer/corpus/770b4547f11111b3dc124d0fbbba277545378ffa new file mode 100644 index 0000000000000000000000000000000000000000..3b285ab0bfdfa57465d4fb14a6998476bc800f69 GIT binary patch literal 389 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;0}}&7L-8CThH!|& zISj{vj5!SL!VDZh2m=RE)wF|@Ak_Q^s%HSY1FZTSn8aZY#4ex;kac*~geySJL9>ei q=w={5bq`iIGb}*y7n(UxHv^pwG!5=%4J>|VXs}^mNQDMA$lm~h13u>f literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/773eb63c3671453a04db73568a269b214d983b1d b/src/libs/libsrtp/fuzzer/corpus/773eb63c3671453a04db73568a269b214d983b1d new file mode 100644 index 0000000000000000000000000000000000000000..fd3ae0cddf00c4065eb8837c9868f57a3ff6509b GIT binary patch literal 140 zcma$54+QuB|7R@9<VdY&00W?iF9Sn$HRCo2U~qtl<0hdBp_Da9p*@J;WXMR(u`Xbc mWng3|t=60)1f&@lgxeVy<}e5_?ECiJ5GWwbAOlj%QVjr310{|C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7753101d9b2454fc727f599e4c16de29490a5da0 b/src/libs/libsrtp/fuzzer/corpus/7753101d9b2454fc727f599e4c16de29490a5da0 new file mode 100644 index 0000000000000000000000000000000000000000..8d298bb43fc25bac68f6757d20b61eddcb43b891 GIT binary patch literal 206 zcmX?@k($E*1_}%e)r<_))$BkX<0l}e7{X&@U?`5SuIJFzZD(Mt1}Tl#%VQ{s=K?Xo z0Ic%=|Np)~`79&=)CmTP#f*j^HI$oB4YZ&6>(~7g8G>KF1iBUs*a8_Cz_v3~0{|=9 BF<t-w literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/777969909bb16e74240c6ca2ca2dea2170cba15c b/src/libs/libsrtp/fuzzer/corpus/777969909bb16e74240c6ca2ca2dea2170cba15c new file mode 100644 index 0000000000000000000000000000000000000000..494e94331c5f8e4b241b1316309697aae960f25d GIT binary patch literal 84 zcmaz~&aWzoXZZEMDD!e^Jp&m0|Nq|?!eS6*Fz5pTuHtxuOoQs``1s5}V8tA%3}8v9 Qmc*PXogi(Q9I3~u0qB_>`v3p{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/778654fc820b1dfa4e45c2738e7762fbc6a33a55 b/src/libs/libsrtp/fuzzer/corpus/778654fc820b1dfa4e45c2738e7762fbc6a33a55 new file mode 100644 index 0000000000000000000000000000000000000000..367706df219e77929dd2ff4e37bc5e15b432feca GIT binary patch literal 139 zcmdl#@jutgm(>hFFw=oS3Pdv~FfbG|0%;(&w`O3d26C#a?Ljg?HdHZ~N0>k{6KD%3 Lc5~~2CRYOh*((w! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/778817d1a44c3fbfbf636b99f43b1c38ee4fe0ac b/src/libs/libsrtp/fuzzer/corpus/778817d1a44c3fbfbf636b99f43b1c38ee4fe0ac new file mode 100644 index 0000000000000000000000000000000000000000..a8268a5b2f258632133b87ac1063c9164dff0774 GIT binary patch literal 78 zcmbREe?P~|m(>gi@E-z%8JK}$$@xVE`nn7Zj9>&5s4iv%a;kw42$(Dw*gz~W+Rret F8UT|B6DR-x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/77a8e297472ad2804d69d0ea1f8c19038e2f7c03 b/src/libs/libsrtp/fuzzer/corpus/77a8e297472ad2804d69d0ea1f8c19038e2f7c03 new file mode 100644 index 0000000000000000000000000000000000000000..f5aa5fd088ee0f76375f04db290d24105c268da8 GIT binary patch literal 118 zcma#o%VQ{sXJB9`O8qaK2c&`E|NsBK3=GxP3=E8L1_OftNUFM+5rV7LL0llP24VpQ qP6h^921bU`>f$*<Kmi2?;dTawIUsos7DgZe5&{_vWHT_hRs#TxQ51pz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/77db4cb82f68f1fb6204cf7f61a79e92a532b753 b/src/libs/libsrtp/fuzzer/corpus/77db4cb82f68f1fb6204cf7f61a79e92a532b753 new file mode 100644 index 0000000000000000000000000000000000000000..f51d2b55f543b3243f86273ad7f46af311ad8910 GIT binary patch literal 475 zcma!N6k{lfXJB9`%H&981=2w9|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJ& z0R`qTv_nW?AjJVv(e@2U{1>_hVgmu#?9S9oj(Uc6u$n56@gQ>@SilN^1V?H;gbA_O zJ{x4S0?6hm^B@uo3@kvmur&aAAa|lD2f6bkPy)L<Z{l_*GsvAV^C@sA`)mw%f<q`? jFOPu-WImFU8GM0$1P3k9KcMg+Hatmkrz<dk<}d&N76Vlw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/77fb00488655fb39f813b70219866d584997a957 b/src/libs/libsrtp/fuzzer/corpus/77fb00488655fb39f813b70219866d584997a957 new file mode 100644 index 0000000000000000000000000000000000000000..cdb08dbd323c4a1f022ac7b1d5b9bd9f97f04ff1 GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK#xuFa~4FBPVBDsNq0c3tX)D2ZY=lcMa P{Rg?7fd!%gL~;NCr}HIJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7839ef01eccd990cce7ac41dc1e17d2a53fe5b55 b/src/libs/libsrtp/fuzzer/corpus/7839ef01eccd990cce7ac41dc1e17d2a53fe5b55 new file mode 100644 index 0000000000000000000000000000000000000000..393b717cf6b1ec31aeac33e6a007a5c929aed7d4 GIT binary patch literal 144 zcmdnL@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_nEif96bx3I&j& zYM=_Bb_0ewupW>Q8;D?F-~wVbpm7Wg6Cw8e|Hr_9VvinBJJ9fI>wjhp)iV_U!h9$Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7851267a92236d4b8a56ff38e4947e43e53005ba b/src/libs/libsrtp/fuzzer/corpus/7851267a92236d4b8a56ff38e4947e43e53005ba new file mode 100644 index 0000000000000000000000000000000000000000..6fd7712767aeb4a3e8953f22fca9e54c0866c7cb GIT binary patch literal 69 zcmXSxU|?WK1OtY^mkckfVW5~%8Yt6LJcm)Tnt`#Jfq{vE;jITy=q(IXGlRtb|NqYj E02hrJg8%>k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/78e5573d0226b65966df449ec5a586c2680856e9 b/src/libs/libsrtp/fuzzer/corpus/78e5573d0226b65966df449ec5a586c2680856e9 new file mode 100644 index 0000000000000000000000000000000000000000..535a6e7337a51f8b760e3c1691be2c71837c5217 GIT binary patch literal 54 zcmXS(BgDYKpa8@wbASX3L#sLi2LodR`vV~F|NrmR#f$>g)eH=CfSmte#{d5e)c{aB B5U>CM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/78ef41bd1903fb3df3f29bc6e64f3ab68e8d0c0b b/src/libs/libsrtp/fuzzer/corpus/78ef41bd1903fb3df3f29bc6e64f3ab68e8d0c0b new file mode 100644 index 0000000000000000000000000000000000000000..7652446772e422193e0548bfc772f6050e864d28 GIT binary patch literal 192 zcmazSWq^R9OperA2=o8{|Go?i)zu6Pj0_Byq4K4vvhf9Ak%j`!1_oJ>90S7~hIR-k z%)qdhL4|<<q!Fkes29je1u5Z3tp`yI3_xM99tH+^1_iK4b+H<VHeh(!0Oq3-oD5)F Wia<JN05$*5&nqd)w?|gQSPcMA+#|*S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7911c8def6c53751e90ef022b5e8261044366c97 b/src/libs/libsrtp/fuzzer/corpus/7911c8def6c53751e90ef022b5e8261044366c97 new file mode 100644 index 0000000000000000000000000000000000000000..0f80525fa96472de5b932c24080cd04da892c6b5 GIT binary patch literal 174 zcma!LU|=x#|NlQ@QEDbfJ&*$gK&~$XV|6u{vkwBmZ2ZLke<1mW;yFSL;SiN`7>)xO ia~Rr%890Ct4p7y!gOniD0F^T^$N<3+WB?M7kpTdTJ0<i0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7921671356a6afb0fd81d4fa8555f2a0e499af08 b/src/libs/libsrtp/fuzzer/corpus/7921671356a6afb0fd81d4fa8555f2a0e499af08 new file mode 100644 index 0000000000000000000000000000000000000000..f033fe09ca74bde750968cbb6cce23b6cf0a2a83 GIT binary patch literal 69 zcma#o%M&Y!XJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7{Ow)@p%lA5M3To G@eBa@=?usK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79613aa16aea067c77e179ec4c83022027090bdc b/src/libs/libsrtp/fuzzer/corpus/79613aa16aea067c77e179ec4c83022027090bdc new file mode 100644 index 0000000000000000000000000000000000000000..4c922346e5b8095edfb90a399a4b3947c74908dc GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ wa~Rrz!aWS_!a#}xq@wK`kf>)60<nPrY<6dACPzI~O%=#^khv^ic?7`$0Jo48#Q*>R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79695c079906ae4e31b451ddab525161a2586380 b/src/libs/libsrtp/fuzzer/corpus/79695c079906ae4e31b451ddab525161a2586380 new file mode 100644 index 0000000000000000000000000000000000000000..c260780bfc7dbe26c122592cf1fc2bd7cff1436e GIT binary patch literal 200 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDg;8 mX?5`&nD*b~X%_+;Da<ejOmi@BfM^9Uhk*f$WB^DS=0X6*5E*Cy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/797e06e44156ed117975201408ca6146d2004405 b/src/libs/libsrtp/fuzzer/corpus/797e06e44156ed117975201408ca6146d2004405 new file mode 100644 index 0000000000000000000000000000000000000000..45c518f46c63748b96a7ed149cec679640173346 GIT binary patch literal 452 zcmaJ-%}T>S5dJnTxH$;5xe0~zQbB43J$g~_;KgTHLRoAeEhTFdx?nD95&8fk`v|^} zui-(#gX_#Dy*e;EKi|x^Gc!>O+$sQNE_F?o#Q(tBYfqja)#@%QDy^2Yc{WYWEIV4p zzyKXdpu@U(6Ed8@^A|m}z#$oKCn=F@S@-_KZ)A-%bFgeFR^+!7D0ME;*2opS_gBEn zqxai_p|Njmbq|QfPaEH{rbUMl<p9b>eX=Q%caF=sMBJra#N_z(-tFQPDD*;2tE?)t zG9y^C2m6UexrHR&;SS23I3@!Ux`C4rgAn23;j$HhUw^(2eABoevENwU=ZvbtG(25U iJ344O0~XwHVS&mTN8J6i!Mk)q`iB>2E;F`p5&i%yT2a#g literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79a337880062772b2e9506af7b16ad596b748492 b/src/libs/libsrtp/fuzzer/corpus/79a337880062772b2e9506af7b16ad596b748492 new file mode 100644 index 0000000000000000000000000000000000000000..c47ae0f296df217f62e492f8980aff5f09911b0f GIT binary patch literal 415 zcma!LVBEj}1dK(gnH=>X76Zfo|Nng%7^|xp8JPco1@=Jzn2n$K{|_YJP&`M7AsnJ| z4#ROEV-7>RFark=!U3w9c90T;n*TucAa{UOp97QV<^UZDmPR#)47(WU=VqAa5pG8J L6_N^2kW>QzwRuNE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79ad937dc63af3a8662dc4d66c6b18a1c3b842e9 b/src/libs/libsrtp/fuzzer/corpus/79ad937dc63af3a8662dc4d66c6b18a1c3b842e9 new file mode 100644 index 0000000000000000000000000000000000000000..13f77aaa3ff753e6b8aaa171d6618de2758c08d7 GIT binary patch literal 154 zcma!LU|=x%|NlQ@QEDbfJ&*$gK&~$XV|6uzml|J|m{Xb>U%<=2Aj`lA5d@JA2qqp@ oL-8CThH!|2ISlPU29OkH-~d7}KoVnMVE_I9zcvFyF;J!&05=a9ga7~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79c9bcb1d0cc57012537070a9380189eb61d6a7a b/src/libs/libsrtp/fuzzer/corpus/79c9bcb1d0cc57012537070a9380189eb61d6a7a new file mode 100644 index 0000000000000000000000000000000000000000..fbd5b297c796e159462a19adfb187a854da669f8 GIT binary patch literal 141 zcmdl#@jutgm(>h^82<ftkYWG>rEd(y)eH=bAP$gFEM{b=c9;nSH$empKvXDz6jcLN v0JWPkKsCaY%$x~S^#A|=`~QDJ6frO;v@<ZM%wecj2kB$@9}1L(0-#+0?CCZs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79d1c3c982af023ec901e48bf5fcceeffc5249db b/src/libs/libsrtp/fuzzer/corpus/79d1c3c982af023ec901e48bf5fcceeffc5249db new file mode 100644 index 0000000000000000000000000000000000000000..8e5a3977ef04722a77fdfa904c694008daf4de0f GIT binary patch literal 219 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E9_eGMRt1cvwj|Nj8V3NTcwgJ>YI zhEQmvl>ktnx|ornqvZxeFx((01FRUNQGnq;NFBtmhUpB}OkgRH?OtF9WvZptLxi9t lCxfyq10zFeb@3b_ppXKCa61FT95w~8S&VR{;y@EX005}tEA9XQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79d5d8e98d9e37778e200f5ce3443dddf5d1e04d b/src/libs/libsrtp/fuzzer/corpus/79d5d8e98d9e37778e200f5ce3443dddf5d1e04d new file mode 100644 index 0000000000000000000000000000000000000000..54aa6ed338f9bb53c0b108674797984890948ee0 GIT binary patch literal 1234 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjB3VAjsi|v0VarDFWrFP<;$03TEhT$tF1f4 zKxF?g0DVQK!8o-cyBnt>hy)4V0-MT7f(D2Uj0_BHI30oPQj$zY)(A5lXcIVzFhqkH zKsFe~>*X<&6rrUPb(kiq(8#VK$r~uP6HX{V9}?j=u%X(Rq45O>Kw*M4Ku}yl7Uvp5 z7a}~I$j>+kLrBVfU~Qx)Q%)r7isP&6IdpZ~85n^Hh=K7hL$w>iZ#Y><22^ACx*Ak^ Kfj~Pj0ulh#B6e~B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79eefdef46f2001822160fab2b33307ce2451eb2 b/src/libs/libsrtp/fuzzer/corpus/79eefdef46f2001822160fab2b33307ce2451eb2 new file mode 100644 index 0000000000000000000000000000000000000000..4a5356f62656191500b051db61838b20e4442a79 GIT binary patch literal 186 zcmZXOp$@`85JX>5VDTg<<b}^DqOJ*YgQ#dqF61sC*o5NHc>bfGckEq*V#LhOWM{Kb zJ*Y5zcxBd%UToYEaUu@i#_U7C>_$^VN~r-=*qa;Vb~;}>xvXH5k3C~pb0mrr=V^cC gcj^9@VOu_6nimS+CE^z_84h*bnB-hjQcE@P1s}aDZ2$lO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/79f89cdf048387b37c2c10ceb9885f63f8304889 b/src/libs/libsrtp/fuzzer/corpus/79f89cdf048387b37c2c10ceb9885f63f8304889 new file mode 100644 index 0000000000000000000000000000000000000000..154889de3e49e18e13ed59aeb2c54da783a92209 GIT binary patch literal 998 zcmc(eu?oU45QhH@MeC^GAQXfSPJ&JfA}G${Q*`JY1R;Zq;Owr?;#&zq@x0_3QH)cC z9<)u;+~2#uU#=&*b-M>5x?$0Si$0(Y5G$VXrHqE*`DYY!oykhU4`TzE@i0e=bF4rF zm&Mv^yTk3CAO;eCwKe)&uF)oMW_$k9ZhTIWf*y42h&J7+VMnD#KyWI8a#v2a4d2tB z`bgM@s`aj<cCZ08`K&7WT>iLPd=?xc#vqKtn&9mn1#wuFjC&rGdgD611c39zCVUPo murIP+Qu9J*S}4WuBj7WupzeG7MrRp1qOM-4nJ_TJz0prRwc*+T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a0456f56ad054d9bfec79c63516b38fb28229e3 b/src/libs/libsrtp/fuzzer/corpus/7a0456f56ad054d9bfec79c63516b38fb28229e3 new file mode 100644 index 0000000000000000000000000000000000000000..7f51ca902f537ad53f3a11dd7fd727fa7ab2268b GIT binary patch literal 1528 zcmcgsJ5Iwu5Pj=d!tM~MC?X?^Pk|Ca$>$1)Be+VD0*XMzN`wZb;Rxxt0Zk4QK->Zf z#4xjKd)FpJ2nW`(*Ynxgw=-`x>*4A$127y!{SnVRi0A~+8c<dNeWC2jI&nC~k+pOY z#~6o57mnFNYi`VX=MW@n*r)cuhIdG|N=OOTt+Dd`VAt)6rm5gTxUtFbAOx!%-t#c& z>Z-ycPGCIXPEt!jQ*_n!wcx(!YFU6&Ik-A}C^a?b2n!Dn{<mQ^Ck!P-#E-(t3kz>K zZ}cvcM(?mjh7d-IL=n(2#459;5Fi0(^!AQg`m7)w?vKOH8ZX-j+GBt>nuxTAT#{{> zr|z(S3Y$?a3-&ub5Iwy<I^@6lt2IoEbK|vcwPBvc_=T`=CGa?5s+6X)v`Llr|Dj6P yKOvW&6xX1KtY*T|hz?2uEv>#@F3aF^D?Eqc&aWAp?Tw|Ta$%bm<+<on`TGQtJNPaD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a14e8dd5a57e3e1c3b18b6f2cc7ca46aab0a1eb b/src/libs/libsrtp/fuzzer/corpus/7a14e8dd5a57e3e1c3b18b6f2cc7ca46aab0a1eb new file mode 100644 index 0000000000000000000000000000000000000000..a5bdce822a3cac1edfe27d2c4942043369523068 GIT binary patch literal 66 rcmdl#@h{iQm(>gm4FCQ+FfcFz86ct<C<0?w7c(+cL-=qK!KelR7>Ep> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a16d2290d87efa23a0d5007dbada204f16ac844 b/src/libs/libsrtp/fuzzer/corpus/7a16d2290d87efa23a0d5007dbada204f16ac844 new file mode 100644 index 0000000000000000000000000000000000000000..7aed2541e365336800d592df2371c58de9d40359 GIT binary patch literal 585 zcmazQW`KaA)J%?g2=o8{|Go^2)zyp)+<(9#`yc?S5+C*dA4s;Lc#aT5I7HnXhT}lS z9ENsb1`Z&E15`EbASDPj|AFcm82<kUt3Jn&0HldChZwtvQG?$-AZJnJp54gd1GkF{ z96l(12iZidU2t<a7^;gIfx$;cT%cHf4q`ilK?x{f6s2<1XF^2&J6bn@(+VgM;`Q<v HO5zy+2$5h} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a3212a3cc93b425e6c60d3024e319206b65bce4 b/src/libs/libsrtp/fuzzer/corpus/7a3212a3cc93b425e6c60d3024e319206b65bce4 new file mode 100644 index 0000000000000000000000000000000000000000..139b912fb6f779f38abc7964465a1a500a5d6e03 GIT binary patch literal 466 zcmZ8dJxc>Y5PcgCyt6cgC<M;KQp8>Z5n^-TFR%zADN-nMdls@{?6k44JiNvxkUwyx z!5@&ywAu%(qvFT<cJ3hHJC?WeZg%F);4`+i10d=7-9DMH*6w3;XBVea!|>O(Rz<Hx zGh9$nj9zLY0j8A+o{-@vL)tk3Hk01X1B>lQ&UTflf(0~SKVY`<CDH2FK<+~|7}=mo z6WYCOS5Wi*XwIOGw5N%<%}li?X=g^~8pgRLzDfeVoBG~9zGBS@2RzBKKanAC9mYHp zfs0De$Q!4>Vy$9OIGk3KN>Hd3;X%RPUftC-+U)})oyt@p+*Ip1B@aG7wd{TqhiRCS t=8NW@`Mle=7@lv?d)0_HMGG(p5W}OB=YNoL81fZwKko=jfxAHz{Q)Qrfnxvw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a525c80f2606967be6063d0318a823dfed9fe56 b/src/libs/libsrtp/fuzzer/corpus/7a525c80f2606967be6063d0318a823dfed9fe56 new file mode 100644 index 0000000000000000000000000000000000000000..2d419a59dad122efa6c29d046a8bd44de59b8ea1 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H()z0HlH7zx97#28QZt1_nk31+YkUF(U&QSIY^21sE(L6axb% g1A{D39Z-6X5LisOoq=Hv2Lpou0~1sY7l^I~0Kl>iHvj+t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a84c8813991ce79074eb9b3a0645f575bc6f60c b/src/libs/libsrtp/fuzzer/corpus/7a84c8813991ce79074eb9b3a0645f575bc6f60c new file mode 100644 index 0000000000000000000000000000000000000000..9ef1117c5ed2b655eba18dcea3b2019962e71e32 GIT binary patch literal 634 zcma!NWB>uC{Gv>b)Os+R;s5{tz6=c2)ePI9U>}TuOzUoAU|?jB25G4-2I=_?)S}K% ze4(0Q62lyzkqmZXb|4;{BLguWsLW2RrKK$%XthN=P^>6Z6KZ$7ULHdU&?s-9Fk?~b zf8k7s7PyNT7@<yMV3cQI68O&qlyB_;I)IS@h^P*%!6pj8Os>{uWT-x>4z&g%3FL4x zFvtRff`Jw6IH0d_c@*S36rVXD!WzS8(}5-<yk-n?13AtCMk52O6x7MBJ^z_OVFd+? zF$@H$X2ho&97B*uLrO0U3@Bm50Ewh_VFnI{C<c!I{}~(^7!q?zQ{xMOVf7!BZa8EC D(qMJ| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7a8768f48668207ea5fb42fd647d3ff767a95737 b/src/libs/libsrtp/fuzzer/corpus/7a8768f48668207ea5fb42fd647d3ff767a95737 new file mode 100644 index 0000000000000000000000000000000000000000..9fb488b6020932e60a3c3d4e737eb2dabcae8906 GIT binary patch literal 109 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtMg|5y1_mI>kR4x^m{Xb>U%+X_Ap2jJ q;a5ZP93h5quxf@m4DCP$kQ8RHW#B-FX#j-^fZSLHhMd13;c5VgN*EUa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7aa399e22cb80e5f28f473243c9548a8f325e98e b/src/libs/libsrtp/fuzzer/corpus/7aa399e22cb80e5f28f473243c9548a8f325e98e new file mode 100644 index 0000000000000000000000000000000000000000..55a00f95993cbb2eb411e6d9963fa1015c076895 GIT binary patch literal 79 zcmdl#@jutgm(>g);2;I27!(*7ih&}WARZ$FLv=M9hysJ^Vnzlq2I=qu2>}@hR1E+~ CBn=h- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7aa4a10fa9118f949b9495f36b5c7026633b27c1 b/src/libs/libsrtp/fuzzer/corpus/7aa4a10fa9118f949b9495f36b5c7026633b27c1 new file mode 100644 index 0000000000000000000000000000000000000000..69df6f895a956a0ff9c4c803c0f88ea9d45fc6ff GIT binary patch literal 114 zcmdn5r_c5BWi<l>!?*tqQa}m_6c`wafmAgk0|R3<g8(CtR}EAF<ibfH1CAi#KrS~( aGZ0j(fMgZGYzBq@|Njd?EdUx_T@3)GV-<z~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ac5ceb4aeda387b0a7cc3d10d196a1b38e04189 b/src/libs/libsrtp/fuzzer/corpus/7ac5ceb4aeda387b0a7cc3d10d196a1b38e04189 new file mode 100644 index 0000000000000000000000000000000000000000..f9e23aeb2dbf54bf1385f909e8b5272f9cb5870b GIT binary patch literal 106 zcma#o%VQ{sXJB9`$`k{VVDSI{e_sZM>S_iCMg|42NOdtILoraGno(T<qQ(G1F)(m4 mFvtScF;o}N5dw<|w=*!zQ2{bJQ{&4Li*rg-;|t=s7^(ryC=!VP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b0173b94d1ae43e291ef41258ad5be33a94658a b/src/libs/libsrtp/fuzzer/corpus/7b0173b94d1ae43e291ef41258ad5be33a94658a new file mode 100644 index 0000000000000000000000000000000000000000..44b685e743fce2050ec610067276feea0ddaf4fb GIT binary patch literal 143 zcma!NWMHs}XJB9m%H&9`2hu?B|Nnnq28QZthHZF&?luM{Mh0n+`qrL*|Nnmn=}-r8 yfxsF}GBGf4GBC(8Ffx=@7tav_iwU<g<d&8smgL5#q!yH9Fmebp$bcolL^S{@H7d6N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b092f55055ec30d6410db03348db394de41df33 b/src/libs/libsrtp/fuzzer/corpus/7b092f55055ec30d6410db03348db394de41df33 new file mode 100644 index 0000000000000000000000000000000000000000..b786244a3dbed0548b309343f32888f86f89a30e GIT binary patch literal 193 zcmZQzsE^;hnt_4AbLGlPooWU~1_oA!Y6b=-28RFgAOry-49pB5VTS5zAXQz=$WRgw p<mpsbGl2wvfLx6b1AzvC41t0FKx3<mtAPL{0<{6iLU#sG4gfCRB7Fb= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b151731c7616f4e39723ff6a4f73388409fa5ed b/src/libs/libsrtp/fuzzer/corpus/7b151731c7616f4e39723ff6a4f73388409fa5ed new file mode 100644 index 0000000000000000000000000000000000000000..4b7bfb3c6bb92e92d4d1105120733a9db006d679 GIT binary patch literal 466 zcma)2u}Z{16r6Zh<OD&`LIojOL=-*2LJOPN*$Do@63&1JYwk=gh(0ilKVT{N1Ac<l z{ejl{2loSZy3X4(AlNv?%iGy`GjB7#ce9g;0Qhpr3O~g92TC%5_AF~<07)K*H!TgO zibzF5#SF&Jxb-tiv59GObPUY%xFqr}<o3@zRPh^b5iOuLFFBSCFN%Jc)l-3U?t}?G zE%KDyQ5xQ~592`h#wC4aQ^#Tv(~p$nlyeI$ckW=bAvR=(4xao+!PE7&V2f*{Vf}ZF z$S1&bbBr`q<AGOnfzno)Iqi^PjPCJ+gQfwpQfCO!f7~Fo7fE41fnh<3zm3%u=(Mql ipt~zqk8{`qpOc$jl~y)0B_*ae$VUUKc083?U4H{AmWmnx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b17286a1a5a6aaaa22b7baa5f14470e25275259 b/src/libs/libsrtp/fuzzer/corpus/7b17286a1a5a6aaaa22b7baa5f14470e25275259 new file mode 100644 index 0000000000000000000000000000000000000000..91fd1bae3b0b89473606e75ea3c8a1f188ceeaf6 GIT binary patch literal 318 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erl>w{^Xtpm%1z5E?11AH6EYR4}>f$+2vH$*=9I5p{n<@<FC^INC z{QvjAT^M5a|DXTaK`f{l$ObM&F%a2UAqIq>Jkb3FGzlwUV8HMP!hsl$<5I8It*<Ty E0Dt#iQvd(} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b3b5288678d4dc968f4ff182767222379fca94d b/src/libs/libsrtp/fuzzer/corpus/7b3b5288678d4dc968f4ff182767222379fca94d new file mode 100644 index 0000000000000000000000000000000000000000..2180cac5357b20def940a4e4a455ec551c52243b GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Ll!8))&OKN zNHT%s80IjvLr7sD#Q_p&`vxTba|(gjKu{6~Bsx<wIqDhO!D^~N#)I{O<w1mEG0-YU F4gkEx8R`H4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b3bc04aaa1fbab06b8780b23009eb9134385b55 b/src/libs/libsrtp/fuzzer/corpus/7b3bc04aaa1fbab06b8780b23009eb9134385b55 new file mode 100644 index 0000000000000000000000000000000000000000..80e5de55dca0479d2c38c65afcc1de10f5edeb51 GIT binary patch literal 124 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZtAaf27@B8+hfrEj82_(g^ZJYfzC}3b< uWDsUx;9{sQ1{%TuR9>wPR>Qzx4W$`485m^2YQz{AK*m4}0U85T;0*x7h8JM~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b82af1637d9bf085bf4691a4c2f6935109d7060 b/src/libs/libsrtp/fuzzer/corpus/7b82af1637d9bf085bf4691a4c2f6935109d7060 new file mode 100644 index 0000000000000000000000000000000000000000..d7406db619fea919ab165ec81b75bfd8eaa6df59 GIT binary patch literal 180 zcma#o%VVgC=TKu{V8~1@0+K-R|Nnnq28QZtAd?*|keE}N8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+pW#Q{=m@Qs;)p&rD78N^V}!H~+3Sp-z`pP`C@<NtpKM+OFbW+GXE LVgtzNB@7$@ArvJ+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b90c46fa920fb6e34f38d280f8a814d5f7552d3 b/src/libs/libsrtp/fuzzer/corpus/7b90c46fa920fb6e34f38d280f8a814d5f7552d3 new file mode 100644 index 0000000000000000000000000000000000000000..0b4c33425119b6c59759d55dd4cc93b608aaf92f GIT binary patch literal 148 zcma!7&toWw`~QofD3c>Kp8*X1|NrmHz))Syz`zLNI{?|mj1UYIg8*w7gA=9*s1~LS oBv%a54*@W>Ak$<)s^$m*S;An$8HyPh%ZlTx>p9vPbRf#B0n=a>j{pDw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7b9368ad86f03fa961b749e2a2c4a49488ee800f b/src/libs/libsrtp/fuzzer/corpus/7b9368ad86f03fa961b749e2a2c4a49488ee800f new file mode 100644 index 0000000000000000000000000000000000000000..f6186c57dd082c1a5887eefce77f93aed5ba2859 GIT binary patch literal 115 zcmeZeU?_=aU|=Z9<VdXt(jf5v|9@YGc)dJ^lDPlBz%uzr5)9SV3}E~pNEOc!0!s<E jGce2nvA%t0-~iFp#S9KoAO-`20z|n6kf~VA$WRRc#N--5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7be86da7b09883e958b4325169bd6a468172581a b/src/libs/libsrtp/fuzzer/corpus/7be86da7b09883e958b4325169bd6a468172581a new file mode 100644 index 0000000000000000000000000000000000000000..318589e17238a0319cd8cb1d9687a3310373d69d GIT binary patch literal 458 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RODe+MbBIFr&hhGL)yBar6^ zBCCrT8LAy-f`Q-6WQKzb3?=b-3=DcjnH>wEhA}W$gEa%Sak4YWGW`F+P;D?r2rMSt z&cHB-gMm>N$otO;RR*RU>s+9K5n(@r8p3`CMlTnjN=8?(veN2exRHLrC1yGK$%#3s zrp7=w8h-<s4g_F7RC6#eLAVSJK)RX%rmw1=NFdxUz_9PzcLqjaK*WNKV$}sZgaN}L uK)*2vFfjP<L$#F8mX9>h$M+8yBOt)UAP+P#9?bsF2#zr&B?cg301^P`a%<NB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7c559c7a0a72338b642176e045a69a3e14bcf2b0 b/src/libs/libsrtp/fuzzer/corpus/7c559c7a0a72338b642176e045a69a3e14bcf2b0 new file mode 100644 index 0000000000000000000000000000000000000000..d4167dfd7839b832efe8621386517e3f1116dac1 GIT binary patch literal 144 zcmazKE-_6msVqqKOm<DJX8?o$|9^pLrh@;z3=GxP4BH@}fQb<-zBC^y0HGKd7#V~a z1h^Qgiy`vW)#?y~7_6Z*11AH6EKpf#b@3b_1_m*R@Ej%qFylWMFlI9_FnI$2MV2Pz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7c6ed8364d243b4150cc551b59fda5913ba459b1 b/src/libs/libsrtp/fuzzer/corpus/7c6ed8364d243b4150cc551b59fda5913ba459b1 new file mode 100644 index 0000000000000000000000000000000000000000..dbdc2ff73c81ddf38b5e5fa266c04e573e44f1ae GIT binary patch literal 2112 zcmbtV%}Z2K6hBX`dAez8Xj54ueMlcn32s7S##LXq3fx3KT)bdFba+oA=MqYwgV9ED zV?8Qp5&i?UbXW9W<kD5t!X${>@0@$@dv696qNCn-@44suckVIxI8Czw5k+-BT)-Ek zwH_mCDk2Z3FnBU4?86qVMV1n3K`hxlOcr+|`h=BO3G4m>wMsbpP4>(#smI<@M@&`a zf+AWE-WVxOh;|x#kIKSP!<Vo>s=HMz)|mNzM6QZnP?e3zk<A5_gDSwcOx}mL1k)v? zc0mj#V5*pJNcE&X;DLEeCsj&K-We{@Go^;=w6&`Hc6JQ2cFNpsOUfLuOOg3<wmiBg z95B;gF|o|W&X5bI8UYvr=LAx_g_9SBx>Tnc8$jY05hzqW!E8*CI!6iPVN>MnddSC* zM_=}(U=Ssn(7(mY3|n<glLlYw2wr4HuzuoQFHD1K^g5T~7C5CspVE9|%Tk6JwP>V8 z1$Ss4UWyrVI7Nd+W)j^rANE20tf*p14z__`;<I9x$n+UWDWbZ11&#)tt{~P{Z*gf% z{n)2Yg>NVzO3PH@1SoE0@$$KhzYciyIA7%Go$SXqH|MYMPGMCvyiU}(zU1}OQHCDG zv7q0P;B8J(LL;hFDp@P9(F+l^xO6*Q_%Tn-g+Zg2e5uYNcBW1!j(NQHHL`x%TUjn$ zQRvt0i-m-TmUqTkqpf3^VZh=|Z@~gGEPyCAAE<f&h_Fl1VMjM+7qI3B(x}ZbkLp1( zyLwmWkzeG*3`qyreJ)F`fPs!zX^WpJnwo2lsM11lpCzq5DOZUe;h7NqS+-VB;|m)Y zNJzkqHcd_PF(D_3Q2bahI17QfaJv!BH~@-!NexV2O6|fyFaxpnbcSqxOrvsR+-$6p zN0v5n0dsr@AuGN_9YR^aZWiBZ$95oAudJ}&h{DHV6vWf!EwQ@v)6=13>80L4RC2Vg zv+&m-$Q5OhLj6l?+J@A4hg@i)Q3LILnN~QLnMpj$gybLF3fy=G?Nwb(2d_SFWXkgC zc$uAT+)tNTEXx%K^Iy>c1$ddB%c}KvIl7a%+``?10v6pi-3)wOR}O+a427={f-lu= vSCvNn>lizD$O|VMt23<V8SNwV8Ekpa_*UHnOzu)_N^%?%F#lK~^}qBN*CB!= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7c78a1a959ee5939c74a4b724ef120b566e1d9f9 b/src/libs/libsrtp/fuzzer/corpus/7c78a1a959ee5939c74a4b724ef120b566e1d9f9 new file mode 100644 index 0000000000000000000000000000000000000000..18727f451dc110ef35b808b1cc33f703da401e86 GIT binary patch literal 139 zcmXX;Ar62r5G!tIGy;QzFI^B5B!rMHLogC>`vgBljBe~i+v~L_<BC%Nm|5wb%!zLt z9J~iAZd&$faay(-s!h&Kg{*)Ffe~UuQh$NSYG+d!={1a=)m1VFVm>6l2$BRV9~t5n AJOBUy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7c9f31688f3aab10d5ee2520112ae4c643e9a8f1 b/src/libs/libsrtp/fuzzer/corpus/7c9f31688f3aab10d5ee2520112ae4c643e9a8f1 new file mode 100644 index 0000000000000000000000000000000000000000..30a0a59a0949b1c913189e0fbc0ca5b3fc7ddfb9 GIT binary patch literal 1062 zcmcgryGjE=6g?AB6Dv_0Ul1WA2tJZ7AflEQLHvR(WQ%P?vZja^T#!f_KOvAh*!n5{ zfMrT63yI^oGkF>m3-PeS?B2Q0GiMDTv6;IUz+epyFBUOhXmW_%i}4@cSVR~a+Seyx z(D@n6@q7yujfk9g(Y0E(9S4%6n=pcRi{4wK(N9y~5d;<BI$&HiN|zGfgSD1c(O6`$ zMI%RmR6l4dco!V>cVrH+Nk6)@mYi+5+0n!_&FY9Lz^-5hNUYVRsfp8$dIfuzSnXF2 zr>Zl!f(7ReYsAh&8cJIhg)>@Zmn|~k7X++a9_7>#{ua4!F<IyCA@7MBl2)ce7tpCa z=V3aDd=Q5ia_%j4<y_a}H0N-f*T{K<Bj-LA-yYzfcpsG0U3)PZ_U$A`!6m#guOA@S z%v1OQZ;`rqiY#PN4{^*j*1wtvH@nVHXOEHQ^qbc#s@iGY@WkOa8AhrFT4^6g$>y<* xS{w#WU$0h~-0+7NSNm*es)YZWQ#kQn>|P9f_wM=_Gk8o7k<%}aP0HQ?rBB=s@m2r; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ca3bf567198f63f7feaeb6e6f9cf35a66b260cd b/src/libs/libsrtp/fuzzer/corpus/7ca3bf567198f63f7feaeb6e6f9cf35a66b260cd new file mode 100644 index 0000000000000000000000000000000000000000..b33557edf3bef33f0ef13900f282497050a73442 GIT binary patch literal 145 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28ZfuAd?*|keE}N8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+p6Rt64`V#9AhCG`wo4%i?d4<wOU1XS~%p^AayKSR3^P=KQfXc6<j T|Nj{nCUX5}s4iv%;%Zp{yjdcW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7cb3ccde9e7c69c613f6bc03904fb2742fefd85d b/src/libs/libsrtp/fuzzer/corpus/7cb3ccde9e7c69c613f6bc03904fb2742fefd85d new file mode 100644 index 0000000000000000000000000000000000000000..0d2a8f472e1403359c91ef4ab9522bfd9f895c79 GIT binary patch literal 1059 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zb$<`7!=IUZbc8E$ix!4-a z6kvpkRBJN=4N!;jAd)~1Cj)~l14s?ye_N;xP=kSXf<OX<`p*ZY!4$(ws5vkSXxnQb z8)zHUIY<&9Cd3&)y~2qQnK?oX3@USgY!(J}1`ePL*dG8nKzWe)Ko*K~K|-Xv7-SM0 z0F7ioaW(NSCO!_pmH-L7VUKVUeFJg$gdmANLCYxUkwjh7sFmH|sRYDec=?}^mEj;5 JFfh1Q0{|i13w;0p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7cf3e801b1ebba0e4eb6fca00efcfcaff610ecbd b/src/libs/libsrtp/fuzzer/corpus/7cf3e801b1ebba0e4eb6fca00efcfcaff610ecbd new file mode 100644 index 0000000000000000000000000000000000000000..bda3c6defda10a118a963d9f05198e5919d0c845 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28HTs1_nkTFFU?0F{d;&HNJq8fkBpm@jt^q rpaLKODV@X64k3ks6bDEIBvv_tL1RBddqGiZT53^zF+&~`NW2;VgL@tA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7d18ed36f5b3162c15cfb3564a2f1b96dad2131e b/src/libs/libsrtp/fuzzer/corpus/7d18ed36f5b3162c15cfb3564a2f1b96dad2131e new file mode 100644 index 0000000000000000000000000000000000000000..f9a1dba6d3604ce284cab5a48a7dede8022a27d5 GIT binary patch literal 1107 zcmb_cyG{Z@6g|7BJSqY;5fdK?7($N}6h<3rJF(dq3W!;#7$X)C8vFw~dkcTS@FzAF z#-30)o;$NEZyG%bv%}t*bI*P4b)kuJ4RCx<r|U4#S|0&VJ*~g-I)zd+?_-prF^lv7 zI2<|l<PID}-?`VC3!(Bko<A}B42`_0t9)%K+@u)#Lmg2K!yvbwOY(ADXa<}Kw5bPv zJ?3@ABINoq;IJ>CT8{mZ*T5B$rflO;h~wg5XavIu9>r*J#XLg}l?NWbK&BiXC#eZ2 z1yQgLXGYvovKSzWZ4o;!x?<uIk~oYcD&Bm?WN0;2?Y)S^8o;IsNe2@>(E+KosXWC8 zi3e6(vkc|MGBBxv8~a#X@fmuYIsW37j{BPw(M*!L77EM098_m32WkE}6z%L{Yyg~_ zevx&MrYGr&8V6ua!vSv}v=UjM1;<?EVxMfSD`Uh6oCjG$KJ%~P`L|vPgO(y}{Z!9E z!dB9~t0|5er{U#qI1Pp=?2v=s0dr@=3cnFUO~SmFu9g-(w%S>*DkD?aI>w@TDq(hl UFk3QMj}o+nd=Vs*Qh%=9AD>1B=>Px# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7d70387c8179573c0f1043460320e8e84c45640e b/src/libs/libsrtp/fuzzer/corpus/7d70387c8179573c0f1043460320e8e84c45640e new file mode 100644 index 0000000000000000000000000000000000000000..84f02288de44f47bd2e48c43acc5f386d2fee979 GIT binary patch literal 152 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSs=x;fp`u>yB(0?0P)+t0STx<oiG3~5ok$jCPzI(yD&&?704bBggqe5ip4-n4`!t1 GFaQ7<86yt> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7d7da6cb9102c0ed89ff8ec9d595ed3b2601eb05 b/src/libs/libsrtp/fuzzer/corpus/7d7da6cb9102c0ed89ff8ec9d595ed3b2601eb05 new file mode 100644 index 0000000000000000000000000000000000000000..570c29213e0f64c4d2444a7e98bdb7d219f0e5b5 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk3B_KbKp}JTNh#7%m%Yl3WAU0-T mcnPE!7&sXiWP$2{(sP7BqB*H~@yYplB}MrT3=B*NbE^T1S`~!= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7d9bfcaada2b170255bcd0ef2e4b8921abb41779 b/src/libs/libsrtp/fuzzer/corpus/7d9bfcaada2b170255bcd0ef2e4b8921abb41779 new file mode 100644 index 0000000000000000000000000000000000000000..f697f7248b2313d66455e6e86187aeee1faa6a8f GIT binary patch literal 69 zcmXSpude54XV9x=h+<*@gOv;`fuK^Snt=f-0ulfB|Nnmoi-Cc;oq@6XKRbh?<NmXZ G3|jy*Y!I3N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7db4f5591801a48c9b8a1575ae0cda54eaaeeb47 b/src/libs/libsrtp/fuzzer/corpus/7db4f5591801a48c9b8a1575ae0cda54eaaeeb47 new file mode 100644 index 0000000000000000000000000000000000000000..45b207303a094e86ac7a7e6b8a28f656dec1fe59 GIT binary patch literal 491 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgb@vT7w2yn79$TBc8FjSk&5dsSc zw=*!z;b35t1@f4{A~3?S4#EPP#ZV122dEDWs*4#Jz!+>cNQgZ1U7&!G;opA;DTvu> z-<XPFRxx_H00kKtz{*Oii;<noAi%Ki+jj;IW1ypi8Dt=uA^s-Ytx!W49P21`nL4J^ lAciY2FjRtq4(8!%4tS_HIKb>jqQQ|>VK}F?=l{(A3;_1AP1OJZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7dbff32be3d3dfdf4cc6893c63969a6c31587d6c b/src/libs/libsrtp/fuzzer/corpus/7dbff32be3d3dfdf4cc6893c63969a6c31587d6c new file mode 100644 index 0000000000000000000000000000000000000000..5dc36d92a27a55bafe56921cf4899619ff8028b5 GIT binary patch literal 348 zcma#o%VQ{sXJB9`%H&9`2hu?B|NsBZ|NpmEGcYg$d8zSbiC|$c!N|bYP{7H+APbgb zn8VNx6b6#QK#BvTqU{@y_%8%vf&kd;&eTkfdZ?Nzknuos|Nmftr~v9ive=h_!M+-9 q^OSioH6XV@ZH~v{WCmZLsSF^EKy@Iuz*Up!PME!9ngi56hXDYqnmpP7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7dc44283cf9cd2fab208ee4a2d853d451ba34c96 b/src/libs/libsrtp/fuzzer/corpus/7dc44283cf9cd2fab208ee4a2d853d451ba34c96 new file mode 100644 index 0000000000000000000000000000000000000000..2a19a787d0d64102b30364ddebdb307211372856 GIT binary patch literal 84 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYj01VHq^|NsBP_{{ALjMe|y8LC^VfubM) KlVN1g$OHhANEXZh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7dd37c3acd5a930bc551075f36f17f73c4a0c58a b/src/libs/libsrtp/fuzzer/corpus/7dd37c3acd5a930bc551075f36f17f73c4a0c58a new file mode 100644 index 0000000000000000000000000000000000000000..b1ae7ae26f2d9f8f45db5b380646ead80086f27f GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+Yj{j~YXDF(Xh+9n5E7umsXC mLG159)h#{ALJY<X3^}QJ3=ByMOp`S^7#NruAO<r44F&*$ZWaLm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7dda43e86a2cc6ec3ad573803685b6f699f68e58 b/src/libs/libsrtp/fuzzer/corpus/7dda43e86a2cc6ec3ad573803685b6f699f68e58 new file mode 100644 index 0000000000000000000000000000000000000000..48c90589d631fcfcd7746863c9cba48fa490474d GIT binary patch literal 615 zcmbVJJqyA>41FEMk5Q$dP!I%1(aAxCg0r~0bn4*Z;3)_<xCqWpF8&w)RY54mq-mi_ z{lLIoa+l;KFS(v5a@_+FMey55qyrcWR2_ctajb#mw~C+Ycw#~|V^&rK7_+%VjdKK` z1isE-?3qL)(IZp=k6l}9F6kf5mz8kOm3G5R7hTYujt#}88<oXUj0Du<p8iR;(oKpq zRU6#R7t%5VmZqv-NoNheC+!rI_O%Y@KM~LO{xV6Or;enKY?&Vxm{rJeAv%zJ4-_m1 gxxyx3$66MoiMok}MbKZNRp=Df4mwG^H9a821Nr}obpQYW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7de45e20cd384ad3c999f012ab690d190b4b99c7 b/src/libs/libsrtp/fuzzer/corpus/7de45e20cd384ad3c999f012ab690d190b4b99c7 new file mode 100644 index 0000000000000000000000000000000000000000..96db60e0054fb5ccd1711fecff095e3a0a300838 GIT binary patch literal 102 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDgYw V93e1Ym|+f><^YijU?zyD1^}I54W<A9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ded496fd531287d3aae5dbb5372e7008809aeff b/src/libs/libsrtp/fuzzer/corpus/7ded496fd531287d3aae5dbb5372e7008809aeff new file mode 100644 index 0000000000000000000000000000000000000000..43a1a6e2365945bf3fc0293add644135ef5d37c9 GIT binary patch literal 106 zcma#o%VQ{E$YWqA%H&9`X8?o$|Nr|kFjQAFFfc*{7^;gIA-MV`P!b5fSwm$QI2jmZ ef$B=Di{}V|#e~}#80G-A27LPt<V(QRRRaLINErP9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7dfc1b2c5c9c6395a72d6f332273e1998d324dc8 b/src/libs/libsrtp/fuzzer/corpus/7dfc1b2c5c9c6395a72d6f332273e1998d324dc8 new file mode 100644 index 0000000000000000000000000000000000000000..341cb554ece9374a8b27e309e63f249de43ae32a GIT binary patch literal 103 zcma#o%VQ{sX8?jZ4DBEa2-+ASGy?;Oks4o?m{VH7Aj=TXz?ljZX(*l}#1IZqGKT@A W3#e5X$mf8GfeZr5K*1aa?P>rS4GyaS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e0c26ffa090b8c1f6b7b54d0691f20cf3120065 b/src/libs/libsrtp/fuzzer/corpus/7e0c26ffa090b8c1f6b7b54d0691f20cf3120065 new file mode 100644 index 0000000000000000000000000000000000000000..6773f0d32750ce3b3437e008f0b614b78836a0c2 GIT binary patch literal 217 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria5B`%f^{;?VQ2>m0!gqY1_oA!wr@az|3WZLCGkL3XKE(IU{*|nMS+$f poK-B#5crbeWi<#C1Fg4as0KO{2tejB<!0t(0^My76sjy{1OPSGF~9%- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e1d8c9ceab68693700ed87c766d82bef1629d9d b/src/libs/libsrtp/fuzzer/corpus/7e1d8c9ceab68693700ed87c766d82bef1629d9d new file mode 100644 index 0000000000000000000000000000000000000000..6b1f903649bdfed7902e3eb9bbd699c47f0150a4 GIT binary patch literal 2270 zcmeHIu?~VT5Pfx#=;+4ax3Iap@(~V9+Q~2TS6m$U0TvVSjz__0sTh;SM4IN>(pRp$ zyL+5=Gq6>+EX9)Zbs?iQVhlF=$QB0H>JqehGm*J=?p?im?o0~>E)Lc`@xL^9P>$sE zO&jk9a%*wEr`xiWB`VY@kSR}4<`O~7&)5Pr+o~OPP*8*V6@LBf$0O9mc?xM$OE1+S z8TM7lyh+&Jsd^azFUDrKr1v4D6fW44WK5F5TocRg*P$+99PF_c{zWpLzcWb67&gf@ fDUGM}4EW%$^CKndH4(N{)j77}B~GL%2?og>Bc7Y_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e421fc80234232df6152662a076cab09aeec677 b/src/libs/libsrtp/fuzzer/corpus/7e421fc80234232df6152662a076cab09aeec677 new file mode 100644 index 0000000000000000000000000000000000000000..6fbc8043597348e515e4c69941a9fbc44a70a671 GIT binary patch literal 375 zcma)2F$%&!5S$o=vs0`E(^!c50Y6~l6C?yVOh83)YT*@W)FAi*$vZ7<);WzfA~>)+ z%kJ#naKmtgO$Z=Ol+MV6++poRSa}Q`?xMw3hwFG5%{nHI2J1S|hOam*kiT+^<Qh2L zm@*GNl3OQIBwA(2oyOrU*|YXaQK}P#Qls_|kuh*Sh?F-F7<)y{tydc81ILS4<CoKb qJ%YW;e}3k_{kTK)tfznYc|QN~<6HCXr`r@`fe~*Oj4FRg!FvE7fkiq1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e4abdd11becb33a0de5bf8b3541f06232528dc2 b/src/libs/libsrtp/fuzzer/corpus/7e4abdd11becb33a0de5bf8b3541f06232528dc2 new file mode 100644 index 0000000000000000000000000000000000000000..6942fe7068ac1956586b4888b9654e7c3f592e61 GIT binary patch literal 598 zcmdnbYsUZq-~KsBF>piJa>YQpnh{7aGPr|;s*4#Js;fa<1_&7qW&qhB1d;oVA%|VH zI@A=XW(J0*FpWSFRR#u3b08`qreW2EtN^Gi8saP%33moi8M-Vkrz4vPVFO8Ihr$KX q#Hnln-0jgY-ymCzGvpzPAe!MCP@Iq7U^JaTE}H!)3Q#zpU;+TElvG&& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e4e8fd08e84fe858f4b4285850e9759261a68cb b/src/libs/libsrtp/fuzzer/corpus/7e4e8fd08e84fe858f4b4285850e9759261a68cb new file mode 100644 index 0000000000000000000000000000000000000000..b691f7646980da1c580f14f8482ed7d92a6a082e GIT binary patch literal 102 zcmb=fW^nXiU=UznV35$&jgQa#qgxDQL&1OL|NsA=`_ITwUCqG22o<a@2J*o;-XJp` TC;<duJ~LDS1A_vL1yu_Gfo~JC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e626c5828bf87790da19c322bb8492ce45ce8e0 b/src/libs/libsrtp/fuzzer/corpus/7e626c5828bf87790da19c322bb8492ce45ce8e0 new file mode 100644 index 0000000000000000000000000000000000000000..b6f232e8ec7808f237be1c00e5e0a7dcd0d3352a GIT binary patch literal 140 zcmdll$N&Z3{yRuPm<kLG#XwdyBamQZa0dxi7c(+cSIdBzAVG#`pcoPYiXgZ@f#3&- g009PuryyMn3<?Yk#te)=RSXRKK|&DqP#P=(07cOrv;Y7A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7e8fecf5af2e8c00c79f14c136a91214b4406ba3 b/src/libs/libsrtp/fuzzer/corpus/7e8fecf5af2e8c00c79f14c136a91214b4406ba3 new file mode 100644 index 0000000000000000000000000000000000000000..fae97287383f92086bb90cc57219bbf03f41a3ca GIT binary patch literal 139 zcma#o%VQ{sXJB9`n#9lrq(I>R|Np)W%+=Kl42(ctYJ6FuHIOdgWZ;kmi8KIN3}6-m z!yJZopcIf422vbA%+U4?NYn!{NG}916{T`y)`Qh>FjRqzXA%I)9A_wk$oqoSRx<zq D-ys)( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ea2f73225fbbccd29b5f6bae4b793d73f74021e b/src/libs/libsrtp/fuzzer/corpus/7ea2f73225fbbccd29b5f6bae4b793d73f74021e new file mode 100644 index 0000000000000000000000000000000000000000..1d6de044716b9e5fccb1bbca3e4958b926725280 GIT binary patch literal 69 qcmZQ%C}a>|U|^77`2YXEb+t}447gNR1BDs%a08&MC{VRQbu|Etl@W~q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ec74e5bcd1e83890ca96a4d0a465910fc8875c5 b/src/libs/libsrtp/fuzzer/corpus/7ec74e5bcd1e83890ca96a4d0a465910fc8875c5 new file mode 100644 index 0000000000000000000000000000000000000000..6da2f3315e823accfc4aa1a08303d644866badbc GIT binary patch literal 254 zcmZury9&ZU5S)mRq_7adPDrJluU0Jl0Kee~VTHhvNY2yZij-+=?DHM@r~HKH?FF=P zV3(O;cXj~;BYOsnaSRC@jG8*RV(PF3dQajp76{fG^Jpj71Ck1n=~PP+Y6&B<vba^H zMC7Nr8TM81FAT7j&)N{3L*I4ZEhbeSQ9U^J^m}h`e58+Mowz!@t$neGL;ewA^K9p= ZF>8P}f>tE%snjH{Re8xJ9e1F*{s8lpHpc(} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ed2e85d653993c06abd46cea79dbf58c1ed7c92 b/src/libs/libsrtp/fuzzer/corpus/7ed2e85d653993c06abd46cea79dbf58c1ed7c92 new file mode 100644 index 0000000000000000000000000000000000000000..e0c44710e744df63d52da3d63447a85fc11a9c62 GIT binary patch literal 312 zcma$5Z@^Fz&%nS?l*y4=52S(M|NsBK3=GxP3=E7wUTS<<B3KwqFfy<;6mT*y$b#h< z<}kDag@L3nkm3NTX!`~v{tJPaAOJSIGc}W=9;&7aWIV`Rh87S30%#W7BW#{B526A@ r!flS%%R_c@0$7PJ&{VLKf$BhRfvcw6oh)DrfJAjMBSSnmpcohc-`Y2s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ee74e1d27ad82d986a87c0b0e18b3a62d8cb7cf b/src/libs/libsrtp/fuzzer/corpus/7ee74e1d27ad82d986a87c0b0e18b3a62d8cb7cf new file mode 100644 index 0000000000000000000000000000000000000000..ee835ee9042ac14cae448c25c9c11f1cc907e556 GIT binary patch literal 722 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;0}}&7L-8CThH!|& zISj{vj5!SL!VDZh2nVQY+CfSXYW@S&GXUKIR(%dk;x%U#0|PTq6<#%P_n_Iu0CY1D zpt^@lH#34vViI65>H#sZx~G_-0Vp$<8sP)92nbq>|1(z?gKY+J7h3}fJs{UM9>^%l z<Vc0Z>Mw@sYF|*0g4CwQmnG(urp6a!<R&I76lWyr7H~2!$TBd4q6i%NAW|5}0moU} zHz2E?kwJ^W0IVIzD`Ln@1*RCV8X%W}4MYHyQ~@bQs3K6JVt}gQr~)M{4+e(LmjC}@ V&Q&b_Ed^0aQu@FZX9^6$E&yB|bngHF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f1b44970724cfb5e013b5de190ad898069447ef b/src/libs/libsrtp/fuzzer/corpus/7f1b44970724cfb5e013b5de190ad898069447ef new file mode 100644 index 0000000000000000000000000000000000000000..0a5f0f501fc49bd48a6ed413847f8b47f43afce3 GIT binary patch literal 179 zcma#o%VVgC|MmZWZze~o8Uq;o|Nq~YfuXt@$YEz-u!aaSs&X=L$TBc8Ff?#7Fcg4T z0t`RqFth`ufut~y;sB{^`vxLGnt@7zK!KsUm=TD9h8lx~nSg@v3=9$sK#~7?40)wm o)j-vO|A9o?|CbEanLtS((5Vgt+6>Xl$nd*bJ%NG2u@oc&0GgmHApigX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f21d792b84feb969a588ab8701c3c446025639c b/src/libs/libsrtp/fuzzer/corpus/7f21d792b84feb969a588ab8701c3c446025639c new file mode 100644 index 0000000000000000000000000000000000000000..21d58b4162892c05a1897d0d8ad60176321f4a40 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7uw-C( q31)IKFvv0#&k<rUW?;xk&5KX|ke^pll<&a6zywq)#oz=25JLcwDip&2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f364438e2867951dc144639564bac988e21092f b/src/libs/libsrtp/fuzzer/corpus/7f364438e2867951dc144639564bac988e21092f new file mode 100644 index 0000000000000000000000000000000000000000..0cbe23055770c580cc9259b10b6de573728970d9 GIT binary patch literal 1873 zcmcgtF;2rU6n#!3wUHQ5J26xVQ4vBY6%0(UF?B#3A*xU%IuxOni407r3rFb2A-Dxc zh<Xer!nd8+At9+l5suo%&X4`x`|tmTLp(l&0Or%q<cWT1BuR1wL=nK`0-^<zA6nx9 z*Ep9?0yqwqHvH{JIJ^TPvDkc)^rmuqjpRT<a<L~Lmc9>5E88rTAg~++YnQezMg%It zaUmk0nG^&vLPqrY*x49d*gQ8)e1%%wq~MD1!PuKfyUjHG+M_wg!HPm`bm(GeuW9m; z`X)Li(?nTPxM4myn-0(y#!_lASa3mmJ-;NaXqK4{uNQW|ORsrWZz&F1@!2WT89$bM zs>$YHm$?<#|2yoHO4yP>9BU$GcWJ@Eq+ntau54K76y!YdCs{hHq-&O?kpQf+#4Xic z(^_M5(K}>1+0SwX3d;vKotFAY-}<%EipEHKHMjHoPkyd8hM7__b4n@GG9+DoF>=Lw znf*o77VqGD@m7<S>Tj+Bq^dL^Y?l8t{j>3nx40b#_YUt<E!B*$FFQK*D60#PE`b2# M1Kx;41LT5!0ezPs+W-In literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f4b7b042a57169cd1ae1b289d8c2be8c0e18b91 b/src/libs/libsrtp/fuzzer/corpus/7f4b7b042a57169cd1ae1b289d8c2be8c0e18b91 new file mode 100644 index 0000000000000000000000000000000000000000..f7314f5d90578f282d5cac06f416586f6012f268 GIT binary patch literal 69 zcmbREe?QktKL!x^4@4j!tpMhNh=l5flj004nejk&b#XBRBSUpHW3?BM!_dyqSk0i7 K%JiR=QwsnK9}}?v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f5e9cff3c70bb74434b9a6de050e320da341abc b/src/libs/libsrtp/fuzzer/corpus/7f5e9cff3c70bb74434b9a6de050e320da341abc new file mode 100644 index 0000000000000000000000000000000000000000..45e229162bc59b92d9aa1f6cbbb716d9c3833d2e GIT binary patch literal 1555 zcmd6nJ5B>J5Qcv*E3sRFNJSAXia-=7fgY}aIKtATNC8El!UYl%O2ZM-aR@F#%i|bS zm>Iug2PsM<f>$ehcE_WC#^1Od;O@2sFdkLIdzxt|rOp8<0bxEs-U#!`W9@K(Q}d^f zy2hkLZ>jP67Hw+>*I*@LJXD>L2_KXkcu5U*t*Uf7Oh2q-XA(ptq1dL_sYl;?)D5%; zLMBnByj)3IwmAtNo8c^-{7Wk?l@B3a^s$#Bm!F5RPWw|*Q=+0rVDpoVFUyTQB50&L z6b9y-&Qn!DSA*rNB~YLNRrK*mZOAJPok?L`OuUoWc_S~GE2=A5>M@TA8+i*c{_ADp zH~Ig7i3iUF*X{YN?C#LKS9B%-!8c{=1lD2{>Fx>*;1Y{E@vl){R5lav5lIh8@M_@} Ti+XAH(lk(~fWo&Sw=j<%kUrh# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f65151263c21b92829afbc48720b396735c625c b/src/libs/libsrtp/fuzzer/corpus/7f65151263c21b92829afbc48720b396735c625c new file mode 100644 index 0000000000000000000000000000000000000000..404b70c61360bb33cdd2b1d3242e49e0e0041ed6 GIT binary patch literal 3241 zcmb_f&1+m$6#w0Pblwz{Fe3#EX(v`<sm-*KYL%fFv7#1Y6&J3`GlsDpoKC{Lq}E*M zL`aN6k-AWb42ZapF5S2hEN%+^39jr;2G@>M%RGPQ-1n8qB-Ypi^WMGpo$vFz=ic#8 zBNWOtYhJYlB~E7nYXQS~)xR?5*5S3VQRLWL5h3|FGZKA*SLMiH-|Au>*Tz*6ZESFn z&mu-WW&EhiS6I+7AAY%kM|}=<uwGI|8%)9mh8{hkbKoS<(P17?TQ+DvglV8&ZTR!c zf%v>!ulk1;3x&eFw8(Ip3p2owN`+;*|8l?Gzi42VoJrL6<*L7U>GIrsDY!H@#kgo| zSmMaU#bk&|jjLsFEE4CdiCQ&ISe9i)StNPnsn$GfN$M-WCu=UZ!Y~p1ebD7{Xbi`J z_3PoVq(W(eYb34>Nk&U3GTo0K;&6msdH4>wJDiBN-~<P_092Uto+O<a8Wf-TFY#U6 zIX*FWU-8*5)A+92;q`zOh~r~;EZElgkZWG{kROq{mrvODS@&n7y8GWZu+(2w#q!E_ zEIS7WJ;TsB5LH<ayPecUJ{&G1mrLZ+1p(_R&?wG{C<hj|KI87lR1f%u#UPCt|9Ksx z`%b3j+pm(EwmBc!wjyQreu2pWcgR3-vBp<elt)4)7{?nObgWP?At1Po^|du@Zi;If zN-6f7gMf>9S>?~zKsy0v8M=2SknK*o$Dis|XrYGvlo17^8oqcF^%63khVG$JEOWm~ ze<5#pUK$TAU45#31V<3|LhUj97TygRnnol#c2?-r8dY0B*gbH7TPS=$aY%nj{l%XA zebM>OzLk#}m&E0WDEOVDF@yD`ed*@Tz(e>LPqF3%(v+Gwx8^XSUa*S_O4}#1U9{r# zvDi@;Wi_<esb2aeOfjf`v-XEbNQAe1dq=vn+mul=mO94SOB<BKvh*iXiNEj<8PPV2 ztn}P~?p{c``$A)>xuED88b<htNVL{e?qNR9Ulrgc^tN67`3s;XT|wN<<EYpN(aQk- zPbW0e>K(DuU(CBM&P=9<!3xU$fQ~fyoVj(wbUPhO@m@G{&?zQ@O^KOt2W5Y2L-;w_ z;$!+fJ*LS@6=zW9E@pfG)PG$za)g*ZHMpWyGH}v)Qtj3Byk)K&#Yo})b%(fI2ih!U zgpf$4qTk<gGEBJEM0}IRII|hiJbnTjb^|CkYaf5za_n3D(R|wALnkTOQK}FkLMES6 zgu$MS{n=1|%s9Wg!(JKrc;VXFh)gEMlU;2S&cSnMMJJR^wtN)g#%pgbJyTzppQ~4& zo+jsXSG1F~Ox8;bt#XY%PD+%CuN+vmQ9XUBeQF0Aa;q4_kA2#<+Yq}z#v_?V8-Sx% zZ{GaiIE|&T_n1)NXibVxA_u4Lc)&}x5#HeR!4Y;%r!zjwlknI5{ZM}_TZcUWg}PO$ zrw~h$U(xj}P);RP{db@^rFKf*yG9lRB`RX~Pk0U}hn@YwKrvbm47dUN$CADQD+Lr1 wRqYh<4CJ;f$)%4wa8HQeo0QQ@jdXT7w0S+-3<Xv9Ma9fjpYprQW&V=j9~W5WeE<Le literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7f94db37978e3d1cba15f6b340849c815ae12f7a b/src/libs/libsrtp/fuzzer/corpus/7f94db37978e3d1cba15f6b340849c815ae12f7a new file mode 100644 index 0000000000000000000000000000000000000000..2f2a185f3ada9b3646252fda3c396f9b170b43af GIT binary patch literal 145 zcmdl#;Xl{Qm(>gm4FCQ+NC7DzU@TT(0E#d&FvRQSF_gpug^DscQtQEz3=IFL0vXj1 z1q|8oWr<*=K)xY^9s@&hPHAd<08rKc|Gp4qP__cHmiPirhKmd@!6tGtFvx-|t1h0y H%fJ8t8!I8B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7fe5b833a6002dcc0a33f9ae66a8b4c74f87eeaf b/src/libs/libsrtp/fuzzer/corpus/7fe5b833a6002dcc0a33f9ae66a8b4c74f87eeaf new file mode 100644 index 0000000000000000000000000000000000000000..a624f2cf41845cf0878f69576d1346a3fbeec781 GIT binary patch literal 36 acmdOmk58><WWWHTRV>z}#i{W?2{iyvxCC(k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ff692f4166d9dbf92e3830324ee54b52dba2cfd b/src/libs/libsrtp/fuzzer/corpus/7ff692f4166d9dbf92e3830324ee54b52dba2cfd new file mode 100644 index 0000000000000000000000000000000000000000..09c94ed515a92b9d70e262be0dc121f9e6b10fb6 GIT binary patch literal 120 zcmdl#@jus#m(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!_1j8X5O5M1RyFDK#Hn? gD!|(7z<NMJ3~KKgiWwOEVPF%OaUMv5OsiH00H;?X_W%F@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/7ff77956a3160d1ad80a039dd981553a82e09e6b b/src/libs/libsrtp/fuzzer/corpus/7ff77956a3160d1ad80a039dd981553a82e09e6b new file mode 100644 index 0000000000000000000000000000000000000000..089c75756e37409cb00d9670c625ea39d6373059 GIT binary patch literal 69 zcmXSpude54XV9x=_+8(^@Z<0ImX!=EfuK^Snt_3d0SWy3|NlRX%iPYOR{fuyp}M8o I(Q#iU08Ta*F#rGn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/801e9ccd13573640ccdc8f0b36b75b51019fb950 b/src/libs/libsrtp/fuzzer/corpus/801e9ccd13573640ccdc8f0b36b75b51019fb950 new file mode 100644 index 0000000000000000000000000000000000000000..cb4b13f3079f9deeb9c367b140c87cf02193d742 GIT binary patch literal 407 zcmbtPu}T9$5Pcg1w}AwVS1BA=1dAYNBOwq13TXxZ;1Jp3AX?lJEf&1WTw{}dJO3zO zU~6lU!XoRNz0)6XVCU_;dGmHBRlqz0P~_TFM27!{wKtwOHes@-&Y{pvetq)?wv@)P zknb}lhdL%`A=W#lN?}Y86{A3Ibk%4YX5@%n=m}>Oq7PO+i226(oE5O)`%&?rReE8c z-Qa$8w_2LeK~0brdR-)F1(*U$^O*e!Z*4h*{Q~TkM<%&NFOmt?m+mN-#Wj@UClXej qz%ccHFV`=NHWc>$>ZIY%b|`76AiLAFFu6vB;CKo;;(z<$)BXSvWkN{+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/80212c71e8c6f8efe86c4393414aaeb677c7dca2 b/src/libs/libsrtp/fuzzer/corpus/80212c71e8c6f8efe86c4393414aaeb677c7dca2 new file mode 100644 index 0000000000000000000000000000000000000000..96995c9ee93a93cf00027e62b9d5d09d7d2c7be5 GIT binary patch literal 101 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+oq@pyBxJzQ i@DeP=$-p2BR0ouv!^`jws1*eA^Gb^H?ZNUuL#hFHR2ee> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8045c1c468387f52dfbc9bcf24be5692627cdd5b b/src/libs/libsrtp/fuzzer/corpus/8045c1c468387f52dfbc9bcf24be5692627cdd5b new file mode 100644 index 0000000000000000000000000000000000000000..08ce513b1bbeec822a10f65d9a998eaea1248980 GIT binary patch literal 39 hcmXS9U|?Vb;_7OhY8Z%i{0$TU3W@?n41oA)CIHjD3~vAc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/806f296a2c91af5ba074714eecf21e6d850b1afc b/src/libs/libsrtp/fuzzer/corpus/806f296a2c91af5ba074714eecf21e6d850b1afc new file mode 100644 index 0000000000000000000000000000000000000000..264ae059012964594baeefeebbfe8fc1b5b8dcaf GIT binary patch literal 614 zcma!N6k{lfXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJ& z0R`qTv_nW?AjJVv(e@2U{1*Z-K>%!aXKE%#JwrQKO%=#^khu;lU<E(|&0_m(kj)Ap zo2SeJN`nCl&@F5YKqkVSj6f%<Lu47Of%HG1!T*7706GoGV;o3#f<q`?FOPu-<h~h* gpk?p{y73<<Xn~Fdg~uQYPs-w57cJtE{LJ7B0Ni$KcK`qY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/808cf56bd306ff3c1e886a5950f953eda3514777 b/src/libs/libsrtp/fuzzer/corpus/808cf56bd306ff3c1e886a5950f953eda3514777 new file mode 100644 index 0000000000000000000000000000000000000000..8d5988fa699b20babf6af197baa990e0095acb95 GIT binary patch literal 113 zcmdl#@jutgm(>g);2;I27!(*7ih&}GARdsY{>;db4dXK~?4S4-s)L1LKUfV|7mAKz SMuuvL4yZmLRb34dWdH!(xf6i^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/813c78fcd5c38bc6f770616a33e76f7ef08d3231 b/src/libs/libsrtp/fuzzer/corpus/813c78fcd5c38bc6f770616a33e76f7ef08d3231 new file mode 100644 index 0000000000000000000000000000000000000000..5cdda7304810bb3d929060fd1c8f6edcc62b6bf8 GIT binary patch literal 73 zcmXSpude54XV9x=_+8(^00o{aS61p&GcYj01VHq^|NsBP_{{ALjMe|y8LC^V9Ub@S JGBRjn0sw;t5kLR{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/815656d073ddeaed4b951541ab59e054a248aa04 b/src/libs/libsrtp/fuzzer/corpus/815656d073ddeaed4b951541ab59e054a248aa04 new file mode 100644 index 0000000000000000000000000000000000000000..7776607ee5cd54560b4f09d2c1f59587589dde2f GIT binary patch literal 78 zcmaz~&aWzoXZZEMD3c?#o&gO0|Nrj`VKIm@81#VvS8=>Sra^Uee0=5~RK<xoIr$(B IK<&q>0UpX68vp<R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81737015d0a8c3794cb59c21478145c97648cbc7 b/src/libs/libsrtp/fuzzer/corpus/81737015d0a8c3794cb59c21478145c97648cbc7 new file mode 100644 index 0000000000000000000000000000000000000000..6a420687e9f230d0960188cb6cbbd18a4661ea19 GIT binary patch literal 139 zcma#o%VQ{sXJB9~O8sw~$p8lb|Nr-8V5qJJiozN43`_zb$=06#%+<w=40D8l90dm9 zb_NEOIY1^0gE|8T10w_b10d)Be;@$@i><+w03(Ph2I-mje?QmDm(>Rkf+ZM$b^vW+ Ja0S{{4FG0T9v%Py literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/817a8ca197fdb664759d1f27d2001875926f682b b/src/libs/libsrtp/fuzzer/corpus/817a8ca197fdb664759d1f27d2001875926f682b new file mode 100644 index 0000000000000000000000000000000000000000..12b7d653c8a440410bdf77a2b988c0ddfcd3f23c GIT binary patch literal 219 zcmazSWME*32jZesj`~a>4Fv!H|Mz8JsIF#UU<C6aBm+NK1}KRHs*4#JJ^>X~SF3}S zGB8*}X$DRP23d$`@tjPCP6(*!?1WhJ4IcoSH6ILs1_LbsV@wM;7&t(7DKIdw04WF$ K$bo=^2Gs!VfJjmR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81a2292134efba059d371e783a777d1be421c638 b/src/libs/libsrtp/fuzzer/corpus/81a2292134efba059d371e783a777d1be421c638 new file mode 100644 index 0000000000000000000000000000000000000000..070f0fb7e8fdd12e4ead378e138d724eca7afee6 GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8d$)|z#+@P$iUD5WHEqP z0t`RqFth_z07+p6Z?IAZgKx|X4E11k6~rKhdJcwEhRh<Mn*R({3>^RGLI4AUV)1{* P|9^p2rKEz40Rj#H-f<$~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81a5601ccda21f25bab65ca370ab6cad3267060e b/src/libs/libsrtp/fuzzer/corpus/81a5601ccda21f25bab65ca370ab6cad3267060e new file mode 100644 index 0000000000000000000000000000000000000000..5eefdc971159e07ef47fb8eb6b5568d9313f217c GIT binary patch literal 733 zcmbtSu}T9$5Pcg1CKf>qL=XaJu&_~tXr+M&+5}=Fq>~szz(7#Roz;R`1ho<@#aQ?g zYL(z8h_>422QGq|_3dWk87+OsF*~y}^WNMXR8FZPfO<7jIie+$QhBr=)mWz^>Go81 z%EUt{A1)(;-b=`Y0GYkCDB}U}io3vky?S=TW-BIV*=CC9D3VZbkPFQT6N{e$%?L!2 zo{HKuV^$B>EJVPMOu!G3TVtkJH)#jb{cgFj=`Ggw%B5OmDNUtmUw0?W3^Ia&@MFd# zf;vjU_-xDXLU6_{T_WZT2mWxFT(o|5BS-ANIFI%C`89?+X*oaWfcAy*6Nv^Bec1iL z(W_I4>ILx?(uLF;B;NZ5_{g|ds`ZL#8{pobhpCJgj`QC2%vW`w7d6vlB#a0jF=>lS zp5yTt{5z!2Q>cUjIwRY>vwPtQYIPY!t&k8w4Mp!%YWpm@wYVP~w9WQe#Wjh|Skl$= Z5u<m7!pRc{{_HjyCgM=D9E_hzeF57{pJD(2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81c14769b1687e311ca6817e0e884fb5e7aa4f00 b/src/libs/libsrtp/fuzzer/corpus/81c14769b1687e311ca6817e0e884fb5e7aa4f00 new file mode 100644 index 0000000000000000000000000000000000000000..713409afeb176ff2596bfd5da84adc9a06570b0f GIT binary patch literal 234 zcma#o%VV&OXJB9~O8qaK$p8lb|Nr-8U?{EzivIU4%H&9`M;5OJi30_)<I56rN>k$t zI2jmZ!6J*T!RiD+vOj(`6weU?GOD5G09hc7vJ6ZDAXTkB409OT(-}adFp$qt0(1le rQI;_<Fy%8az$^pX46&>XWHAt^g9xCjsu^V0Ffg<;FeK;4S7`tMJAX1} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81d264f99ba15235fb41af077433ee0e5cbcfce9 b/src/libs/libsrtp/fuzzer/corpus/81d264f99ba15235fb41af077433ee0e5cbcfce9 new file mode 100644 index 0000000000000000000000000000000000000000..f9127244e35c1ce07f21d8a00f6e2a00ce74e897 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0AmvA;7gC>Ap^R6E4ZoH_F*5W@jb#d(kl q1qOy{pbCU`HHh|jgY4?+>f+S+>dgQD{{vNk08@UoHRJ#P3=9Blx+hQo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81d2a20eae4d639dd5ba25e52e6da04e85da2416 b/src/libs/libsrtp/fuzzer/corpus/81d2a20eae4d639dd5ba25e52e6da04e85da2416 new file mode 100644 index 0000000000000000000000000000000000000000..bc1d34b8c2e4a9389ecaaeb36f1e3b190e65216f GIT binary patch literal 80 zcmdl#@jutgm(>gm4FCQ+NC7DzP$+g_0E#ez*g&GXn316x#s`TpNP`4e85q1k9H0yW GRRaLn9u9W^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/81d74e228936cabbc6c47467e4640c77c5d4906f b/src/libs/libsrtp/fuzzer/corpus/81d74e228936cabbc6c47467e4640c77c5d4906f new file mode 100644 index 0000000000000000000000000000000000000000..ec0c2f7b8e12fc41009b09c3de535d9feb31dbdd GIT binary patch literal 246 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@`(?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria56B+GO&Wg=P<NGNU$c5NZU6c@m~nU1c8!xAkmqcsZ-AYHTXZ!WORd} c&H|c-ZVm_76l~^z9Eh-=fdQ@)sCW(o0F@Om<NyEw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/822f001dc348d448ee53ae991b94fc9c4b4570fb b/src/libs/libsrtp/fuzzer/corpus/822f001dc348d448ee53ae991b94fc9c4b4570fb new file mode 100644 index 0000000000000000000000000000000000000000..647caa842ec65ba0cb934b515456f00365e107ff GIT binary patch literal 469 zcmcIgu?oUK41Gn#R1rjRa40xA`w9Ml-%vW-a9e4&UZLHJW5Kas=m&_CF}Xu<w1Wqi z%jLZ!FG+ccIt5TzGDmskyqGUIJ16ek2QqJgRe}g;^B7QXjpu+)FtJ<AKuSA3gwlir z)<W_l7}!EMj0(gYP;Xrs!Ig(L&ObGIfV8Gw;cN=tsB@QlQ<+y|sX?bfs=z!Eu|U6I dRW^?PEr0)${J%HQ{ft|yA9*J^y0$RCOWrI7Yajps literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/823dc6449bb0e35a9cbe57f4fddde5f150e0431c b/src/libs/libsrtp/fuzzer/corpus/823dc6449bb0e35a9cbe57f4fddde5f150e0431c new file mode 100644 index 0000000000000000000000000000000000000000..29405f3c4601a8ac948678eb48e82aa453283eb4 GIT binary patch literal 135 zcmZQz*w6LyWi<mBFfuT(s{e-o5e8<40w##~OE(~Ri3|$#TN!16%7F+7s*4%9fS92g w2!Vjff`JXhvIesA7#KJi7~C0Tfl5u=d*%oMX`s@0peB$~hHp$Q+t?YZ0e<%-1ONa4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/827264583bc9d8cbbe4459306f2955a8924a1b16 b/src/libs/libsrtp/fuzzer/corpus/827264583bc9d8cbbe4459306f2955a8924a1b16 new file mode 100644 index 0000000000000000000000000000000000000000..ec050bc997637b4986cc3f6fe684d583a9a502f7 GIT binary patch literal 172 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#$9fGBC*DmNNLp z%)n3&R#ycvh@qZ?A(bJss9l)hKSLD*$N&Efj!X<lW->A`G;kI$Fvv16G6*pIm;<t! O11QJ<<io)d1`Yr}!5@?W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/829194fd1fe674b4ef21af7c2de69dbbc5419e2b b/src/libs/libsrtp/fuzzer/corpus/829194fd1fe674b4ef21af7c2de69dbbc5419e2b new file mode 100644 index 0000000000000000000000000000000000000000..b333f99059f05981d287f15036217d89233ce07f GIT binary patch literal 70 zcmbREe?QmDm(>hF@b~|HhW}t7sQ}`GK|*!I$!QFk@gPohF(U+5djUBNjMWTUsjTsF H{~5FZ^PCsP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/83295e9beb965d51bca434999f90b4dd3088ea90 b/src/libs/libsrtp/fuzzer/corpus/83295e9beb965d51bca434999f90b4dd3088ea90 new file mode 100644 index 0000000000000000000000000000000000000000..b5d6472a03a102259c0ad3cd89aa8aa37531ab2e GIT binary patch literal 69 zcmXSpude54XV9x=_+8(^@b~X`1_<!dsb*kcf^xvrzyJUL!}!eY42;$P*%_)^svY-l G$piq5xDtf` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/832ce48d3ac1c9d187e9376e203e2abf3c2bfe83 b/src/libs/libsrtp/fuzzer/corpus/832ce48d3ac1c9d187e9376e203e2abf3c2bfe83 new file mode 100644 index 0000000000000000000000000000000000000000..4d2dc9ea1cfdc4d5ece10781d3123a93103ee097 GIT binary patch literal 169 zcmb<s00K@123ZD11`Y<s|Go?i)zu7)jPeXj0zjGn)y0eqU|g*ZQpwQ3U=5}bL}JdA z&i}>LK!NIFJ^kXMk^<ed(yFS|BB+v=w$&iOz`%si!@%(G|Ns9`{{D%7xn91khS>xZ W{rBHN3P>pc-2^mr4g-TQBMShE0wcNr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8343f308867a510c80663a1cc5d6d9f5faaa2e4f b/src/libs/libsrtp/fuzzer/corpus/8343f308867a510c80663a1cc5d6d9f5faaa2e4f new file mode 100644 index 0000000000000000000000000000000000000000..cee7311ceab8bd182a1b0d46959dd7ddaa3912a2 GIT binary patch literal 1662 zcmc&#K}!Nb7=5!X>@E~o-U6{CiYTq1OB593p-a?1kcd49*1=5z=isH1z@Ol)Q@^0U z<F#uC>D2UQ$5B}+NsB(&otbaH`Mx(Z?~SDb>Nh0-)v_Np*wU0zr+}1zFb>E_n1?<c zaE5*JC66FL(?xDVd+0JxL!i#a7ORG39}P6q^!as-<^*`WQ_2P`NAl1_J1K0o<jj4f z`qP(FfCJpOl(WDDOGr1_c-1Q(fr|`8VN2e&=dcG<!t2sy?V?r*8F4P7dB``eTR(JY z3p_moc-?L5WQdcseTWSEtU_ZsyIpx<_bteR&}b@M)(ty}4Km&_Z!TTi?3gfov;8V( zG4;WT9yp84!iNwq@v*x$g7C+d{*!=FX#G_f@GEWBb>Z_T;B`27?=e7bkg9Tx9&J6E zn!)t%vAB?o_+L&uCs=2O({duYMkJ{<dODsmf*n1b56y5NMrT8rD6gy*7lk|{udMX( zbl_%UT{~LWEEEfKCl+R}Ebp$tvWKWV0qn0y^((Nqzl6;NOoUvE!0V9cKSs_uJP32| z50Ms54#*y-20OYw=;lg=Yv_LuQ4I$-oyk%x76m@k(IOMmR=bFJs|uq?ty^uMk5c$1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8357c65dfa723f993a7adc4435dab2e869fb6385 b/src/libs/libsrtp/fuzzer/corpus/8357c65dfa723f993a7adc4435dab2e869fb6385 new file mode 100644 index 0000000000000000000000000000000000000000..cee001430d6c52b088715c9f06937df84ab5e344 GIT binary patch literal 160 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bOg1_nk3cOa8tUNIv>HBc2JP#8=`gBd_J z1VO|>YzS*2P!EvB!0`Y7|5#t3Fi?u|zne8k2n0A87-YeQ70(f3V3@<fz@V#}m;VbW UGbcW|G(MF<h>@|HVNL@B0DXBLRR910 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8368128be7299499d47fd820a33e22ba03f0f346 b/src/libs/libsrtp/fuzzer/corpus/8368128be7299499d47fd820a33e22ba03f0f346 new file mode 100644 index 0000000000000000000000000000000000000000..b2e467b872e0d732ac865a7a76d21b1081d8e3c3 GIT binary patch literal 84 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYj01VHq^|NsBP_{{ALjMe|y8LC^VfubP5 KAO@4u$OHhBHWuLk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/836e8a86b74d983f2ebdf44ccf89aafb43be6728 b/src/libs/libsrtp/fuzzer/corpus/836e8a86b74d983f2ebdf44ccf89aafb43be6728 new file mode 100644 index 0000000000000000000000000000000000000000..0d22d1c566214cea2cb11d00b56d54d26cf67190 GIT binary patch literal 440 zcmb7Av1$TA6r2^o(=t{Hf{L}INT-5=HiBvL0au8HAR>3BT2MP}ErZwC_z71U@(;Gj zXM}*_%j~*{DN;DiW9QAzdv73J5g$M>^agWQLPUCaUrPp|1{9gkglz!2`R35a2Qc-= zKs6Yyw)|SRnwnFpbP5H?5A<X7V7crPh&-qQUy^n*TUxWWgTh&wc|)eq_`c4E>bA+L zj+MRY@M`(|GJP5Wr$)Gu{TE6U=@6QG8yqj?rfUeEdbmAxL3zB34JPhT`-l~j_=}uv r>|%~d(#ft-M7BC+6qi|dxc_6um?{y?lJMx;1IlFv58rK~0>k_Qa4mxf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/838fb7515c42cc990117fc4cd9aee4e5e5902901 b/src/libs/libsrtp/fuzzer/corpus/838fb7515c42cc990117fc4cd9aee4e5e5902901 new file mode 100644 index 0000000000000000000000000000000000000000..de2d55c4e1aae31325f4b0e528fa897f139d15cb GIT binary patch literal 97 zcma#o%VQ{sXL!J1$H2f)55z$5|Nnnq28QZtb_Pa>07G>#BLp-2XHaEetOg2OL#4DC ZWMml_N~=5P2!Ta}dl(qzK;?i`H2|S|5Geov literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/839bd7f3087b6ef97eb403ad8f9c50dde6113033 b/src/libs/libsrtp/fuzzer/corpus/839bd7f3087b6ef97eb403ad8f9c50dde6113033 new file mode 100644 index 0000000000000000000000000000000000000000..6b065d3f8560d31d7339efb20ac12bb7605cfc3f GIT binary patch literal 1120 zcmcIkJ5Iwu5Pf4TVRwjBDIz0;MS+OuL%{_Q+`v_e6iE@N*dkSwh9jiQA#xi;%MGYl z-hS{p-b9E*tmV(V*`0ke^VU@#FV7W#=_nh{_~y`B-vdek;sB^8aW^qD;Q<5ZxkjF2 zk>dRDQS~P<Ok_ILoskP4n3Of80$t~fo|h4_A7Hc2{MtZ48WfTfx?3crtY_o}><olV zS_RsV*{)Ts;7v31@)!E7ysT~8Q;F&C40Ew0sT3J6!SOqdPp=zwMbW56QwCowre<M# zR#<hl1PKbTqVrdMq{cs@!|FEeoigBA(pdo9Xlbk)c*|@{orYu&p-s|TX&asYGwqOo z|N4lK?Z977%$vz?Q?bmKeJ1)Cxs<XyRzbdX|4YpSI6;>u^={*zVS@PKd!Dn?-)bDG A!~g&Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/83aaf656c9cec31abf1df18e5901a4c1ec514d1d b/src/libs/libsrtp/fuzzer/corpus/83aaf656c9cec31abf1df18e5901a4c1ec514d1d new file mode 100644 index 0000000000000000000000000000000000000000..36babecdcf62449c96513c10f879cec38e8953f5 GIT binary patch literal 1125 zcmd5*F%H5o47^NKFtT;vE!`N{So4fbkO_%@@e5X181exYB*Mi`A|XYcD5_PtmSe}4 zvwgvC8G;A!d=EWVG$<QK<qeg=HaWaA@Qk8MwH1SQ`t<D8JS#al6nK=d>S<mYM-!Q1 zwYKUh5D=dtt3VTU^&X^bK`{EHt5C$yD3aKm1HbikP4*{gX)XChXkmFCE%kXB5PM*# z&FVM`i#zs!b}_E=KgJs;mGa+}Q3h-4lv!KmF`fQuBl5tPs~a034TKNm;pk3zL(W2q G0_i>gNVfU_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/83ac3bf8271f06e6990d9712e32c62c014c91aad b/src/libs/libsrtp/fuzzer/corpus/83ac3bf8271f06e6990d9712e32c62c014c91aad new file mode 100644 index 0000000000000000000000000000000000000000..769c2778020a0310040af5d03ebc206a55518c1a GIT binary patch literal 320 zcmZ`#K?(vf44hTLuBXDD^`=Mh2jT;KLs96VD6%Yi*%h`oKjA(~Z+=9?OH7ItSu{|Z z%p{p4X1c@C04SWY6aLwVXbDsmyZr#Hwg+qSbgqUW1V(KNA8K~*-cX0UQW`ypyn=-* zP8kR#6cH93yn9Mv0{Aos#M5}3MOrZk44UT0OkSw3dI^EHFhjKnU;ha6;(J+~Z7d_m Y>zRnIEoCl{@f;h@h<CY2zJ^Zl0wqF7EdT%j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/83c2c8e8d2dab3587107b564be2bfdf77239439e b/src/libs/libsrtp/fuzzer/corpus/83c2c8e8d2dab3587107b564be2bfdf77239439e new file mode 100644 index 0000000000000000000000000000000000000000..72feef0bd902cbd81523af4b2c7ea03afefbeb39 GIT binary patch literal 2219 zcmbVN&ud&&6#iaP=$oieGel6dPNbyJ+Nf<1p(rDyD1vk;MCG-FM;RJpnb%Rs1t*Kv zB6ib_qRdX{pAf-?ZC2t&A-HiXC<HfdOxz^b?>qP2nU_iH!ZX8t_nmw0`SG0}55SAp z`vAI~ywsEAUq2r<Km&LN8Q`ji%S=Y$-Q6TRm^RiRX}Q(pE~grjH2Uwgn*hXrRQqTt z@dL}&CT;=6{3>28fNW_g998q^XXmtkMT@)P^q^=KHrz+iOG~0|>6>o7vxFbNpayTk za)sokF{q-eGzHt{z}W`cjQ!!@Ozw_@WBRz1AyiC9K*c{hF8sR=M^L{sf_e<TB=fjj zy8oNs|NOA!vj3n<L|8T$uE%!-CPT|Ou9{;;GdOqB-oXUr{84ToxOIc{ldS{%z$f`h zM%;B`22A4}6XEFtWF%J6t)UDx6Woy=zi+Az$Vks2GS|s<+_=RI`@a2D5SrUTWvA!) zevDOIc5?J#V6@Pr#S<a5M{tS~F)v+ouH=1r66n(%KKmKgg2?g6)??xrp1<uTZ&rjP z-kzl$B75_;pHQ6#Gr-aA2RRx?)C2P`xQ_>qVF6gdbIC)BQh~wV{wmTkHi7HKsw|1v zgukdPNZ$LmvEFysD1b}%?{0{$g^a>p(sFl0nk^P-FZ{*OE2{ZUP1#?D6tx<T*|UmG zhA#R^-HY^%kR+C3oTjLB59<WskVlP)(Co;@6%Gi@A%(4=P@3IoQ@G$N3#Juv6f2QY zkBBa8zPGvgEit-4Kk5@o;Dj*Hl2YQTlK!&h>ekj46M#Q!GmK?%4*qJf{NY-UsPb>r z?UXA;Djh3|RVIZ;HH*05@A=oJwzugBc82wbKaR5x;DlC&H@L>e3dy$hUGi#wipJNd zY%divvZO4(Q&(o4`risers&51b3yT_xq@%0%95XfA5G9{6^lwoVd$38jIGJ<$mFT3 zn9!80;fBR`?~adfj@r52ES#>hioE?ko8{NkF?!PE&oa=WeM;=>>k#wxL^K@QXRJap z&I&q|owT~=hc5{q8oe4EgA+V%l*LDvtCe0^Tq~w5;3@UK(K^>Ao(?Z@Z3z<jlq#ey z?1(P~NKcMcm-oe~VGN`1umSgvD13w$Y_5H>7^!9k!$C;x*;|WR_e`wkG+#+$Lr$y% zHJ`5uv^RmzZg|fO8_ibkYgI)Ugf{d>y**3zBWUy5fk7zg?Y~(kLsA-@Tkc)%t&}>Q j>E~z85aPMgZM&DnA<{=VP&kbE1&<{)<FLnjSJV5y>KUN| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/83ceb37e0911c1ea340cfe06aae96c9792c0ee2d b/src/libs/libsrtp/fuzzer/corpus/83ceb37e0911c1ea340cfe06aae96c9792c0ee2d new file mode 100644 index 0000000000000000000000000000000000000000..d2539ce54ffea1ef12265762e6c20676977c98a7 GIT binary patch literal 2240 zcmdT`&r4KM6#ibL&YRpwV^D!)kz-Ob83rK+PT-;h(Y?@1;z0vq(>yiwf-{jMErUP; zY17JoKw9O05H!11Nzh_wZ-U|NJLkPOzA=|A^f33mckem({P@l}_s$~#Qy$<{e48zC zLbBHO0fFJFodAq{T*k&ZvU-tS1FmiGvkflXc8l~5C)Q#DMUh0B1DKgz@V)ZB{rv+@ z8nto;=z)VS>}`M=z-JciR6+gyvVk-VG%$vRz@J>?e!9_(6xW|TtCVl$=>$9rcbUf0 zj&3;ea19JSOgZW@eLNF7Z_H8@1-U{d$Z=5Y1x?=rUSbe=8X$R`&nNKMerwM*8WPum zEnZR)T;1&tOymJyS430sJ?Wb~ViME@Fp}6huq&L4itbPga=QrN5rJXaL#5>U)sVx$ zG33;A|D^DQI^|Kp))sv{n8U??_r$3RZAL+^6N?z%dcA&!N`4{JrOAM~|6q<O0WKJ^ z8Pd2RjhQ|afx@`1Wl;ZGC={-9B#5l@=8Hh%dy6wFs1FAn&3tnqk#A_e@p_lbR?109 z;Km!j<W^Y|$5xp`??R%a7JwzRQi2gBp(6~VTC(K%-n$R64B;$y)F6fE73MU_1U-Dm z)`@MQH4(>xDg_pUdQys3vZhoLICCtmz#A;t0rtQ`66&}U6_&%ekA<}fojW8&95xY+ zNIL=39P;CE5{Mqj1=&0&So-N5s$2hW6ct1^t_*og!=2`0Y(mE{TDsyy*5%%J#eVe^ z9H!y918M%xQnL|#9MO+1Jxus%ZX9;@A5P=Qn$6BOXy7sL#z;YGAJtbpGn&UqGK0Xw z&dsHp2F`8ps-s!<VtA!hSAnX#+%}SP)SKt@zzk^P8sn9EMZJQXP1&awvwj)<CeK!q zMX1uBO<Ine!M3$4WY2p+l}qtCCii$oBIFq5OE11EYRIE3fUHriT+L)8wzb5x5?Y|` zPZXm*Q75Fj0;hI(9NtYp-4jYqQ?B_FfPsCTQ%eg^^@gI<J;nb4yjS=)A__2=)^jXt K)LZdk6Zi`)#{EwK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/83ff6a97a76379dbc705cb2a649dcafd3ec5800e b/src/libs/libsrtp/fuzzer/corpus/83ff6a97a76379dbc705cb2a649dcafd3ec5800e new file mode 100644 index 0000000000000000000000000000000000000000..a019202d11a1ed0d252e76862b575103c1445976 GIT binary patch literal 211 zcmY+9F%AMT3<M{DL`uZfNRdEXPYZv!M+7R@h=wOz#~*0<3g4g#YYYWj*zsnxaj2L< zO-X%CX#ef(U_}C}<MQKm7szmTp_}eUS``M501FOoMmaO_S>*hwp*2NqBlPqa>L@Qq grQ*e9nTc8I7e1V?ZK`LApIx_DbKt;n&=10eH<nKw-2eap literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84169541dea42a9ead48a05467c87e476da5a423 b/src/libs/libsrtp/fuzzer/corpus/84169541dea42a9ead48a05467c87e476da5a423 new file mode 100644 index 0000000000000000000000000000000000000000..1c1e3af14094408c81944c43144d10a77cdb6ac6 GIT binary patch literal 108 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6Y9;PcohdEL&a72ozHXt6*TT2Garz g44gnlh4CCAs5k?IFatxv0fv~zb2u27;DTTV06%>YGynhq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84269ef122300aff914d44e874fd289d71952537 b/src/libs/libsrtp/fuzzer/corpus/84269ef122300aff914d44e874fd289d71952537 new file mode 100644 index 0000000000000000000000000000000000000000..7b4541a8df931b95a9586be8ebd31a9a63176272 GIT binary patch literal 165 zcmazK&toWwXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_z*$>R*IJ^z`jiy0v*85kB@ z!&o?I0gzHz21W+c>f$*<3=9ek48rXU40C{@EDRh#$jHF{0LTGa3If9at04?9S^b}p I;o!k)0E}HK>;M1& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/843ad218f56b25a9a65e912c5ae5087c051820ec b/src/libs/libsrtp/fuzzer/corpus/843ad218f56b25a9a65e912c5ae5087c051820ec new file mode 100644 index 0000000000000000000000000000000000000000..4584e00fa53132ea39e4ad19ece3327731cf7639 GIT binary patch literal 461 zcmbV|F-rqM5QV=H!AlAWS}6p?!cGx_HZ}>wCSV$CIYPMNASm3$YC-L^wG`6$M-+dK zf8b)3advNs7&~9FvopMTZ)VVeY6=v2lHFT0sOkmp&)WQ~bJln3&wfSeKrHL|*Oh|n zzC?`qfN6RSM@9bh8pYr&sz_slw(^BLo^6HN_9M&^q-~itA}xg8T|YutXgB&F%$NSi zpl?h$542lXE+vPT)6>b#cr?jQIyPgc^6G}5;S$#Bln0BBpFSIf7H`!Yu^q2GOAdnv oe>@_0Ma?`m|A&R0+~aq*A7RB}&no`>kW!GdlVqy4Q48#T-=(!tJ^%m! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/843c395d632a4a7d2ef57d3cdd2f56d26f7e4f99 b/src/libs/libsrtp/fuzzer/corpus/843c395d632a4a7d2ef57d3cdd2f56d26f7e4f99 new file mode 100644 index 0000000000000000000000000000000000000000..3e4517b099e345c8cd8271e358c37c40a595b87b GIT binary patch literal 112 zcma$5m&YI(&%nS?l*y4=52S(M&;S3v3=GxP3=E763Sg1yVl{^9;^{y!bugcS;nJl` wCP3zE22KVBS)e+g^c*1uV}}3P@yYpBr9cxwhJrv*W@;W#EUzR#hk=0!0N_d*kN^Mx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84697aacc5b9d17211b3209c1d2a1ffccf66104d b/src/libs/libsrtp/fuzzer/corpus/84697aacc5b9d17211b3209c1d2a1ffccf66104d new file mode 100644 index 0000000000000000000000000000000000000000..130f222070e4ffd864ce41589db79cfd836c55e4 GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilMuX~NMz9#eS1<s{Fj)hM jJP?c1ok<p`+MvB>ju4Ort7QNh00iF<su&mo85kS^VK5k4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84aa29d9f1c07ed0fce2749b0d6c3ad91d091d72 b/src/libs/libsrtp/fuzzer/corpus/84aa29d9f1c07ed0fce2749b0d6c3ad91d091d72 new file mode 100644 index 0000000000000000000000000000000000000000..32babcc9d824ad697286235a599191530cc40888 GIT binary patch literal 102 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tIs-!kNXP_; pUxOH&3=Fai#dCxhj2RemQYC;QdGX2lc_l^pISdR;AQgugssUo_6q^75 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84c3b7c1bed5e7bec706d1bc9491ec333cdc14cf b/src/libs/libsrtp/fuzzer/corpus/84c3b7c1bed5e7bec706d1bc9491ec333cdc14cf new file mode 100644 index 0000000000000000000000000000000000000000..e270c9a7a2f03199d7ac50a397a27746b22b5f75 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Ll!8)Rtsb? zfLK7#&cHASgxZCH91f63+czNbpHT?J1_H3zovE1|^-wicAmc%LK|0{Tk%3_u0Je-7 Aga7~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84d9ee97e80792f722cf3752a050e357a2c73fd9 b/src/libs/libsrtp/fuzzer/corpus/84d9ee97e80792f722cf3752a050e357a2c73fd9 new file mode 100644 index 0000000000000000000000000000000000000000..a48813ca3c4b53d710feddc8339404cac9f31039 GIT binary patch literal 108 zcma#oD_|&zXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&HNJq8fk751^baTx c0wASx7}_DEFp%N^iGamWc)5u=IUw<B06R$<ZU6uP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84e0972b0da768a23fd43d01322ec552c1635ad4 b/src/libs/libsrtp/fuzzer/corpus/84e0972b0da768a23fd43d01322ec552c1635ad4 new file mode 100644 index 0000000000000000000000000000000000000000..f417217f36a2c9ccdba0e1643545d7e267840d51 GIT binary patch literal 1138 zcmbVL&1w`u5dM01Arrw%Mm#8z0fhx6fn4?Co&?2%4<LgqqYUou#F<?Wwy;5ht4HxV zS6?H+H;_C*4)Ktaw^b0g{i<tboEW@VyHnlO_1FDX)$TfQ4Wv8`lDTXE=iEcUTEOT5 zY+>}XeSdPXcc;?8`=7JhD5#GRE`S>)w><<13<E38Y*D5f!Tmg!?1hnZRVv``R5Lo3 zU}PL%5poG6(%U7OW8AAEVL%ho1Ia6!NEkLeC!5A(?|B(hg?J^emS=o1=&4zF!VuMk zn?(cs1FA%#0xzEkZ(N*6c;mTq-@I5$PL-mw)s}vL(C>~JZ8S^b-5TdTu?<)m!LWJH zf4$6?M_@WwelKEc1*i@l5qhPwa+H>s?@M-)pifV!Z|S?_dCXS}e(ahZYy*YdTCCPT zZ%-8OJbgzCeIK^ACRse371L}SC)#OwdYKNM+8{*riMxa@_rokd{P63-=_ylT>F!?f zdhF@qFJW+xiLU#$r4_R_oSWva=Zz?u!><fucq9wIMrm$$_0+c$n!eX6NE<HjsjQS8 zaj$8$2D@(ugZoDT`l-a%EVZ7M)ho8^d8X?h2U2bl4Lkg`XhozdQ9*f4X;p)=6R{92 z>(<tf_a=M`Mfk`<R)gC2-L-a1+d8zpbrY6pEg}xq4;?=85SdPw44)s^Ilab7{w#@y V*<_k$qxfk$N<!W_@Dnxwegjmw?*jk; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84e1fe67392229f6c566803ba88cd65c05315735 b/src/libs/libsrtp/fuzzer/corpus/84e1fe67392229f6c566803ba88cd65c05315735 new file mode 100644 index 0000000000000000000000000000000000000000..67f50b60c6a6b5bed4aad812acd8aeb19f2cc83d GIT binary patch literal 40 icmXSquLc7U^%4j`oHVdVbur`r{|t=r91MyK4AlUjoDtUm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/84f8b5f5b9c5a7c34a40f4eabb333f2d908ee678 b/src/libs/libsrtp/fuzzer/corpus/84f8b5f5b9c5a7c34a40f4eabb333f2d908ee678 new file mode 100644 index 0000000000000000000000000000000000000000..05bae2f0f9015fc4c64eb8d639bb16b175ff13cd GIT binary patch literal 204 zcmZQzsNTiMP+iPWl*y4=&j1Gh|Nr-8V5qKU*aid|+qM-jLBv5^B*4JH$RG@osV-&& zQTvNa5=#_HfGlig0TnBNQ~_11fpt_@tAqIr3}y@rFTqR>Aj!!9v{rXpb+MoaR2oK= X7N^FSCFYc-#upU9#6WI<0HARI{(&$2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/850557e4b78c6bb31c67e51bfae6235bfcc9b2f3 b/src/libs/libsrtp/fuzzer/corpus/850557e4b78c6bb31c67e51bfae6235bfcc9b2f3 new file mode 100644 index 0000000000000000000000000000000000000000..10ea07ce912e891159a2f187d5c2f6c674ff3d79 GIT binary patch literal 640 zcmZ3^z+g~P&%nS?l*y4=&kSTRF#LD42Gc;oh=D<tfsuisx)`p8;RC7~Lrw+<pc;fB z5WNUPn7?B&1gr?5#)y;Q|9}7L;yFTKi8&B6kX?e|3^Wsnu?6T<n0IhmL@jd+u>~EP zn+<V=jLLsU185LnxOo}_Jak~ugxAfs5Q8wxK^Oy%ZmezwI|LC^c<q9^*#Ie=|NrZ5 IgbHJ$00=f+{Qv*} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/851beeb3295d1997cadcd226d8ae05c9294df9f0 b/src/libs/libsrtp/fuzzer/corpus/851beeb3295d1997cadcd226d8ae05c9294df9f0 new file mode 100644 index 0000000000000000000000000000000000000000..cece54a8f2f8e5bc7c9686b15e3da7bdedeb2156 GIT binary patch literal 105 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28Q3&3=E763Sg1yVl{^9VnK%LYIQK5fx&=* m;U$>K$-p4XP&|j1!H9t&2dDuIge#%S7!GRv`9DVp$O8ZltP(8% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/852612e944281ec8139573813dab235aeb6a6cc9 b/src/libs/libsrtp/fuzzer/corpus/852612e944281ec8139573813dab235aeb6a6cc9 new file mode 100644 index 0000000000000000000000000000000000000000..81f23198d8fd00620ae0c254875ab6d4ca325329 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUF(U&QSF3~h3=Eb)`Xz|X d$-p2BR0ouvBLtQcZf9Va!vSV8FhM9V2>|ib4!i&W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/85330683dc886c9529e975e47ce499ca5ea93d04 b/src/libs/libsrtp/fuzzer/corpus/85330683dc886c9529e975e47ce499ca5ea93d04 new file mode 100644 index 0000000000000000000000000000000000000000..c6d2af8814c1f0b258c90b0c0f6efce1af7605a8 GIT binary patch literal 112 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E8L1_OftNUFM+5sX1>Ah3o|3=EtM k46+Q245ih@bA*6m3c~FS40C`C76uL=Q~*LokW$xb0MQf?aR2}S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/853bee8034cdaf5508442392fd1ddba978ce277a b/src/libs/libsrtp/fuzzer/corpus/853bee8034cdaf5508442392fd1ddba978ce277a new file mode 100644 index 0000000000000000000000000000000000000000..43ce77d453b0a04814a87574301e65d2e1fb9e9e GIT binary patch literal 69 zcmbREe?QmDm#zO9z~Da&lxl(b3DpfJr!g>O#shiP#f%VK4dO7gGcZ;&#51w}*Ggpq E052&S5C8xG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/856f290a4e613976f50b0c1ae9449cdf60964110 b/src/libs/libsrtp/fuzzer/corpus/856f290a4e613976f50b0c1ae9449cdf60964110 new file mode 100644 index 0000000000000000000000000000000000000000..b3342cf2cbfa4d992f4cb2308066dd97cad87705 GIT binary patch literal 124 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vv22$0GKmv%Xiy0ZJfhs^u7zt#cu`#(ICHtQO W%>V)gkdcf)H9)|~U<ER-x*7o9(-j5) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/85c2117ab7b9c18f6e21eb42bb2d5ab936fa5c3e b/src/libs/libsrtp/fuzzer/corpus/85c2117ab7b9c18f6e21eb42bb2d5ab936fa5c3e new file mode 100644 index 0000000000000000000000000000000000000000..75f1f2f484f69bd04e0add93e86281a8d128a264 GIT binary patch literal 233 zcma#wmd8*M&%nS?l*y4=52S(M|NsBK3=GxP3=E7wUTS<<B3KwqFfy<;6mT*y$b#h< z<}kDag@L3nkm3NTX!`~v{tJPaAOJSIGc}W=9;&7aWIV`R1{M$j0%#W7!)<0@m=Zq^ lq6Xv^sLk<um`-N!1)2(WG6N&XDM05JgDqjG21x*22mq6jEI<GN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/85c6633f1c4be30a33c84fba0a4d974478968950 b/src/libs/libsrtp/fuzzer/corpus/85c6633f1c4be30a33c84fba0a4d974478968950 new file mode 100644 index 0000000000000000000000000000000000000000..71086086f910047c1e7b50d892ab8b1650dd3192 GIT binary patch literal 102 zcmX@8m&Z^N&%nS?l*y4=52S(M|NsBK3=GxP3=E7A0fy>gMhFIqL4Y-k!O6}b%V0c5 Y2+S95XJDAa!N4dB<T1fiFgVr$0Kq^Ga{vGU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/85cd491db9b3e30f8de137fe417210e443c7ed8a b/src/libs/libsrtp/fuzzer/corpus/85cd491db9b3e30f8de137fe417210e443c7ed8a new file mode 100644 index 0000000000000000000000000000000000000000..01de6596125477f9f6ebade1a203b752e735dab7 GIT binary patch literal 73 zcmbRE-=6E`%W4J?_^u457!<%%bulADHBf>PBFF&d|NsBrtC&$#R8SNKK-&KQZ>$CY DVq6h; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/85e378555ca5b283f7d2e9472dc330d98ad3cd52 b/src/libs/libsrtp/fuzzer/corpus/85e378555ca5b283f7d2e9472dc330d98ad3cd52 new file mode 100644 index 0000000000000000000000000000000000000000..fd06e0e97afc4e689783aadb3ac01aee2fed5647 GIT binary patch literal 70 zcmZQzV5lx;WME)WX=h-p{?E=(-BQiKuqE?91CW9MAOnG_|5sN7bpW-fF%&bzA7cQr H80P>0AM+44 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8600f7f2793a98d56e3d0329772f462d9aaa810e b/src/libs/libsrtp/fuzzer/corpus/8600f7f2793a98d56e3d0329772f462d9aaa810e new file mode 100644 index 0000000000000000000000000000000000000000..25e8b0415543fff4f195cfce3f5f322fb12cc779 GIT binary patch literal 209 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VNd}gxeVyROSGg zEDY)l91M&M><@sP|Nnsm5L9bx0oAKRI1JWMnt_vnK^CYK)j%czkaTO$f9C33kQ^8+ lhUgJs1iA?Xs<jzG1{zcsquCF4-UD@Zko`cwc<|uCcmOJ{D4hTR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8602854c2537d10d71f0a1feed9a49976d0a17bd b/src/libs/libsrtp/fuzzer/corpus/8602854c2537d10d71f0a1feed9a49976d0a17bd new file mode 100644 index 0000000000000000000000000000000000000000..e7bba9c4d33aa7b795d297c13cbb36ecd05155a9 GIT binary patch literal 384 zcmb7AF$%&!5S#?WXd}c*K}aW9h-f7?HkN`fFoL8IB!VW@6*h{sorUkP)c52ATCTHa zBDU^vH@CBUH**(uV<aJf?aGVxM23h=0b{szP*=w69EG-lk{Tnsp5;-^G9x|B0+GH5 zHx;18ld0KVU(yJ)2Kc}jsGoo<v-=C)lUU>YjYXcQpw8prRwhL+jzK4KrIgBC(8={# zqL|ub_r-_DQAD7;)wA3rckUMT5AsDSW!gDC{6jLcXDWdOz1PP8SVwWVq#uCaxek|` RIN5H-fHpL3D=_=|e*^!eK5qa3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8602c8f5c2f3e050d9825b2661ebeb90aca5520b b/src/libs/libsrtp/fuzzer/corpus/8602c8f5c2f3e050d9825b2661ebeb90aca5520b new file mode 100644 index 0000000000000000000000000000000000000000..b3aec4e9f49c1674407da683ad6f38956401b65b GIT binary patch literal 140 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3{2J4Ko+Af0|SV`$iNT?k}54ujW0{gDNT(p zD9TUE%t^I10*Z1nc!5+1f>Z!C^D{8a2Wly<t}bQ->Q)B{1A#RV3xMQ-G~Cwe;yFSJ K47NZa*J=Q%CLwJA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8621400cde2f424219d1db947833e6d78b96a750 b/src/libs/libsrtp/fuzzer/corpus/8621400cde2f424219d1db947833e6d78b96a750 new file mode 100644 index 0000000000000000000000000000000000000000..fe4acc984bead5b7665ffec495e6e189f96f5946 GIT binary patch literal 3341 zcmeHJOKTHR6#k~ZlHx)P3JPj`U<9#57e4So#NxsS;>wi_MMenLS~9grFEml=3*3k+ zArxHt2fDPl@;CSc6tZ%cDoU^4Irq+FrZE;#!G#Cr&V8JF-sheJz*>75z_P7v=Z~<b zi`W2x%md8qjsuw5OTv2@5^xx0K{CWxwzEV|NXYJfk^!ngOG#Y`F*zjLK%-uWnr`ZN z8}p3!tzB^7@!X<%3kwUtk*k+@!y01|j!a-GbaXzXbe5=tQJKn0T4d7CR5s}bPUx>X zrB@oH4yCMW7J(f=$sx+M-JJ5o#O=+PpP!e5(qo`q05-wv0SwFjVmvkGG!oOuPNJ2N z;9Qg)aKzId)Oyq2Y$Tmlbf(m029us7ll_Ut7EeWv9BfQh)Cef!1=ZQtMudmY>>6`B zz(E?!RH~}7Ac($1AkeP25bT29%xd>qA?uKpj#Von3a7^s_Oi3SHK`V-g=tfek&I$~ z+821#<zPij1$FjQDj9g38IeKm25UVE`XVY}tO$;KVkX&ofa_@(MfE}&Mv@9HjG$7F z-;Kgl)|N!WHOI1F>J^%7AiINr<P^iQK&|h3)A~^2!JF<<92z4^58)~q6Mz<%azU5w zbT&OU<$4><IYA*f%c-jvz%)rqc7K!E>b%<CMrGl~pi2YqPE9ny*!VaKcibU8dG@4E zC)M4+y8Huxi@2nTt4L_3iAw|KyrJiLS27I*9_VQ8CtbQ#E+Urf98D(tqfl`ZGFx=z zhaZuVpvmI=jXAT(C#AkIE<e-sTRT+1YqGtK=`n_*2t+7l!ct_)`@HzeK(7(bcRHN` zR~PM>;ZBE+LN~1xeW*&MIG9M^1;63AqjR1x2*>aLlsG=_WX*vIkWyJyBxcVnj>A7l zlBAM^1bd}^6io)ry~FLj*bBRC^^KCFFLnceEC)k|%ucx@28yJzyPcsY4wdY*sF*`d z6Xzev&p9yRv;@5)LO)-|IZyDI6EPKZMqVR(uDf;X9PzYd7bU{^1t!)E<thW;PREg3 ze&f$SHYYi)OCbxS=C8}}O(+a74fE?~rqMDHE>B>aBwQ}z52RUL<`E_7y&t;F$)Ffo zx~b%aK3cTT;&bZ*b5IN8%A&R~QipHgE!aU!03(h1lUGe;k(M<&$7Q^K;fKkWAV>q= z{83YJBtT;_+}Ljvae&B^jp%072;&Kj!I~iHBh7eX(S2!2@E!MvSz_Qw=wv!0|7Ze- zi>UFM_AOaED#AZsp#QLU+#@cQH1U1sSC?+wq4iDG^(aZR7O<-mm!$9&XJ<z}NYk1$ ztkSHKkmL`73!^eZ(RxK&Y2>PkB$2zbqN?;l=6|2z-<g(}uh-P9*Kq&SorbyyNb0F9 Y%lw=>Y{~!mb1fg8XC9Y0qM$A1cgMI6asU7T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/863d5803a1d1672d1a49af867acac045599e2a57 b/src/libs/libsrtp/fuzzer/corpus/863d5803a1d1672d1a49af867acac045599e2a57 new file mode 100644 index 0000000000000000000000000000000000000000..ef65abd1d0534505e58ad59bd47e37c9b08ea3d5 GIT binary patch literal 122 zcmdl#@&7k5v6lb;|9@j}U?2uaK@=%4FtAlKFmN&gxj@WVUCdAo<TIfdu^I_5F#P}d OpB*SI3shhFyBGi;(HGeO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/86809a69ff6837e8ed7a777aa8712f6ce4814cc4 b/src/libs/libsrtp/fuzzer/corpus/86809a69ff6837e8ed7a777aa8712f6ce4814cc4 new file mode 100644 index 0000000000000000000000000000000000000000..3e0fe94293260eefa5e488c4f9e4bd7cbe51520a GIT binary patch literal 102 zcma#o%VQ{sXJKII%j8I{X8?o$|Nr|kFjQAFFffAn#X!th%}}ky2ozHXt6*TThSCh* bfodv>=LmuM!tD$Ub3iNw4hANe3ZPK{(wq-a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8693ddb1919f7d855269474d7dd4d6c2d62f2c6d b/src/libs/libsrtp/fuzzer/corpus/8693ddb1919f7d855269474d7dd4d6c2d62f2c6d new file mode 100644 index 0000000000000000000000000000000000000000..e887c73063bf1fd1e2ae69811462da7035fb558d GIT binary patch literal 3139 zcmcguPiS0482?S8>D!z_<0abCO~Dk>8k05`yA%=#Mhc;L@=)xv#67Im81^N_W}sQZ z#<dcVf(Vfnk>DYB!JENL#ft~=;?aYLhxbI0?)dw@nfLZzV=D!}-S=kRH{X2!<~QGr zizipG76YhOqVgtNl5=he_*3XK3}9!QCv{-70W=R`PW=T8D5s`xVE*nxAcK~hd)~7r z4v|=>jt^#<+dB@}20lFG=%x`fLVcDG?z`bMwG?V=I;)z*8K_5zft}k8w2be;AXfG; zRjqvVRaX?2dUO^iZtt{Q{S(d<-AbjbQ#j$>><%@8IZX*4Y9^Y8iVd<d-PLj>!X_G{ z<V712+iSqRx^tPpcw#^I(gP#7AkMf!%P^G2$-_c_>ih(AbwMp@hSzP<xf&S3cZWxa zE>Y7cPI-0VUF6b<i7bt_kcU#ENL&0&KXH5{TOvTjEuAT{1;+aD^50R!)IJT0cHFMx zvczvAIzUY_@`k#GCIq99g^2hgn3Y4A3H_w+CVpT`ekP+_M%kt3Nn~<c!~M3r(ns2A z129<j4Poig>O1}|yo28<VE8Q!pM2b09`sy^lvF@~v0_B9*udA#FxUm-)(P0Uou9w@ zbA)ph(eJGQ?@C`ZsjVDs@=YrFMg`uC4Aw1)yn!5AD$tURP4b@7XW#K}{Sr<;*~`~O zrtkz5!bx8xrD=NH3|}UG&1!|Tv_OxFV%;Xa^Hgo2SD{3Zn4xW*8milG4vDDX7#8_l zQ5mf+BCbZRYlnUP$5Sk}EVQdVzNaZ2niV}v<m#uu>dV`#JVPNzC9+pE<BPJqCG6i- zQGKz%lKk8tKaFzPkpDtA8SMW%QO_^bJZ-q7uct^IRhuu9*ltD*!ms$Z!^5L`J*c^J z!6N24k)0kh{dG4gVw_5)2H9$hnK>uEk|ZLf!j(?Ik~P}c7sZU{S&4>;a?fF~?~DjF zd|(N~UJ>go)z1XD%K0U*G-n`{wWrzwd)@&#epuy5BhaE+y!mKS9hjp>R4R}Bt)mH> zFt`Z<A%1|wn5G<d7b)Wp%y<eLS$?`tSM^RTlQch)BT=rzo~9~T5_{$$D%UtD!e+qn z>=83F-8-Hf);{3AI|xT8in0|+V?`NIddt>+{0yi_8P9D`$p^~?%gkiF?ru0tGWYW( zKSd19F}5{X<j$)?E--kM*Pdf#j`5Z%|2IRp^YPB^#jsz><#@HAO9?E=Nv*4rV`gor zeM0A$@pzGBoma?({A78`OE8R+f<WyigWF@Kis&*PD7Mz(&RfvqVN?@`1VU{Xxog=r zdkKXC8qeVD)00*(;>J|VZnWZKC%D3Pdok;9-;IUD^fp-u=-`Lz;sjYz&2&S`VuV=q zyU1^jw`~cx9N!K;@PqS)YOC3P(DR*4J>_{N69K(=y0A4v;kw6rTi3PC)F|1B@I1Qg z`eT!c;9C~UE1dENpM3GP3|#_l#mn#eE1`^f`zKk-{pHUsYG^XFS32LOFSI+`W`v#y z>Sdanl)1sy);C)jaj3}R$qWV%B=K~|O%!+!w{PBB7r+N4HBrZFn8&F37Vx8yn&`}= RUlK`wUb%1hI)isi@(-t4NU8t; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/869c67e392cec89e4385c74586f2745ac73227d1 b/src/libs/libsrtp/fuzzer/corpus/869c67e392cec89e4385c74586f2745ac73227d1 new file mode 100644 index 0000000000000000000000000000000000000000..98278b3eb8b435b7046b6385cf05b636c9816a6f GIT binary patch literal 119 zcmdl#@&7k5v6fB-B%r{+P+ZNxz{$wK07PI=4dlbYfB#I5R0akP1_o~ikhlRJzzNbN R3pA&+x){P#uhy-v1^`%_5-<P& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/86c231d06de82c7b9323381c890c08781cffc920 b/src/libs/libsrtp/fuzzer/corpus/86c231d06de82c7b9323381c890c08781cffc920 new file mode 100644 index 0000000000000000000000000000000000000000..c379b1bc645cc98020eeaa94c6bf5a190d3258e9 GIT binary patch literal 133 zcmdo0-;V3$%W4J&hHw8Jq!<`Efh-0Fxndv@!w4i88Qehv)y0eq)j(B1AqW`_W&qg` t1QCaGpMvx-g7gCcJA(q41}fdJrkBU?zmh?ifq{jgoq;hEsH2jB0RT2`6!!oC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8709e064a75e666341bd138cf01ea00c2baa8838 b/src/libs/libsrtp/fuzzer/corpus/8709e064a75e666341bd138cf01ea00c2baa8838 new file mode 100644 index 0000000000000000000000000000000000000000..06456191ae47a180a3eea2ac22effaac9d13bcf9 GIT binary patch literal 1752 zcmd^AJ5Iwu5Pj=diY-wfQc*-f7K8#Nf`$gJfH*)3OGqhFKoO|ef`%v!M@YvJD7Z}& ziJG2@<*nED`h#)6P%)Mr@9t#g&CHu|IK=Hu2w*z##&`UsD5cH-DFI<NAg_hFxu+G* zabive@O{i(1kEKJUO^)f)3NGIjCqS>FM-tRVcQ&*p8KVpCL1LPB7q=!a5ibWs4+-2 z{8$4vl0t&kLdNj5Y}6_jjAxcANKvOR74RX%b5wRW36St>UH^$fF|$ZB8$;V&(60-R zmq2^P#aql)c|fYlgbFcDdHyR>i|b!-BA<m36JMa#cdGNQ8SVkyXxLawaL@z0Z1$j9 z@-i7jcszBxTdd`d)0qQww9u;~#4Ak-&Mw;k87k*tbCOwSrX!lbep2dw27<1H{qm|* z0rp`fY!kq883Y$LmfYK#nK}N{MW3dAlo{P*?G-a#-EI{H<$qXc^IgddN;tWwN{g?* T3gm|qCBo4xpocy<5wv^&P8I$U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/870ab117cdacd7c533576194ec83ae4c4f021361 b/src/libs/libsrtp/fuzzer/corpus/870ab117cdacd7c533576194ec83ae4c4f021361 new file mode 100644 index 0000000000000000000000000000000000000000..0b0ca5360b8710006d016260b623d9e018a5d2f9 GIT binary patch literal 603 zcma#o%VQ{sXJB9`%H&9`2hu?BpH~4)GcYg$>D2hLL?{<XF*2|<6mT*y$b#h<<}kDa z1%ae6km3L-Yx@Qy{tJPaAOJSIGc}W=p5ebQ14DH+)X*{phIqKK5JQ;|hJxGx(Lb<m jP=GpOq=f@7Qe0q<;D4YXVPFAbaI7oA0RuxhB+xhja57Hx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/871a393a6a16621389065074177176ebe605e38d b/src/libs/libsrtp/fuzzer/corpus/871a393a6a16621389065074177176ebe605e38d new file mode 100644 index 0000000000000000000000000000000000000000..a47d54832ef159a6fe7b74a78d05b010e9132b1f GIT binary patch literal 102 zcmX@8m&Z_2&%nS?l*y3_qJiMQ<9}ZUhH3!@21bYgLv=AD1XqIu6oA<J-~ay;K^#tY i23dxlIYJ;dgK#?o!yFEQ(&E(kvc#OyR4^-(sSW^Hju#IA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/871e89cad3d9428e4f9b434ee977fd6115bff4be b/src/libs/libsrtp/fuzzer/corpus/871e89cad3d9428e4f9b434ee977fd6115bff4be new file mode 100644 index 0000000000000000000000000000000000000000..4cd0fef252396307c35d162057b69f54efb19c1f GIT binary patch literal 69 zcmbREe?QmDm(>hlpzt3EM5_O@Fi0vuL>Qu=v}<NO1H*q-28QZl#>YT{p_+lQnn5d- I2`Huo0P3g`ZvX%Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/87312761190a6d7c95d9ca38bda0312334b0be9b b/src/libs/libsrtp/fuzzer/corpus/87312761190a6d7c95d9ca38bda0312334b0be9b new file mode 100644 index 0000000000000000000000000000000000000000..9b0e55e26293081417c8a0c5a9cc76e784d51cb4 GIT binary patch literal 288 zcmdo0-;V3$%W4J&hHw8Jq<|C<{CX-^45X?VfdnIiJ4mRyn316xs0t_qA)^@>I>Brp z7cLHDyhS&Rfe~)lL}bHI3`91e8e+nCW|(tunE=-WbW}8|TadXR=QAjPNw6;%R3I9^ cF);iGf-1)9Vus@Cj8v%izJUdSp#hNt0Eaj}KmY&$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/875acf905688e648da8ef9cd69730dbbd54e86b7 b/src/libs/libsrtp/fuzzer/corpus/875acf905688e648da8ef9cd69730dbbd54e86b7 new file mode 100644 index 0000000000000000000000000000000000000000..0b5e149d7d51c391db623fa4cd6818fcf4663dfd GIT binary patch literal 150 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zb$?9T8FovjPP__m$1Q?-w zuynOLln0RnayS_nWEmJ4N~??K2m!eY48s5085rg;Ft9Li03jm-`vagb&|V;5U~sJl E0NM*1t^fc4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/876a402c981413c92b7a2b69cec555405f31d5f8 b/src/libs/libsrtp/fuzzer/corpus/876a402c981413c92b7a2b69cec555405f31d5f8 new file mode 100644 index 0000000000000000000000000000000000000000..9bcf475dc79fd238e9a9841e62d898a61c2f5c81 GIT binary patch literal 103 zcmXSBU|=u+V&>lr^({ae3_Mq^tkkJyU}RumWvFIgU}9kSFT%jgz);@-#2i&D)@sZ^ nVFrdmpo;3ucpyuyx;j2n0VMVx0)!cuGg5O37}RU3tASzw_<tGf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/876a8dc97ae0d995214c8c724e3f4938a6fe084f b/src/libs/libsrtp/fuzzer/corpus/876a8dc97ae0d995214c8c724e3f4938a6fe084f new file mode 100644 index 0000000000000000000000000000000000000000..f57d1610405c11f21d137a5f1ae3374720a55084 GIT binary patch literal 1408 zcmc(fu};H442J&;k(z9XP7GD56NmvdVux3#cmRe>9XgbuFp;4PRTmzi8xO(5AW$EJ z0b%S*a=BhwDjFmlMV9Xz=Rf;PvJ?;Z8Gz|H8qL_V5z!FHb3hdf$nVq*-)2n`u5nrH z3=qdygwX9ROK%}c)O1AMaZ$cja%v?dI4)KB?#y3k6}u9``6EF&5`sgn?Pf@81~wy3 zU@}mj#A{G1X^n@y;%->aa+iE4^<u^zs;2y{Wlol?CPc)SLTAOnN6AfoF2Gbn5n#S} zo)iH+1D5TULVyI^(fJb{<P!s3afJV3;+@5AGJoRxGV#fMm=WIGL213|jr*^y*LETq z!XKH|J{N-hHY5n06`zNw60@7LUsA)>@q88bj@b8u?!stUN_2rT5?F^?zf#}IsO0?Q VQ-8C8!ulVoAgGaKnV0WH>>I5E4`u)W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/87776d60387b3ce817199d4cd87f77e30bc9a0ce b/src/libs/libsrtp/fuzzer/corpus/87776d60387b3ce817199d4cd87f77e30bc9a0ce new file mode 100644 index 0000000000000000000000000000000000000000..21d9b724f1d0daf7824fa3aabbdc5140eb036d1e GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7uw-C( v31)HvRWcOM5n?cA;MhL#KiA8b)eJeQdGX2lc_l^p4h#%TK*-=A1yl?G+KCq} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/879f9560171860c1ebae7be6cebfc308ca8e1c17 b/src/libs/libsrtp/fuzzer/corpus/879f9560171860c1ebae7be6cebfc308ca8e1c17 new file mode 100644 index 0000000000000000000000000000000000000000..7ee284220847b44d713de27ef187d6d073633a66 GIT binary patch literal 40 icmXSBfP(7kmoLA*d|3?vhSk*!)r`f})r<^afl2@(;tx## literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/87a0d7637479e620efe963d2dec085916fa810fa b/src/libs/libsrtp/fuzzer/corpus/87a0d7637479e620efe963d2dec085916fa810fa new file mode 100644 index 0000000000000000000000000000000000000000..0e390c40dfb0ccfd0c9742767b27cc59c7ebf795 GIT binary patch literal 69 zcmXrWuCA^wPK~e5jAsCXY6b-c<~cyRni0rj0x>}N<;$;cUjh{Zl`;akP_h!pVJI(V GoC5&Te--Ee literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8836f451454ff9741877b0f856c42e2dabb0ee0e b/src/libs/libsrtp/fuzzer/corpus/8836f451454ff9741877b0f856c42e2dabb0ee0e new file mode 100644 index 0000000000000000000000000000000000000000..cfd488630349a327e18cb1d4f99c415852b1ca92 GIT binary patch literal 165 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYU^NU7G8!lbLtsr6U=m1Z zH!?67FfzRS4^lY4IKH}`qn&{<n&J0<hQHriS{PQYtZo77{3p+#?*AVZfQ^9K4zw8P HFo>l9`nfG= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8871564ba0add28be21ffe008f11ce91fd38147a b/src/libs/libsrtp/fuzzer/corpus/8871564ba0add28be21ffe008f11ce91fd38147a new file mode 100644 index 0000000000000000000000000000000000000000..b638a88a64843d214da6cc8201035af0dc3dcc60 GIT binary patch literal 324 zcma$5m&YI(&%nS?l*_@u@IMd80s}?{1u$J*tj17X%*aq(tqzfZkhrBwfeK!O6mc>z z$TBc80Cmq1VlV_UkU$QQjWB|#0jP?B!J25TNG37N;Ro^*7=+sy7*yr}nJf(I3>-ki R*&hHo|NjFC>H{>V0|0w>94!C< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/887fd53302917e27b02fa2cc85ec35b9b5d43041 b/src/libs/libsrtp/fuzzer/corpus/887fd53302917e27b02fa2cc85ec35b9b5d43041 new file mode 100644 index 0000000000000000000000000000000000000000..3bb0dc47fd5b75c082465fdd05f50d08f7a6bdc8 GIT binary patch literal 206 zcmazqEl!P(XJB9`%H&9`2hu?B|Nnnq28QZt1||V8S2*(^n1%>4FhXS+j-4X_PNB#% zF!ZP~R2MS>O;%?B%7FQn3=Iq~L8fyuFxWCM0<A5cBV?49lL``JNK#<RV<?GdC}QDY RNG)Mt;A6Oi3xJgW2LSpCScU)q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/889d9c11977466f0952cf51d726930eaf880f2c5 b/src/libs/libsrtp/fuzzer/corpus/889d9c11977466f0952cf51d726930eaf880f2c5 new file mode 100644 index 0000000000000000000000000000000000000000..50a7a931f604a673cd3f176ed5f15a545830507c GIT binary patch literal 91 zcmZ2I;Xl_)>1qZB215ph1Rw<g#f%Kq(?HBd28L=72dIJ($OJ2ckW-2ofg;6>)zcUm Qih)8v1O-4=e6=0}00H6;6aWAK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/88e331430bbae0eea37b9686b20fb37be874217d b/src/libs/libsrtp/fuzzer/corpus/88e331430bbae0eea37b9686b20fb37be874217d new file mode 100644 index 0000000000000000000000000000000000000000..f99681d01a47d4ef1b03d22cc9ef01bb8ccd0dfe GIT binary patch literal 771 zcmb7?Jxc>Y5Qd-CAeSzhR<Se?5wsO-1;O8NSX^;UkVGu9MPxyPLI1&ZcGgx_{wgik z*)Ox8IdzJ;`FQ8unYk$sMqHJk#+B{Yc(K-=!$iZTGqf0Lm$e=Y;P%0;>xl|Tcsll0 zF9q~aNx@!Bhom@N*ui1cx7ub4%Gd?tx~OKMSh_fjk4vB`uP;K}X~o9P<rgOn3kf#N z`_L&I;O<?N73LsrLhh@&n0XAv6l*_x&z;oJUnY1Hnx7}wj}yE)*$%Jbo&T%nWl1Dz z`3QEp#ILqwwTUHPar(cK`(?#*frJ&4uXq$sLfg}{K{<+{lk{G6eJrS>kjziQm>1J3 UkC~hZb>_C2t2oavMqyy_32-FWK>z>% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/88f97414425e6fb2ea409a72141e68bca93fd56d b/src/libs/libsrtp/fuzzer/corpus/88f97414425e6fb2ea409a72141e68bca93fd56d new file mode 100644 index 0000000000000000000000000000000000000000..8300887eb87b77d311879ee3c85687b4a0011fa9 GIT binary patch literal 394 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;0}}&7L-8CThH!|& zISj{vj5!SL!VDZh2nQ%?ezn8YFhJC_eFF-#F*0Z|7%(tG^b|2<rUG3EGzS8}O6nOI zs(@TZs3MRj7@%r6sz4s`U|{HM`Trkk27_YpZz+gcCIO&6uzO$zX@Ly_8xFK99k*Rz pB@9H^RXq!Cmr+kOb8GQ`kW;}x5okRyq<a1{39%RDaxyTu001luL!JNt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/890c7d9b9112b86ea26820718f2f8540f14c4132 b/src/libs/libsrtp/fuzzer/corpus/890c7d9b9112b86ea26820718f2f8540f14c4132 new file mode 100644 index 0000000000000000000000000000000000000000..0507cc942d8145da94db45702b58cf97913ddaa9 GIT binary patch literal 333 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wp{vk^ ztKgJp0IOiYVi#Ny&@QaTFfcN12Rn-erh*t_ROSF(#KOP<gp3UA4}hE>K;Hr>hH7m_ zpeLCa<QagDZteNcT%8LR2gxnAVUZOA(h5w%?F<Y+Gv<JK3{W1#L>|`v4D1hps{a26 I2{14K0M~Con*aa+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/892c436a5218d714f0b772ba6011cfcd0b77706d b/src/libs/libsrtp/fuzzer/corpus/892c436a5218d714f0b772ba6011cfcd0b77706d new file mode 100644 index 0000000000000000000000000000000000000000..bbba4dfa7c1f11773141fbad54650a87fef7f981 GIT binary patch literal 36 icmZQzh)=C&WPpMT)l3WwYzz$5V2~NlP;JVP$^ZaySO-@C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8939a893b12c5a792930d7d8c353408314182391 b/src/libs/libsrtp/fuzzer/corpus/8939a893b12c5a792930d7d8c353408314182391 new file mode 100644 index 0000000000000000000000000000000000000000..3e016ad775c3546bf8302c33b4a470c832e7fa15 GIT binary patch literal 327 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozK%0r>_d0iYs~N<9V!RFxVaEllzZ zcR?yZ;D08AFuEd$x$+D^V?Y*w8DR5*ON^6CDhpCQlU<=UgUth~Al5vfjd;8Qcl3P} m@8PtBfnl*V*cSqfI;|ya%+<w=Ag&Hv6fDWW5U;nAVI=@KDo1$$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/89431df7a1e1f0b7a8f584f0384bdc2a7a511cc4 b/src/libs/libsrtp/fuzzer/corpus/89431df7a1e1f0b7a8f584f0384bdc2a7a511cc4 new file mode 100644 index 0000000000000000000000000000000000000000..fd85867061d4860ca73352500b6fe73a8a821cc1 GIT binary patch literal 76 zcmdl#@jutgm(>gm4FCQ+NC7DzP+(vv28u9(*g&GXn316x$k$<b4g~j~LsWo8p)x?p HYM>GTKQ$C# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/898aac0c810f2e2c74f78936540260561fe8b3e4 b/src/libs/libsrtp/fuzzer/corpus/898aac0c810f2e2c74f78936540260561fe8b3e4 new file mode 100644 index 0000000000000000000000000000000000000000..44da1fe05749523fb5c85dcf95f01a48103e494b GIT binary patch literal 120 zcmdl#@jus#m(>gm4FCQ+NC7DzQ2NFo1{7fgv4MnQF(X5@!_1j8X5O5M1RyFDK#Hn? gD!|(7z<NMJK%n-Xp_qZe9|kso8Rz{$rd6v00B|KC`~Uy| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/89b094c57c741e7b84cb15e900085165b6a54201 b/src/libs/libsrtp/fuzzer/corpus/89b094c57c741e7b84cb15e900085165b6a54201 new file mode 100644 index 0000000000000000000000000000000000000000..6486d5d39c8276e682d64ea077ea5f8962b2249c GIT binary patch literal 155 zcma#o%VQ{sXJBARO8qaK38aDG|NsBK3=GxT3=E85Ml}P&d`1Qa0g&ALVn&8)AclhF z3=GylCP=E90V-8pt<J!}#h?O_0xRTXV31{CWGJ;Ro+AVl_^-eq+zyriS_J~aU=GY; JkO+foH2}D4B^m$# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/89e3d570a222c18bc945408b71bd3f08e143c063 b/src/libs/libsrtp/fuzzer/corpus/89e3d570a222c18bc945408b71bd3f08e143c063 new file mode 100644 index 0000000000000000000000000000000000000000..c08854270fe8dbc5233e4a28320f200c6c889a20 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLr8ggGG25tf4XtoD2-I dAa&KnbA*6mEDXZ!3=DHP7#RKmjR66e5dcbN7Lfn| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a0b3eccb0767fabc3f46ba7bf63e31ccce3b02b b/src/libs/libsrtp/fuzzer/corpus/8a0b3eccb0767fabc3f46ba7bf63e31ccce3b02b new file mode 100644 index 0000000000000000000000000000000000000000..ce691af999d94bf8db7dcb2acfe85561b8a1687e GIT binary patch literal 100 zcmcCEVW=vJXJB9`%H&9`2hu?B|Nnnq28L>V1_nlm07G>#BLr6i1sECr`!iTWWONxg g85r7G80K&={9|JH57f#8meAD&QTDOwv5xT`0QUD2od5s; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a0f401f798207db6c8b01913220e4ff4049cc5e b/src/libs/libsrtp/fuzzer/corpus/8a0f401f798207db6c8b01913220e4ff4049cc5e new file mode 100644 index 0000000000000000000000000000000000000000..3d73d762ed695ddc0f606bed736a1bccc94a432a GIT binary patch literal 166 zcmZQzU@$1DXJB9`%H&7|(Lhk=XboX7FmN(3GB8vZ&k<ty|C51X4otXR7|7y)@HiP5 kWI?JJG?-x07&Mv;&^Qo4Gw$Et{~++40ihab>~oMx0O0Zy*8l(j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a22188c29211f7e6906e37f43c4460e2812a832 b/src/libs/libsrtp/fuzzer/corpus/8a22188c29211f7e6906e37f43c4460e2812a832 new file mode 100644 index 0000000000000000000000000000000000000000..969cfaac8ea34c108e0eb14f0ba285d74c1a1069 GIT binary patch literal 302 zcmZ3^$iPq>0wjtuIa2Exz~H~5HH5)n$jRU!%fMIylEALOh=BpG0&b{DAPQ&;8~{xQ zX=GriE}kO<7KPagqZt?sL56dH)!=pj+=Zz?Cvq@kLi~U*g!wzjbeJvE80J8ofKUN+ j%7I7!|8+Mquz)=YRFDV+urOdw&W~sK|DB<)kAVRIYauSG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a33417e455ee41b684d90e2d32cf8806e629fa5 b/src/libs/libsrtp/fuzzer/corpus/8a33417e455ee41b684d90e2d32cf8806e629fa5 new file mode 100644 index 0000000000000000000000000000000000000000..14887f27453591e51d46bc31f46da0cbc895e547 GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BN&4PfeQQ?tRXVG44e!M Z?JNv)I2is(K(sRK|E~uH|Czuh001u`6~q7l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a5b85c717c89c65dc63fac75b01781c118c7c12 b/src/libs/libsrtp/fuzzer/corpus/8a5b85c717c89c65dc63fac75b01781c118c7c12 new file mode 100644 index 0000000000000000000000000000000000000000..5ff26a6c613b521bbdbf1c3c55e6de963b020c55 GIT binary patch literal 105 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRa1%YDf5G4%;3=A*9 tOil&{S%%^{ybQ(+3^}QJ@yQ2Di&Nvv6H9Yi;tPuM(=u~77+4t?S^<;b7zh9W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a71421daf13eacddcb0d8cfd490703916557780 b/src/libs/libsrtp/fuzzer/corpus/8a71421daf13eacddcb0d8cfd490703916557780 new file mode 100644 index 0000000000000000000000000000000000000000..9cf248d78f7679d02ea7888c3453b400e4f771aa GIT binary patch literal 104 zcma#oD_|&zXW(Hd%H&9`X8?o$|Nr|kFjQAFFysOG+3{tGIi;zo@dca=46+Q24F7=g iAOKQ3hoK!piZCcJaDYU>V$H%JjyM=G%*o05%K!ia^BZjd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a7364f68bda9f6fa37d7cd945f89308f2220c6c b/src/libs/libsrtp/fuzzer/corpus/8a7364f68bda9f6fa37d7cd945f89308f2220c6c new file mode 100644 index 0000000000000000000000000000000000000000..2c29ab1b247b697f99b549e18029dd16aad197eb GIT binary patch literal 165 zcmZ9GF$%&^5JX?F$l3|1)2399pa;kqK7srq5JUntMu=T5;W;IZZ03VDZn5)<VP?Yq z!Xp4fXR(s%+`Wcz6y{*i^tTwUTdX95r-(#5mKU>J`h`SJIKDS9CHe(18If*~$GIB^ Wch3KzDezm8Iw(E!k4Cg{KG_Nlt0ScV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a7bfff5d38f3462e876e712d0818e4f009e0d53 b/src/libs/libsrtp/fuzzer/corpus/8a7bfff5d38f3462e876e712d0818e4f009e0d53 new file mode 100644 index 0000000000000000000000000000000000000000..9337afca1d1520fc796d119286d0ab0b34fca85d GIT binary patch literal 146 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kKfTSIe;s9cXwr@ZJ#UP;BshJ%04DG@oB~>8fJrKr&^e7es?K+r|n#0IY GzyJUM)gLzi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8a8e8718644eaec23c0c27e2a7737fde55df8b1b b/src/libs/libsrtp/fuzzer/corpus/8a8e8718644eaec23c0c27e2a7737fde55df8b1b new file mode 100644 index 0000000000000000000000000000000000000000..35721da77c911615a308a4b1131364eb469782b9 GIT binary patch literal 574 zcmeHDu?@mN47?8ro(_>35eWnp6Tk}0@D&9uA1YTAh=vi;u|rCjgh8Nr&iMosX5fnV z+diMphKC3YykVRoVpT^BfH9j8UyQ0+dIl_TD+#cZHcX)aagW3dN}Ls}bji15_8&|_ zpwv8y9$KPG#Z#$7rVsHFi$ugMJiHTi(jGbzBpY?3SfWHS)XCE&bZSeQ;u=?SSR;2d ezTbv)S9RzqY`CGY`uR*6nY{Ov`5)=`NO%Kjw`oZL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ac69ec669a6cd0f8d68c441915970591f1c8939 b/src/libs/libsrtp/fuzzer/corpus/8ac69ec669a6cd0f8d68c441915970591f1c8939 new file mode 100644 index 0000000000000000000000000000000000000000..dd7145f91f22ceb6543007b835e895f4bf2745c4 GIT binary patch literal 126 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amu^AbR6pPszsu_SJQ?<iP-I+6Q&YV3H x4j}3lfRtAMXM`A12i6G^0s^)F|Nlz@4P;<2Wo!VM$E2L?&&FUB_`kZk1OR3bBtHNE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8acfcf0fe8b00098ddb6a27a2e096b0e06b47e51 b/src/libs/libsrtp/fuzzer/corpus/8acfcf0fe8b00098ddb6a27a2e096b0e06b47e51 new file mode 100644 index 0000000000000000000000000000000000000000..81fafcebf171e0e9a33702e8e347319c52e34657 GIT binary patch literal 339 zcma#wmd8*M&%nS?l*y4=52S(M|NsBK3=CD(3=E7wUTS<<B3Kw7@&7+qEyEm!cA&C3 z-|(pg%31#xf~x3D&E%+OXcs=sz`#)jvKeG014A{)a*!*)40#470gz~G2^({DF+>HB zyVx2e$RGd{U}R7L3sf7a0bRrPAFJAUd$1aaA3>(a>){FkkSqu=E}zc;G+G$wH5IU3 WbAW=?#UL4mY8JSAEEyO;VhjKhmNMl4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ad02a0ed4b7ba475c9ab4ec3e763dd476060fc8 b/src/libs/libsrtp/fuzzer/corpus/8ad02a0ed4b7ba475c9ab4ec3e763dd476060fc8 new file mode 100644 index 0000000000000000000000000000000000000000..90104261e07626b41aecdee613639140a69555ef GIT binary patch literal 370 zcmZ`#u?oU46ug39T&-)tL2weB-5dlF`~inX!3>3>qOF4+>ZF@r(7~^8^jrEB6;z0q zR*HfiFE7b)IdV?|7)rLaCsfRx&{~gyC;}|rl-$mGemIb;8iZr0{cn*Ust*m-a3I?Y z1g^g4_RGQ$366ANw~Z05*$o0n|HGo!8#6zt^Voz<k5*CvDts*Xt!heM>%x_Oz#(J% z%EXw;6S2`~Odu%lGi{DC-FXqL0g3lOrs%^|jz<IC6XDL4$v_AWq+<@z#wr%)hEdLt MEGycXxh9wA3wLN|7XSbN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ad93fd0d1962574b6c11eabbd2f10926f8fe761 b/src/libs/libsrtp/fuzzer/corpus/8ad93fd0d1962574b6c11eabbd2f10926f8fe761 new file mode 100644 index 0000000000000000000000000000000000000000..dbd9476d445a7ef5cb572d19f7e06c9d9ae3fb25 GIT binary patch literal 630 zcmb7>%}T>S6ot>Eg-$_1o1IWeL0pK|jkr(*1sB~2zCj3OFoje~LKHh-H`XHb2})kZ zS8`GC2gfr_M2HmhK<-TLJ#+bHZd(8+K7hC<)rc!)-k|k`;f_Tp|0al1<qyJs(Djlq z*c;S=CMuG}43j*%Tx<f5bB2+?4i|fziqTVYgo*W7eOrd+m6qHTtDZ#RkwX|`I>6I| zF+~rwlJ{Beb=I&8jHjlelcL&Ujv7xJj>Y!i5^HOd+bXFf%IxAl>{n#J`^C=Q!eOBP zz^+T|wT~ZmqO%e2<22YTXJ^yCM7_#)7VUj~o2}vyh}5;;O@lO2G+ydt9r^|N2hN15 z*X#-A4l>&ei-*W0M3egh7g$-87|!m`3kiIh(~Ug8Jx8ML^p5#Yx+V8Rr+EGHY>t); L#}ME-^c37LxMOk) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ae43351f05a1f4f7c780ba1b20efba0f094923c b/src/libs/libsrtp/fuzzer/corpus/8ae43351f05a1f4f7c780ba1b20efba0f094923c new file mode 100644 index 0000000000000000000000000000000000000000..74feb941ff29b19c17422566a6be0badadfbaf71 GIT binary patch literal 102 zcmXreW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*fMCBrgEdr!ffLB6 UDxM+4@R*@N7$V37lY`OK0Nfi7WB>pF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ae8aaf59850fb7d967e8eba8e3eb0e5d4acbc2b b/src/libs/libsrtp/fuzzer/corpus/8ae8aaf59850fb7d967e8eba8e3eb0e5d4acbc2b new file mode 100644 index 0000000000000000000000000000000000000000..790aeb1d2c641b627e5c869fbb64aaee7ad1e429 GIT binary patch literal 102 zcma#o%VQ{sXJGi=o5_({&j10w|NsAIsICTb7#V~?Le<5LV43P_bui7qU=5`iI2jmZ Y8H(o!0r~MzvlxmpIbcS8?*$nP00SZtDgXcg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8af7b82ad27d65e0cde8609e40578070b3e29982 b/src/libs/libsrtp/fuzzer/corpus/8af7b82ad27d65e0cde8609e40578070b3e29982 new file mode 100644 index 0000000000000000000000000000000000000000..f0a3ed341fe1902db142f7e2dc247c9b20fd2a39 GIT binary patch literal 586 zcmbVJO-sW-5Ph2lvH^u^Z$cr0cqm#gMGz4zdKLT!A(X`iQYi^haKW5vFZ~6wztTev z9*l3Z@gyqvU}tA$=kx6t0WM+yc`8-Kn`qvl^-V)f@TmA9$x0P3=Zj<(74zhH83IG} zBp(gdP7Zik2VQE5N?_DD(8`f2Sz&EsEL;f06Lrz{V2ny7A`EP~AYVv?K6{AqiGDQO zI0G_uAJ599%oHPTb+H5e26yPN2m_lz-^A>;4qMDfh#@Vn^-yemDbwfc4gw#|<sSW4 zz+sI-+p*4R_q(|&v=t-NtaxDf;$uW<=^?n^-S_<j+<q?R)dhQf9Bp)ORgm2-d!Jo6 p-D=Z#cI+QHnEb_o&+L{15?}qB0~Yz61Iud1fjs4(3j`X*!zWd(XCMFo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8b226f84c1593a323c1a1387b5f76ce2d27053df b/src/libs/libsrtp/fuzzer/corpus/8b226f84c1593a323c1a1387b5f76ce2d27053df new file mode 100644 index 0000000000000000000000000000000000000000..dc149bebdca96607ea369078350e93c935fabe8d GIT binary patch literal 104 zcmZ>eVqjo+Sq&uq{dWMdfk1(Qp}3l%x|k8juC8YA0*L`tAP_{7QI_GqHBf3#b#-+b Z5T~ZbGpI3WGL#mBw1EN82r%tg4FHPw8QcH> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8b2e0dda68c540ab2670f0a4a03265b8e5789902 b/src/libs/libsrtp/fuzzer/corpus/8b2e0dda68c540ab2670f0a4a03265b8e5789902 new file mode 100644 index 0000000000000000000000000000000000000000..0a5c0a1913df1dc1328213d3b4372fd84797a527 GIT binary patch literal 1217 zcmbtUJ5Iwu6dXI2;z$&MR1}dTi%)?PK|uvqKyU*Kp%f9HA|?`I3o4X`Bc#hAI1Eyh z3(!zevCQsz{S9BQWPA7R`0dQRXGa6v-$nq&BY*h7Cx?{s1P}snOaLNw%*B`joZ`sr z^wDZz>LIK@qQMOm6K6b>osmhOG1<118UZ%VX63$HiPQ;HC^(ja6TodVbrErieu`)% z2xLl12K|Z|<*TvwBe;}2x0GSZI-RVfud3}l>#}=RAnAX5v~~fHPqHCm&m!lhHQKg! zY@E*(q1<k6T6C7A=<L=EvkhVn(3t{U0Up?=nb;idVgjYDq&|7yhfh|`C6m1;{KOu6 zUD#eyVm?$6e4wiZWSQV102@IYaGi>qAA4OzwC5&7HSPT`X&V8HMOgQUL%iNe`Eo%e zIcIj5|6k51KblJl`Li>8hmM(lNbaM6tEHN|o`#e2$<>hXGZC*tym5wJQe4npC4?37 KRRO9)q45a-1;mR0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8b46dc3a74c1f00ec2d797d4725bf77bb26b8618 b/src/libs/libsrtp/fuzzer/corpus/8b46dc3a74c1f00ec2d797d4725bf77bb26b8618 new file mode 100644 index 0000000000000000000000000000000000000000..c6609f4fee6b6404762b0261da5589627a08877a GIT binary patch literal 110 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+Yj{j~YXDF(Xh+9n5E7kOa~% pL2OP223epwp!6Iu24e<>oYcJd<ovvnqI`xN1}2DV2sLlsJOGj~6jcBK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8b9dc8086e6803264f339153d8d501cf0b304fd9 b/src/libs/libsrtp/fuzzer/corpus/8b9dc8086e6803264f339153d8d501cf0b304fd9 new file mode 100644 index 0000000000000000000000000000000000000000..b51092f79cdb039fd43c470d7b775a195f929074 GIT binary patch literal 142 zcma#AW@G?^qD+p|dI<CX|Np)W4As>P+wcJ0Z43;I48kBC)x{7qs;ku@1~6DdX$DRP k23er8((2+lLSQlBb_RwyDhvV)`@Vf=;D8t*15;fM0K1VT2><{9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ba0b96015902ac14f3a2066f517302fe28c6edf b/src/libs/libsrtp/fuzzer/corpus/8ba0b96015902ac14f3a2066f517302fe28c6edf new file mode 100644 index 0000000000000000000000000000000000000000..faf4833e74283af0d4f65343484ab8f9c3e05719 GIT binary patch literal 2153 zcmah~OKVd>6h61D=C&K7!Hrst_$WSz3KfJZjVoVdC3GY9;^GQHsUcTIJ7|kggW{&8 zo9aac7t%kV%kC8ag)X}iUDP7z_<d*YE5Yh%GnqMa<~+Xd%p`a>CAR|+X*d0F2Hy~C zZ9`<*h<I3q!QE@B{?}lw+Da@Pn8j=Vvc=w*-IiE937h_mbShZ-(~QiJGLY;_Pfp_| zO-f`jc<HRHAloU-J*le3j2^^%v+XyLdZY5qm~NH5U|c7zM!E}X8zI15iud-Fz;y+s z?N^5}lqTYin1L(?B2Y)!ZZetX%xOg)7;~a2EAw_}b=4{BJKWwEEtv_YB~q{JL?;(j z17-S;8mx8B9~1GMzVK!%fI>N)M15zl^4g)TG^I{2IClWq!jq@OHH?@&5|fmqPL?<z zKK?xU_*V%=fZL?~sZnmxYuY(k1@)c^)MgChd(H;o8d8@Rg*sQDsg#C{<xYZ46>iL| zv(_WnLl1E%=k#IK9w}2Pa@>6}h79wdiL^NQ28prHgMDf<<Sc;%jE)>epb@8GOw77K z*O1QDx4+<2`V0V-6l*IiK%!2bFV|IkdN{Td+$hLvolh(;-#^Nk!DwW3QKWTj&Ks7^ z<R8LZ(DW$q981*HL~6BK-p>p2R813J`cqzbqi@~`gVvz<iq0%%4kv))Zg6rXc|Pl{ zyq3Op=r`T9^+m63ACdnk?FARHA!#(1Et2Nx8!j?JQ~lef412gZX?Aqb)%R35wmBIr zC5)a@Mvb{2m}UU)m}T@b*2&v57>m!^*#x9wTWn;rX4h=7b!Lf-6K$bnUVw=Zg8b9i z!I$>c_pBW(>qS->(u6DStSjCXxr%!x^6N1M%1(UX1J4=?NFPWGpnbfv*F?Zxq$KW! z!JY6+t9>hFu)H4Eq4bGB+KWtPZ)822w?^@?2XYN|D~}XgLzW5&Grx^mLu2W280874 zFZ%gzZuds!d1CCh+Tr!E9Yj;^GV-`K<h>K|+%vm`taO=#&eLa?5mAZ)m3CWK0j{?n zrqICFRgko_#Z4yCB4-`9m-M~Ex=N+sGCR@V$0vy6IlAZVIN$GOP42%$BEx;oPgTEq z?tgEu56dB%<$z$}et?lcBI@Unj@Eu9capBqAdnS&E|)N5H>_G90emqD@$mF~f)Qew w{$w=SFVl}L*pe$82uNghku{Hli8jdxsP)yr_jvlw#up@Vux-UVTfEWo2mKnDj{pDw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8bb5913391d907b3829e475a0d982e98217230fe b/src/libs/libsrtp/fuzzer/corpus/8bb5913391d907b3829e475a0d982e98217230fe new file mode 100644 index 0000000000000000000000000000000000000000..f842b505117f995d0990afc823937ad5f7c7778c GIT binary patch literal 101 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc1_nlm07G>#BSW<VBLibK0|OBK_h+z% e$mlX~GBC8WFwEg#_{YTXAEcEDss}{HLI3~-*%W;M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8bda61d0d497216bde6d2865b7f8c26df0702954 b/src/libs/libsrtp/fuzzer/corpus/8bda61d0d497216bde6d2865b7f8c26df0702954 new file mode 100644 index 0000000000000000000000000000000000000000..4bcf3d23c62415e814aef08e122f7a28584792c8 GIT binary patch literal 1163 zcmd5+F;2rk5S%lXuqA{7sVE{xClE#Ch#ndqfOvwd6e*xcsJMa(rQr$b_y8T>;TcpM zbH3Zyj*}=-K+0OS?{?R>v$MM{hIoD|08GZo=!I{Jwe}7$22frBGgbbk&N<xU+FNp@ zDP}SB?otdN;gG1w$acs6czY~JE@YuHoOxsGdD+tJq7Vob88rw|het1a<Vrl!45bG` zCK^`j21#p?3FT`YRv9+1--3Tj23Nv|QlDknWAPC9jg|;GegvoUIRV8;cqtryaq}Je z#thgrMvCGZ=7*hS6QEZ%)`BgC2pP!e>zh3=4+{p~Z{pr5KkG-`8Nfhux4S~vxv=ch zD)((*V-H|E7AQv*^4h8#yJm%$^#2G!_(9Jd=hf8J;JD>q1aBOPDgPrUGAs<hqG<CA DS2CDu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8bed6f305898ddcfaf14ac4c4d3febb1b69e56dc b/src/libs/libsrtp/fuzzer/corpus/8bed6f305898ddcfaf14ac4c4d3febb1b69e56dc new file mode 100644 index 0000000000000000000000000000000000000000..f8ee90b4d7965aef06229a98cda886a114738f8c GIT binary patch literal 206 zcmY+8Ee^s^5QM)6BrUF?362y2X+jf%Cmew*fI=WZP`R35I6@s4>p3vXytalB`#U?c zr|q4?8N%b@`IQdtzJ}T~^`j=CpqVKz$zQN)R8A;K2_&r=cLl+!4Q6HEupcs0Scp2P tS(GgpW$@+s_OadKuEVFl$$}n=uqs5soz?&TbNQ#yKWW9%yY6`m_5+w$C{X|a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8c4753a130f6268258ac1cc39108b843a4210df4 b/src/libs/libsrtp/fuzzer/corpus/8c4753a130f6268258ac1cc39108b843a4210df4 new file mode 100644 index 0000000000000000000000000000000000000000..5cbf3994cab639ad19c40c6f4d7e8a98f5538112 GIT binary patch literal 69 xcmZQza7O_QKu{cCUC(F)WElPZ-qONQ-4e~f$iTqbUJataKoLqOd<6oA{{SEB5XS%j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8c84bd43c113b9f1fa988796307fe5ed77b923c8 b/src/libs/libsrtp/fuzzer/corpus/8c84bd43c113b9f1fa988796307fe5ed77b923c8 new file mode 100644 index 0000000000000000000000000000000000000000..635a796ba084dcc6d47bf45d228bd27543fa8243 GIT binary patch literal 134 zcmWG%WT>uIXMg}}AocG*5O6Rs$}%tld5qz308+xqz#t10RxOqhW?<0aU?_ph;$t|1 dB;)n+7)s(97%~~^88}iI7=X4^gNy`$Y5*@gAr$}s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8c89e29dd1d57d7e5616a3b68d39678267df60d2 b/src/libs/libsrtp/fuzzer/corpus/8c89e29dd1d57d7e5616a3b68d39678267df60d2 new file mode 100644 index 0000000000000000000000000000000000000000..441c144d14973976282e6a9e3d40cf6211265cff GIT binary patch literal 74 zcmaz~&aWzoXJB9`%H&9`2hu?B|Nnnq2#Z0K!JrQWxQgQqG7YM$<Kr{`=oY8O$ESAJ NGp>dz0%<)~4FDNb6~F)h literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8cb003b20ad361f711a61634a1e280dcf7ca4910 b/src/libs/libsrtp/fuzzer/corpus/8cb003b20ad361f711a61634a1e280dcf7ca4910 new file mode 100644 index 0000000000000000000000000000000000000000..737b53b92610071a7ab90e9d2cda55044647a835 GIT binary patch literal 147 zcmXYrF%CdL5Jlfkg-S?tYFCgrf;fXpp&~>zg^M_c!)eyo^_n;N{}(elXh&e1lj$@Y z-ao;z`T<nABdgfhkmV1ez)_NC=pK93ChVa5O$xQm4&AQ;su*9Ahr<Wl_l1*QUk!I8 A8vp<R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8cbe50e5868507dbfa64360ab8935689ac005f42 b/src/libs/libsrtp/fuzzer/corpus/8cbe50e5868507dbfa64360ab8935689ac005f42 new file mode 100644 index 0000000000000000000000000000000000000000..ce77adeaa4e3874895f2453dd7ddadcf682e264c GIT binary patch literal 491 zcmbVJv1$TA6r2r$7b}UC0YL&$PzZ>2X(Ct&e#4O>g&-E5itr#wBc@1WDQuG;F~4H# z5115*&)K~ToUwC?o!xn}`*vrcs@)L4s2@DNkO@jXd@eP&-3pg`eYo~IZjeD00SvMm zDykd^sn;M<b<=S;1nx%tw~zE$tb&_jNMs<<k2)>JeZuB4i<0w6%U*e{umCLkmAJY{ zTrstuI|)qcf|VVjzgDK(q1C|KCK9EOL>}wi7lJ06HStQH&{-w}#gjC`+K>-p=_sRf z_Apm`A3?&Y6UC?UIGEhBjn5ylCOf!GSuhFM+&{&=DM){auNPvM{;CUe*0A$;T`3N! CCW)m0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ced8f7fc42421ce6d4920c62688b621fabbbf60 b/src/libs/libsrtp/fuzzer/corpus/8ced8f7fc42421ce6d4920c62688b621fabbbf60 new file mode 100644 index 0000000000000000000000000000000000000000..ab2dd97da15395d53be08efe2b1cefea3951433a GIT binary patch literal 120 zcmdl#@jus#m(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!_1j8X5O5M1RyFDK#Hn? kD*pXfkz%L=>tWCW2?B*dO8)yo7@Pb-;Jm*-$h2y80EDI?pa1{> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8d09b8839f60d7289c31fc73a47767def27110ab b/src/libs/libsrtp/fuzzer/corpus/8d09b8839f60d7289c31fc73a47767def27110ab new file mode 100644 index 0000000000000000000000000000000000000000..c88d4879cdbf0ffab8fc6f0b7ca26b9b067c3b85 GIT binary patch literal 71 vcma#|Wnd_YXJBBc%Hv3_2hu?BKleY76az8sK?DN>BZR_6ax(Di<uL#NT-yf8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8d2a81f2b79778b61e84b96ce111083b918d12b1 b/src/libs/libsrtp/fuzzer/corpus/8d2a81f2b79778b61e84b96ce111083b918d12b1 new file mode 100644 index 0000000000000000000000000000000000000000..6644e7e9dd2c9e8cad351e68aa23abb5d708ec42 GIT binary patch literal 3193 zcmcIm&1+m$6#w1KVBYuv(JV@;H5087Y?HL56tM&nupr`qD_u3uAq;kK(uR2x#a!rQ zkq?AyTt>5$LS4ETH$wgcS1w#hH!iYu5yh5y{?57gzV{|%T5ape<lTGEJ@?#m&&Tgx zOu<pR8U50A-84;W*svD8J3XP*5y#g-&rE20rw5qwxXjqZNOO>M_FrOK#rO_zcAwoc zBL10EGEJ&?svS1%CairEcp$vXz~OUqpGY_Q0loR&j3`Dcw%uq4vljQen=&bM?QT4K z6P=h{n%n56DeiuG-U8l0Yip?rJ|#8O^|I(|1L~79eL~x+dR&a$;#ABDp;0wRgvBs% z0@uip&Ei$p0WJY&sDK`$h&uyYBP<y=ni0C#8Q=3{_sHFYsj^Wo_tS;bxb395_kc4* z#@k8vidLWze_mI%ehi-3SgioRy8ZUSFo9nQVk8pVM{H7wp^`fKD;gy>krS<p8+7-w z7l9sD2ArwU$gr_+GDX2)XOwKo>A{T$<hilfsjlJ#9$|xsxD(_?Txs1}uD8g}eD4)9 z1aO8)mP(Rhntq&!*<lR7m*5GBDwkFaxN>YV%^<w!a#uMQn7i7klxb|T|AGX#)wmfi zuhrLDjW{g$gN~7Zkv;f2efIEByI?StszBl$C!vvg`Yeors!hHVp7<8;%K~=tpKvou z`_kP=Sco4xraGI)WCW!ac`)U$bcBA!MxIBe-AKoq%9rEA)<pLkSzISE;U<v_g_swF zM#d<m5+=`z851O$l}V_GNvxbyp+NOs<#$YX2C~$)JWCbxoVun$c{N?EV1X&pDV7pN za)HvHCzjiQ43&hERPgdCQIL6$`M0TQA3dN~e%syr#?=oGaUR%8tRJg++ed7=2J15F zPw7FgV>c~%kOUkLaNKVbBd&H8k^unMx?;;W7k!vY?hkH$g5s^+bVL%|!|<!@IvDn~ z$(Txx6@Jn^_+9kNsw@?KnJyitkCv8x`akISK2JCvz%`zXK{0R15tZ6#ej0F17{$1` zU=;9}^FzWBVlTO{YfD=R%gQgGVi^!X2E&2T_DTeW3o|=szaV5>5y()R+~+@{`dC19 zkCuvP1$B?=zBZh4L=UxVq;y~R)$K5n$s-wMe$-A`C1lSck_-Wf;u8U*_qgaU_1-K! zI3IJE-Kjv$+7y2aXo-8}UTdv2;?)}~_2p`Eqdw#Ai;@7G&)XB?KZgq;I*fl~c>G-m z|4libb_zWfJfs{?xmQtMj_+Xf9<3E*N#@ug*>lI?uupJEc_<g$3_~l-tVv>}WLL>v z*IO>`%Pls<G3Mcpk-G3{`}7Or(qk6J+r_(-27aiQZ}BcAvoh-8`?7~`z18{VJi|%< zECinCKxy&z2k$yESm>wz{+&MZpyzI&@DNjt9!6i`@-l|{X+^!~N+}dDuhZf~XHg7L zn8_bTg%{SgzOc4aRNM>etlG=Z@fVixB`X}^qL&MdVQq2I0fj=qqxBOiHQf1|Ea!0N P`+c&85BSF-$wbmWI;p5H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8d37cfc4bc1b0d607e967a774712de0cfdc1d0d6 b/src/libs/libsrtp/fuzzer/corpus/8d37cfc4bc1b0d607e967a774712de0cfdc1d0d6 new file mode 100644 index 0000000000000000000000000000000000000000..c7985a33aa155497bb97b2b01c7ceebae8a80385 GIT binary patch literal 99 ncmXSpXJnuT_|I7VpPivPwuOPAnn8g<-5+RZwQhAa!~g#P#<2-r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8d45ad1dc43b87bd5e87ac210a13222135ee8e2f b/src/libs/libsrtp/fuzzer/corpus/8d45ad1dc43b87bd5e87ac210a13222135ee8e2f new file mode 100644 index 0000000000000000000000000000000000000000..341b9c00b4a80b82e1726d32bfce39f0baaa41c4 GIT binary patch literal 1876 zcmd5-F%H5o47^TMFtT;v0SvsM8!KY%GdiI@j<2vV^aCuF2<N(qXk<_&(u%6G65EOG z^SQkqux{H1z~fmK*l@vTS5q_@MTVm&nmR*6FRD~l{eo+G)z+Cde`at6?%pkE>`T8M z<dI5at6V07MWfoNq$)H5KWyK-6PHV<Q-vQj@0U(5m=Q4|A{QmxFf(ukP|Ae#Gn3O} zb;B9XxxEN^#28Q1yv;Syoi}74kcJ6clTTe3-M{0L37uJuDs5CFMklFqlms`7JdKN< yhg+UFDJ4x#vMC?G^0du6X*P~YfaBFwAY8xDU?V_%$71Ix8OYx<7hvVa4EYNN&?8y^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8d585e33080801d329007cdd945a1cf95e9dd1ea b/src/libs/libsrtp/fuzzer/corpus/8d585e33080801d329007cdd945a1cf95e9dd1ea new file mode 100644 index 0000000000000000000000000000000000000000..357ae12957166aee7032542c4a7f1d993942e97c GIT binary patch literal 92 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07FSJBSSR^1I0iJ{28nvGP(?$ W3=Hio40AXb{sFZy?12b_$!Y+P5fab< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8d9ac5f667371272cd3044f321c02c28a42c25dc b/src/libs/libsrtp/fuzzer/corpus/8d9ac5f667371272cd3044f321c02c28a42c25dc new file mode 100644 index 0000000000000000000000000000000000000000..b69c04e4d87dfb25481cb522fae4efe56d4f04fb GIT binary patch literal 877 zcmcgrv1$TA5Pes<nntlwNJy2^4+scarLswDaRhROAQB=LaRa6h^ArAyzhaZZHbn>o zGQOF;HPM*sl4Y5hoq0Pu%$rSHBRr-6?guWrpym>h9^gIAk~zA=NtWJ~;ZBhNPqbDo zR5lw$ynS|>I58N`#?+n=!miZi$BE^ki&)CO8MJkW*vHYBp>v!8ULtJgJf5`h;=fif zwTfA;mQKaTAA&3I9H9NI;(du{HjA=O<+O2&8pTYlNCz3p25x2;nZk*n3)~C?hD5#E zk|xkGpOWFu6O`7t)+BVc$*f4-WDq;#pVKyv-6*E*Aj)GuUR2`0M&|d(&q2$FPZQX_ f44mwb%E8MK{C(~U-&EdG{-#F!O?&ite+z5@6)2sj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8dca3fa748a2eceaad67d32e4ec211fdb68550fc b/src/libs/libsrtp/fuzzer/corpus/8dca3fa748a2eceaad67d32e4ec211fdb68550fc new file mode 100644 index 0000000000000000000000000000000000000000..0169632e27bc322a1f3512eea6e1f4338620cfd7 GIT binary patch literal 446 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+O4=4je@p^d-B}JJW1)LZFs1|GlLo`JB z-~Ux022=-za<T-N1QdZTYG^HCW3Dd#4+KC<nHUyZgPkeB$bc|Z1IlCqOEJ831A><? zUqVE^;OdNkETA#|Z~=S_hKK(fAi*+;fx#VUur1Jo@Sp?wl~WR=9TX56z_0`c1Ta9L XL51c5kTNuYuo=mv2tf?iez30rht@iD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8e2d519f3841c8d5220778e40913b1a462c97b12 b/src/libs/libsrtp/fuzzer/corpus/8e2d519f3841c8d5220778e40913b1a462c97b12 new file mode 100644 index 0000000000000000000000000000000000000000..cd0e4297948808751a7e0364713678e0110ca644 GIT binary patch literal 223 zcmazSWME*32jZesj`~a>4Fv!H|Mz8JsIF#UFaYxz84N)*KTxdbJ41CbBT!BqEW^NH z4W$`485m@-iZTW;GL%*q&&g!yL;!mP6T$)-1F?2K1OV*<*@M+C9+;g#nga-dKmkO6 Lc?w_#l&A&(e7Y&C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8e5362552348074c79a58a7705bc8734ad7fe373 b/src/libs/libsrtp/fuzzer/corpus/8e5362552348074c79a58a7705bc8734ad7fe373 new file mode 100644 index 0000000000000000000000000000000000000000..cc91f54fe40770f5f709dd8abb35805947410e39 GIT binary patch literal 157 zcma$5|DV-8o`Hd(D3c?#9!LYh|NsAAGcZ(FGcqvvF)#p0hV1yV#GKO9)&foj23erU zuZH3|LJZ+x)eLhO+JOupDGa1Iki;~AVg*I1Vh|xa2E9Cn5=9^fVwDj{7-*F*$SSBd Qph$L(Vkyu)seggO0Ap|>cmMzZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8e640d948e1dff48c4f488d42917d957835c7795 b/src/libs/libsrtp/fuzzer/corpus/8e640d948e1dff48c4f488d42917d957835c7795 new file mode 100644 index 0000000000000000000000000000000000000000..8d642d0d5335bc8223ecb423446979e8d646914c GIT binary patch literal 574 zcmZutJxc>Y5Pb_d?z9qvN(3>5NgxslHiDptr4TIbvRG_!AQH01W(w1#5CS$<`3JW4 z!TgdSBKQjw0**6#mtc{B-TB-%Z=dCcDOmvBG;t5&#fHo+fCw-shYI;B$a|ejLjhc6 zzRW^=Zs2ezR$KM9nKp^6O}84}>3FcC#~k?>oAcVjTk`@idb;g&G9k!b3}EQ#Tnwo2 zm?QKFrlcL<HKi{lCuV$EU7ir?F0yUbQeDn3;EmA>^ejimF0?5D;qBlScgidOIbpOe zSsBFvus4#hfEp5E6;CB$ffcM^<XxKNU*dmap)HsvRtCF{i*u!zEAm>@^0L<~q}^Sz zFF_J9;;C$reJz{?&atGx^-a&&&Wyj`l}Ep`0(=w<)&OVkv!;}GLetAvuEHyfL`&#h j6qhWi#WUu8U|U<6kU=>~yn?GIZ+<cyL5UPadDTFFmQ8jd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8e698937b5ebe1bf7aad256d8340b7ad013f2adb b/src/libs/libsrtp/fuzzer/corpus/8e698937b5ebe1bf7aad256d8340b7ad013f2adb new file mode 100644 index 00000000..6c464723 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/8e698937b5ebe1bf7aad256d8340b7ad013f2adb @@ -0,0 +1 @@ +se0e \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/8e73653222f4bc524d3b5fa96221daad0ac941e9 b/src/libs/libsrtp/fuzzer/corpus/8e73653222f4bc524d3b5fa96221daad0ac941e9 new file mode 100644 index 0000000000000000000000000000000000000000..61e7cc45269ee53c77f6e362b380785bd695155b GIT binary patch literal 168 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5p96U|<BXfkZVB3jkSR3=AiMB1~ZU>IMcyn0zr% n!FPTj55p9oDxe(16p$*QF<FF-0qI~+_|H&W4c5sBG~*ZmAuJXI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8ed44f9d26529e79c5f1ec78381d33f732e8ef17 b/src/libs/libsrtp/fuzzer/corpus/8ed44f9d26529e79c5f1ec78381d33f732e8ef17 new file mode 100644 index 0000000000000000000000000000000000000000..dbb0f7c7d7809a1af1a8de4d50422cd928d7d69f GIT binary patch literal 185 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;m*MD*A}dX0jLBd3MMg#l`E@T7+9(q u6d2U~|HHu_5DTmp%}fTcnIJtt15x#WHAD0u+yGP#awkLebC9EeGy?#xSv55P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8edf800c03a8aad4523c3d8de48bf4599a42e6fd b/src/libs/libsrtp/fuzzer/corpus/8edf800c03a8aad4523c3d8de48bf4599a42e6fd new file mode 100644 index 0000000000000000000000000000000000000000..59e1c50d1c11f85ff2d161b1cb0a712da7208eba GIT binary patch literal 211 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nm!%u=xM`GB8wE1Eu8|m;^v#ttD*C)x}V028PAf z5QU5kU|EK0ZAPGab%-DXR1#?3CT3X%kS50ewx|ZO0tJEc3IG4s|G!^X17yPNX8zCc Y5^4^N0^0T($QEE|Wn(PC;tYrz0JfzkuK)l5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8efa9187d6a0e27a24408e91b68606fa6b459f0e b/src/libs/libsrtp/fuzzer/corpus/8efa9187d6a0e27a24408e91b68606fa6b459f0e new file mode 100644 index 0000000000000000000000000000000000000000..1ca993ac2bd0255a4937e5cdb8a5312dcfacf444 GIT binary patch literal 248 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5c>tXVT^FYCL$Y#(?En#81BMh6wq3@yW+tvDgjaqNvRA>0xTfc0|CebP_Wn<$N&I% C?<mUv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f01b61dcb5c337b995dcf0e5764f34e5de119aa b/src/libs/libsrtp/fuzzer/corpus/8f01b61dcb5c337b995dcf0e5764f34e5de119aa new file mode 100644 index 0000000000000000000000000000000000000000..71a8740070141bf07bde1a642ef333486219d394 GIT binary patch literal 325 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqC$Z|fPtYJ zsDg)K|5JuKupW>;AW#Du!@yv|*Z?-gKc1n02`CEW6=iay)&rS9@c;jRU!eYKpzZ(v zZ-W4^GN2rkyUidQWCTAN2u9=M;_~8<z~wUjnJ|w5odEQhK?&HYML^epoCNZVFi-|4 MSE>f~cy+Zp0PpEVUjP6A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f1a55d99de3071ae0f6e59100450ec5b692a447 b/src/libs/libsrtp/fuzzer/corpus/8f1a55d99de3071ae0f6e59100450ec5b692a447 new file mode 100644 index 0000000000000000000000000000000000000000..069bed5efb8d7fa9cabe4643c6bd2920f5359841 GIT binary patch literal 121 zcma#|Wnd_YXJB9`%H&{_1kyn8|NnoWXmvFM10#b1Sfsj`kpYaW)xmrQ25SZf2#b>m wNZT^V0@X6)1KABgZgue-AqODMAl%NtFoy%knD~D`7f67CfnT&5XmTk70HE&^C;$Ke literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f331152d08cc196dec4a1d056788d4de085eaee b/src/libs/libsrtp/fuzzer/corpus/8f331152d08cc196dec4a1d056788d4de085eaee new file mode 100644 index 0000000000000000000000000000000000000000..93b13f82dc9084ed8889487832047c4ad6a4bc7a GIT binary patch literal 145 zcma!NWMHs}XJB9`%H&9`2hu?B<Nq%(%~bH;mw}<WnqeCR6fgl50|8S$Q~*LTFfcL* zGYD`oR2M_!tE<()>KGWTq4a-F1_oK6veN3}IYJB!Vi4guOadTA4HE;yzePR&{)0Hx E0Mu9`5&!@I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f36ff88bf4b338ab4947e4c0239f9eb3575fcf9 b/src/libs/libsrtp/fuzzer/corpus/8f36ff88bf4b338ab4947e4c0239f9eb3575fcf9 new file mode 100644 index 0000000000000000000000000000000000000000..61b26ebdc6e7b6ad0639ed1671f91f85c4b4c4cf GIT binary patch literal 190 zcmZQ%V5lx;WD{pFVPIsCVgQ4O{~3ybjA}+8;SR*MU^NWY)j%4o06{~!Flyz>>K2fs d0)x8$e^dZgg4JXKdgTBAZv|;aa|t8JEdVuhHBbNm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f39339cc14bd9193514c410014081bfa344c808 b/src/libs/libsrtp/fuzzer/corpus/8f39339cc14bd9193514c410014081bfa344c808 new file mode 100644 index 0000000000000000000000000000000000000000..d011750955b5a21f00d348b72a1157e6fab47317 GIT binary patch literal 139 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ZXPqz)`@!$iUE0z{$WM z3uFl}{FuYg4padog@F_YNO9XYAW;uu!3+YLotnu}4_5QPih<+*e+EYe2C$hxlYo}} K2Wo6EV*mgF+aXW@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f40d833d26571fd8c25a30163093c71b8ec14e1 b/src/libs/libsrtp/fuzzer/corpus/8f40d833d26571fd8c25a30163093c71b8ec14e1 new file mode 100644 index 0000000000000000000000000000000000000000..5969a151231f09fa7cea795a11758baaf3b7a69b GIT binary patch literal 114 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rsCqpk ZM0*KX4@iiC;oBqx_|Nbk3>Z2Y7yv;jC=dVu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f4a7f193fdcb4e8d9304a74317a9fa6921c3ffb b/src/libs/libsrtp/fuzzer/corpus/8f4a7f193fdcb4e8d9304a74317a9fa6921c3ffb new file mode 100644 index 0000000000000000000000000000000000000000..74e1c4d638de6a5f19b6fde4f5118d69bf825e62 GIT binary patch literal 4 LcmZQjV_*OP0CoT; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f52a3721d402c54d4f3604bc1df28a1796d3f32 b/src/libs/libsrtp/fuzzer/corpus/8f52a3721d402c54d4f3604bc1df28a1796d3f32 new file mode 100644 index 0000000000000000000000000000000000000000..fd2401ac5c9a8e3849cb7115fdbdc0ce8760093e GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|M!30Qikek1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kKfTS>x;s9cXwr?PkfkCktq?rL^G(%BpCPzI~O%=m`umngP#sI602bwg8 F0|3ZZ7oh+E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f57c6744d49926eb8d6c0a36b80991c50996344 b/src/libs/libsrtp/fuzzer/corpus/8f57c6744d49926eb8d6c0a36b80991c50996344 new file mode 100644 index 0000000000000000000000000000000000000000..3e6488df7d5d5018f04a4d02c6a2a78560cb7055 GIT binary patch literal 331 zcmZQjWPpI8OpYt{5a$2?|9u%6s;e2cE!(zb+qP{5Ob~G(69JZOV_;xp5C+Lq7c+vW z{lz7TB?=`#7SOCzh*@Bx7=T6r)hd7#0Tru(HB?utgZT^$CJYQO84^Goj!i&<lYwEI z?KWMo@j3C;^&IUCdescS>svr7K)`clyj~tdNj#7Vw&?$VhLx2%Kr5imtgiO`4^{{y fq(KZEUIY1sNUxPZT!>^W*vBAWfkAb#AOiycf;d#7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8f8748ad3794c703d767666b91847b9747eb38c4 b/src/libs/libsrtp/fuzzer/corpus/8f8748ad3794c703d767666b91847b9747eb38c4 new file mode 100644 index 0000000000000000000000000000000000000000..727636fd2ecd028742bafd0289590363d9b3245d GIT binary patch literal 179 zcma$54*~2&nH;J03}65h@nvABu4ZIl;9+0@lBw~DWe_O_29A1$c3~igqly8j4k*ds zzyg!|oeE?zGO#ria5B`%f^;%4%wcK=kswX193TOPwr@b<zW|5{Q^SC+1|*39ARQ&~ I46G1K0SX->JOBUy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8fbc8b089aa011ffef0a708cdc7b1d9b968e7ac4 b/src/libs/libsrtp/fuzzer/corpus/8fbc8b089aa011ffef0a708cdc7b1d9b968e7ac4 new file mode 100644 index 0000000000000000000000000000000000000000..39f31f39f619475b033f70ec69c772523654a74e GIT binary patch literal 458 zcmYjOu}T9$5PcH}$)yslA_VkO*+{UBfeWNM$S24ZAz(lx+}SOtooTg`Tw~)WELMvD zkXHNrKoFFSGkdFdkK3D_x3e>EX2CIY0wA3=r#E5+%sj^1J-60tBkq=?eaF|r4KiU! zypNir024iWOz;j|C6~Z)I$JzRvQrn+_mLDd&;ft#m|ni?xV<|dZ-P4Fap1$88D5V( zsH~4cSsxUSB$5IZBa2K1qiO};g#msB*^*yBap(!@aaHZ{R&Lm5D|ndue$=s++7>v0 z$d%M4(>vAq4EsoAND8X*d_KLHYfg`szfGh9jCOq>s!(s~R9SS!?%+%g|35=I<GM1% WOK4xcyo>G;Z=Ix~a`~qe2*Y1~Ux!Qp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/8fc1fc6eb61142f1f8db3972b8355b8d2351af17 b/src/libs/libsrtp/fuzzer/corpus/8fc1fc6eb61142f1f8db3972b8355b8d2351af17 new file mode 100644 index 0000000000000000000000000000000000000000..9de8061f698c3d1713c959861d90e8c555e5f561 GIT binary patch literal 106 zcma#oGi4}=XJB9`$`k{VVDSI{e_sZM>S_iCMg|42NOdtI0~lAU3qaIZLMR3XP6h^9 apgN%R93ilna61FT91e&y6NKUdQq=&9Mh&z8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/902e9545496f4bd52675923b09256bdb3d285e40 b/src/libs/libsrtp/fuzzer/corpus/902e9545496f4bd52675923b09256bdb3d285e40 new file mode 100644 index 0000000000000000000000000000000000000000..50e15e16ac5b635194d12a292b55d0a222a066e0 GIT binary patch literal 144 zcmXYrAr62r5Co@HfFh9K(0qY}H}D1&0!2fEI>AT!4jzXoN6VPG?5?=Qz_<X%R;-s= yiSbFcF3upropDyjirxPp3k)rFh4|cy3~2|`Z%XKOc8U)TbU6;TPDf0b?+ad{S0hpY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/904219e4f56c8e679d64389a9f16a87f876cb9cc b/src/libs/libsrtp/fuzzer/corpus/904219e4f56c8e679d64389a9f16a87f876cb9cc new file mode 100644 index 0000000000000000000000000000000000000000..1ed711dec82b362ecac4065b6e4d40e7999a8fd0 GIT binary patch literal 376 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erl>w{^Xtpm%1z5E?11AH6EYR4}>f$+2vH$*=9I5p{n<@<FC^INC z{QvjAT^M5a|DXTaK`f{lxD7-$R)~RoKe<9}16oKVU|_%%03dII0ocnBZ~tdduhy-v GE(QR{RdJ30 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/907c814ebe5a217c57b1532198428d001cff0bf8 b/src/libs/libsrtp/fuzzer/corpus/907c814ebe5a217c57b1532198428d001cff0bf8 new file mode 100644 index 0000000000000000000000000000000000000000..28ad1c53793c58ab263ada6b2b29a06e327db368 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkoPK u31)IKFvtSc0j1~gG8i*3<fP`sCzlqd#+N0Q=A_2U6$l9lr2)+ZssI3s4HlCC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90839e2f2bc032d0e688d04d06e00da1e5b6769b b/src/libs/libsrtp/fuzzer/corpus/90839e2f2bc032d0e688d04d06e00da1e5b6769b new file mode 100644 index 0000000000000000000000000000000000000000..0a8f4d61dd9904a409a693d932a20c2ffd4a49e6 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLr8gLq)8CG$#XtEKo^l bbx-jeA+We`I|IWU5bN7_1`e<Yn5YH-_3ROM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/909df934174cd3496294e668eca5b1ba6dd22e60 b/src/libs/libsrtp/fuzzer/corpus/909df934174cd3496294e668eca5b1ba6dd22e60 new file mode 100644 index 0000000000000000000000000000000000000000..d55dc3bcb4456927c72a1c28720727a9e7c791cb GIT binary patch literal 2255 zcmcIl&udgk5dPYU&Kp5C8U+=j6P1V};{-(n5hf5pga~``lzpg-@*qZeFHuR0nS=2M zL?lPuxh%PQ@#IbMApQ@Y_OgeZ^b{2(?N`;W-^`%6qFBsyS65eeRabpgFRo4DW(*)r zqUJDXl5=hx4Qt7kRd8-{rWs$YAW8>efEHN@*N+cv+@%V~0jxzN+VvHx%t04=6IT(M zNK)!J%p!75Z}o%C3~W|yRj!6RT^qC=Ez176KDbT7H29wuKkqk_XbyKp7|qhv(yCmy zxZbHh9rN7x5BYiX6F+KxIe$<?jFNW$0Eu%#8u&SXj>~bpSaj=`mnHbCuCd*3>|Q}e z2?MKx#;oxurwe!~v6)&zEluwI(|wl&(x2kN`Gr+?`yrz(cPkwaOr@;(ggw&MXk&m` zZAUPJ)L0X=bRLzr6_UP!Ba_9gR#db2Bren=)HMOO#&R-U4;t=%(CIPi8>rfh&AMG6 z#GbFbM|7A^AHa@oYp8-xA$mfXY^89uMa7Q#E+I-fFjPq~aI4?s`5?Nvv~;J+8Q2zc zklHB18XuVQNbHd^arhvl74lUa75Do(z~AvP#I+?>NTc72lO%!>xWP)XgCp(v1^3AD z%t!?dZcK}B-QJ9b#FpOsqT;!4=}hokouD%hw5YhsYsOe>Q2NYe3(r02rbOIc%bIcg zIg9J$b4p@v4<jQ4>WSMA%y{)SUX#)85c%%l<t<6_*`Om>gLIHc8VJjuf=;NsRv67O zCJWfg6uqH0Pl5+yit1`j=vl4CV4YFEYv2`I><AAe%#{|#+wnZ>Qiz_g94zJY(kr)_ zTkp!4pI&EdRtoz|8e|{#m|ax6Q`&R`iPzwv+>SHBAn>Pb&M<=4d{a%YTudgLCq^i( z;It%pqiFE(A2P#aig9cA=@JmD{j$%wuqs7U#R-Z|s+ubh@T(Bf>v&1tA3||5Up<CS zu`%B!kSLUvFqGNH@)m-;9|zfbinYjaXNAL@;kSUaIz$~{0t>Dr<*ejoLHc)Q<iUO~ zC06-;Azbn=fa@|YhljFHy~e+BF)L_|bh@f`y1hHe_7R{Fo}&COtHpOo8nnLQDnp(> z8D9J+vm7t_a{eLw>-SUsbg>@-X%5IrDMfNgK9CX~p`bGReT<p_R=%0(U;r}y&-cJi z@2g<XAUq6w@B|91cnt<eo>%(cG<nUFy--=OrTL7|&Tko_EByTQW(#GTUXD=d6HL|) P+3W2MILf3<HmBk*>(%5n literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90bb6fc426b1324848a639c7bb414e5d14356550 b/src/libs/libsrtp/fuzzer/corpus/90bb6fc426b1324848a639c7bb414e5d14356550 new file mode 100644 index 0000000000000000000000000000000000000000..e59cd24f30c62174228f9fb07e7e355dd2e6c8b8 GIT binary patch literal 223 zcmX|*Ee^sk0ENFLFbb9+r#S!;!vzqWpqXgG9AN}O#Sj|{ci@7%0Jgk#3r{rd`|Gn| z#Nt{R*N`CQ2;M`cx3l+h<S`BXT6gn6o+ut>lZ3-WfBw8Ip-4$S^pbU^5UhB8MTBh% z<#4mGd%J2Zo~L3}D?Jr&^qD3QmxWLloCXFTQD<7XM<e6VKf2JgZRgAS98LBII14n6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90c7cb30b59b02b23cff45739cbc964fdff4b3f9 b/src/libs/libsrtp/fuzzer/corpus/90c7cb30b59b02b23cff45739cbc964fdff4b3f9 new file mode 100644 index 0000000000000000000000000000000000000000..4a79c35f8e7528c8c96131128121a00b4b04adb9 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0AmvA;7gC>Ap^R6EQBf}0=$24E@_7#OO7 oDiGS$All<iv#YDCi&NvPGo%0iFV?PR2>f4N_5c4%psA@00Bam6F8}}l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90d4c2d95d25aa1e67ab78f1553148de43f42ceb b/src/libs/libsrtp/fuzzer/corpus/90d4c2d95d25aa1e67ab78f1553148de43f42ceb new file mode 100644 index 0000000000000000000000000000000000000000..e43e4ef986909427edc9533af37054b102f7d1ed GIT binary patch literal 160 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO jsNIpF4y*?x1Z1dzi~-VSDPRB+#Sd!0(h$`tiV(E`Oa>u3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90dfac881acb62787fd9479f8c2c90aca0979866 b/src/libs/libsrtp/fuzzer/corpus/90dfac881acb62787fd9479f8c2c90aca0979866 new file mode 100644 index 0000000000000000000000000000000000000000..d1321e87bdafdb2e907bd20320f36902dfb1b63c GIT binary patch literal 67 zcmbREe?QmDm(|tPy+>PGs!bS*85w|}8c0=FgIFK{WPn9s6jOmPPzZ!9fw&p~nt2YP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90f2d8c6a973a3044bb3d9f7b2b505fe8b735467 b/src/libs/libsrtp/fuzzer/corpus/90f2d8c6a973a3044bb3d9f7b2b505fe8b735467 new file mode 100644 index 0000000000000000000000000000000000000000..7aad456910cfa240a40f36c092a8d24be552d706 GIT binary patch literal 102 zcmazqEl!QkP0a<O|H7FJVDSI{e_s}c>S_iC#{a$y5QaPhlK=xy0v`ZsW?|r9-~g!+ HMo|a=>IXcv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90fd5c59f63f6404bdeec3571a7c22dd471f2a76 b/src/libs/libsrtp/fuzzer/corpus/90fd5c59f63f6404bdeec3571a7c22dd471f2a76 new file mode 100644 index 0000000000000000000000000000000000000000..0432ef6784efbe76ecadc61e45988047ad001c2a GIT binary patch literal 236 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5F5iVMz~=UkqyIbAjn#%u@D1YfP9$ikR8za|9=Y$L+f|2lafKY7!0c!s!QVcPy7$& QsWJQqngB9y&Nm<d08C^qr2qf` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/90ffd04a9547fd44b574e2346764605436b494dd b/src/libs/libsrtp/fuzzer/corpus/90ffd04a9547fd44b574e2346764605436b494dd new file mode 100644 index 0000000000000000000000000000000000000000..ae5b3d2f105981697b3b4d8753aa00d8231f7141 GIT binary patch literal 107 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtMg|5y1_mI>kR4x^m{Xb>U%<)0APW@v q)lfV~h#?%Tnqdw@JCFe+g@F_YOpJj+V-7=6d~t4KPR?JDU^M^;8W$J< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/910bb3ca72a76508a0a036830f0b0678d1ce8cf6 b/src/libs/libsrtp/fuzzer/corpus/910bb3ca72a76508a0a036830f0b0678d1ce8cf6 new file mode 100644 index 0000000000000000000000000000000000000000..e9b741221a9677de1f13821327e6e99fb7ec5224 GIT binary patch literal 73 ucmbREe}8o`BLf&$GXTMNAO<oJs2VKHz#z(C1(JgBfD}l}v11@USO@@u_79%` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9113dc61fd586fcacaae9ed3cf37ea084ece8990 b/src/libs/libsrtp/fuzzer/corpus/9113dc61fd586fcacaae9ed3cf37ea084ece8990 new file mode 100644 index 0000000000000000000000000000000000000000..6fe6e2822decbbad7033f7bd8d4a100736a01e4a GIT binary patch literal 1019 zcmcIju}T9$5Pb(iR?{d}1{5pHG<Je;sjO^lQyhX<1cFF{g;^mMqCerk_$xLR0V|6j z1YF<D-rQYc6d|}AvvY6W&hE_H&Dxi^%>WE~E<fPR5kfcxyr<hxpwqw3v#WKuT_nIA zz2`PICKF*yKhqYPO2gievnPeL6M_6N(L996rR}OiU%nWd)nkN>5!Vz{;MHg)vOKA7 zQ*!9k7yjV{wmny_c!H6ok`u&qHxVj22S`6R@$rO5mQB0O$w><ywrIxUnH*Fo@42yZ z!U!$|bb#}I<WQ)09iauJiisF*KSARKXOe{AF_jJBZK{)+lDV2}R%zKZ>Pw%Wbw9l~ z&hN4<METpbg_5wkGCxPYU$kXX*0X9{4{XX*ZB%%z7_p|Ks;r_);#E)SX<Prt%<Z%I YBiC#ul^x10%J{Z->}}6oChsqRFJ3jwMgRZ+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9114620e87fa084243157b4f03684e2abb72ea0b b/src/libs/libsrtp/fuzzer/corpus/9114620e87fa084243157b4f03684e2abb72ea0b new file mode 100644 index 0000000000000000000000000000000000000000..ddaaca86b964cbe6f94ce4acbb50ba6c7c9467bb GIT binary patch literal 66 zcmZQz0D<E8>Uu^a1_m{wzt!Jc;#-QVtE<5h3=E=~Kt{Y8Lovhu|No2Q4Kn{n7w=}^ O`VUmVqV}JGp&9^CmlPWS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/91267d27e463ef628be63cad43b38a6243eebe90 b/src/libs/libsrtp/fuzzer/corpus/91267d27e463ef628be63cad43b38a6243eebe90 new file mode 100644 index 0000000000000000000000000000000000000000..e06895a800ff3ce7cb0bb707d870d511a6ea6ada GIT binary patch literal 106 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc q7&sXiWEp_UDh%fcF$lK<g*g}+80K&=`~w=(em+%*fk6SJwi*CjmK9_G literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/913d43ae64592c8b4c55bccbfcaf1e34d9b6c78c b/src/libs/libsrtp/fuzzer/corpus/913d43ae64592c8b4c55bccbfcaf1e34d9b6c78c new file mode 100644 index 0000000000000000000000000000000000000000..a08da3b27b1ef0891c8a3c7d8a1ca505a192ca89 GIT binary patch literal 1163 zcmdT@u};G<5PcUSkw^@PP7GD53e*9mVut}f0PzW#I&>&Q%Y=tcs0*LajgR1W_zWh@ zyV!}{gsH&5MX`P7^WF2^b2Y`&V+CM2&t_}R6l?7rU<@G60J9SJ)20shxN<us@*JBK z<DW}4eSjj7<;)J|E_^_8-a;yH>Nb1hq-WXNAc7tQi6A7$4Bho8TaUaz?SXKUPJ#AD z_U*w=@K_DK^zd)RgX_YF$Xng^wDE}G_rkzCoo$IIMaEBX_)g`+^Tu3|G^S~a66TZr zv>7n0iPct1ke~o7`ut)K%%UM3Ua!;P36G7E!3JQWt!kI>nx-XB!)5;qY^?(2C?Jnk l^|RaU5HI~VLJ;nums)eHgt*}xq0!~<=H3ZTemLrAjxSM3m7)Lu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9148b45122d0ecadf51458de33998ff27ce96e55 b/src/libs/libsrtp/fuzzer/corpus/9148b45122d0ecadf51458de33998ff27ce96e55 new file mode 100644 index 0000000000000000000000000000000000000000..19b58174a88e90f2a1c70844879469c403d549fc GIT binary patch literal 175 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_o9jFEzd-5iATQ7#Y|a3OE@UWEmJi z{5cHm5K<UOaezeHz5$8<LLepxfX(hq&E%+OXa}qL4KiL2B*g+EKmbim14k8u?f?HE O^Bb7|{{}e@1~>o~03d1r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/914ff5d72f2c35c5dd5246f56ceb26f135043ca7 b/src/libs/libsrtp/fuzzer/corpus/914ff5d72f2c35c5dd5246f56ceb26f135043ca7 new file mode 100644 index 0000000000000000000000000000000000000000..e122ce4a331d02f94b45b021e42ced9c4e3dbaaf GIT binary patch literal 466 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RODe+MbBID^tRhGL)yBZvni zs*4#JsvTxRK{CTZ28NROJO&26qRftkP_uw4ts$Bj7&+M)WWo9j<_LksgxeVy=5R1D z$^v;zP*o7hvCahw7(w<+Lqye(?e}s43NkYM2dOKqE`}TF7hGbNlb@WJlWJ-Vbfob& zkm*1G_CqxX+@c1cSTzGeAJ8cb0u1}UeP>_<dk`qis0*<J>=a}>plX4p0f7`BDv(3v UlFkDeN;0T0nA6(xf98J%06*qP-~a#s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9166dd5c71910bc2a5c88c6b610c822518f47b49 b/src/libs/libsrtp/fuzzer/corpus/9166dd5c71910bc2a5c88c6b610c822518f47b49 new file mode 100644 index 0000000000000000000000000000000000000000..b204f66bae64be49afa4d4174861f32bc1de644e GIT binary patch literal 1241 zcmb_by$*sf5dO-5@(7wRyYT{sL>=HE9GG1Q5jGMx-^-_PckClL>9tU<1j3(QC_Tz| zU+=za1yJS!WeEsuq3!iSPEIN471Ic93^WpFTH_}PQWV$AI`cY4Br_vA6w4MIT?=GH zCZ$|P;-L{ER8nYT!BlDE#FKOyr!ffC7Bb&_^ZaC&t3UNr4~LQSJm!re6FH~FI}`Mm z+0JIL#~Zy}4JUuHQcKgcGcz2&=(MVuKH;>P-R#-Urbnl&5vJ0~4z+x~3y&au7s;V@ p_<MM**xJ<_c?wGP9B*B~zzWIdwtwG+4_Dnm>}jMlV)zj117Cl#aQ*-Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/91923f189c6813b46baa52a30f72bea9dab4cec3 b/src/libs/libsrtp/fuzzer/corpus/91923f189c6813b46baa52a30f72bea9dab4cec3 new file mode 100644 index 0000000000000000000000000000000000000000..e287d7a752084c3f15c22e8b96556f1f01e76f54 GIT binary patch literal 134 zcma$54+0F;>I@9|ISdR;*<e1HU}RwM1Tz*Q#IUfQ0L8-K;y`miz=6S#A^Ihdk&~Ji gpPUaA4PXEo&j3^>3&f27<Mr}Dod5qz;u#ni0cVp`LI3~& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/91a8e37b3a1f44bda6ac409980e6a2d4a9156a11 b/src/libs/libsrtp/fuzzer/corpus/91a8e37b3a1f44bda6ac409980e6a2d4a9156a11 new file mode 100644 index 0000000000000000000000000000000000000000..c4393563ee8702209faafd587108df8114065eb8 GIT binary patch literal 360 zcmbVIy9&ZU5S(Zv7exq)c7lZnTKNh7fZq^OqzE>mR*8^w!7_b5&c?<MkW{X-Nd&R< zU}s-*yL0Eu02d#?F*4zjp64a9!!}76I&~qa5g5*30olO?H1bfD$k`)~(SuRi=1EH0 zTo4_^%pgQ`BuCb9#{(86t2X(DQ=A)<3OX4`JV*(yHif2v4H;?hpq*9bHH=J(T#F`# vv`)Iz3>1C&PZnYr9Z;V=F*&UiEZRJC51;qSwB_jj`&a!}^Mw6YbMsSgRryCY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/91f7985c3e6d3d8a17580a9d293d643e52d5c534 b/src/libs/libsrtp/fuzzer/corpus/91f7985c3e6d3d8a17580a9d293d643e52d5c534 new file mode 100644 index 0000000000000000000000000000000000000000..090066995e07f67005ad28c2da14482922e53241 GIT binary patch literal 625 zcmb7BJxc>Y6r4ScCMiNRaD@<*i;az>KLZI^3Hc2v#3GHwU91+=!k~o+mf|(y|4{rP z+UE}(f+5d&dmBFj77pC)y|?pb_GTdmA_D-)uzYmJl@O6Wo^Pc(nOK%H>2A1w5ameO zF|1w#*8*(!&f^d-z-Vv`>?Xsj2a4@EPVAYcvWh0;9k!jVyI$iG$jUHHR#NdaxAac; zJ<PX1I$!>^KM~YbV0<l0HZ|^><zsP%x`Cg&sm=J8ir+%c{68;S#yp90%`6YY3##Vu znPE%g6jU@cKE|f7nkw;8EWosr-pkV)xtO9<B}-#2L3teRGi8f*)<SDXW?+a0CpKk> zv|DuJ4b8or(bSK_Y@*0U8pFbv(k6`6Ws#(ZrL!6ftiex>HQgJJR+w*~7r33lU1uA< T0+zwaC{m4Hi~)TVCeh|60^NrD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/92148259f949540128b36486bcb9e6d3ab8ec124 b/src/libs/libsrtp/fuzzer/corpus/92148259f949540128b36486bcb9e6d3ab8ec124 new file mode 100644 index 0000000000000000000000000000000000000000..3d553a4b56d1182d5f5911466fc9c214745dcd3a GIT binary patch literal 880 zcmd5*Jxc>Y5PhqGZ2Z7zIw6pNSct|(M38`jg^l1pIF7KGKqBFeC}hDjVz9K8`&E`! zwrMR=D7e1;h+sfbD+g|8XXee^<IP=70QCq!(voUGPctvj`o!?YB2;t{w|gq;Hal^n zk~ZV5ZUHD`Rsx?hf*E8O`m;o56Sx`k7zl_B8#znRI+FtoEymge(&yd2(^{fh5&<Lo zAf2_0=^W%P=L+PX7#WA2DPptE2)H9GpLC?CZR^WyvC)frZRIMCmMx)>Bl`fr9?(|j z(FgEUr_0dKfPUa(JBvUeZ#x+8WGil1X$X;#M48bHurx+Wtf*n%Hw5kuT>;U5;{J`6 zR>~k0wNzhg=|R(48gmTXUK=kTXI0bJdq2=>879vMUuDkQ)ZYH{PCVg-KpclxN5KT% d%)zS9uZP9`cyEvF`^7gm*^&EC=0?qteh1PYlN$g4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/923ceaee40c82c9fa5491ba85b4972b8582a2c69 b/src/libs/libsrtp/fuzzer/corpus/923ceaee40c82c9fa5491ba85b4972b8582a2c69 new file mode 100644 index 0000000000000000000000000000000000000000..45fffa2d1f96f8a7e16a4e1fcf2c3f23fb2b5206 GIT binary patch literal 112 zcmXAeI|_h65JTUBh<2j2VCNyk($X_*Wnp9Cr<$wSdr4u;Vqo%;OdL1P2<(eDt0=wh oo?`~VXZ`?HdYK(T)~75DKcIw`z-7l>YwO?^GAOjB%A;el4>Twe!vFvP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/927caaad37be4c7c3ff69eaf3fccea4a0a2c3c6e b/src/libs/libsrtp/fuzzer/corpus/927caaad37be4c7c3ff69eaf3fccea4a0a2c3c6e new file mode 100644 index 0000000000000000000000000000000000000000..131411f5a2f57291661b0d21ddadcbc268d264d4 GIT binary patch literal 41 ocmb=fuC6XljgS9R9B%+*LP2Ic0|SE^LoowTH1oeE69Ypj0AsBVx&QzG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/928aed4be9c6335cfdec4e04a3644d36b162e59f b/src/libs/libsrtp/fuzzer/corpus/928aed4be9c6335cfdec4e04a3644d36b162e59f new file mode 100644 index 0000000000000000000000000000000000000000..b45e9a6862f2de2b25c1b7154e9689863fa2708a GIT binary patch literal 195 zcmcE4W2h>LXJBY3%H&9`X8?o$|Nr|kFjQAFFfc*{7^;gIAs8qI1poaRtRXVG44iR# zc?|M>vl!k?`~UwpNb>)GRR)G)h)M<qUZ5#Z<FXkT<r(G(sQ?uzFidV|U@)EoWU4c; rFmR{?8FE031UMNOWEr*r1z_4ix|sw(Dq2k$su>(T7#K1cLKzqU(>NoU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/928e5ea8a82bd17015cb1b2b828dccbae05ed81c b/src/libs/libsrtp/fuzzer/corpus/928e5ea8a82bd17015cb1b2b828dccbae05ed81c new file mode 100644 index 0000000000000000000000000000000000000000..47a71a82b8566c2fea773bfcf5c099d7c5925c86 GIT binary patch literal 208 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5nx4XP6@dlu=+1Zf9UnnFD09 zFmM1NBLn*bAm{&oAOQr`T3QU%)#?xqgEf?9;ACKs1uBJ^1~OKjfk^-)-P-e?xjGjl j2L_8FdIT7O4g!H{ZAOrR2Gzy5?FTvx=w1*I2I6=C&eSN8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/92d49fa60a0535d9a2993d81e71bcd893b96744d b/src/libs/libsrtp/fuzzer/corpus/92d49fa60a0535d9a2993d81e71bcd893b96744d new file mode 100644 index 0000000000000000000000000000000000000000..899c7308f61051aa785e586161945c54a10210b7 GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc2oFS7GcpucJ1{aZRs-2U1^x`y4PaSa p22KWsb{2s-91Q=M82&T-k1t9sn)tscHMe4ab7o0$eoAU=H2^>v8V3LX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/92e4b808ccd7718fa4494efe2803822b377596ea b/src/libs/libsrtp/fuzzer/corpus/92e4b808ccd7718fa4494efe2803822b377596ea new file mode 100644 index 0000000000000000000000000000000000000000..1a19ca0eaed9c2e78a30a5fb71f97cca5a34f8d9 GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(ad4wK|y3z#z%M z@Dj}AWMGg5ssl>T5n?cAV8}_$i%-taE6Fb^E>12kc1+C4Db6o0E@n~#+Qi@h0O#Ns Ah5!Hn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/92e6fca9bb5223fecf157bc2fda2a3b02181b3e7 b/src/libs/libsrtp/fuzzer/corpus/92e6fca9bb5223fecf157bc2fda2a3b02181b3e7 new file mode 100644 index 0000000000000000000000000000000000000000..f6fe2b3630c645db744fb7862584aa800f748e52 GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9#eS1<s{Fj)hM kJP?c1ok13;+MvB>ju4Ort7Yf~$uN9FsA6CUWMFUv0Aj=#YXATM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/932359778a7ddaf719fc878a4e23093e142948c6 b/src/libs/libsrtp/fuzzer/corpus/932359778a7ddaf719fc878a4e23093e142948c6 new file mode 100644 index 0000000000000000000000000000000000000000..1399b2cc17bc3fb74478daa4f16458eccfbf6148 GIT binary patch literal 69 rcmbREe?QmDm(>jaQ2+xr@V`_GESyl?aB>=hK&C&CS6$4=z{msujX@Zz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/933b97f21c81d68e32857ca64df28cd97a04077a b/src/libs/libsrtp/fuzzer/corpus/933b97f21c81d68e32857ca64df28cd97a04077a new file mode 100644 index 0000000000000000000000000000000000000000..0501ff6ea2091c6f3c5b6dd20ae09edfdebabe6a GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_n+bZ(4j=B3KwqFfy<;6aa-~85lwQ zISlO(QW!{afJEB90g3-YASMWa&F)Oi<fvz82dk+984uRW0#O0fhiNfLK`PK<7Q99Q RO@afkkuVb>v;z{C0|0b{E^Pn+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/93608c9cd306ea0818dedb1e1fd86a39952123ac b/src/libs/libsrtp/fuzzer/corpus/93608c9cd306ea0818dedb1e1fd86a39952123ac new file mode 100644 index 0000000000000000000000000000000000000000..0d161e45c9d972f65fcb71c54f63589a61cbf1ee GIT binary patch literal 378 zcmZvYF^<A85JjIuu}OzWy<%ygLu`kHsG;Eu(4;^@6baC{$TlbqN1)>#NF0h#nwd#f z+G4*Yk3IkYnXw<6Y?rTN$jG-Ph7iIMya(4L7!>Z?7tV4#4TqLuuZLv8r>G~@<=T^I zTBHC>siT=hld;yMS1CV*NXM41|AQZ?U7&75f;BmMbt+OSu5`KAR`KX3O3b0x3|=^Q zGNEkAmzcG0>rP{$UydLrFH6gO*c+58n<~u?dA5y9s#K{zv%U0AJDYR}D`NY*K2cYx P^CfibD{k#e^fKfPwS-Cw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/938900bbaf4a1a1eec75d16ec3e4bc45256de6cf b/src/libs/libsrtp/fuzzer/corpus/938900bbaf4a1a1eec75d16ec3e4bc45256de6cf new file mode 100644 index 0000000000000000000000000000000000000000..433ebc6509f5c6caf7e11facf52a8493ecf42532 GIT binary patch literal 40 ccmey*$iN`LfCNPU!vIL;f2me#+<zbo0OU;#j{pDw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/93d56d539af6ac5a69e695ad565ea6d02da157cd b/src/libs/libsrtp/fuzzer/corpus/93d56d539af6ac5a69e695ad565ea6d02da157cd new file mode 100644 index 0000000000000000000000000000000000000000..9d42c3aa4268ad219512ddf842159b524f00e8bb GIT binary patch literal 147 zcma#&Vt|06Operg2=o8{|Go?i)zu8!@BrOy42%p6(jXnx#XuH_u2u)r3=Gy#nt_uc tBQ>XhK^Caiv|4ixP?%AOL71VPVGe@;!@h6d88{4pQo;-}Pz@|VQvg>HCC>l= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/93fa04a15a203225ace622afffd955ef2c50d46c b/src/libs/libsrtp/fuzzer/corpus/93fa04a15a203225ace622afffd955ef2c50d46c new file mode 100644 index 0000000000000000000000000000000000000000..7d2e7fbcdf93308cd0ee5b0b78e26ddb975f0bd0 GIT binary patch literal 408 zcmZ9Iy=nqc5QWbOlB<;@RT6|$+AWB7X(Ct!LLR{)u@FRMuR>rz%QQa1Hpzno@)mi8 zK<W)xcyngfLNdktd^2-)_Kx9Jf6u33vaO1g_MX&EiBvt@9-}nQ&<3dvigRZduRswX zZB{iS?kpK@Mn@AI(%qFYpi?3$OoHxyWF9`Y)_5w37Cy>fggz&;^4i7$*U(UXW44|U zrIa3c&VkX4U|)bYp|F+{%Sq%pz5EaaQzCoJ=C~X)s~(|gkZn^_d}dbiwi}NcJJ2Z7 w(=Jx|B1X~{(7@MIS}t=g4!K4mZ~x5K2f(){bV?!qXn(i!2aMEGx`k-OAGp_Ii2wiq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94296913d11ce753fe6ed95171410cf5f8d01c36 b/src/libs/libsrtp/fuzzer/corpus/94296913d11ce753fe6ed95171410cf5f8d01c36 new file mode 100644 index 0000000000000000000000000000000000000000..4e83114f86c4f01c7d4894134f042e0b8005fbbd GIT binary patch literal 938 zcmb_bPfJ2U5dW<T?t=o;n_wtJhbX;N1YHt>x&(cL$3vDBG~_K7xX`;~68H(?eYieD z2M-l(vwwuLG7k>y?(EF${APbUTi05jg#h9X7YVH-`V~rDXwn!B5#B`Ife8EUUev0} zcC^<IfC{ploGHd`F41BPc$m_ZFznD`j+4ab2%cbUVvNi}hNLqe6pIdrkKsd5Rp-Ft zz1BVln0za{Ses`7*45uw79Rg%)ueiISeXKLCn`IV#D=e=Rsb@<XreR4s!3Qf6y)O` zN01|4SiPZc({&sHU2z?@2GO7^DB@Dd4X78mVGfc6d2@nn`)Sb{OtO@NRcJ>jPS$2> z^X}9O!-qa8JNNb!QknXWX;0Pp``L_DTi#Ymp4{A<EavGQSdIhA>_C3u;9!*;xXWTm z4tlnqesaJMsZSa5&n}&PMp8Xbo1`XlJgu^KO+VS*$tpSPC$f=zDMU8#{m0RVYvL2= CeW6PL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94368c9131dd1ed8dd79e8ff7ca98aa40b30d7db b/src/libs/libsrtp/fuzzer/corpus/94368c9131dd1ed8dd79e8ff7ca98aa40b30d7db new file mode 100644 index 0000000000000000000000000000000000000000..4e3a91752865ad9e6e434bff1be3be5c4d95863c GIT binary patch literal 1497 zcmd5+u};G<5PdE|O*TX)hANc>>VVoGfM2NigiIYe(4lmyhfY<OenK}sf{#I<eg*^L zINOb#+NnT92rh~(pD*Wk_g-8Kv6vSCW|MTh<e80#Mu1X)unwpPVPE#?fIHmSodL28 z>jbj76~ies5-}T7XJXTPBv%enjtjdPjs3{e#1TOd6$q^}P8~)JTtt?`M8H=PG^h!( z_}d_Pb?LeM3O<B*GPEZmhJQ58<(A<jNcj<H?|AXH*NwVn(WsIXEtn7HlTx5-gyp&= z&_WLG=xReJ>fVUXmhe}acxAA47BUWB!@gx<M7<{7bt4EbRidP<JMrhf!`ug}qhv;s z{#TmNy?DG$y5~Iiwq`_U4R{Hj652c7B`WLvH7WBc-?S1+&FqNaKWHT7GxZ#B87c{U R1)4iqUw~GiQHYZx@CkDl*)jkC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/943e790a9ef18ecae5661080ded421c3da4e967a b/src/libs/libsrtp/fuzzer/corpus/943e790a9ef18ecae5661080ded421c3da4e967a new file mode 100644 index 0000000000000000000000000000000000000000..ccd814c549a5aa4a000be4df061392e1f34bf30e GIT binary patch literal 505 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28ZfuAd?*|keE}N8ehQ4z#*%{$iUD5WHHDx zFfs@*{FuYg4padog&C|EI6#UGz5$iggS9~n0`fQ*QW-LffNK6TR55V;{|}J`lhwtH z4AsR74V(oqGyl(F09ws45hR_+!th@R#Bc!O5|A@HQ!_d08KwiR5~>2ZH2NRNxQSf< z(cJ@d1qiSabPq%wD}(~Ng&g;^106{qe3+;cKESXR_>Vh$bg_r?{+FQ01Of*z84nCB E0EYNwjsO4v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/945b9a12a1b293ecd3af0b4bc4ad11a81183d2e7 b/src/libs/libsrtp/fuzzer/corpus/945b9a12a1b293ecd3af0b4bc4ad11a81183d2e7 new file mode 100644 index 0000000000000000000000000000000000000000..3c7635b603fdf8aaf3fc394f41242b5fa3ef8810 GIT binary patch literal 1063 zcma)5J4<6h7(J6kOoWAqsB9r-n`<G6u$@7$5w?+Ke}G(~%)*6`mHV*RDYS_}5QF_~ z7XOEjCbj=y>vUF@&Yo}PCO1oh>&LzG{2p`8oIx4_D*kb|6v3Ib_5kR1QBg85hTH4- zT&c@$_sUjGqL8R<&JKa5i>WKu(K}F#*eGV)-15WUz#8Z@H_lm=jf)pH7B6}3-DbBZ zwIUi2zZ|`#M298{p?Fxae!p)UOax4%eVS=ugbYuv<l$Baf*!Gss%KzYN$?99Gk$f* z&oozPTo_T|7o_cw1#&Y6dt>i~8uyblZyc1LaOrFrJM4=oJBb+#WbQp4#hT`kPW#_Y zRMmlxE6;&>x6*27IwU_;VfQ?!oq(7=5z}7GC}I*TqZAr$#Uuf1E>2t(uXE_OMqHaD z|A;R@TX(|ahm3@uwz4*h9R)>+pUz(zN8+U;al|2Ok{p1fEDVPRVZpVEwf$FVf_kh9 zD$NV+T~1Wv2U52xg=n`;*Og-2oDicNKz<<yB{?e|V{uGl%#JZlBlkgj>ncUfSm6KX z3P{pc+DKF2)#@JCyqu{;5AGXwS#=8fb21Zpfr@FIy@{%Le{`%>{0p1rGXGyf_X@pM S&b?L;Bhu93cJG=d$M_34aOnpC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9468850301ce9170aa86986ba4f10461b711349e b/src/libs/libsrtp/fuzzer/corpus/9468850301ce9170aa86986ba4f10461b711349e new file mode 100644 index 0000000000000000000000000000000000000000..a008da948e43673d1ee5112ddc9689bc674b3a98 GIT binary patch literal 78 zcmbRE-=X>C%W4J$_zwXh49q~W<ou!neO(3yMlfP1W@M-aVITwoCJP2O5DS3-pM4U; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94b34427be5d7c62ee764559406a0c561184b660 b/src/libs/libsrtp/fuzzer/corpus/94b34427be5d7c62ee764559406a0c561184b660 new file mode 100644 index 0000000000000000000000000000000000000000..639be1e91ac54bdf96bf0948c688c10d939c77e0 GIT binary patch literal 212 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8ehQ4z#+@P$iUD5WHEqP z0t`RqFth_z07+pW#Q{>>_6<nXgIF+wfM%y=a@2#={AZ|Q;Q0Ta!I6Ohr<r;{LxFa4 W0BwqgIF2a07!>1DQW-$*;{X6RC@D<< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94c526d076b812e768ba933ef1e373c4ec0912d7 b/src/libs/libsrtp/fuzzer/corpus/94c526d076b812e768ba933ef1e373c4ec0912d7 new file mode 100644 index 0000000000000000000000000000000000000000..eecc597d874b517c132105de730aa0e8be2ca555 GIT binary patch literal 395 zcma$34*?=YshJ%03}65h@nvAFu4ZIl{sR`+2L=WZS-j-`e<10G;yFSL;Shy$7>+Y+ zW0=FxF3i9Igm8dRqX3d+01^l_|G^^v|ASSZgXs|mDZ*_Ig96AdR5i%%ftWTILk+}u jgnPgy5Ofc+U0hiG1u_ENJq*x5fO-&OwKPW&kWmc)T=+(M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94d124dbb6c5c418fd5edd09927de3fd3952c448 b/src/libs/libsrtp/fuzzer/corpus/94d124dbb6c5c418fd5edd09927de3fd3952c448 new file mode 100644 index 0000000000000000000000000000000000000000..79065811e999352cfcbafdc08286a83807093f4b GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO qti2Abhry9yju1#(xSfGPWe$+R!tmq&_g@T>|9=2E3*)Q*F#rId`6J!{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94e3f46d03542cb08030511441a7b0e1502c9336 b/src/libs/libsrtp/fuzzer/corpus/94e3f46d03542cb08030511441a7b0e1502c9336 new file mode 100644 index 0000000000000000000000000000000000000000..021e4a22e6bf9d24e8198f0cdf7366672c396536 GIT binary patch literal 210 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB zk;=ee%E-XhP{7GhCkxieFo&TXC=Dcq8CW^M3fsN`ssBPCHnJK<9BM%7O5%Y;XKE(I ba#jY8c)dJ^8jv8!$!Z`aKqFyJ{{J5U3N0-K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/94ff9bd5bb4dfb4d074c115e0201367247e6f40f b/src/libs/libsrtp/fuzzer/corpus/94ff9bd5bb4dfb4d074c115e0201367247e6f40f new file mode 100644 index 0000000000000000000000000000000000000000..07a4be9dcaa404e4762d126babf9dd2f32099803 GIT binary patch literal 92 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M X?JNv)I2iu@{}0m1#J~VVAW#hek{uKI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/952418b86b69c6c5955480dbf4932965c0edaf21 b/src/libs/libsrtp/fuzzer/corpus/952418b86b69c6c5955480dbf4932965c0edaf21 new file mode 100644 index 0000000000000000000000000000000000000000..53d6c81801659d28f7e59d3cee07760349e3c94f GIT binary patch literal 2127 zcmb_d%W4!s6g`!foj_#BNFc&sBoYO|XFw%{2*HgY!7u2j%wj+$kd6{ki-=4Jf}4N{ zfmRnT`~x>GX6+}qbK_!gZ9s`B&%IUMJu@alA{H~<x2o>r+-Juh>sXBetkk0F2H#xH zxqHC61q^r9_~`>Z?)7j^d68m^Z0T+<Uf#{RvB2@7T8lQYRpvHY7t3N21K}23nC5K; z3V0R2^;`}_TPJNWsV8=3n)HzCw~1<#!}qg#RWk9s65dBqSFGcq>Z737a&%P9Z8uVC ziP3#``?R+_4J5%UiJ@T5yi|YmKn`ahf_FuVghg}vcutxR??8=ZX6Rf>B?IU_;ZYQQ zfjI$uB?G;aRras&G)V>bTWDEX$yw%-P&OM4?Cc0EdLTx;8wm;VZCFnEH#Sk<xNBQ` zb4k^2_xMu1q7|rNgfgOFP*i8(4oSO#VW7gRCpJm_nQ@C!#k90`HJ!o~+`iM&64{@Q zZsj@-SLoFmRXYZ^J3ii^>;K7*3d2y~#XsR)@Yr$1BkjVw&;{6-w!lxlIUpkJ9t~fG ziIRxst{19slpJM}AwRu*%hSNLN^Qu>>)f8#{irVjp#v<kq?{YlL@jM1UTG8k!lbZu z_D;4B{iF;Mx#Fia)o!<ho5FU>^LE?isq{`7kzn&n|8ucKxv1(+jbqde#+T}tAoce^ zmAGUh>iNs*fYv(;Oi-jHstRYD+rNXO189DeJBXuf2*ym6wR;>6G6&_|JeGvbr>=+v zONRgu1e&_GaYX<fAbW~tGp-9Yw>Ap^jGN<DIL@H2M0;TbEp-f}u<^kYRAF)Ae<xWo z*jybt@KYd+lrGo21j*0}CMSa7o+>D9FUru)QaS7O6{(~r-j7@_aS2mV^Phr@$aY*k z6t!%vOP5*wqqqkBSZ2K@pHV;3{X~x-)hW4y`ymuf(<xmnYb~(03S&E62Od}J@uTJX r>dLat*}i_bQzEg^P`Q(QF0N_9b<f9=efIe^2ej0=z#YZ~v5)E>+s2*f literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/954da74a4362ac8b00ea38a1cbb5d0c84e92e64a b/src/libs/libsrtp/fuzzer/corpus/954da74a4362ac8b00ea38a1cbb5d0c84e92e64a new file mode 100644 index 0000000000000000000000000000000000000000..77f4a1761f13664992e83466abf9692f72ac9c21 GIT binary patch literal 550 zcmaJ-Jxc>Y5Pf?#7ptJPm?{>+5iD#h)E^*fWhG1Swg`qGS+yC6X~aSs3k%_Xh#=Vd z8~h3P2egr_Z+3H%D({Y&**9<Y<Jn?_YYSjJ$lV?DbJ$<4ov;G@IYTdmV8(8cYnR~i z2u8$U<u?-VIIVwbN$>{3;R?tA$vm(P_DB+5J`&>G@(^a)pZaPIXGvM%lSPGxb>#g1 z(P((AA?fUGe|Y2URSWrsGE-KFl}<lW!bRXiSc%?uo|psjSK>=UgS2gj;;5d5gF{U8 zpa>S-Z+N<a-Lfo!W81rAXGcz2<f2(BOaoT*RR$fqX!}G3QTxU-=Fd>Z(CI{MB5Nyi z{}eL4GyjOa7~6W1R?=1bw;~CoW^xRTWAsmVdC^@G>X;gjL>&i)Ze%aCQ51#X4>Iy| AqW}N^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/958931c0af4fde12af91b2b4b2cf33dd3ea37061 b/src/libs/libsrtp/fuzzer/corpus/958931c0af4fde12af91b2b4b2cf33dd3ea37061 new file mode 100644 index 0000000000000000000000000000000000000000..8916362589c30c4e57a6eec01cb5059be9c4d082 GIT binary patch literal 51 hcmbRE|0LJTm(@UE1tO}885w|}8jL_J5P<ODBml$)43q!> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/95a1f4c7cc112c88aac967b6feba84d9d8ce8013 b/src/libs/libsrtp/fuzzer/corpus/95a1f4c7cc112c88aac967b6feba84d9d8ce8013 new file mode 100644 index 0000000000000000000000000000000000000000..87b70b499f27848d9128e00ead7d14a35a4a3c5c GIT binary patch literal 276 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0X!DhK~w-qGAu@N SCj$ez8+?FfqPYWV7Y6{1+ACQA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/95cba40a6ad0d1f046081552fb1ba7561580de24 b/src/libs/libsrtp/fuzzer/corpus/95cba40a6ad0d1f046081552fb1ba7561580de24 new file mode 100644 index 0000000000000000000000000000000000000000..83857f530a290e99d875d9ced10a0cb2ea411866 GIT binary patch literal 458 zcmZWlu}T9$5Ph2_n~)-SRn&l_h*km7&L+ZDg5R)(tPq4F+!_%UyfhLE8_U3bi{j_x z2V$4?-Q2}H@WJl#X5P%~JRAcsJn2l^j4u&FxW(5;=x#QibQh+F631u@$A~HzFYgrm zbY0;N-;)H7Wv{oo7p}@;pwq@s>MrvGiA5_Q*HA;U)?Ov=^-EkqHRg|-^KW7*6-2i1 zuGtcOd~ScBFPM)|Y*^!j|1Lhh-^%O1(Mzg4ODG{SH=dXTgMa3jdd=FhjFw3;@L-;V zcq|oN8kk<;uJoj}3v121194&(kYg1wr6o-g`_occ+196RIAda-+IyQCmo$w!0-n$F J*Y~gv_yq$#T897t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/95eca34f27a6a51ef5ddbd45e2181c4646033e35 b/src/libs/libsrtp/fuzzer/corpus/95eca34f27a6a51ef5ddbd45e2181c4646033e35 new file mode 100644 index 0000000000000000000000000000000000000000..5919c8f77f90c86c292ec58b5e9a7b353c595cbb GIT binary patch literal 610 zcmazQW`KaA)J%?g2=o8{|Go^2)zyp)+<(9#`yc?S5+C*dA4s;Lc#aT5I71YOJ%`~q zm~0nj;9%fj0SPgHNT?bxe-1-CNFf764N&MmSmghIu<SXg8f0_8LSO>b9Aea<*~Nh3 zW)kc|GlxEI<^qNyTKGW10yUf=VjvPVe30B+UCanH2sysMnn*N9FOQ)lo`Hd}=pPmU HvYZhBylirj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9650a9885e2b5ff63e106e33d261979961ddbdce b/src/libs/libsrtp/fuzzer/corpus/9650a9885e2b5ff63e106e33d261979961ddbdce new file mode 100644 index 0000000000000000000000000000000000000000..94ca91f7b616c22bb45c189aaf9c0f2279126672 GIT binary patch literal 84 zcmYe!kFP3;uP;jFU|?X#1Y#igulE1HKZMEfOq9W}4+OZ1;|($ms;lGUGymuor^Z9& Y8B)9J;~7^2H8GSjFfcOM9XeDE0QNo?_y7O^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9650fd22b68938e9c792ce6db89ec95724183c1f b/src/libs/libsrtp/fuzzer/corpus/9650fd22b68938e9c792ce6db89ec95724183c1f new file mode 100644 index 0000000000000000000000000000000000000000..fc8823f56ab4d18d58d8f143b1d7b12f58738595 GIT binary patch literal 232 zcma$5FU(L9&%nS?l*y4=52S(M|NsBK3=GxP3=E7wUTS<<Voqsld;uo|hb)5u149Fl z#UKloW0=Fx4pagp?SNFgULNsg0SyD1-e82yEU0-LKr@?wn1!Je46xY=v=R((IT>h8 JXD34e0|09jFbx0z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/96530dca593097b70c65d339e3eec7de1579307c b/src/libs/libsrtp/fuzzer/corpus/96530dca593097b70c65d339e3eec7de1579307c new file mode 100644 index 0000000000000000000000000000000000000000..756cc91dae88559858892284a23c8d4925fae09b GIT binary patch literal 81 zcmdl#@jutgm(>g);2;I27!(*7ih&}WARZ$FLv=ADLp6}E4rGG?SO6*r6aY#gP&EK^ CxDDI@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9660c0988d5dd571f139b60462e2c3b6b8a99201 b/src/libs/libsrtp/fuzzer/corpus/9660c0988d5dd571f139b60462e2c3b6b8a99201 new file mode 100644 index 0000000000000000000000000000000000000000..8d001c319e53e82c83759319069f6a819efd7c59 GIT binary patch literal 99 zcmdl#@&7k5v6fB-B%r{+P+ZNxz{v;{17gPNYA_$JVvZ1yslXuI&cL8Dhk=0usEF+W SQ0V`E0~Fw4V4z!HT?_z0?-6tW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/967e23f677b127242edf6e398318c7b0be5d2e1c b/src/libs/libsrtp/fuzzer/corpus/967e23f677b127242edf6e398318c7b0be5d2e1c new file mode 100644 index 0000000000000000000000000000000000000000..73b28e1556ede5b4ef2be649d9ea58733b2d2530 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0AmvA;7gC>Ap^R6EQBf}0=$24E@_7#OO7 oDiGS$All;%va74Bi&NvPGynhpU#wlt5ct2k`v3ozKvS6*0CoB)YybcN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/96918754c1d8476b006388739968dce90720c2c7 b/src/libs/libsrtp/fuzzer/corpus/96918754c1d8476b006388739968dce90720c2c7 new file mode 100644 index 0000000000000000000000000000000000000000..1c62051c35b12876aebe20ec3540145f8aa668a6 GIT binary patch literal 69 ocmbRE|0LJTm(@UE1tO}885w|}8jO$`AW@JogsO(BfT*hm0JLll`v3p{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/96b406c9132c08286fba4002d7d26142171f44cb b/src/libs/libsrtp/fuzzer/corpus/96b406c9132c08286fba4002d7d26142171f44cb new file mode 100644 index 0000000000000000000000000000000000000000..ed6dc2165d01c61108b88cf69648a8a50113b4d5 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&8b1JXe7|Nnnq28QZt1_nkT4}`0WL6{LJrp{0Y5<mb>1_oIM jMxa#j93il%a61FT91e!u)S~qKypp2)ocOfN9H4dpFANl@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/96d5767c72ec78d6fa16c097d95559b0b449e135 b/src/libs/libsrtp/fuzzer/corpus/96d5767c72ec78d6fa16c097d95559b0b449e135 new file mode 100644 index 0000000000000000000000000000000000000000..c13a1155d6246f8496607a536db9093e420400af GIT binary patch literal 113 zcma#o%VUs?XJB9`%H&9_2hu?B|Nnnq28QZt1_nk31&}~pb+H;lbulADb@|Qz|BnEL v!GHxsaxyR&0x4OLpbtYe17q<VA&?3G|0{q%tU_LXNm0H%NU0cO_vdN=z1<sy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/96dac3f664df069f373a5f02afeed805f8d00918 b/src/libs/libsrtp/fuzzer/corpus/96dac3f664df069f373a5f02afeed805f8d00918 new file mode 100644 index 0000000000000000000000000000000000000000..c012050fa689fb6bae9ae51e78c21569a8444fd2 GIT binary patch literal 754 zcmazQU;qNf4U9#pnH=>XHUq=||Nng%7^|xp8Myy|1@=Jzn2n$K{|_YJP&`M7AsnJ| z4nsQw!yE>Nc3}n%AOxBY7Ww}lEPW14&S5wXq=DivHDFP6bFixUhiVsAHS}~3rd<U6 cg%m#3#f-oJ!V-pq&|k=LIz-%D1WZ@e0L(^qumAu6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/96e16ca69c68c6812c34b3f7d87381b4f5589361 b/src/libs/libsrtp/fuzzer/corpus/96e16ca69c68c6812c34b3f7d87381b4f5589361 new file mode 100644 index 0000000000000000000000000000000000000000..e7862af1f51983be63d3be62c05f706b0442f59b GIT binary patch literal 106 zcma#|Wnd_YXJB9`%H%Mt2hu?B|NnoWXmvFM10#b1Sfsj`kpYaW)xmrQ25TtIz-h}M k3seV`o+AVn6K-c<n8U$fRL{u4z{H>%AD{V0w-_h`0ODB@lmGw# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9701eac27e38b4d198e26228113ffdc76fdea589 b/src/libs/libsrtp/fuzzer/corpus/9701eac27e38b4d198e26228113ffdc76fdea589 new file mode 100644 index 0000000000000000000000000000000000000000..33f8c2b34f4e8ee207aee24953d5d64289cb22a5 GIT binary patch literal 69 zcmXT+XOMZx@Uj{NiWwOgtQo2qz#MZ11_q|w%)HFp%&OG*<f6pljQGsFl2j%JpnPR~ Pb!I#RBZyVZSX~SN9gG&J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/971b1560ab92e7840aff0034b89833ce4e62d8ca b/src/libs/libsrtp/fuzzer/corpus/971b1560ab92e7840aff0034b89833ce4e62d8ca new file mode 100644 index 0000000000000000000000000000000000000000..1c2ac06429c43032cd4430b4a482f54c6c796dc5 GIT binary patch literal 770 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^JO+?U7>iQ>3ui)%N4P{4>Le~kc?L;{BnGLDE&^1`B*4I+G6yKZ!oUH9 zj124#fSeytuT^UU{Z$Rq2lCTDpq2kQ7#L*1erH4k1QUZi1JJD2p8w3%xv+3ySZu>0 zD+JW0z$DxbwrCEBXTSjEfvg1vrIL~Yh2cY7;4pv#=N`}n3=9|{2=@zEnkob|e8F~6 x6mSl67_bGLF5JzW5C8vt4~&_+xWW-z0KpUTzyFMk+d;`0oD#rZha?9O697YJdr|-Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/971ec195d5011a172ec57c10863ecec6d036628f b/src/libs/libsrtp/fuzzer/corpus/971ec195d5011a172ec57c10863ecec6d036628f new file mode 100644 index 00000000..543715c1 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/971ec195d5011a172ec57c10863ecec6d036628f @@ -0,0 +1 @@ +s_{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{0i \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/97218a0b259b20d3e0777ec5193146c0f20c150e b/src/libs/libsrtp/fuzzer/corpus/97218a0b259b20d3e0777ec5193146c0f20c150e new file mode 100644 index 0000000000000000000000000000000000000000..ccbdcf9fafd547a53e16b57d6a23f4abd89342d1 GIT binary patch literal 3470 zcmeHKJC4FI5S>(umU24^jzGZ)=;*igF{qF$PPSLshJp)hg9JS1c?R1G380W&X%iuP zaAy2@Z{8&NTFCq1;6>!;w3^8j2Cn%AjjzyDvJL}&Q;CNchS<8=fE|9kcWk_;G0|0I zuWmNdJZWnnLLAp-JKPSiYb?IyvJp8s&qP)Mry98lJl?+LQ{>F+Ble*SPJasDX7q;x zRC#_0rIuqM>qhE`fPn&IXf@ti&n0SRM%pfKg_H@SiIfH65ByZFsB)cJU0%gHYBgac zrJ;nrmuk_%8y`@e)LohTS7r8Cvs7}@D2IFyA=HO6o*$Z}bnYb$ib=W0EH^q2p~tc) z7$JSpVLB}acP7<X59)Wk9P|jN4i=pC^FnCsJx$$M4<dDh^0%dw(9!mRk-ym|DMtA^ mt5q;wQE|8oA!FO}=u0rQ2)c)j`%F5eO7v)6cBoA_%j5#_iCI_x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/972bfb71e17aab591a53713624b9d38513800f2e b/src/libs/libsrtp/fuzzer/corpus/972bfb71e17aab591a53713624b9d38513800f2e new file mode 100644 index 0000000000000000000000000000000000000000..99ac2c33f2cba1d595f5ccd37a712b3160192997 GIT binary patch literal 69 zcmbRE-!HhtEGIuXF(=hj;XedODlou6LUqGQ28PUd28LorhU#KwhU#iB28L>&I*_9O LtnsD)<NgBxxab;5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/97641203c7593c4baffb35a61f7054a9b0049a4f b/src/libs/libsrtp/fuzzer/corpus/97641203c7593c4baffb35a61f7054a9b0049a4f new file mode 100644 index 0000000000000000000000000000000000000000..fb7087e06a99024e7e593783dadeac114bd5d76e GIT binary patch literal 1146 zcmb7^u}T9$5QhH*!Bfy8S1AZ5hyja)XeBnjKnkDW40@n&CLx=o*&;!rsV(g81=M#C zd<5UXHkDnhbp7Y{PVX>E9LO>|yR-N2w=-$0AUFlBbM6EKaR6gX9ncym*Z{OD*q<)P zkrf;yD_8<He(ozNu6uCDz*a<e0S=sk$(<-?Cg<VDc|9gYV7gyvqU&=;RmR}{`NpjI z)ml#PyQx<by&iX7QM}sD2?q9o3D+Qkk7LDJMJ4RTG5m7(Kt2rg8#2ZMtO}W4%D~_& zZ}mN+#ME@+G9|@%H`|zT0gA~Zs}LE<F1|2sOurHK0>7Q&9x@m&_u^~FOkfM^$LX8$ zwRY$haYQcG@^kMz!eAt6G$w{Y)B67!{gYO++i4wQS_B$l$Yggc8luc|@HJ*v*8Fs> zC=2uf1`l)CeANHMN^pNu6W;E)oHEPSSgyoK_X`ytMNqX)NNzQ`m=b2zYUV?nA&Zl* zIB>>rv13MNkgR{0!*%Nxln2|RUp<m(;<QkbHj-v?nJ4$b^^}7gnD(~>`AliS&Z3J= lm|NMT-<Kzf-+elpa73ynz^(^K+h<KGg4UM2>|X_I^%I`I5^4Yd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/977ee7319f66d5d4da2d9a37845a9d366fd752be b/src/libs/libsrtp/fuzzer/corpus/977ee7319f66d5d4da2d9a37845a9d366fd752be new file mode 100644 index 0000000000000000000000000000000000000000..079a1d21e993afe911fd626cea0c17e2476543e7 GIT binary patch literal 154 zcma!LU|=x%|NlQ@QEDbfJ&*$gK&~$XWA!Wuk0HJ+F{d;&zJQm3L6(6LDo8ZdP&`M7 kAsnK74nsST0VIVPIDilgki-}m*nj`G0E!kfFa%Wt0QZ&`UH||9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/977fd46f27620198fe8eeb07ae07d6fb805e3129 b/src/libs/libsrtp/fuzzer/corpus/977fd46f27620198fe8eeb07ae07d6fb805e3129 new file mode 100644 index 0000000000000000000000000000000000000000..33ced0a0ac3147ea9435f9fc642a06a6a47acfaa GIT binary patch literal 84 zcmaz~&aWzoXZZEMDD!e^Jp&m0|Nq|?!eS6*Fz5pTF2mw@gG__!>iGD~KOoh+GC4$3 Vfr<?JAeuU-B<3)HG^QS_1_1A}9(4c! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/977ff6e02707adeff86521e71edb8ff32a76e30d b/src/libs/libsrtp/fuzzer/corpus/977ff6e02707adeff86521e71edb8ff32a76e30d new file mode 100644 index 0000000000000000000000000000000000000000..08380309dd682861ac34ee495e0be30e6f720137 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&C{2hu?B|Nnnq28QZt1_nk3B_KbKp}JTNh#7%m>Oj5#5L+-X uyaZAV44e!MvOskV)n#*p7>pSha#Hi+C#&S=l@#SWFfcHI)i5vsZ2$mi!xMr4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/97fb5b3c5b5867374bf6f4200aaf675b1f053e54 b/src/libs/libsrtp/fuzzer/corpus/97fb5b3c5b5867374bf6f4200aaf675b1f053e54 new file mode 100644 index 0000000000000000000000000000000000000000..96b8d6ba433233e38babf2769bf9e574d0e4aa8c GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO Yti2Ab2P6apY9M2P0%j@5KoKGd0FVzLmH+?% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/980b39be6d42e294ab54a02cd96b8325ffc4f982 b/src/libs/libsrtp/fuzzer/corpus/980b39be6d42e294ab54a02cd96b8325ffc4f982 new file mode 100644 index 0000000000000000000000000000000000000000..5d79b23ccdc9a81339739336223ad83d88b8289b GIT binary patch literal 392 zcmZvYy$ZrG6opS)hq#Guf?&l-)HiT<@fk{ypaq4}qJtf>_=C_VkiMo4I>eKvXax`S zCb{=C-yu^6m<0fmNJzz%(obaBLUYF<WUvo6I~m05ZMf{G>u?e`fgU`;VS$US9WJJU z^Mge>7-=h>5=2rcT#SeE2f>sUI0qh_l0lD*1bd}N9Ke6)!1Z|7CW4WlzPi@ywlD@x zx%RTuOnrXrQS6bms<A$CEX$bwu_lJ4Yb<s9vhvJ3rF@MliBFVkSvGUg=AC_X_!7f{ V+XhCgmHRi3LfvevK(1Y0@CF%UO_=}y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/981057bbd4eeb0d24e7562feaf61e625c6dc88bd b/src/libs/libsrtp/fuzzer/corpus/981057bbd4eeb0d24e7562feaf61e625c6dc88bd new file mode 100644 index 0000000000000000000000000000000000000000..06dde9888cdb7361ab25b62cc193ec97371d67f6 GIT binary patch literal 98 zcmdl#@h{iQm(>gm3@i-$8G#f86az)TJRnhB%*ap;;loKF1A;*G{-+R43JeU$`oNm1 Fs{wa#55fQd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/981a6a5600069bdf40665c67bdec186b2df55a83 b/src/libs/libsrtp/fuzzer/corpus/981a6a5600069bdf40665c67bdec186b2df55a83 new file mode 100644 index 0000000000000000000000000000000000000000..95d1e2873df626f1ce965884d6494166906607ef GIT binary patch literal 121 zcmdl#;Xl{Qm(>gm4F4DyiWwOhIEon=s;2=lNX!d}8GwvxhJ$)}3?=nIUQs4TDv$;X qGW@Tu{_nsDQpCW>zyhZKJO1|tN(+EQAfOs#A_!MQgcN|n*8c$c5gBR# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/982f865b15e081a25649c841cb03e95a1e49b09b b/src/libs/libsrtp/fuzzer/corpus/982f865b15e081a25649c841cb03e95a1e49b09b new file mode 100644 index 0000000000000000000000000000000000000000..9dd0a4ef3d0827bb9c54ddb154404238e3148208 GIT binary patch literal 136 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHZF&?luMnMh0n+`f4?xAwY_uS{+0K pfi;9;VBln6kOe9$tuCG;1Qru!XlIziAi%Ki+jj;IW0*3AY5?3qB)<Rv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/985593bc6f792360ce8b8a4b5a16346ec29c6a38 b/src/libs/libsrtp/fuzzer/corpus/985593bc6f792360ce8b8a4b5a16346ec29c6a38 new file mode 100644 index 0000000000000000000000000000000000000000..9e00d18159678f187def84c0c4f784e650c84ed5 GIT binary patch literal 134 zcmbQ3jsOfmP;FGq$lwRWPym&E$-uw@6{-GK%n4V3(2T|cDi#0>!5JXl%o#usUyZC* JFOQ*w0RTf(Cf5J} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/985cfb783ed2c8a6a3e385d2669d7bab4201e2b4 b/src/libs/libsrtp/fuzzer/corpus/985cfb783ed2c8a6a3e385d2669d7bab4201e2b4 new file mode 100644 index 0000000000000000000000000000000000000000..3d941c048eb96b8f0ce2883aa72f9afc24822e61 GIT binary patch literal 348 zcmZ3^z+g~P&%nS?l*y3_qJiMQqctOhC1k|FAj<&cR2M_lJVmI1C}A+<WN-kg!D0wh z0rPisLy#;&7y`3sju2RE4pau{7?>Ii$6%Uc1aV9@rjMY8z-+;(0O%c<8mLRAV7LTm i%YjG#|8+Mqut38t@PBpn`~NS2Dw)8l|Nm$BzY72&I6H~} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/98693d04569d34ebca27f95425a38bbe1088eca7 b/src/libs/libsrtp/fuzzer/corpus/98693d04569d34ebca27f95425a38bbe1088eca7 new file mode 100644 index 0000000000000000000000000000000000000000..5f5272e9cd135a0ad34e9e601b0bc11ed3a891b0 GIT binary patch literal 108 zcma#o%VQ|fVPIe|$mB?^2hu?B|Nnnq28QZt1_nk31+YkUF(U&IgVaHRHH^W@#vseU hP%H%E3o<aYGjPmdVE73%;_rV3hWr2jGr(2K0stN!6x#p* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/986fc5a28a4867a4dcb6bd2911228e087f53b391 b/src/libs/libsrtp/fuzzer/corpus/986fc5a28a4867a4dcb6bd2911228e087f53b391 new file mode 100644 index 0000000000000000000000000000000000000000..c23c2c0fb1e419feb97f1f96f191f27850d7fed5 GIT binary patch literal 69 zcmbREe?QmDm(>hlpzt38Bo!chAem6zaB><0LuNdXU0uuw!PQ<M4U7y7|5@Wp|Ho+o E0C^D>bN~PV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9872c895dbfff515d9dcc12a6815f0b7a57f9bd9 b/src/libs/libsrtp/fuzzer/corpus/9872c895dbfff515d9dcc12a6815f0b7a57f9bd9 new file mode 100644 index 0000000000000000000000000000000000000000..15b77d6b5e48a7ca6b54b583c90c06c0063be3dc GIT binary patch literal 544 zcmaJ;u}T9$5Ph3ioLw-Ls9>7ds6=dp!@^1}QdnDDAqNWKBH38zfN6vv_yux>V3i+8 zDfm0~#&Yv!HV4tdx!c*9+4p8<XS4kR!wkUSCdo(KRk|Srh|nD+4=ZV#q4UY)epldR z#}Jvr(H|B$U66(8Ke9I^J+%~64jXEUcNURF@+HJ7umzZQxD#Kl8L~Mh_m>NldNTV# z!mUIDA8H>G*TklgqB>?hS~d05h~?Qfkx{fATk%*C%YQ@)o}WUfC@n9qigMVt9OB!W z!X4<12-1udPyNf!>%4cHvDKV|@5H(s;28@MSC0X-JToZwje&0yJ*lNsg^lHu<8kPW vUpN@;`iosK0cBR9)VTmo9`ho*>KDU7zh~E9*VnFIovgZ6TFARr2>kpUG|_O8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/98b5ce00c98db04f0c25ba401ce1c3473665c3d1 b/src/libs/libsrtp/fuzzer/corpus/98b5ce00c98db04f0c25ba401ce1c3473665c3d1 new file mode 100644 index 0000000000000000000000000000000000000000..ec0da0a5868b9a2aa62628decc25f378660ff1ba GIT binary patch literal 120 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vvW@uojW(2Z<xVo5;p&F<H#DtMR1{^`eA>5|_ ZK+y8v;VH-*h)F;R7!zb510zUfH2`;582JDI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/98f8bf5a578768c9687ac66ced2222ce989c575a b/src/libs/libsrtp/fuzzer/corpus/98f8bf5a578768c9687ac66ced2222ce989c575a new file mode 100644 index 0000000000000000000000000000000000000000..5ebb3922fd43dca1527ae5039618396bad3ae69b GIT binary patch literal 148 zcmdl#k?a4<m(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO osNIyI4y*?x#0DZDKn-Xd1H;7sTsUme1S$jSyWjI4Y)v%-02&7-KL7v# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9913741d1fc0599e9bc040e743b49d0910962b0e b/src/libs/libsrtp/fuzzer/corpus/9913741d1fc0599e9bc040e743b49d0910962b0e new file mode 100644 index 0000000000000000000000000000000000000000..a8c9b64627003d65afd1c8422c799ab810d332e3 GIT binary patch literal 66 wcmbREe?QmDm(|tPy+>PGs!bS*85w|}8c0=FgIFK{WPn9s6jOmPPzZ{u0gLJmXaE2J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/99528249973de765e4650895580d15355443e67f b/src/libs/libsrtp/fuzzer/corpus/99528249973de765e4650895580d15355443e67f new file mode 100644 index 0000000000000000000000000000000000000000..07b02aec6d81519b7abc5b21a3edeae6a55a95df GIT binary patch literal 42 ncmXSpude6N)oo{BtgdDN1JP=RzYNvY*)TqXXmzzoLUkqp+Gq+C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/996f90eef9fbe51b578675b3907b3793d0ca64f6 b/src/libs/libsrtp/fuzzer/corpus/996f90eef9fbe51b578675b3907b3793d0ca64f6 new file mode 100644 index 0000000000000000000000000000000000000000..91078aede73a701e8f23a6d19265c4903d1ee32a GIT binary patch literal 286 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8U?{Ezih>vnjPeXj0w9^zp8w3%#f)G@46Ptq zmH|Y9l~n`P&yz<}#R)P1Bm*=9RX-;K!(wZo7z2X<)If%6?Qo!4b<^tNIYK~j1qR`E zpqhWEiWnGxI?=2}GMu2PAfr|00L^4!P-ox(I-mUkkn{h)FwoZsz$jd;4ip9ew%I)( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/998b724972d21f411214771394c08a09a8e7bb79 b/src/libs/libsrtp/fuzzer/corpus/998b724972d21f411214771394c08a09a8e7bb79 new file mode 100644 index 0000000000000000000000000000000000000000..772ebd136fea51d48fa5b06c02d6f01d8e40cf9f GIT binary patch literal 65 zcmc~`_|Nt7Wi<l`I7oph1_cI&YM=-shzBI9iy47@b`a+ilvmFIl4Gc5V5|lJiQEeK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/99ad7dcb5a371cf8285e48d7cdf6749027fea3d4 b/src/libs/libsrtp/fuzzer/corpus/99ad7dcb5a371cf8285e48d7cdf6749027fea3d4 new file mode 100644 index 0000000000000000000000000000000000000000..42ded282c991fd2d231df38ce7c18334586e8ee5 GIT binary patch literal 108 zcmdOk&ts5eWME(@%H&9`2hu?B|NsA8|NpmCGc+&)WhCQyfU>z<)y0eq)z#_{B@EVJ tT7ZFp6UeAAog>5`+zw=MFf=gC;rR8hfC<P^U|<kPU|`4tSpnoS001O76;A*F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/99c020478bb68808a6c4d3757bfdddbefafd20ae b/src/libs/libsrtp/fuzzer/corpus/99c020478bb68808a6c4d3757bfdddbefafd20ae new file mode 100644 index 0000000000000000000000000000000000000000..94cfbb46ac99e44bd4b92c16651d29f799b958f0 GIT binary patch literal 106 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK42;#)3=E763<4mL>S9I+u2u(efxsF<F)(m4 mFvtScl~xze5dw<|w=*!z0kT*a9xyQI{r|53)SjA}$^ZaUkQ4C$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/99f3870ed7b619a95946157e6ff86c3d466e3935 b/src/libs/libsrtp/fuzzer/corpus/99f3870ed7b619a95946157e6ff86c3d466e3935 new file mode 100644 index 0000000000000000000000000000000000000000..b7a3d2d5498a933267472a6b5a0df961f0d58da3 GIT binary patch literal 116 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9#e*RNk8!hsC` w7##CJY_9J+{>uVY8?^V#5dzXcwQQ~bTYv`rXZXfs4O9VE#=sEBz~ER10PWfy#{d8T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/99f6ef0fa50cfb4f1642f758c52820a68c964496 b/src/libs/libsrtp/fuzzer/corpus/99f6ef0fa50cfb4f1642f758c52820a68c964496 new file mode 100644 index 0000000000000000000000000000000000000000..6b27c4054ca039ef3d58b73409465b47cb43d0aa GIT binary patch literal 308 zcmb>XZ^w22Wi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI zi2VZHFh;mx6Oj!A8AuaDfsVlHN=!iphL<3}F~sZTF_gpu8AX{Ksr6tXhX4Qn`vQFf UF^nN6zAQ1PG!>}k@BjY{0M8FOmjD0& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9a6ed1be0606889e3124faf77f9f26821a308056 b/src/libs/libsrtp/fuzzer/corpus/9a6ed1be0606889e3124faf77f9f26821a308056 new file mode 100644 index 0000000000000000000000000000000000000000..1a57b7b8f45a4848abc1f49de94daeb8806043b5 GIT binary patch literal 2970 zcmd5;y-ou$40bwHtpqQC)EQMsAh9AA2Ko$$fw@anQMQ|TD4v0x6)|Q*2$ikHagxR* z$z3i<C9F38wm&=hk^@k3^ooUm6Y9Xn7FO75#C)_IA4&$=m%K%hQf9hwSg&W=AmUyL zXc`p{V3}z+s>X3g7wL)Au*l>%w0hL$0plA+=Q+%fWna<w;)-^W&Lo!ilv2zp{T|L2 z@bviSkephjDm6!w76y0wWjfub1Y_H5wY0=W=Fa?Ve50tG1QWsm<+b0On#;#cK5GC5 zAdxL))YG6Gp#MSRpEb$Gr7YayxWg-UqnGKo6Il&1d1o!uz!O!I$;L$}ME~q2F!@vG zbnQW(dL!`xj^@BjHn)`jcI{C&4z>SGS#Z{0_cdi#)~XHecXbnV*zB=qWR<hvrNg$F zu114n?vL+{9nYeHRW7PInjR@NK6^cAh6ZhqHJROG1ziVF{-7~Ccla<C<%}!Wehahr igKY)JN9_co%Zq0*fuZ`?K)J&I0>4!OW-tMvy6_8et0j{F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9a93158cd5cdaf8d19cbf54ef8fb451a53967339 b/src/libs/libsrtp/fuzzer/corpus/9a93158cd5cdaf8d19cbf54ef8fb451a53967339 new file mode 100644 index 0000000000000000000000000000000000000000..0fa46259875ce84c59597397a8e75f42ca80deba GIT binary patch literal 2083 zcmb_dOKVd>6#gc)HgzGzpirSSqP7K%wuP!RmZl34AN8?yGcDx`!89qkiP{br7cEf~ z(S-{kJ6FXYQM&SP2(E(rg3s|gGxw%xV?fZ;=Fa1sne+P2833@>&I85(sx=u#Vt_1c zR1Wr-P{~y2ebx;F@rF60cyQEh0-ni5KQIK5QFbQ2*<VOqLJNM_`$aRlCmyKn3+L3f z&x~?D8PvQKuW-gw+b!zj<^x>~1O0HZP!04-xpaT5f%-~0xF3{txV%`PJ^rNGdSeeY zn|_r$?l;qsxw7JA;<_<?G7Yt<B{P{iRCK=QJ8J9x6mV^GbM>q&?8k2O=TPlND$arA z!%-n9>LssWWCtPDihC`y-Z_f=WW*DA$5;(-ytF-LSwXn}MWtRU6)TK5RqLumU11KG zOLHc46yvW*`Eg^k&i}|T_Bwb`Qy<9NdR@ez=A=Dg2U{RRnk)(Oh!6B50_ie0GMM5| zh;B`Ca9}d@{$|)Xf+ul+IQBX*|8dDG<+vcD70t9`cIdzbtBUD#rIap}XMr&sb8`Gh ze&tZ4CDo?QTH3G;JU@|7)=*DTD!C?t|6m3(v8#K`+4Y-BeCBDF|5wuv!;%qiX5=ha z7k%x;6<9SAFuQXM_O_FDmFWX&F=`@~loLIBJkdCbld!*RJ@y*-!E;8)*LNO=XpMle z7c7kSSTl(Yg5X?d&VP2#hi@MCtChPXl(7M_<VM8k@KAkA?n#U+Bp>k^Z-$!K13dw9 zDJP|Z#R6?Q@4KE$_eL8K#VEplt-24p?)q*Y8ZhsWYAJD;!Ohe{qY*kY2cuKj__Rxe zf=>`PO-SG|s=#R<25Y}L*~C@uHj<dEsU#B2rej<2uR`-wIk2g`lWd253;(S~{?aC- zK;mBR4f)$f-us7_LHbO5Ti2Ii$^lRcDpdzgHO7DgNb*mi?-Q;5&ge)Vmh9Q68QZ8s z+qV>O&l1N6?C7ox7>x;>V?UPuey4vsiUaffj1YE7U<b(*OM0mqR!Yk{kYk#>OKsWA z34+VOm3)oHII`go?l#f%V4s7^hAL}f><ehj^+?i~&kLNI#K82bzDG0(85ORo1`VK3 z3!z!30%+Fu4Kp=^j`vE8O3Sg`_9v*5_J?siZORx|u@u%3{NmL@4#cyLkFHN|jH^3s WZ=qa5N{L|%)X(nt_lnG@1LSXwKo7_O literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9aaacdd034a4b6720322545ce68672a4ca32061c b/src/libs/libsrtp/fuzzer/corpus/9aaacdd034a4b6720322545ce68672a4ca32061c new file mode 100644 index 0000000000000000000000000000000000000000..77eb951f6503ece09058da4d1567765366eaa9e7 GIT binary patch literal 106 zcma#o%VQ{sXL!J1$H2f)55z$5|Nnnq28QZt1_nlm07Ee&kdttLA?D0usE9R`X3%C} dkOitMt?ry71Qru+XJD8EWL3j7gGK){001}y5hDNq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9aad5607940370f7224c7aac753a22495984a9d6 b/src/libs/libsrtp/fuzzer/corpus/9aad5607940370f7224c7aac753a22495984a9d6 new file mode 100644 index 0000000000000000000000000000000000000000..bcab60ec45992c2104e74b0702984161be9ec7e7 GIT binary patch literal 430 zcma!LVBEj}1dK(gnH=>X76Zfo|Nng%7^|xp8JPco1@=Jzn2n$K{|_YJP&`M7AsnJ| z4#ROEV-7>RFark=!U3w9c90T;n*TucAa{UOp97QV<^UZDmPR#)47(V}cJu$=B)S>q Sc|2}L3L#LS0fPl8EUE#${!DQI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9abbd6f61f12dac2f0daaca291a329b8a2991d82 b/src/libs/libsrtp/fuzzer/corpus/9abbd6f61f12dac2f0daaca291a329b8a2991d82 new file mode 100644 index 0000000000000000000000000000000000000000..356c9fb1aa6572a06e5b00e8a3f9b62b63b3ded0 GIT binary patch literal 3203 zcmZQz00ExUK!TA$3d~`6_@AK|$f{<{<S5{z6<~tc_0kOpUcP)urZot++PXsw1iHJJ zk)gU8<R1ngNv6R#wIRD3ry__13El#m%1MF-hz&q5vf*?DvP(%a8CfIDbVy(V$!Kt> z0s|I|;`Q<vN{Z0Zi8@RZRcK__kmL=p?Vq4-Ae>Nue*5<y0`T|^Y@9Y`XnX+zP?%s1 z5X!^h8o~%fcsP-taS(=3lKUWzqK;XFBM1=$)L|jJn}CT%#1~LtQ%6ot)+7*e$kNCG zPUD<RL@5P!8A?t@b}OZ9%KQqmeZVrseNeRwa|I5XgeV;7Ou>un1>~rKiDMS%!?1cI zD^q~Ofr0Ys4auCykyuTlXMs6F3=FowCTlwbgUTEr&BDL|gp3UB4}hHi|6vIeM3dE? z0-6E@BsQ<HWesGPps|sazkC_}5=|P+Ezoaelx1K8HK~BW8i@0NjdBJCcLrGoMi7?) E02?qZzyJUM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9aeac0b89be9a5d0175b3b7abc6bd80d3c4f1412 b/src/libs/libsrtp/fuzzer/corpus/9aeac0b89be9a5d0175b3b7abc6bd80d3c4f1412 new file mode 100644 index 0000000000000000000000000000000000000000..549ddd136238a24c6c0afb45d11e6fe67a94b9f4 GIT binary patch literal 85 zcmXSpude54XV9x=`d#0`00o{aS61p&!+2nt37Plr|Ns9C4G<CLb_T}k|Lj)PE!B>W M`>b@o|5wih00H_GDgXcg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b0be960b1129fcf72d2ce3e1da0fe7796e0dbd3 b/src/libs/libsrtp/fuzzer/corpus/9b0be960b1129fcf72d2ce3e1da0fe7796e0dbd3 new file mode 100644 index 0000000000000000000000000000000000000000..3fe83a61abacedff3e2f02857dfed98fc6428de6 GIT binary patch literal 47 lcmbREe?QmDm(@UERb6deU0uw`00bbax*Eg+0U!g4ssWs84LJY+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b17ba5112ead18f32c69d680cf1b4c686003586 b/src/libs/libsrtp/fuzzer/corpus/9b17ba5112ead18f32c69d680cf1b4c686003586 new file mode 100644 index 0000000000000000000000000000000000000000..8b978e9e861e67996023516f738e80298a87ff26 GIT binary patch literal 394 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;NV=hTju1mQL}4oX zaUf$3L%T2o2N1#mM9n!ce-6WO1tc{MFhwwP>VN`3HDHo}Ik?mS{R9G%1k8ch40J8X eLL@h1`U}5%u$cq%enatGc<4Y(VPyEvR1E;v=|k`U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b28b7ceef627b9310f0cc35f61d78e461415797 b/src/libs/libsrtp/fuzzer/corpus/9b28b7ceef627b9310f0cc35f61d78e461415797 new file mode 100644 index 0000000000000000000000000000000000000000..85332543e27fc8dcb36ab400f6344ad2460b193c GIT binary patch literal 104 zcmY$>%VUs?XJB9`%H&9`2hu?B|NnnqAjQbQP+hG65@4t<Rs&)|AYUEKXJ9a3V0Z~; oaxyT;G8E6@WiV!7$VttMPcAJ^jW0_q%}I?1X;3R>s0JAT05vxi*Z=?k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b30d4296c272fdd48876e4d517d8cd48e7e23c8 b/src/libs/libsrtp/fuzzer/corpus/9b30d4296c272fdd48876e4d517d8cd48e7e23c8 new file mode 100644 index 0000000000000000000000000000000000000000..3da5a8b5a15b7f88e35fe8cc4f6974fd2d1a6cb1 GIT binary patch literal 108 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|ka8y?_FfcN3fJLf{)flRa1sSTV)gek43>X+* vf|;BQ46;CVK<PQW48{x$IjMQ^$p=b{Q{&4MOLJ1=freTAcl2Oj5MTfRvOF1v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b4be303509d04ccded139062d1c86949f13a749 b/src/libs/libsrtp/fuzzer/corpus/9b4be303509d04ccded139062d1c86949f13a749 new file mode 100644 index 0000000000000000000000000000000000000000..4672175c56c56cbec5039d1f003cef5b2d08565b GIT binary patch literal 73 zcmbQJzn|;n%W4J?r~#9V3<_Ynx|orn8YsaC<}omU`B1TFhzbS<YXt_Nl4_tr0On8( AO8@`> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b54cf3a3e5abac1f1798e62cf557eb53785cd71 b/src/libs/libsrtp/fuzzer/corpus/9b54cf3a3e5abac1f1798e62cf557eb53785cd71 new file mode 100644 index 0000000000000000000000000000000000000000..60dd3229ead2ae2609b15df9ad5144e541682c06 GIT binary patch literal 842 zcmZ23%>V&KnH;J05axeJYp5WD5d(uP10w@NbumZ|s~SU21_z*;5}XQ{zY{jZfD^7} zju6=LIZ!7c9Aii?#~5<j!+ed?F~oQZ7%~LSA;wd{z@a>ZF&s0E0ZR~bG8}mH|6g|_ s0}D8^fpL%s1fZz+2O|D6FaRBcR|zzYC_q$$HPJsgVR#msU#Xm&08q++OaK4? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9b7c95b2ee72ab6347484a6679548b7671fec40d b/src/libs/libsrtp/fuzzer/corpus/9b7c95b2ee72ab6347484a6679548b7671fec40d new file mode 100644 index 0000000000000000000000000000000000000000..3dc05f1547899091d5d48f412c42ff4bb05f333a GIT binary patch literal 1066 zcmdnb;LY{&Wi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*Z z+;6OMFg;ME3=B_U%HSec4gHT-BT!2;#BK;l3l{+02XPtPp&+M2L@UA8!d!sYOV_|b z1XTJT3_zhd7{V9sJFKBklPHB-i4vf&P#zpnS`Ez%4F9DV7#!e{#Q{tT><<`%7#JY2 n_+J=G|Nnm<m{Ng&zF7tmg7Bz=glse{J%VJZmm{u$E#m+H2Vt$F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9ba8be5f01e6c59523360e246bf321707195c64e b/src/libs/libsrtp/fuzzer/corpus/9ba8be5f01e6c59523360e246bf321707195c64e new file mode 100644 index 0000000000000000000000000000000000000000..b05c7898fd79b10471088133d28cb0d1e8ec6f90 GIT binary patch literal 408 zcmaJ-%?g1*6g^|X*ohTVRu&dgER+ppr98uA@hy}jpU-9rD_+90@K&F)FwPz0r<7ZB z?wvDt&fGIb0X+j?HPg|Knc>{c=gfz()-!~DC{#X&8hG1wPesp_j=)Jn)ws(D<3Wny zb`(P4?gka%fJTa#vXmf<M}qKeiH*M{QNTI9LU-8NN~_WiFJblji9I<BWm*ePAL8;V z{^xJsZXz;%q{wWh^CU9MJhb@C?pZw@(<bOuu*6j70?I$1XqpSG$%Y5ooJ{2JVH~;i N(s2%2_6Irh2M_!!c18dI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9c1e071cd40ef456c80db14ab6279191908804e6 b/src/libs/libsrtp/fuzzer/corpus/9c1e071cd40ef456c80db14ab6279191908804e6 new file mode 100644 index 0000000000000000000000000000000000000000..27f951528ff7179490f6c7c64e13f2c42047cff9 GIT binary patch literal 3200 zcmd^B&x>1C6#ia}^4hu>9g3|obf)OIXcIwO5MnU}K^Z76T?BjvePCdm8S*lMxos1r z8U#08D%lnLCj?h^=|A8`SGsU9|G<nm&RoB9&b=?M?N};;E_(8Ef1G>nz2|)A$9q_T zQNNe|II^Ml{tCv<VRm~av{f^{PG-qz?QhS3q`oLCu1KW2Qw*k0vtP#I1bBYRVI3)d z$uqJ{>JF9%?D{=8_agA8@Gby5C*G4$djD==W2JE4KyRom;5_j8SN^eZB^OOMf4PN> zdJ82qB`;0+FkjyiQv!V_{em3JV`@>|xZ1WsV<z`KCsHI=Si7o*s^-eSNX>O{3|Nv4 zuAl|40PFci_WtI^pugD$M89WMOdIE^j4OzkfHWmIOXLTDfhVKn<?C+*N^t1g;e^#) z6ppx~MLD%XfY84Hsw7J!ip|L%%6KgLy<^-de&Aq=$)dW*n1gryAM{R|Zvq`foB~ly zM84nM!;tsW;y~T??L6B$hEx$4bEH@-;P<<>rXv2uE-ej?X*Dq%WMl?s`M1?3G8*6+ zle%DYNN<Aw5*}K$_L&lJQjUZyU!k>%O1H6f=cYftvm?gOQ9Bz^BbQdKGzeMyYtm2B zMA8$mOc@1Kw_jHf$jO=;sH!Vc)tiAl`?xDyqXbWsSdbI3h|3S#&%;=ZjLN9L+X)h? z%txRb>xot9YKYJgy-x*@zae!E&<@LMc-=;$6nWC?GeA6jPDe2NfL;uG6Cwsm@Kf<Y zsw#Ht@RC_df|`lA!ZFrwy;fh+w5x?Gp;>>iS~F<s*^-hob}{@S?-m+s`_x;O0jE%8 zZj?^Y9C={>hCA5Pbztp0t(MTahM)0LV4~SXmYm-AIM};UG&y_3XaiU25ly>QGu`j| z#&*aci{qnnn$j_j85FG7F(M@nSL_`iN28zj(vega$}n<b*dBL<l+a7eJ}p*9=ae|i zvRRI@T&xzjajX-NI$>2u>KbdsKE*%q+ia<4&`^(%2H7wu($C9KVqnJNQ4T_3mDEbG zEE~D+)qt7gAgwK*-*jAM+L&#pB1ZYD45!tN_X-O@4CQ!q=b;bcE<U6a$cOco4l9lL zdwB9AfZjF@*zxjD>;fyByYPJ3wD~%}c`&b}!POMD_YY4JgT(3oynyGAYz1Fu86sp# z|3?*1S;psdSWfCvqxnHGui_yEEkM}L2TmNXW^^oWto@fkd-S0eWtH~7yOJi_b9bgb z{;l`IFPBa6a$1!(W@*_2mO7<V&RI>{c3<jy5%!tLWr2N8^jw?zxds&xpZ@Amh{7WD zCjXaAMVW^8J4dW`FN6dxtKAvsJ@<dJWAY2P7~N`VzmQ}$cjvT*zpNj;fNg%TC|CJq MZZh(*E+mTo1s%5<_5c6? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9c241260e18673e5a907fb110c8ab7578bbe82e7 b/src/libs/libsrtp/fuzzer/corpus/9c241260e18673e5a907fb110c8ab7578bbe82e7 new file mode 100644 index 0000000000000000000000000000000000000000..eeb0614a43c4e5639737f4c67f77224bedbbaf5c GIT binary patch literal 103 zcma#|Wnd_YXJB9`%H%Mt2hu?B|NnoWXmvFM10#b1Sfsj`kpYaW)xmrQ25TtI@cqy? bSq6qVLLj~{gTS124u}jBOaTMK{)r3#<Hiug literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9c47e0548e795d9932d138becfeab778c0180a1d b/src/libs/libsrtp/fuzzer/corpus/9c47e0548e795d9932d138becfeab778c0180a1d new file mode 100644 index 0000000000000000000000000000000000000000..e51128d6a0db0fcad1f0c84cfb6a5eb919ffcb70 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0o)c(hbRD%s22YR Pihzv%*@53^xPA@*=`$xc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9c60d94673a78e97b868eabdb3d20beafad86b7d b/src/libs/libsrtp/fuzzer/corpus/9c60d94673a78e97b868eabdb3d20beafad86b7d new file mode 100644 index 0000000000000000000000000000000000000000..c02af524334d1e3aecc7f5e71d22357b1ebc7e99 GIT binary patch literal 144 zcma#o%VVgCXJB9`%H)^>q(I>R|Np)W4As>T9*|7TDNT(p;AG&CWng4rXaKSpz$}Iz za~Rrz@<39UA)kQ*q@nE_kf;aZ+|;7<)cEB5ypp2)ocOfNoK#_kRan(9-0xxd_dgY6 G5(5Cu-6977 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9c78b9075fba3c55fe322becd2c14de15357ab5e b/src/libs/libsrtp/fuzzer/corpus/9c78b9075fba3c55fe322becd2c14de15357ab5e new file mode 100644 index 0000000000000000000000000000000000000000..3733dd812f684470d58ed3c5a97283424b8740c3 GIT binary patch literal 464 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RODe+MbBIFr&hhGL)yBanBO z2`t3GQ0*`i3X&NPGBA|H=P@wo6=ilT1R7=oR&xxhl97|0L6+hF4~A-kIYMAD;dTaw zIUEd(vOwN{PN*_4<yhwe1&kp3B_MLP2>Tfry<C8TjILm1rPal7BmII)407_56LV5c z|L?oUpa?Y<=)Wt-{%csa4Fn3H{s42fF-n5zW!r!zvj_uqvQ-y@e9N%ExCCs00t3j+ zDszBBEDRh#$S4ky1_C1nhL_9<KnA+HKmY%M)G@F>fOs0H1Px&7dy8ZN15hJ}Z51e1 Wz)oQ(Vn>fFhU#jDDp0g2DFFavb!Y4V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9cd6dbd06c4d168f9f91f3ea3aada68e3bdcd3ee b/src/libs/libsrtp/fuzzer/corpus/9cd6dbd06c4d168f9f91f3ea3aada68e3bdcd3ee new file mode 100644 index 0000000000000000000000000000000000000000..0e9a68672d26f85e51d5b72c4fa5745573072724 GIT binary patch literal 254 zcmdmQ%fR*WWi<l>!@vIyQa}m_l)f<(S1*UK85tN9i<uc18LAy-0>MoX0S4)5X)XW% z|7T-R04c04W`r0}2h;!uYCwY+7>pT7QQI(cCeSrNQxrhP;4~L*2Z8}ndrOJ|;RdLq O7#Kbyl)+dZfD8bt!Zz0c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9cec130b4190e0064c6654fdfc72e4c846f06ab3 b/src/libs/libsrtp/fuzzer/corpus/9cec130b4190e0064c6654fdfc72e4c846f06ab3 new file mode 100644 index 0000000000000000000000000000000000000000..f6765e04d85eabd22f94e45f596aaad2f82340cb GIT binary patch literal 329 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wWmX{@ z!w57Arh-$R0jz=ni(Qz;KrBSK2Bv}q=o+GpQJDiYhJ}Fx2pJjJ9{@T3A<ko{)@B5H zQXMD)0@e_Ufq|2OK^CYK7$pCFfBy%C0wV(xgFFM!XRST|85r6b7@%f?bU+O`$N&IW Cl0fVL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9cfe6596628788f5442c7b6d32dddd46b2e9322f b/src/libs/libsrtp/fuzzer/corpus/9cfe6596628788f5442c7b6d32dddd46b2e9322f new file mode 100644 index 0000000000000000000000000000000000000000..3adc8c08e33be2b5940b50d0c0c9cdbc11562e6e GIT binary patch literal 1095 zcmbVLziSg=7=G?tE>fX3DpaYS4k;)`C6i=mog75OS>&VWK?5;4au;a(L7SzVg9JJj z(#b!-E$jUU!NH}QAP$Fn$9z8T_w{n3=-|WM_kQosdw*SiWG)tk1~509*GY&wXX}af z+@0ih;z4g76Q^>NpbwRym}y$f%|3Yvam9I}afSqnHjfo0gH8|~IE^s|EpKG~Ux<$I zV>t(yPDNZ7M#4XP&gh!bzu^6Jdf$575C_S_QoU{|&_1WA0c#96)X8MU%2qPG8>U-n zq~1nxx@{fvgn}>y;@{GBS$tyv=5AE8XAb1@|G4`v*G994)jxaYl3)&@EkGv?7JQlQ zDT{ps6jpU!EY*`sXaQZwfE}*lAukhTJTr~M55||aB@aaX8VK@yu@bQJ6h#OmZs2w- z;=!>n7YECW><jr%BBQc;v_T+ib4o?IK0;~H8Dw=B>>=P%Jn^yB9Y!jyA&_ZdRO4E# zp{dxANOfdEf@+CeLq;AASJjeTF_&1`khWxkW!UNOv^e=W`(DpDK%@#^SuLuy<OiRM z{V&BaK?Z+iYhedI3-rqZg)ZUq|DewW53|{9JL<+H3rLG5+->m>*|1&proYDzGu0m_ zCFGM8D6KMLvaHc!kp@HZk(VOJxbwT%mCHd*E^B0VQTLZ=DT<qkIFcb(Rw}>4{$d%u mUKpnRus_(4)?AZ_gm()*n~3&D;dqk}B>JAmZ5ofq&_4lopiBDz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9d3f8c4341dc52765ae5568821439d79b2ff4486 b/src/libs/libsrtp/fuzzer/corpus/9d3f8c4341dc52765ae5568821439d79b2ff4486 new file mode 100644 index 0000000000000000000000000000000000000000..37517f5ea4658821c03171543d5476d9f48cb626 GIT binary patch literal 2225 zcmdT_%}Z2K6#u<ZaV!FH7KJi8lVKl&gG53k=Inw%%v~V%n#GF-KazQ)fj635n2X#f zv@mApvb_W?WT1bdoh|1d7+c8Pe&^o%UK933w5T&P@7}rRcfQZLPY=LSxs(h>>{e?% zje=7A*KJOUi>raZ(t~6g9`J%Y$gUTkYnURUhOHF3ki-pvk2MLZ8bOGv0*{giP%0Cp zu})kIVH&dyG?Y;2jV%y<UES-Uq_Hm2+>?CeXSjGR<d;$LxfM^Jb0rb`4s^8B8$zPj zoTN%PXL$B84dKIMM5xHd0x#9b?vyycvNx&i@6%RnlkU<vLp0NFnNH+9I&#@^G2vFY zL_7aYAV^?{naAd~?odlMM}+Uc*Xcg4nM8^f8J+<TA#1W?z@c~E>D{*mdYyC*D*GGe zBb6r6yG~`~si^E^Ws_`~BhjmmO)gV9$3M3u!i^}xJWmL(qi!GxtD}QK#C{25nC0z4 zy>5_s>YR+KZ<;H?ULwj#152xw$MYw^Mig<P4;g+;J_fA~V1OG+G5c(!pp>ji>zbz2 z8byGu9tQqeaZw~zgHJ2vC(`Z+^AXvW%>ow?GHd4NkCl8T+z+arcrN7o!K<qG78n*& zLUHrD*?@k{Q;I$CxGwmiud4S2c#1q+DM1m-J~oZ>lpSGFp;G$x$$TWD-Z(~br5rp8 z%8BLe5KNoi({^SF<g{|E;%VCDktbOIcJ$PlMuUb(OuwOwd73cEa8_N|(lmyh##O8G z8Euup0d+Al5lnSlBLS}!+uM55WFQ(#Nt~4Dp={b{PWEURucKopNR6gmr*9|%Ke%Y^ z4Fz^5N9SdeGF5U%r4?L6{d99CQXQ}V@9_TXb10qQh}mZH&3%PycS#ZBS1T{faTV6g zwI^d9m+gm}pVgDC!CtU;n1}8oT4&E4?r1j>EnVp68R=pZVKfWJKvu4R!XD|PJR&lP z5exOl7vwz`_^QNK4s!~#TCHo{pf(wffTOKK(Q}xGv)63V-dV8+42FCtX;lw*<e+UH zttWFli@$a*3I7hy9&$|ofT;1NNXi@dn*nF>4t_$T2jcjESQN+Q7I7~-R%%AZaw77^ UzVWQzyntPKA?4)-U#tXQ0QmS+00000 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9d7bab66e6a5c032289b5bf8f41318432689f691 b/src/libs/libsrtp/fuzzer/corpus/9d7bab66e6a5c032289b5bf8f41318432689f691 new file mode 100644 index 0000000000000000000000000000000000000000..883b66f8da46c18f71c94fd919d5bf49b06aed76 GIT binary patch literal 350 zcmZ`#p$@`841Kqm2|||PaI*wO!XF?oXcTfGvpcsFLof)*_yMwy;0v()5pt#NZ4)F^ z^j_Q7zLz^d!aPlp<x!;th-e4noK`O%e!@8#(J!D50dTTyg1w)$cr$2mo$;fKmk*=L zV1YG^Cl$yuR#uL521?1;^dvC{=1jR4m11xU+|ERDBfU@No)^Se0(C>7v;B2F!U<rV m<9{8cV9-&&zdAxmt$U1GtHy=3CAQh=dKyE1fc1k!8=Ef?$vyi3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9d94d57d2a876d3c974280a054f6b861e8b8ee8f b/src/libs/libsrtp/fuzzer/corpus/9d94d57d2a876d3c974280a054f6b861e8b8ee8f new file mode 100644 index 0000000000000000000000000000000000000000..007c513e767ef61ee249f2545e0c3c4dd1502341 GIT binary patch literal 79 zcmbREe?QmDm(>gm3@ktl0{<aEgn=2zNzN}S(AQ;PU<4zeKy@)ALv<C1U|>+PU|<8$ H2viLK!LAeH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9da016e1836bf58d9e01bd78b407234e8a63d5b6 b/src/libs/libsrtp/fuzzer/corpus/9da016e1836bf58d9e01bd78b407234e8a63d5b6 new file mode 100644 index 0000000000000000000000000000000000000000..90af7519bafb6769f6a6461cca79c9652e11a931 GIT binary patch literal 69 zcmaz~&d)0;%H&{RV2Dqx2a=2ojtn5gz#s}D7!3MAfa`5>e06+$W@>!#AKm!W?s`VX N)j&x`hGRfb4FEz>6QTeB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9de256302dde57124d6e1a589384b22cbb6744d4 b/src/libs/libsrtp/fuzzer/corpus/9de256302dde57124d6e1a589384b22cbb6744d4 new file mode 100644 index 0000000000000000000000000000000000000000..08297e4783edfcd42d3d3257f686d2c89b61658c GIT binary patch literal 69 ycmbQpD8%*hWi<mFcrh?2z&Q!k4JRitFl5F9MXHM#!MJ$B1uYY}it1_x;dTJ5^9+Lk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9dedc2eb341a398320cfc085a594038b9059ea06 b/src/libs/libsrtp/fuzzer/corpus/9dedc2eb341a398320cfc085a594038b9059ea06 new file mode 100644 index 0000000000000000000000000000000000000000..6c94e21dce61b61690ca20e52ae0ad5d76322552 GIT binary patch literal 115 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vv22$0GKmv%Xiy0XtfGR*t7zt#+5k&kqOa!Ep ZVgFMGhTh&@Ae(`q1fmP5wb}}#2>?>z6*&L^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9e2ae70380ac19788fc7895b341bdbab163a87e8 b/src/libs/libsrtp/fuzzer/corpus/9e2ae70380ac19788fc7895b341bdbab163a87e8 new file mode 100644 index 0000000000000000000000000000000000000000..4e675decbd3ab4a1727769ec12a89a12f7fa9f63 GIT binary patch literal 131 zcma#|Wnd_YXJB9`%H%Kv(LkX7|36T)x|)H3kwF10Qq9O%timw4y1H7OfguniWDOPv r5}dXSvJCtnfFcd#{{oAG2u4N*1_1^JVFd;T4u&~EO-wM|K)M<LK5Y=d literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9e30979bb21ddfdaa17bed28f606f472dff0f19e b/src/libs/libsrtp/fuzzer/corpus/9e30979bb21ddfdaa17bed28f606f472dff0f19e new file mode 100644 index 0000000000000000000000000000000000000000..6a45d0d41e13b4bb1b54c4b18ce8ff6240a8e1f9 GIT binary patch literal 2474 zcmeHJK}!Nb6#mAf)=r@}NstcRlAvx87<dx=4U34NP$8~%Sx8UWwWF|?{z%c!@g4>q zn!Y!>I$MTe5*_wC%+9=d@6F7&Z{8bdl`Oje+D)h4<CoA{SMdCxcSj?i!*^ZG8aWQe z@F-C-V&i)XesMTM4KF~)y#@;H=KZ7X3w~%tLu1vZrTDgyMrsE+<M=d4o0-f22pp&! zM+sXO7q_Jul(oS_dxPZ?EfkDe*Y|9f*u&HK4bBNqk->h%^D(z5dkl~5JM*RcqHeTZ zpIst>X2du;7%t&NlV6bE6`Y)fp4R0gTa<-}O>mNrauWWE1s}pj-My*Gf>S7L_gg8* z56w{Gi1cpESXsger%cSP;6z*y|0GWGQBJVoIN?Em!pX1WWPZ8-EKb6Ug*czY`NWi# zIG^yg$NA)IE&jyG`f(!Jbo!)Vuj8^=AX=d)|5h_8Ihoe2S5wzSb>_w?@G75+U;7<3 wVL_{i3MWl@yzJK9R^zH#%X^LL(X>2nNofqgmkxr(3v7ZOFp$bAYfjjH0P%i#3;+NC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9e3ca060f2f65039dcd9e16d1ad3985ab44382b2 b/src/libs/libsrtp/fuzzer/corpus/9e3ca060f2f65039dcd9e16d1ad3985ab44382b2 new file mode 100644 index 0000000000000000000000000000000000000000..b0dc2c7434411b3fd512996edca131a95a7bf9ca GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0AmvA;7gC>Ap^R6EQBf}0=$27oHggH$Lm pFjNCoAhfGNw8tA{S65dTr^Z)j{{R0UsDcTkI=`AB@c(}X1^|C_C!qiU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9e449baa1048738d81380e1c891c07dd43e1a9b2 b/src/libs/libsrtp/fuzzer/corpus/9e449baa1048738d81380e1c891c07dd43e1a9b2 new file mode 100644 index 0000000000000000000000000000000000000000..17d3a65823390aed3dbff44fa35da7c48ee032d0 GIT binary patch literal 260 zcmdl#A&)^ao`HcODU&0$9!LYhf42X=3=GxP3=E763Sg1yVl{^9Vn&AQa&-m<8=#Ob zgDDV$04D>35s;Dvs%5AKVxQtULJW2PVSq7DL7^mHA-~9;fkA^o46Fr6Faix%0McM( z!Z5`^8fd~n28K?>Opbbnc443jjw+BMRv-%ozz)fG0CIs6Xbvq_t44JwgCT=1%%Lbw ILAaU$0EF2-%K!iX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9e5b8aa4c45e3619d85a1473229e1d66f4ad48e7 b/src/libs/libsrtp/fuzzer/corpus/9e5b8aa4c45e3619d85a1473229e1d66f4ad48e7 new file mode 100644 index 0000000000000000000000000000000000000000..65e494189c0ab0b86822a8ba870700106a35e3ef GIT binary patch literal 1555 zcmd5+yH3ME5S%lXuseh+3M+_*D56C4P*Nd9RMf5_k%AN<6;}`nl!i~RX!r<zgb&~^ zpyHVI**?p*NF;-lv;4U8-rnra>?T9pA0_~1lVJS7H-|B11ZWK?y8wNs?9DYXxWbwJ zGe8((>EodLNQP6)iA2rDCYo6H4#{x|sfRuLv++D>taMpuKu{G3-VR;YEe54U*h6Lk z6WuTdbNOj%3F?9@+uN^ts5!4r9ha-%L#a2?uCxyazaArOj4^o<BhkgbY68;)^Yt}R z2sTU3g3nFW1QlU6O%plS%$ln^s|gK1qg&G2Qk<pkbEBh_c0K}L3fmu?eC54F_eC%T zDbhr~r9J{6&YF$$1dl3Yl|4P1Eqz<^`g-oiyWF<#MN8m4MJlsX$SgmWy~`EAU%`HX ze*6tK<I~U>tp%GvTVX3KE*y0EVr(n(T@>JTYg3jIC}}Vzl5`g%>tIsG<jc~<^Y8=2 CHSAgd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9e803f57defd8e912dc797b9dbfd3aac27b9ace9 b/src/libs/libsrtp/fuzzer/corpus/9e803f57defd8e912dc797b9dbfd3aac27b9ace9 new file mode 100644 index 0000000000000000000000000000000000000000..e5522de1556f33c996dab8e1fb30643e384135ae GIT binary patch literal 99 zcmY$>%VUs?XK-*R%H&9`X8?o$|Nr|kFjQAFFfcMGFchmXR2K^Zx$2A%X#)m^mtYnr f1A{CBqdHJ&@f=<TV+Mwt)V%m)h$1L?07wG>&4Cb$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9ec2ede23b6c73d00cb2f6018b64f493dbcd8efa b/src/libs/libsrtp/fuzzer/corpus/9ec2ede23b6c73d00cb2f6018b64f493dbcd8efa new file mode 100644 index 0000000000000000000000000000000000000000..cbe116cf016c380c0f1dcea9bf6b62cfb7714bb5 GIT binary patch literal 1327 zcmeHHy-EW?5dL-vx=AIuP7Fv2OB?NMBBToV42S3y*XVH<Z5CoGwY3bS@g=TQe4M<% z2^Ow1`x7@ou&@zviv5|NZ)d-q9T?FXr2xuYWj8dF7-LTG{9rnZg{JMh8EjiU`VA`5 z2;R}4D*-*2c{#%iFitOk{W8CQjIp3Y6b0I-k|G&9mM+?x=vm;ydDmK!J7BILdbE?V zFODZeFCt2CFHUeYqzD1)cBQKr5?gp`UZD=?772D%kasCX&M{nDtL4#CcDLTCrX`6) zZs)Iu*%~Jk=Vtl+hLfX!_!~J1Pw~kIvyr9Ory*-5eq&m+!4H~{R<Y%_p;}qv<iAdU zA8_*5>ckb0G2;}zdPrlOb~#3!>dh);K^=>KRPCgY_IuW{z6>fha8)Ms_X*MU7Y_Cz Uk-dYW;tqgThI3@TH_`#nAE+4GLjV8( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9ecf66a3ebd3a67fd436993d4bdb3f847daa3697 b/src/libs/libsrtp/fuzzer/corpus/9ecf66a3ebd3a67fd436993d4bdb3f847daa3697 new file mode 100644 index 0000000000000000000000000000000000000000..f142ffc8d911bc8de6bc85fc32ec8d5a364cd988 GIT binary patch literal 36 jcmb=fuC6XljgS9R9B%+*LP2Ic0|SE^0|QVnGrkl68e0u~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9eee3d01b6f15e1dd4f63931031019468b3555a0 b/src/libs/libsrtp/fuzzer/corpus/9eee3d01b6f15e1dd4f63931031019468b3555a0 new file mode 100644 index 0000000000000000000000000000000000000000..389c4a7016a9c04705e07d9273841d9ae1fb011e GIT binary patch literal 54 ycma#o%VQ{sXJB9~O8qaK$p8Y3?EnA!Rx>cfGgLEhfCNAcFlZ=Fc?)Fx{|^9DW(@8C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9ef41e08dee8a1199d0a13a0386c67b71667ad6b b/src/libs/libsrtp/fuzzer/corpus/9ef41e08dee8a1199d0a13a0386c67b71667ad6b new file mode 100644 index 0000000000000000000000000000000000000000..28a6f7c3ae48d0a7a33a85747d1c789bea90f4df GIT binary patch literal 69 zcmbRE-=6DbYBd80{J-`8|NnFU85yd9d`7Sk14DH&BLfgs7snf9#zWLW6fm@aR8%t< HFk}J%6H5{B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9f330d1c0863135fee70bd56c9f716d3a9bbefba b/src/libs/libsrtp/fuzzer/corpus/9f330d1c0863135fee70bd56c9f716d3a9bbefba new file mode 100644 index 0000000000000000000000000000000000000000..1c555c975570a7d98761a36c3078bd485f029cf8 GIT binary patch literal 2178 zcmb_dJ!l+96#nKMOKU;G#fJ<s`H?W_3QOi<)QKQnVNe7jB$%WS&N|>Nj)1Xml|mlu zQ*rVVA`;YJ=gOoFPG{pLZOXK661Xaz9Ao6k_uiY`TVdlWkGq+--@JMA{^pIt{?61X zpF334Tm>FLfk3cnTnMdiO(X~kOxc%=i$}<T!|($BqD#Z{&7G8Jzn5eK6WT=A7+@Bi zpM+-ewA1VO<vdIO$bKBSUrgY4hevOr<wu}pEs-s4_P!l;({7_Pz=st3-shvUinIz~ zgysZkGzA|Xgu3ewR?TZPZrLt)=lw;rJEG_ru|Trp0s<Z%Jx4<HgV2(NiWsn`!Qr>3 zz!g7A@Tx)K5E`m<d08i{U7Icr>gFYTVyy|$*aGcq-E>3jF2vsiX$;c^Q&5f`=Xv1g z!2FX#ny|&l>@Y~8Y{6tI4d!*Z(dMCFfn=Y*iZ))SYOQ4Q)DMyZmpon$h9&sf!-u;| z9;Fv0%=uLa({9gzQw5wK`fm5}h3BE&t4Y;ZUuExLMED=c;5&@Ad`QsK*(?iNl3qGJ zmrC%Vh0!nW5wu(h8p~BNO`u}$+P4A5J524}ilxKtRykbKV*VlPC4-oWJF=@DFWoOj zMXFUkB_$(w{;dKmb<6)(p+n7m^w3PM#A|Xa(z-zv&Em4$l&*YG`{V#8RdSo@o*9oB z?FC@{yzam}kP|s0);WA(peG`LkZ0_TlhOGcvP!R&qHXXm@1_~?^wLdr-}ST5iiwII ziB5G*n2*8IO0c+3EviF6vN~=nLtcLL-B261>ucp6k<;H_I+`Lw-mLVE8@YkfyQWLy zgd+sTX<c3Yh#f1T#Pl<KSr!Xr|0ny_x9!|=touO2CXW65HWHu50CVgs2Wb4JI3R2K zW9{sEx^+UWEt<gOFyKizjXid?IpEjc*s~gH4Tk*vBMz||Sy%Z?aN$^#eRCtDEZvYQ zyn0oJfZ7$|YjE<4P(rEpOvv{Fm1wn)-+!(BiiEv4?9Y5lSS;<!*2Se1=TfepxLn%N z4%fyr<3ML?^f${igyBJzPhG3(Th4CqOACBykYS^Te%xLwaLm`YEkyxNtC4NQelgn8 zCW_ob@_vC8X;dU@=&KCjdj?cv^E9dpgf)TB#Wl5E`j(Rn+S{zAOOmk}J(V^2Md`^T zXk6q36!I2)9d%D8rUGfgW`^_z6Z=9EOiC#GsdDOpyhPG;`3U`4(3r(|!P_bVe8T!9 jJCq(G<^sn&{W~#0i)GgPmFvET>+-E+z0+Y{dzSwX`lrX> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9f4f5cc25f7e9f4ae4c55a52c1b1f01c70350d94 b/src/libs/libsrtp/fuzzer/corpus/9f4f5cc25f7e9f4ae4c55a52c1b1f01c70350d94 new file mode 100644 index 0000000000000000000000000000000000000000..acf4cdc33c4f80aa60c1a09d0a50f95edeec727d GIT binary patch literal 191 zcma#o%VYQ!&%nS?l*y4=3#5VI|L_043=GxP3=E7wUTS<<Vh$%qX{u~|0YfrSq@jS5 zfk755$1sPX9jF9I3Ii#iFav{f8|VN3{~Lf9$oc=jC>2EeGGubp0~P)E0GsOoG$lR{ dB#mqlNH+t6AjBe&@i2>+tBXMn!2m@Ji~x<tD8&E( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9f52f113cf6b07f8fa43582f7a651e3b1a24082e b/src/libs/libsrtp/fuzzer/corpus/9f52f113cf6b07f8fa43582f7a651e3b1a24082e new file mode 100644 index 0000000000000000000000000000000000000000..e1f98555337563c0b7eabcf4983b7624b4c0153c GIT binary patch literal 144 zcmXYoI}XA?3`E~{rlzK#q0AjP0B0}=85C(r&;kuX3RGNz%Wx}{#+c6(Gh_LURt*;g zN-Z{v47vM))OEire3eh8`w=oB!8ID+#_PeIf$(u)@)^W9(ZkNl)^y!A$I@oq)Y*b@ TZZ7W3VHxZc4xav>Gf#2es^%tv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9f59ae1a679d0db7b98247533bbdbac5025eb28a b/src/libs/libsrtp/fuzzer/corpus/9f59ae1a679d0db7b98247533bbdbac5025eb28a new file mode 100644 index 0000000000000000000000000000000000000000..4ac4b1b21e57e14ea1787205255cabd1da36699d GIT binary patch literal 206 zcmX|*y$!-p41~YOj}p3w)F>1n3M532G6E}*ih=?PLgyOMFhV*eV54ke?j^t#w$GOD z?y$K~RuHa7&rfu4_a)S(t?#u71<h1_PX2&Jqj5w^I(Cv)#9c+Ob---Z6L#Ou1ZD)W uPR*ih!61w0`_qSZj<*i4{wE6+QR*kSwfgU`U=f`^Z<1C-c@^PSx_<z`cqZKd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9f6ecea8ab081020ee29b0f69970cfcb1b470b23 b/src/libs/libsrtp/fuzzer/corpus/9f6ecea8ab081020ee29b0f69970cfcb1b470b23 new file mode 100644 index 0000000000000000000000000000000000000000..43b9c441abf5decd00071746cc6c5c94a0b6dedf GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#3o|AjzI5CEIqnVQLgW++e!p$KFR1b|uC3<XLf)B_DgasvYc V$ozV!8>&Fg2OGlzGZaE|001q;Bh3H+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9f85bca93890d4ab652e0f78921590b71ad39922 b/src/libs/libsrtp/fuzzer/corpus/9f85bca93890d4ab652e0f78921590b71ad39922 new file mode 100644 index 0000000000000000000000000000000000000000..37688e9e52f031b1a542da1ddd7a7d7737ba375e GIT binary patch literal 180 zcmXwzF$%&^5JX=Tbkhk|78W*^Vr`cL#4CIRe-RJ~5gQ{UT`rN|c}B63b$=vV?942~ z%(~r`r=z7R#BUi!XB?rfP0WYG>2mk3Op!GSw8n^R!KbG)hwY_-MDzYVg(fmk)!d*F oJVj+5<$<V@P55W7#>})FGqpchwPX-NfXz)4{n|TcAFFsFKZjW-9RL6T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9fa9198d7ec1a0e0f29bf8e3843b4e331b2be8f9 b/src/libs/libsrtp/fuzzer/corpus/9fa9198d7ec1a0e0f29bf8e3843b4e331b2be8f9 new file mode 100644 index 0000000000000000000000000000000000000000..1ad3071320930a5d820425e7b135514814b11e6f GIT binary patch literal 166 zcmdnb$N&ax4FCQ+NI}?2-x!Ls85qDaKti#Yk)hgQCJ@{N;w%tjrWjrTR8S4puK+Tz z8mJ#=xF$m#)Gnad97hHQ)(8LJFjz7+fK~d(8vw0jFsiPuwoQ$%&iw!Xzj|>s(|-nr I`09TQ0Gekf$N&HU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/9fb7a6049b631b7a9b00dc8156ba10c76dc234a1 b/src/libs/libsrtp/fuzzer/corpus/9fb7a6049b631b7a9b00dc8156ba10c76dc234a1 new file mode 100644 index 0000000000000000000000000000000000000000..245f910f85d90923ea4c084feb65812f73373367 GIT binary patch literal 286 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbO*AgABoM w0?d{<LSUQcK<!7k1a1ol4yQtFA?Q??MT`v9)eJzNc_07-SO7#q5Tl0&09djs8UO$Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a00ce6721f4e3b6c8bbde0357aa9b6ed3dcd2653 b/src/libs/libsrtp/fuzzer/corpus/a00ce6721f4e3b6c8bbde0357aa9b6ed3dcd2653 new file mode 100644 index 0000000000000000000000000000000000000000..1bf2c51c504778e741f9582709ae169ff6a28dde GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^0B12U g%wcE;DglzhK#Bv18QQ)9iT@09<{*SX!WuvW0pbM|9smFU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a0402e7a7b9602d44e1da267a785de5b57a09668 b/src/libs/libsrtp/fuzzer/corpus/a0402e7a7b9602d44e1da267a785de5b57a09668 new file mode 100644 index 0000000000000000000000000000000000000000..ec00c5b05e861bf01b06b1d770919425783dcb47 GIT binary patch literal 166 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)iB^W@KPcEM{h4WT<wS2?RGm1Q?{JrM3M3 u|DTOP0i>|Hm=R(?9Z&-tr~wUPU@&HEm^l+@15ic*B!yEgTpyHyFbe>!<|VBF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a04ec9682a046248e400ac66a09c69c968da8009 b/src/libs/libsrtp/fuzzer/corpus/a04ec9682a046248e400ac66a09c69c968da8009 new file mode 100644 index 0000000000000000000000000000000000000000..1461e2a19596f1fdd20dee716b1c1b2e971becb9 GIT binary patch literal 441 zcma!N6k{lfXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJ& z0R`qTv_nW?AjJVv(e@2U{1*Z-K>%!aXKE%#JwrQKO%=#^khu;lU<E(|&0_m(kj)Ap zo2SeJN`nCl&@F5YKqk%HX~n=mHFttTC|)m*fd}MxBquZY0(}n-TA+VG;eiyMAf=e$ S2@(ZGhB|}+B&~sX4g&xeO-XqG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a05f44b7ae3fe252ae56e532595ff032f2ece62e b/src/libs/libsrtp/fuzzer/corpus/a05f44b7ae3fe252ae56e532595ff032f2ece62e new file mode 100644 index 0000000000000000000000000000000000000000..bc8c39bc00685ebf6250d1fb9c73a057f4e40ac4 GIT binary patch literal 38 bcmXSBWMB|rU|^_50YCu|5CsYv0C6S&!Vn72 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a06e5d87f23c6dabba262a6b301a425636b434ef b/src/libs/libsrtp/fuzzer/corpus/a06e5d87f23c6dabba262a6b301a425636b434ef new file mode 100644 index 0000000000000000000000000000000000000000..0d12e0763ad6e2c18a30491ec08b06d03d2a81c6 GIT binary patch literal 2707 zcmc&$&udgy6#iZe@g-159S~GB1I4%~ky1BGj3!{Hm8z?P5Zad^eU^bZk$IVjc_lLl zX$YhX!FDwip)0p8T)1e~?)(p0C=^2XS#;s;_nrG*-pizFY84OR&bjBFd+z!5otI5_ zVQ6bB1+eWVkMc+K=ZS=C8gL2lnIvfvAf*;Xew{Ify#MoZ@q3H~xv}tm+1Ne|e(bH6 zZ}Ek9>cZ_o;J5;A*2B0h25`<@1-|f4dyz6j8UjwG*w{ky-1b!<$<^fMt{ACd#<ROT z9TjUzZDguuCX<euY^gTik~EGZ?_5$_ile!OrMOx9HjY%Nj2bu+k)`LYTeoV#Zufoh zs;0`9ffo$RxitBZbv>0?_ypK8)*N-NYe95Bz!_jZZbWmfB#xGX#9haD#}vCN2dVG! z*aAy)G1N9tOrlBPmvJ%OLqK%8fkis_^sN(qcs)Jck5bvpJtJ0g=TFJVTGE=lQ-;h= zmxEp2H>{vnH{5|d6IfM7j$5{Z5t27AE+ZaG7M=DdTzTV)-wX$8Lgy-lFLUNhx)^=U zv`#RsK{Ixhy56;pJ!!3Y4}n92-HYkf?^GBw;|39$E1idp#U?9*tl4KV1^vC8Hh;ul zj}8u{jw<=MsFF|pv@mcMUH?pm%<sP?%nlfq<ZThYV*9B#x!jc*%w#e0Cs50*Ft)vD z%w`eTjx`zc6kwp^LBiaz>#*k63V%XLzTf8Je0hAf`uGg+*!k%upr`CrPwG~z$Mvv{ zH8ZiSV9a!XuG2FmE*6eG_&L|%6Suz{=otKS6qG~4Rhl&i=!+iOXB>w{nIB<(a?iB# zZdA<!!9BydyI_*tI8TFwxe~|^+bKIIj_%Z2^KrCrvpyf**rDVGuxvUuAef0XX>-3^ z8kSSzQeawlrd^suIB(GJ=}{$HWwxw~8Of2eI8Y!bpCL+%;fg5K$0#3K_MYC%eZsPv z$SjY{s^NcI(JC5-lcuP*5WRcp@J8+<-owoNsPOXt&P;wk{wq=l824sSsG>sPbvgd~ z3A<1LtNLtKtO}TBvEl1>j+`g!rta&?;B{@3*f{z3E=csjA<2)Q#H@tYl46ab;L0U3 ze6w6*e^wax``lISh*Ki88&-Aink4FU5l@mh{)TA8rzJS3gEsHG?0>8mZj$GDRu2Bo z4P7{^OT7^8Cp4bCg2tZc?lIm(#3t3O3Y&2qZAmPwqIat%Qe5jBIdu3XQ(zuZ{4xz< zaKe9}(ky$!_;q`i1NNlD!#@~1C#H?ZvfI3FaFMCNJ}_pgl_o_s=yTzXJj&^F%&2F0 F{txaLjxYcK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a0724ef9d2a467d743f996937ba3ef72225860e2 b/src/libs/libsrtp/fuzzer/corpus/a0724ef9d2a467d743f996937ba3ef72225860e2 new file mode 100644 index 0000000000000000000000000000000000000000..e0c7d5fa2bd6ecbe65901e36df76eca7838a3d92 GIT binary patch literal 69 zcmZ2!!hisb5N0)_q;?&IU7Tu=%2*8)W@Omk|DWsSOAwnukwJ=q!I6PM0mK0U05Nb0 ANB{r; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a07bec09199f97fbe68679d9ef1b3f8180084336 b/src/libs/libsrtp/fuzzer/corpus/a07bec09199f97fbe68679d9ef1b3f8180084336 new file mode 100644 index 0000000000000000000000000000000000000000..c856f3f36420535010f684d6b957fe288675ab26 GIT binary patch literal 69 zcmbREe?HgCm(>hlpz#0y|N8&m|4S-B_&_qDy5ZzB28PUdAiKJl5sX_~wy`r*GcZ;& MXr&g%|F5nF09|qx!~g&Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a07de385038f371937bbdc041d1698a3eeeb0e3a b/src/libs/libsrtp/fuzzer/corpus/a07de385038f371937bbdc041d1698a3eeeb0e3a new file mode 100644 index 0000000000000000000000000000000000000000..95ee1889bfc43c708d383d26aefe7542b7faca27 GIT binary patch literal 1023 zcmb_bJx;?g7<~?wNH#<!hAI^*VnD6f=?N+!j*zKRJJ6x+ga;<ng(Flf9D+k|2gEJP zRP#RDjY~2VDRq=Y-;Y1P?|aYX08h&jz<ipHpZVvq*4_ig0LnXH7RtZ$Nx}o}e58*o z!%E|_{VE4D2og0P+kEQFM<iDjqyiT{*!W&IJZ&5e2x<>Pa>mm2jDD4o6>u4_`Gh^# z(Z<#W)CO5|Z>{*g8M!<JA4+{V+O>-C>pi0CF(mcYgrkx2Q8@jk@e_1oZYUbFBSi$W zm06@f#|bM|LV^OE=*z1;F^@aZ;eDt(=iJs!@)f{?)?(cvSaK|N8k;>9?6(83*`I;o o*~ft`4g6R5UmU<+;l(Ki(gI^L45pG(xyL@{xN;Trrw|7G0$`z<$^ZZW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a0a5e60ad7c50a8adce5d9a706d1990194816322 b/src/libs/libsrtp/fuzzer/corpus/a0a5e60ad7c50a8adce5d9a706d1990194816322 new file mode 100644 index 0000000000000000000000000000000000000000..a2e0e388151a08e7a75a3860a96f1ee6660212b1 GIT binary patch literal 250 zcmdo0-;V3$%W4J&hHw8Jq<|C<{CX-^45X?VfdnIiJ4mRyn316xs0t_qA)^@>I>Brp z7cLHDyhS&Rfe~)lL}bHI3`91e8e+nCW|(tunE=-WbW}9V6%Ync3goIP2F45^>;M1% T(zPY=`zQW~diCFb2NebYRCO~E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a0b74f15cc136779c3036836d74c7f833ae9655f b/src/libs/libsrtp/fuzzer/corpus/a0b74f15cc136779c3036836d74c7f833ae9655f new file mode 100644 index 0000000000000000000000000000000000000000..d4c075c571e428b5c17f3d08771ce6491211882f GIT binary patch literal 105 zcmZQzV60<cWB`IW4DAdM76Vg3JWxQ5p_rjKUN2rRk0AuaFUsUdt!H46#0r2$G!)Mf aVh9H+Q~;Z|9mrx}sQOd=|9^FL5d#4FFA>rJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a124a6aea6603776b3a71cd813903d4191ec82c0 b/src/libs/libsrtp/fuzzer/corpus/a124a6aea6603776b3a71cd813903d4191ec82c0 new file mode 100644 index 0000000000000000000000000000000000000000..ed2581d9fd44bc998beaf7296efe890ca0114b67 GIT binary patch literal 129 zcma!NWMHs}XJB9`%H&9`2ht34gcuYU6c~lu85mUN0A)ddg@KWQ{Q;2i|33)-_hn$H tu4dSV34lu2z@oa_7#M_rJO&1kL30=c81{Yp&cI;=G)S011}p(4ssX~LBNPAt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a131ab9d440a60d6eb3f77ac366d91a4589744b6 b/src/libs/libsrtp/fuzzer/corpus/a131ab9d440a60d6eb3f77ac366d91a4589744b6 new file mode 100644 index 0000000000000000000000000000000000000000..6d6d9f78d5e370a83969b1977621043a47fd4a4c GIT binary patch literal 538 zcmazQU;qNf4U9#pnH=>XHUq=||Nng%7^|xp8Myy|1@=Jzn2n$K{|_YJP&`M7AsnJ| z4#ROEV-7>RFark=!U3w9c90T;n*TucAa{UOp97P`nL~zM3`5GzT;MQ72_FWO=pj0s StBV;Ks;lAgfy^iZa;gE4T~)gP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a140f3a860b94995c124e3ebe261598a20b2a390 b/src/libs/libsrtp/fuzzer/corpus/a140f3a860b94995c124e3ebe261598a20b2a390 new file mode 100644 index 0000000000000000000000000000000000000000..e02c41fc14206abdd692789b8608f212f36d8d51 GIT binary patch literal 717 zcmZ3^z+g~P&%nS?l*y3_qJiMIqcw!Vz+l7>`yU7x7&kB$rDk$K6#zwi85pap85y|$ zFoBfrg8-N=JoNv63=Iqn4aIYW7{VdS<}e%wGUhO}3o~#4AsnEpX$L7msQC|6&%gk5 z7zmsLlX%SmsQ}uCR}I`fsCEg1O&<U^!`(wt_;7*45G8yd9>D2$6<A#S0mT9$oU4l& xfkFHaq#HFZNOBJ(PEp*05?{X%@y-HvD7sz$-O<yAE<An4L%aq`y#^edsQ@nubrb*q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a17c51b2fa9f23ff210d0e89917b26fb14daf8a1 b/src/libs/libsrtp/fuzzer/corpus/a17c51b2fa9f23ff210d0e89917b26fb14daf8a1 new file mode 100644 index 0000000000000000000000000000000000000000..c2dbcec4c7de07d2cfd8ccb8facdcd45e15c2f69 GIT binary patch literal 139 zcma!N6k;feXJB9`%H&9`0n$M5|Nnnq28QZt1_nk31%}h{Wr;bZsqqDz3>>mR5rzgJ yivi4HV3@<u4%7f7g@F_YNORjaAW;v*K$S31l$yy=4^aaX0@FKSJVu7k1q=Wd!WE$a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a197d714b9b79700a96df7028af09116f360ba72 b/src/libs/libsrtp/fuzzer/corpus/a197d714b9b79700a96df7028af09116f360ba72 new file mode 100644 index 0000000000000000000000000000000000000000..f958b11dc7a4845f9362d5c0fd99d4fd105345e2 GIT binary patch literal 126 zcmdl#@jutgm(>gm{~7){NHKtc(l>@8pa>&~10)oS*%_)qBvZA+Ox>9?Z_Y#l5OoVc sN~?<*8UFnT8d3+=2@+ypQ2YP?KhO{+<!pa81_K78!2dZgP+eUD07VKVLI3~& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a19e0848b6ae37a8334f174eb35725df1882dc62 b/src/libs/libsrtp/fuzzer/corpus/a19e0848b6ae37a8334f174eb35725df1882dc62 new file mode 100644 index 0000000000000000000000000000000000000000..e0c4fd34f195869a8bd41de16b88236ff757b291 GIT binary patch literal 139 zcma!N6k;feXJB9`%H&9`0n$M5|Nnnq28QZt1_nk31%}h{Wr;bZsqqDz3>>mR5rzgJ zivi4HV3@<u4%7f7g@F_Y14A7{+czMq9*BV|VW22AlcOG@1||fgJAjxC#;;^x001zr B6$$_V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a1c6ff56ff1f880f79350ecbc7612e7f69023a6c b/src/libs/libsrtp/fuzzer/corpus/a1c6ff56ff1f880f79350ecbc7612e7f69023a6c new file mode 100644 index 0000000000000000000000000000000000000000..6360e7b033f876f1d5c632f954cfe97260458e16 GIT binary patch literal 870 zcmZ23%>V&KnH;J05axeJYp5WD5d(uP10w@NbumZ|s~SU21_z*;5}XQ{zY}E$%%V9$ zV9Vz~oq%wRA^jX<PtY+yPZ10jf`%AABr0TR5WHFc(=o%Bli|Rl|Npuh8CbwE4OEZ_ o1R!<)K*WCr1_J_0pb10)q8hAeB&8)-0$mBrF2L*r@;?Ls0HQdC6aWAK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a23b0f4d2553440e151ce9cf8a24fffc6efad9c0 b/src/libs/libsrtp/fuzzer/corpus/a23b0f4d2553440e151ce9cf8a24fffc6efad9c0 new file mode 100644 index 0000000000000000000000000000000000000000..efe1c72222574d2a59bbee7d1aa2400723239708 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF*`#wgmjpxJ9FmEnMeSlP64E} kx|k7SNF7)wP(%%A5CelLV*}V6|9FFJprBFU|LW=z05@hJO8@`> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a252e70476c0635ccafb278f4a35fb48e8818c30 b/src/libs/libsrtp/fuzzer/corpus/a252e70476c0635ccafb278f4a35fb48e8818c30 new file mode 100644 index 0000000000000000000000000000000000000000..0ba633914bd1f1a29d07ff8376361e56908463ce GIT binary patch literal 333 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+ePoFfuSy7vof8$jRU!%fN`kkYWagzuy@c zfC?BGis6QYLd-{4WWWhkQ(Zhq2rM}Vq6En?_$>k|XNFmX$F-OiF|?N!rvP;`GX3`j ydbAqkUj>lm)sqB)Ty+o=2n-k)UV<5%EFj<TGQ=k*mgc0!7YiFRFn~QTkO}~4rZW8i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a25e19710fcd419d19f54f0a572449a0056f9d20 b/src/libs/libsrtp/fuzzer/corpus/a25e19710fcd419d19f54f0a572449a0056f9d20 new file mode 100644 index 0000000000000000000000000000000000000000..94439d314bd54b43a322cba122ef0188bcadd915 GIT binary patch literal 172 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+8;SR*M$Z8nCDjA{~qJ_x=K*ONO&Fv)! k04+9{!oX0V-^wV<zy^{90&5`7V_@I}xj>eI5yWKx0I)O`<^TWy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a2778495452f89e265644e0fc66964af0f7d9e60 b/src/libs/libsrtp/fuzzer/corpus/a2778495452f89e265644e0fc66964af0f7d9e60 new file mode 100644 index 0000000000000000000000000000000000000000..4c7d7238da17c240dffdf72cf40286515193eb7f GIT binary patch literal 69 zcmYe!kFP3;FJj1KVBm1AX8?o$|Nr|!SPY^J27N%lRUDsbU{GBhAD{V0w>ULEKDB$b N15gQ&nc5w@8UU^F6?gyu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a2a6b6cbc125c6b928182cc5ea8aae7a20425e0d b/src/libs/libsrtp/fuzzer/corpus/a2a6b6cbc125c6b928182cc5ea8aae7a20425e0d new file mode 100644 index 0000000000000000000000000000000000000000..27b7fbb3f7301ba24b85a2ebb9dbad60c05efee2 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H()j52S(M|NsBK3=GxP3=E763Sg1yWJZSSVj!+o7XS+|Sk4gw dGlbh280K(XWe{Lsf=Dnha6uSw5vURY1^{D05WN5Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a2bdbdd72978f996e9d09afe3268c68b53b78783 b/src/libs/libsrtp/fuzzer/corpus/a2bdbdd72978f996e9d09afe3268c68b53b78783 new file mode 100644 index 0000000000000000000000000000000000000000..3d7e3553cc137443f6718e510ead3f1d1d4da62b GIT binary patch literal 281 zcmazQW&i@l4U9#pnH=>XHUq=||Nng%7^|xp8JPco1@=Jzm<=X45KL6o|9>EU!yKVv zhH!|?9ERgS#vF!rVFnH$goB3SIYJ0E?I0xxHUEL?LGA#nJ_jaom?MB{4oP+a%|)>Y L;x@2FbEX3T<jXI! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a2ec72c9750f0709b192400745be046d3da77685 b/src/libs/libsrtp/fuzzer/corpus/a2ec72c9750f0709b192400745be046d3da77685 new file mode 100644 index 0000000000000000000000000000000000000000..3e48711ecba6a9aab048626bef039872ba23c094 GIT binary patch literal 69 kcmXSBWMB|rU|^_bXsAX4KoJlSg-}ouQ@*;|6eySp00trtrvLx| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a30075c591196ff0ac86376af28a7be74de77ad1 b/src/libs/libsrtp/fuzzer/corpus/a30075c591196ff0ac86376af28a7be74de77ad1 new file mode 100644 index 0000000000000000000000000000000000000000..4b2b4382218fa7c7f889d9858028fef8afec8b3f GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H#+HQXugE|9@WwhU#ht21bYgLv=AD1Xrs=MXaGT11AH6EJ$5- V@f;zD*c^s-VGf{(AA}2&006z_4`u)W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a31e589e6dea656fd22d7d01e46d98e5ef8b28d8 b/src/libs/libsrtp/fuzzer/corpus/a31e589e6dea656fd22d7d01e46d98e5ef8b28d8 new file mode 100644 index 0000000000000000000000000000000000000000..b31c110fcdbe26fe8a088a964050997298bc402c GIT binary patch literal 142 zcma!NU`RN?5Od~nQ6@)fJp&m0|Np<5!Iz<$VH*S#FhRtjTo}c`z{nsBlBq6c1S_bn xR);8Lu!hnMoD2-HKxL)X#dCxhlJkoS^cxr$<}fe-t*~R@0Fu58PzjKZY5>&6D&znF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a34e28b15e51ee0fbc40f0386395d98fa2ad339c b/src/libs/libsrtp/fuzzer/corpus/a34e28b15e51ee0fbc40f0386395d98fa2ad339c new file mode 100644 index 0000000000000000000000000000000000000000..442c53c2aef908c8e04c3a8898b0d94b68186be2 GIT binary patch literal 192 zcmZ9FF$%&^5JaDqYbRLSTK=1OhEIxL1cFLL3%?L6a|zEWcI&JX1h<$ShT%<4JFXe% zTPquVox5+LR@wO{Xu4C$hXuA~1~)mvEqOf{)sU|AEXwz%WC%Bb#4fE3(Qz)AI}M0= ZEcyIJ_xm3+30f1TCHNbTXu2^9_6DUzCtLsk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a3936fbf2a00ca8477e83d2a0cbb6c4e162f629e b/src/libs/libsrtp/fuzzer/corpus/a3936fbf2a00ca8477e83d2a0cbb6c4e162f629e new file mode 100644 index 0000000000000000000000000000000000000000..786dbc1973487fabbdc1b3c5af15bd8621a20555 GIT binary patch literal 224 zcmZvVEe--P6okL>6Toe<0!20`1PK@544k0}$qEbtaMkNjdj$^0-U2zi*8++W&CKik z#NC-&gm7t9pU9AOfRya|BMqa9Df}}%zwXN7>jt{J#_1ZCrH;ow6aRG-Wn=*>f)Ssw nQHLpol=7VM2^;3-nGGhSx|qrfeHRDM>&3BEsi?L6^mssTf2Kr5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a39828749775b26453a2d58c5a786922403dafc4 b/src/libs/libsrtp/fuzzer/corpus/a39828749775b26453a2d58c5a786922403dafc4 new file mode 100644 index 0000000000000000000000000000000000000000..05e43eb7965582f4ff23ca8df1d2cb75420962e6 GIT binary patch literal 75 zcmbREe?QmDm(>hFzz!l982&?m2m>>albl~vp$C*@1WPe6R2MTsFauZ%6Pq@Wh9Urf CffE-1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a3ca6f82d249c0ab8f79ab4b58edc0b9d055d142 b/src/libs/libsrtp/fuzzer/corpus/a3ca6f82d249c0ab8f79ab4b58edc0b9d055d142 new file mode 100644 index 0000000000000000000000000000000000000000..823fc1d8b0299719f600f45eaffa41c324dfaf34 GIT binary patch literal 2969 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgba{v8zkOGS{D1Bon28u9(ctE1M zn318{VJ4G0i2q+W6GSmE+CcO(RD)Ck4FVzv8!Qdg1=0yJ8w{*r3{G|iS+Kz-bA-TR z!tD$U1{w^EvOpdaOcj`RtaE_^MkEKSfgGp|b)c6EP$eS+SXpUxG1$oO|KC(FFw9{P zVA%KVI|GL?&=<lCGAJf1fSe0-AI#g;9B``}7#hIJIgvB~l?y_-;7~$Q4m1kr0-zEg zki-b(c&$93cu71)*fab90nDJ7!+|X*z@~!;f?>kOI3Qs{yL4hanoekuP8di|C%}9Z z08D`j#OECci1N|A11x^<lqdM}4r<9UTAsk`8Zzsh(ei{Q^$tDC6JT)yDt?G7Pw-XJ z_zj_?Rf8*a5$EPX(0&+3@rcwg!<QJ)+Qo<x7MR+=&14drYIvGxkfv{i;hff<|1<wH F005W=*MtB7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a40db43a6195cce6df5ff0077c7fca1fbe016fb3 b/src/libs/libsrtp/fuzzer/corpus/a40db43a6195cce6df5ff0077c7fca1fbe016fb3 new file mode 100644 index 0000000000000000000000000000000000000000..64ceaa60512239cd4b04de5ded8f9cebdc2125db GIT binary patch literal 72 zcmYe!kFP3;XJB9`%H&9`2hu?B|Nnnq2#Z0K!JrQWxQgQqG7YM$<Kr{`=oY8O$ESAJ OGp>dxI>yLwtN{S<$`wQa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a41c29b344f7a32203f4c6fbb3341d66a76e0f8d b/src/libs/libsrtp/fuzzer/corpus/a41c29b344f7a32203f4c6fbb3341d66a76e0f8d new file mode 100644 index 0000000000000000000000000000000000000000..fbe2a73e22b729f3fc08356c5a9237c97c017a89 GIT binary patch literal 69 wcmbRE-=6DbYBd80*eio65K*lFW)?FtR9Ei-0U!g+0Ski^FfdqyNgz=T00(;w!vFvP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a4431c62fb8ef0665686a78cd818282946ba9aaa b/src/libs/libsrtp/fuzzer/corpus/a4431c62fb8ef0665686a78cd818282946ba9aaa new file mode 100644 index 0000000000000000000000000000000000000000..a85cf566bf135a1e633bcc8dee71751aa6d5f0e7 GIT binary patch literal 102 zcma#o%VUs?XJB9`%H+tZ2hu?B|Nnnq28HTs1_nk31+a)O0|SuD3MACQd<KyCOAr$# ZBE<0T|Nj~P_y7N&pI1@@RRpCNs{vAv73}~3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a448a9d7e6765afd6d1028dec3cfca58e17b581b b/src/libs/libsrtp/fuzzer/corpus/a448a9d7e6765afd6d1028dec3cfca58e17b581b new file mode 100644 index 0000000000000000000000000000000000000000..fdf755fec55ade537c89988c78186fad77d2e0d3 GIT binary patch literal 139 zcmb<sfB<nYWx&87{u{*NWMPnHVARvEE}p~7V8p=CE({dp0IOk`!%(@IL1PX>dqGiZ zT53^zaUK&;qMCt$5lH?2^PhpC2FR)g3UGo%fY=@+U(CROX*^H@D8smx;XhL~0KGyN A9{>OV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a46ffe0e19429417ab070f2c3ce34a6fac2c582c b/src/libs/libsrtp/fuzzer/corpus/a46ffe0e19429417ab070f2c3ce34a6fac2c582c new file mode 100644 index 0000000000000000000000000000000000000000..a1fe7d29f26ff97dde10c5204e7aae8d5f95af9b GIT binary patch literal 69 zcmXSxWe9x9@Uj{N7#J8Btr@M0s~KQi1}27TFQ708{I9NloB*V&nFOjU<Et~{85lw8 IDvKG50h$dG+yDRo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a472e7c34f650bfa9b6642c14d493a32c10d5492 b/src/libs/libsrtp/fuzzer/corpus/a472e7c34f650bfa9b6642c14d493a32c10d5492 new file mode 100644 index 0000000000000000000000000000000000000000..7004f51443e72d0cb601d4963011b5288ebb4ebb GIT binary patch literal 108 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcN3fJLf{)flRa1%YDf5G4!-3=A*9 uOil&{S)e+g^c-FWV+Mwt)V%oQ1Es~O@#Tr7X_@i)IjKbjIY1--w*mmE^c%bY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a4b78ac6b2d9cbb4aac5db15a808236c47c81648 b/src/libs/libsrtp/fuzzer/corpus/a4b78ac6b2d9cbb4aac5db15a808236c47c81648 new file mode 100644 index 0000000000000000000000000000000000000000..3d4602cd5850f087c21ca4959342f31d65768315 GIT binary patch literal 1210 zcmd5+%Sv295IwCD?qqdwvN4H7)F>#rNdkdEoPgN~>K8~O;erE_$UH<+5ND%?>|6@7 zk^DoJ$w%Y^T(}y@dUR!bs`_5z7*}Rv&CuObU8f$Ws>eIvtp`xACD|T#O89YGx`l$b z-vEbaKniIPOc9y3olC_IDXJw@kB>!G0u^eN`JIieR_3=$NJimi5KQn{0UaF1wahJ1 z%|TDs=pGCsQaTF19(TK<`dp%m@C1WYeE3w~o#$<ivE(#C;fHX&7&Dx-ZJR?0I2=MJ zf#!%-Bc@2FtLyKXPbVgLv%HESxe&@C(2_=H*dmq{fHVnj__K`Xx#1AeP0!f%ER<`D zrls5Un9*5S$y0lQfmAQ|n~w$yR;PgP7H~3;MmJ%hA3$HEUao5!VXVGRp8A=ORE_&S zZP36MDq02PHLFmuDiXL+o(D|x&+_ieQZ5dcq53o$O!d%^31b3od5KB~Gm8uX=i$$; zF@&GJb0n`A^)E}&$C#GJh812Vxz3@DwwaTNqP-ELQ%Jd!Hl&5E%<2G<D3jYwybrA* z(#qD}d^Qi2R-F**vmJPjU+uho?R`ZHQ*Z)+rsv?y*K1!-_BbozcjB<BEg$krQpw@d i`Mu0}{f{lIq0%<|oTpb6*GKGTw)LBDxcC>+!0rl6CG{Wx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a4de7cbc3d38d08ba145a1ea7cab672a5e7839c0 b/src/libs/libsrtp/fuzzer/corpus/a4de7cbc3d38d08ba145a1ea7cab672a5e7839c0 new file mode 100644 index 0000000000000000000000000000000000000000..0deeaf2ec44a65210b98215267c7571c4716aca9 GIT binary patch literal 102 zcma#o%VUs?XUODWC}K!eWdMW!|Nr|kFjQAFFfcMGfJK^m)EKIZ86naPX+YW%h+l&E ooD2-I48?bZ7>pSha#Hi+lZ*0m7#NrsK&CP<6lHRx)-x~w0K&}@HUIzs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a4eb99045b43365c0c07d08573ce80293e662f5b b/src/libs/libsrtp/fuzzer/corpus/a4eb99045b43365c0c07d08573ce80293e662f5b new file mode 100644 index 0000000000000000000000000000000000000000..d4d6ff7567367c2b99a86955c23e5d062da8c82f GIT binary patch literal 66 tcmZ2ksZ-4W1B?(xHKU|<9hA-R@;}4h?=3CWFi;GVs4fO#pgy2rB>=oA5Q6{! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a4f64bc10c0d08f3be022aabad141a68414ff5e3 b/src/libs/libsrtp/fuzzer/corpus/a4f64bc10c0d08f3be022aabad141a68414ff5e3 new file mode 100644 index 0000000000000000000000000000000000000000..fa354698828f756f9ab0384229bc1e82be09a222 GIT binary patch literal 101 zcmbRE-=6E`%W4J?_^-^+0HR=kK>;XEK$?+(5u}v?NL3dDF~lSWAZ5(}B0;Dc01qP} AuK)l5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a555234f5da3adddce2137190718450dba377e56 b/src/libs/libsrtp/fuzzer/corpus/a555234f5da3adddce2137190718450dba377e56 new file mode 100644 index 0000000000000000000000000000000000000000..729113e1824fcab098dcb50b4fb48c9a0e2e6a23 GIT binary patch literal 69 ycmaz~&d)1h00BlY$pGX4S&G#V9wUPzLlP7)9Q^;kv^c)Ho}-<C5iSo@_ZI-9Jq>{X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a568ae849db9ba3c316c7c3ddb48c5f88b6b1c25 b/src/libs/libsrtp/fuzzer/corpus/a568ae849db9ba3c316c7c3ddb48c5f88b6b1c25 new file mode 100644 index 0000000000000000000000000000000000000000..d3bbe3357c2faa3ee9ef3ad597b64162c06312f7 GIT binary patch literal 80 zcmWIhZ@^FzU&N5fz`)^J&j1Gh|Nr-euoy%c4Eun<k%57+5GcgNz);N$ma47>3PBZB Lw?mlm@u}4St%wej literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a57bdbc6ea4669a17704ca5de70aa2b1d1b09bd4 b/src/libs/libsrtp/fuzzer/corpus/a57bdbc6ea4669a17704ca5de70aa2b1d1b09bd4 new file mode 100644 index 0000000000000000000000000000000000000000..6aadee8aacc7a390f19b358373a5967722af6e8b GIT binary patch literal 144 zcma#o%VVgCXJ}w3%H&8@V*rEyYz%%34As>@4m(&NF{d;&zJQZ~LzaP&fuRA&VgRuO z7=FxQXa}kQlEOfW1EkpS8#4n#J&47?@c;jRUm#V_!H~+3Sp-z`A0)~(ckbLdLUS1y W6pQ~GF#i7wv??VPWDLU+1`Ytt2p;eN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a58164328a9db030f36a8fc7f11dccddfa1ca050 b/src/libs/libsrtp/fuzzer/corpus/a58164328a9db030f36a8fc7f11dccddfa1ca050 new file mode 100644 index 0000000000000000000000000000000000000000..23587684aa948c5679ac7c31f422fc0b5eabb428 GIT binary patch literal 70 zcmaz~&d)1hU|?i$WMC*QKDhsXe04oXI|E}i!}tFnVKAs>mAq01<cNZJ)y0eq)eLhO Q7?^<U>gvFk3@`r!0GOf@v;Y7A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a5a1a9ec9db8510374b7d62883154c95e13afdc1 b/src/libs/libsrtp/fuzzer/corpus/a5a1a9ec9db8510374b7d62883154c95e13afdc1 new file mode 100644 index 0000000000000000000000000000000000000000..0437e0600505c34d45bf681ed8f3d3f4ae6e7f6b GIT binary patch literal 136 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHZF&?luMnMh0n+`f4?xAt1V19ZWMY qSVL(BP6h^9pt92H;yFTKF=2*whB*uZ4Ew%)XW%eqV32{RtOfwwrzG0| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a5b715881b7e41246bb34205acf8a99cf6ad5b15 b/src/libs/libsrtp/fuzzer/corpus/a5b715881b7e41246bb34205acf8a99cf6ad5b15 new file mode 100644 index 0000000000000000000000000000000000000000..75e8554258765677c2f88f7e45464f79756dab98 GIT binary patch literal 84 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYj01VHq^|NsBP_{{ALjMe|y8LC^VfudmW P{{MeR$9=kt3>ujL#F88( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a5db49eeea0edb757b08e378ded563004d33fb71 b/src/libs/libsrtp/fuzzer/corpus/a5db49eeea0edb757b08e378ded563004d33fb71 new file mode 100644 index 0000000000000000000000000000000000000000..d3c4db5e31a6d8e5fb98b56440d9983e5bbcb8d2 GIT binary patch literal 88 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYj01pI<a%yROR6LV5cK|**`{`>#`KLdkC FCIEMg6Z`-G literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a5e72b3b078d1d8f9b12007aaaeb57bffcff2684 b/src/libs/libsrtp/fuzzer/corpus/a5e72b3b078d1d8f9b12007aaaeb57bffcff2684 new file mode 100644 index 0000000000000000000000000000000000000000..1824f43611d50c09ab1629dc39899ee9f2c4d698 GIT binary patch literal 352 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT+Ik!11ZH~MuuvKnLuz8M8E)04^UD8q^ugK z;@|%|ARlCe2t+4?8qgR924ltsutNWMh5{z23<FaEh*iX}Z5v2V7{mdZ<qe|u7ndZK zD3mZT6fhKJa-`OS#26U<|Nrj`w5OWkF;F3p^FLlM?|(grK_2)`NSh-_!AfiZw@!wV Qc!*Q~gLD@GwP$Jr0DPdrEC2ui literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a60b2c853a9e3b3be9f31a3b19d94e6dcb957e83 b/src/libs/libsrtp/fuzzer/corpus/a60b2c853a9e3b3be9f31a3b19d94e6dcb957e83 new file mode 100644 index 0000000000000000000000000000000000000000..b46ea32d98ddbd2b03938e73843e0f2979c53686 GIT binary patch literal 639 zcmc(cze)o^5XOINBAnWYu@Z!{FhTGymLk|%#Mbf*5-=DfdZ(aU<O;#o2e1}wEz;&O ze1>}k71wX~BF4Oc13Nc6^UZhP&agshSDmQcFGJ^CliXSc&jWA0sS#%Mv8nOVFwI(7 zoGJ3X5ZX{1h8RA<rga^oT*EiWcA?+|_QMS-AM_o`<^@@z)R>3>IGlUAUALGWm`21B z;ufhu|6V7$tM1i}(r_t7cFj}NtxY<y&q<GSwTe4)blW`|c0<~HjzB8J*zc5XisDDS ziuQC;JUQEcAOSExdR=%IM6Z%kz>_EfqpnAaIZtj{-RpMJn}KDv4DWgRw7~JIFADxp z`kH1FF?@8hMd6?J<qnoSKvPX)IWsw}e0))F0ZCZfuk#zJl@-4fDf<8IX*N{(2JG*U Ai~s-t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a62085e1420f6bc8587fa150147d892568930aeb b/src/libs/libsrtp/fuzzer/corpus/a62085e1420f6bc8587fa150147d892568930aeb new file mode 100644 index 0000000000000000000000000000000000000000..fcf98fb29c7bb3d72b49759c8845f6d5d2fc5492 GIT binary patch literal 136 zcmdl#@jutgm(>gm4FCQoNC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zr^ z-+u>9hB~kwkPsV)fB-cHpm_`yj130aKmnub>gwXu`0C96|NpBOSA#UfSN~%G0E?R? A;Q#;t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a63b134d68fcd412a837d7a684da1da24d3faebe b/src/libs/libsrtp/fuzzer/corpus/a63b134d68fcd412a837d7a684da1da24d3faebe new file mode 100644 index 0000000000000000000000000000000000000000..08c3b5289e70feb8410b4ba2347444bbd8124d52 GIT binary patch literal 39 ncmdPZjgQa#V_Td$DLy{6+Xo2h8CNnufoN)~CPQg)YCHn~`?Lz+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a648ffd089006c76755202162341974dfa085f0b b/src/libs/libsrtp/fuzzer/corpus/a648ffd089006c76755202162341974dfa085f0b new file mode 100644 index 0000000000000000000000000000000000000000..3631151173f7ea94b8b222487f466c31179af77e GIT binary patch literal 69 pcmXTEa6!w2fnkmi0|NsigD^XgY6o&TfHV*=K`1<Adv$fCApjJ}29E#$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a64f2befea21affc7215b7710c8f698eff46f6f1 b/src/libs/libsrtp/fuzzer/corpus/a64f2befea21affc7215b7710c8f698eff46f6f1 new file mode 100644 index 0000000000000000000000000000000000000000..6c8db22ad4be86f74ece45d9c9b47eda929eb80b GIT binary patch literal 36 dcmXS}uC5kfU|;}JU{DNXt9|>=FA5U?(g5nK4afih literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a66e6843fa98cffdc1a61d3827b0a5e7d467e399 b/src/libs/libsrtp/fuzzer/corpus/a66e6843fa98cffdc1a61d3827b0a5e7d467e399 new file mode 100644 index 0000000000000000000000000000000000000000..75efeb334cddb375bf3f49a5c810e2b001f71fc7 GIT binary patch literal 1560 zcmeHHv2MaJ5PcUSk!%Pi1{8!q9V#OB@(YNWDH8)jI{*_NI#n!u0vjK}-ylANsqQ%r zF|~mr1<{3zV&~46)4RKOPGT(P34rM&7=QB4BBdMvLI9)<5Hr#*+myo)Z~CN*FvQYF ztGFcb2NV*Tj%974!y6=>98!e3K6KU>$5O=LK%f%{UWG&39^Kp{jF5W3WMUPl2r~Cy zEBL8udifW85N*@8`{csE7^b~uI6eY?2<1I1hm1Gkl}RIxO;LpT=6=cmXr#o-t3~h- zfh+p8k|pt;l1``aU!2%6*mGic943dXWVXkX6XiWu@-CcE9oh8#MwR!bS6c#1zO~YN s$TUSozPro-JetZQm&&)oX3*G41O4h(?3`YomE&dgyM*pkt2tKk16+dNVgLXD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a671a8bce0d19da27a479f63d662d109321d7c1c b/src/libs/libsrtp/fuzzer/corpus/a671a8bce0d19da27a479f63d662d109321d7c1c new file mode 100644 index 0000000000000000000000000000000000000000..47a3c5ad65a30e5075ad6299ff1bd856b35142b7 GIT binary patch literal 312 zcmZ`#u?oUK6iY$Mb=A4En?K;tFDQP(;c!D25iJhwP$#9kWAQUx&*UjB6wQ!(_bw#i z{N{k#12|PKbUcX|V+ph^knk2fE_>UH5~SB-2ITgJ0e3FRD;`dQ+lv&J8ijgC>O<wa zucnc`e6bJ-v*2P%emp-4@tEv?R7Ocxt4y7`jA~8{`rlJx!v0{^6F6H@`mRm1H6{&s E19C<)`~Uy| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a68cfa9b49941181d0536cbe57c0ff875682be5f b/src/libs/libsrtp/fuzzer/corpus/a68cfa9b49941181d0536cbe57c0ff875682be5f new file mode 100644 index 0000000000000000000000000000000000000000..8c7bf10b30e73200ee9757976726161c602f35f3 GIT binary patch literal 295 zcmdn5r_c5BWi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI zh>c+w1KhBQ#2S_iF}5Ur|HS`L*ZqUJP7UaqVxUDJ$AO*m9|%BfQ~(kM0}l}C4q>B^ X2p=&pC;%-4@u6Z2ULeEZo&z!fIR;Mu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a68f939e75f3107545f434142bea3f77de5af2aa b/src/libs/libsrtp/fuzzer/corpus/a68f939e75f3107545f434142bea3f77de5af2aa new file mode 100644 index 0000000000000000000000000000000000000000..f69b20cd060ee735d651e70ae14149bf066f7734 GIT binary patch literal 108 zcma#o%VQ{sXJBB+1>$-j27>?p|NAm1R97=FFamkm@nwlQrKzd$1)K~FvOuAKKzR@V qDV@X64k3jZ^cXlmA`De?7%De2XaHpjic)9I>Rr$?@$XNNL^S|enjohD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6af47c9d1aa96128faf909754769812a92ea2cd b/src/libs/libsrtp/fuzzer/corpus/a6af47c9d1aa96128faf909754769812a92ea2cd new file mode 100644 index 0000000000000000000000000000000000000000..3fee5af8bbebf54ec23e65e47d12a6b9d1f67cce GIT binary patch literal 1529 zcmcIkJ5Iwu5Pj=dBIzPhrHB$)d<ql<5;VXS5Jzy8A_WwI&Jxg|G#nuvH=yA#0mKpL zKmswmU4M4%*a2ZNmXqC`@%YWWHx3oh4FOEX&CwPAX(DnAL=ixzvFKdE+&rVn2@cHy zL$q3$`UsZVe5p5ahTCVjAQCkhNoO3Vw@B7ANPTo;XYTilp&PlAx*G?=b=(XGg4bqx zC&ILAsM3g5A0`5}l0pmWqRT&DNbYVemnk@vfGfg>QV*sMKaFtUSEgB;5sHr{FNKvC zZr&5!L|YV1w8;}~S}>X<X#zbXtgKrK9{ONMZ*HX#ou;D0-I3p0<zoY{GX?mfncnRq z+3D9(r?%LCg-ukoVDDJipK>qq^!8|x|7leim<D^}jBb8lp0#s9u&@+3nlLN{!94hx zCAPnUrCnQYIZN&O;=25exQH<Oir4`?;PI=764}cHRFB_*TW~rJ)T?|{lUva{M=IsL WW7fqlq~?+{R6dV-NVUa-s#o7Vm-}G= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6b3e6680654fdbc7f8aa50dc1e200bbdacd1b86 b/src/libs/libsrtp/fuzzer/corpus/a6b3e6680654fdbc7f8aa50dc1e200bbdacd1b86 new file mode 100644 index 0000000000000000000000000000000000000000..a69cd7a789fe13d3dbcd5d84145da23ee191607b GIT binary patch literal 218 zcma#o%VQ{sXJB9`%H&9`2hu?BpBF+iFfalcsqtlrFg{3xt)YOEfk755$1sPX9ViDR zg@F_YNLkxAAn{)a!~_AL+4c;bshJ%04F7!@7^<tGhL$lf#KVn+7|KMfp`80c#)4eI XAk0<$A4oX>F%W?40ntEb*E0YBNP8ae literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6b7dcfe93de48aa50ab692f9dde48659cf8bb51 b/src/libs/libsrtp/fuzzer/corpus/a6b7dcfe93de48aa50ab692f9dde48659cf8bb51 new file mode 100644 index 0000000000000000000000000000000000000000..9573021da6e15e2f9d9aebf1aa67491ee6b9f8ed GIT binary patch literal 1327 zcmZQ%V5lx;WT>uYU|?jBVgQ4O{~3ybjA}+O4=4je@p^d-B}JJW1)LZFs1|GlLo`A; zPy|f}1BO0|1(+aie(44TFJHbS(>w;apKaYC1_HeS4;PTv$TXM<7%+H)1j$@&<Um9c zCxdwnp$8E_PA`EWgpi<!#l!**CUCIB3_^B3FvMU8Ee$|atHU&rOY<RXMEDU;A|M>c zM8ws9Y5<tiQ6d}~Twg!{6nI#J4W^THnp!ar32Fk_ZU28eu9q)?K4SRx-vL~zU^p0T m4kzh37CEZnh9V*bE`-9sY7N6PIcPBlR10(}LB}v~G5`QA#LK$? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6bb1a9b10959fe53936a1fac7eb0bde4be444aa b/src/libs/libsrtp/fuzzer/corpus/a6bb1a9b10959fe53936a1fac7eb0bde4be444aa new file mode 100644 index 0000000000000000000000000000000000000000..a60a6db15290ea7a3a1471aaf76b738b8ce94768 GIT binary patch literal 127 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq2FB`Y2oFdm=9H$!7jQCg$TBc8Ff;&J3}6<+ zk2wtO3{?z3QW&U=1Ec|{nUSHMfgv}wC_ObkIX|zYC_g7YEt3Ig9tTi&0!R_V{)zuz JzMS}fKL7=CApZaW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6e1ce7cc857d744fd47a08b8a659a0ac0a4d466 b/src/libs/libsrtp/fuzzer/corpus/a6e1ce7cc857d744fd47a08b8a659a0ac0a4d466 new file mode 100644 index 0000000000000000000000000000000000000000..1b346c7ff3335bc9a4f9f99660e16f45e04202eb GIT binary patch literal 112 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vvW@uojW(2Z<xVo5;p&F<H#DtMR1{^`eA>5|_ WK+pm;11JOn3P9t4YJghf3yJ`Xuok5N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6e33f3db52b71566c50f6eae9ccabea13071b05 b/src/libs/libsrtp/fuzzer/corpus/a6e33f3db52b71566c50f6eae9ccabea13071b05 new file mode 100644 index 0000000000000000000000000000000000000000..b5d9de7f9d25ff0ff4b83fcdaeae6c5e23e7815c GIT binary patch literal 346 zcmZ{gv1$TQ5Jk^gttmo?l|{fR=?oz@5|I3W-|z(4LXh3CYd1yG`4j%2q)!v%d1n?B z0=dQGy_s`)cP341b_t5M%A*aTobwVaVXRb0LdHU9H)Zu11g9P`8JR@Mx<{-lFnj6| zW^jz_5FW&-eYocpwpE?hO}%TIcNhry&2USX1YPZOHNM^dzkS==#oRb3*#Q)PK^a5n zzjf1oJoink+*2sCOL<(!?4e%#^%jLVln{OfUNOE3b;q$1pZ9WsJBMTF?(d57@(kG1 BL`47q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a6fca0cc59ddb4e67de9a60338c3c045f1bfaafe b/src/libs/libsrtp/fuzzer/corpus/a6fca0cc59ddb4e67de9a60338c3c045f1bfaafe new file mode 100644 index 0000000000000000000000000000000000000000..fd99bc0f921ad92e22c2107c7f4c76d670315a4e GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZt2oFdm=9H$!7jQCg$TBc8Ff;&J3?P;x z!;d)(?Lc`TDa?@1zyZ?G_6<nX195I@QF>~8a(-S(QGQN*T4qkFFar|<M-|9;M~Lx2 Q!$1atfY|@PKrsde0M_gv4gdfE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a72ca9cb40b29c1264df92aeae418e3172042018 b/src/libs/libsrtp/fuzzer/corpus/a72ca9cb40b29c1264df92aeae418e3172042018 new file mode 100644 index 0000000000000000000000000000000000000000..853c9eb1e94c16396b10784720661399340a6cdf GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FlS(R s31)IKFvtSc0j1{%F&Hy2<fP`sC+Fvt6y-ZGFfaj?NU;KmKmY#&07oblU;qFB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a755472a71ea22d4f9f3b0645c4da32283838008 b/src/libs/libsrtp/fuzzer/corpus/a755472a71ea22d4f9f3b0645c4da32283838008 new file mode 100644 index 0000000000000000000000000000000000000000..67d0a6648a0aa22008244ea6bdd3b9f7a9aa771f GIT binary patch literal 80 zcmdl#@jutgm(>g);2;I27!(*7ih&}WARZ$FLv=ADLp6}E4rGG?SO6*r6aY#g5CCP| B4PgKP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a7757cd87759689bd919a5da5cbafc6d7ae55753 b/src/libs/libsrtp/fuzzer/corpus/a7757cd87759689bd919a5da5cbafc6d7ae55753 new file mode 100644 index 0000000000000000000000000000000000000000..228618d958ccf3ade6e8f98e762314375dbdac3b GIT binary patch literal 226 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8U|ehs<_IuC1Q{F{7#XUo)uFtjf1nIb2G?o^ zS)d%y44^g!RuDs;fk^-)-`ew^xw;r;0t3{@VqyW%1t8tk)j%T|7y^_*MphTUe92JF hz{SAeAO+$xFeorEKs~`wl*y4=4-$J00oBFDi~yerHEjR@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a7b8b53d1b04ddd9c057aca5207626def04f20f3 b/src/libs/libsrtp/fuzzer/corpus/a7b8b53d1b04ddd9c057aca5207626def04f20f3 new file mode 100644 index 0000000000000000000000000000000000000000..dcf200accf03b219d711ea3a213737369d03c88e GIT binary patch literal 107 zcma#o%VVgCXJB9`%H&9`2hu?B|Nnnq28QZtMg|5y1_mI>kR4x^m{Xb>U%+X_AbVez o;a5ZP93h5quxf@m4DCP$kQ8RHW#B-FY0QBb70bYo^A~6y0Bpk=QUCw| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a7bfd49bdef2d481abe0b672994dbfb5091e5043 b/src/libs/libsrtp/fuzzer/corpus/a7bfd49bdef2d481abe0b672994dbfb5091e5043 new file mode 100644 index 0000000000000000000000000000000000000000..8bf61bd8bf87bf02d3357e14871bc89dc36ea8e5 GIT binary patch literal 104 zcma#o%VQ{sXJB9`%H&9`2hu>$#t5Mq7(k5F__D;D($x3@P6h^9kVr%E93h5qh>|%B X?LY>Q6h<-tracF&N1MTcfuR}zgA5Qj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a7c18a6bfc5b1d6d5c2912e0925f2a604335d558 b/src/libs/libsrtp/fuzzer/corpus/a7c18a6bfc5b1d6d5c2912e0925f2a604335d558 new file mode 100644 index 0000000000000000000000000000000000000000..d24ca7fb566af139bbfc3900ea50c2cef1549bf0 GIT binary patch literal 86 zcmdl#@jutgm(>g);2;I27!(*7ih&}Wj6g0B+XJcUVn&8)pcs&=3{nK<7ypL>un15P IjOu|T062yeq5uE@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a7cf4e1481bbc25d69cde1223d0ca1f564f804a1 b/src/libs/libsrtp/fuzzer/corpus/a7cf4e1481bbc25d69cde1223d0ca1f564f804a1 new file mode 100644 index 0000000000000000000000000000000000000000..b15a529153aed4d691d2ae1afa22d794a03fca43 GIT binary patch literal 116 zcma#oD`O~$XJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&zJQZ~K^7?TtD$&K k5JNavCBqzsb|3>tN-(@);D9g-ic-^H`kB!T0O_g*09@f3j{pDw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a7e583fff5800704446327afa38bd746689bfbe9 b/src/libs/libsrtp/fuzzer/corpus/a7e583fff5800704446327afa38bd746689bfbe9 new file mode 100644 index 0000000000000000000000000000000000000000..9c5f971bb13537725fbfd6c12b4cd8baa447a5fc GIT binary patch literal 1149 zcmc&!y-EW?5dJPiyjY0=!9rXcg+N3U3$ajJ@#hUZQ=AZxoFq957c^ZEY|>ceUBuGT zC$P>Vh~PLgyLY)5tsS_Xz1i8hZ@!tiXrtBZMgZE)FurHaLPRHkwLstuu$@33V6!Vu z1?RiNJv64pU#tMj62*3g3u+qr1N5uB3*B4h1(dSmDP1@j(DU4A#PFP)i85}_>xJ#T zJ^@WhD#I<gz@m@9A}Y-grM38+QqoKO^)22woQ(BYu--8VBF31OG2O%@?R~+!s8@L5 zNcvIdMpdt!;wUe`L);ASeWJI*Dw`o`Pl#en4%qfy;N7T??W|!3^}4<QKas*p#9d&d zrOHXJ_JN_)u)x5Zh+P+(r#mh9tDTSNlj><+`Z&62T%~bzT|uby^mylp;tw#Ly81#2 z6i3S{cMFRY0Bz=g#vC{&eB_<Qz5-SnLEG?G&QO+6B7gL#04;-Di?Q2uC`Z1=7%vC9 z&4XtLlWAvGr~e&*!no$b2CjR<ABa}QbG!FNG!XyFtQKvy|LCVs8zh`hJ9(<@<dT+* z2AAcOAJRe6IVud&kqlB`DUiyd=KmQp>@8!n4P3=7&!~0n#-R$s3m!k7KAs+nZ)6bE A?*IS* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a80466a2b191afca2d8a60dcbb61fd7b8b390b37 b/src/libs/libsrtp/fuzzer/corpus/a80466a2b191afca2d8a60dcbb61fd7b8b390b37 new file mode 100644 index 0000000000000000000000000000000000000000..9ba02b1ff26c27383d5b601a79629c88bc84b9c0 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFE!pK5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AiPBe*Fh=!De@+W^&X+)l`9u2bs&j0wO>Fi^V`SZ~#$+ WYB9(H2tcyH4=Tigumh%wfdc@12{GaT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a807bf50577e8c5083ded8e5c4d225dc05f47f6b b/src/libs/libsrtp/fuzzer/corpus/a807bf50577e8c5083ded8e5c4d225dc05f47f6b new file mode 100644 index 0000000000000000000000000000000000000000..2dd9347e4facf58abf81715271e9b5bf9b5faf6c GIT binary patch literal 102 zcma#o%VQ{EU=Yh>C}N0bfPnx1|NAm9R97=FFfu5Bg{q4g8H#}d)r{%_5H+R{ih+R> h#0Z!p1m+93Gce3i0WvvL<I56rO5;=G3%D2<^Z<v55fT6Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a80b911f1542d09573307e9c8577860fa9816285 b/src/libs/libsrtp/fuzzer/corpus/a80b911f1542d09573307e9c8577860fa9816285 new file mode 100644 index 0000000000000000000000000000000000000000..d018455c5b6f2444780c5bea3f60f310f8bf5d41 GIT binary patch literal 113 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(X5DxjF-b4M@n8 qL01<n#mT^61Z2np)iP8Au}|?FA%;4j5&yx`;`Sg)49o@+jMV_FViP9- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a82e293ea52cf8fc548427fa24dd7a55c81aed0c b/src/libs/libsrtp/fuzzer/corpus/a82e293ea52cf8fc548427fa24dd7a55c81aed0c new file mode 100644 index 0000000000000000000000000000000000000000..d3456be4d80f7383e6ab6b64fdcc5ccdc091d567 GIT binary patch literal 156 zcma!7&toWw`~QofD3c>Kp8*X1|NrmHz))Syz`)4Cz{21FWEV3+Fi;EvtYHjJ21XFm ufx!x<OcAV=!5%COQzr{jR$V+th=IYDfk7Cg2gt+#oC*vemBm1NgsTC7{}m+w literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8610f7c50e75bfc1ca37b56db39c3b2f9025004 b/src/libs/libsrtp/fuzzer/corpus/a8610f7c50e75bfc1ca37b56db39c3b2f9025004 new file mode 100644 index 0000000000000000000000000000000000000000..2fc0c980631cf74442e451ed48c45de7976bed17 GIT binary patch literal 134 zcmYe!kFP3;uP;jFU|?X#1Y!mTh5!E<{QrYky7BRue{_pg;~5x485rVIyXzTOPh@zx zlAWs>B<~;vQUuh%z))Syz`zJ%1BvQlMi~Djg9DTg6l3yb;9_84hDgp~U|@o1V_^L6 F4**{u8`uB< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8621e272ae40c121e7fa695ed6668f237cd7892 b/src/libs/libsrtp/fuzzer/corpus/a8621e272ae40c121e7fa695ed6668f237cd7892 new file mode 100644 index 0000000000000000000000000000000000000000..b4218eca19496fa5193b2b87f9d1fe793ac9cead GIT binary patch literal 99 wcmWgiV89JD7#IYAvJwo{47V8cbr={Jy{bXLr8*6yNe>?Y%8OPX11io00O9ElmjD0& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8762aad35c5b45be111309e719165ff48773a2a b/src/libs/libsrtp/fuzzer/corpus/a8762aad35c5b45be111309e719165ff48773a2a new file mode 100644 index 0000000000000000000000000000000000000000..816c939aab13012cc0483bd3d9a04b74b405767a GIT binary patch literal 108 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq1_n_ei;+PAB*0KztOmq_4As?nV7?NA0RzKJ rFq4ykK^CY^vATE;FM}xqLyl@GSX_gFp|m(PJ~uTtHx(q%Ud;di4v-Ty literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8790d98d8a107d592eebb5f99dee7b017fdff3b b/src/libs/libsrtp/fuzzer/corpus/a8790d98d8a107d592eebb5f99dee7b017fdff3b new file mode 100644 index 0000000000000000000000000000000000000000..506c5b9da6619920498a30fcbde3ccfac2ef2953 GIT binary patch literal 75 zcmYe!kFP3;uP;jFU|?X#1Y#ig|Np-~g94Z-%3#<B0$j!M2AKxc)$#F}e{_pe<H3?Z QBDK3do^dq;BarC<037!dqW}N^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8aed5fafaef98a6b997478b7ed68bbbf666fba4 b/src/libs/libsrtp/fuzzer/corpus/a8aed5fafaef98a6b997478b7ed68bbbf666fba4 new file mode 100644 index 0000000000000000000000000000000000000000..bc8c6672dff51725e94474bad1a4d89622dbbaf7 GIT binary patch literal 40 hcmXSp{|^M!)k|Bdt6#qS`toHp927G$fY@N75&!`t77zdc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8c1c193e7efd801f9e0a1d910da70ee9d584437 b/src/libs/libsrtp/fuzzer/corpus/a8c1c193e7efd801f9e0a1d910da70ee9d584437 new file mode 100644 index 0000000000000000000000000000000000000000..456abd85bda7693be3983556b5d9330fe0d3138d GIT binary patch literal 408 zcma!NWMHs}XJB9`%H&9`2hu?B|Nk#A%>);*|Njf94h*V`85zL18Y;kG4P^+oGclxm zXJC|NVCZE6iGc|a!?Df<3K$vw{dbT8i7_y!ePbvF8Ui+$(aQxW!pHztR$5&=M+mG$ zxSfGv4ub&0zHi?dI81;l^}b1iC4g?E0Dv7(%>i+s00Tn<(9CL}?FwMCCF2?XqlU-c z|M6OR3?&%B^xv0(;Rgz+jxPfVR)a$*F{d;YXd=*|zCZ%Vg8I^zVgJPcTrXdOLJ$}n VK$3-lL!Sfa0QLt!4kJ*pF97HLj?e%A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a8f6bfc3f182aa200bc53909b9e4764efad16802 b/src/libs/libsrtp/fuzzer/corpus/a8f6bfc3f182aa200bc53909b9e4764efad16802 new file mode 100644 index 0000000000000000000000000000000000000000..8e69a20ab71cae4960278288cb380dac5743ee00 GIT binary patch literal 126 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF*`#wgJKaoQ?<iP-I+6Q&O`tP zpbR6!f|($t)y0euLu$Y}K|(;F_W%EXNuYrY45o|?AoG}%v;El^3>b_8|5pP5FE}E- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9085a24fb1d7300da30a5300f954e3671a52d01 b/src/libs/libsrtp/fuzzer/corpus/a9085a24fb1d7300da30a5300f954e3671a52d01 new file mode 100644 index 0000000000000000000000000000000000000000..b22fc159a86c52844340a3580cc6b323690006e8 GIT binary patch literal 143 zcma!NWMHs}XJB9m%H&9`2hu?B|Nnnq28QZthHZF&?luM{Mh0n+`qrL*|Nnmn=}-r8 yfxsF}GBGf4GBC(8Ffx=@7tav_iwU<g<d&8smZZj~q!yH9Fmebp$bcolL^S{?eJZa2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a926de9ddb04cdfb33ff1683b88f623ec67b584d b/src/libs/libsrtp/fuzzer/corpus/a926de9ddb04cdfb33ff1683b88f623ec67b584d new file mode 100644 index 0000000000000000000000000000000000000000..2fcb53b6649cb751d7e416e6962509f2e03936aa GIT binary patch literal 375 zcmbVII|{-;5Pk836GafM1uIMO2wuQ5gcK>#NQhQhA?bo;z%nQF0Al6%W<zSxft{J1 z_h$C(L^{JY0+6SYY#C{9)gunhF`f8A>^(4FBLJ!_1T0(N)uJXwzrq+|wEdHmvTINq z#G4>Nnv<g_AgUeey*meR=S>x6{Y-7ar=>AC9zmCuJb3OV^OmGiqPC(GP#sb%&`i~o c{YL*!{?}heyAv)Z)izo((x}nzV$d(+1Axy{umAu6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9273ea543537deaf8dfd24f6b6f6201206b9abd b/src/libs/libsrtp/fuzzer/corpus/a9273ea543537deaf8dfd24f6b6f6201206b9abd new file mode 100644 index 0000000000000000000000000000000000000000..53e4ddb37cdfa38da58e69dfed50cad06698b0b6 GIT binary patch literal 97 zcmdl#@jutgm(>g);2;I27!(*7s(~VmARdsYE@lMs*+HC72p&+PIKH}`Lsz$*ff1}f TUN4WKB%TYT3k<6N`vPSEv@;Sh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a964dd60aca3045d39dbdc0c98a037593c67d8c1 b/src/libs/libsrtp/fuzzer/corpus/a964dd60aca3045d39dbdc0c98a037593c67d8c1 new file mode 100644 index 0000000000000000000000000000000000000000..fad37528a58c5073a60d5b9e6415193da59abc6b GIT binary patch literal 128 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtAd``yx)_Q<Tm}UOhISB*0E`SE1=Z>d oMb!*}FBx7|!vIhiXb4!LHJIdNV2B5r3${&`fwB0%e^Dj_0HW*}vj6}9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9980999939802d49268136d3f0a6629686b723a b/src/libs/libsrtp/fuzzer/corpus/a9980999939802d49268136d3f0a6629686b723a new file mode 100644 index 0000000000000000000000000000000000000000..a8dd97fae3a2e539dae20daa2afbb1ffc1848e6e GIT binary patch literal 356 zcmX|7y9&ZU5S$C5u@h6pDuo~j5y3`CV`C}!2N5JiKq6?mD@>uJwz0~0SlZkB0k-~t zmgnxCao}!dAM7p@k22&jfL-b)2V#OTW&vnTQo-Yl-YX``4TOP6_`I(^#t&?+E98|x zMe6o}`?dx7SGu@gP^7$z!6W&dj@K548cJiBIHr<0RRFJipwFWkBNr~6(t1*04CxvH z2_+jPH|LWHj-~q7cG>^-De#h7I}qabE+)Vx$>KHL0+16DY_oi~o!N;!X$F?#h#U%S V6rv53wPQ^bY?S{qlw=1+eE~viJpup# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a99d22b39d4c8d341f3ed3ddcb6cfa6d82ff6e8c b/src/libs/libsrtp/fuzzer/corpus/a99d22b39d4c8d341f3ed3ddcb6cfa6d82ff6e8c new file mode 100644 index 0000000000000000000000000000000000000000..455c11340405e080508db6314cbb0e26b865bf4b GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nk3hJ$)}Kd~tAfGc3o0BTVz1}bH; W25Scr#X#M8APy%xgDk_%|NjB^)E3wP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a99e5cc0ab33e44eaeab04bf5de5bfb533a4e23b b/src/libs/libsrtp/fuzzer/corpus/a99e5cc0ab33e44eaeab04bf5de5bfb533a4e23b new file mode 100644 index 0000000000000000000000000000000000000000..e0845bd4ed9f9b76f570c17e69606deaba7560f6 GIT binary patch literal 458 zcmZSh&&c8x&%nS?l*y4=52S(M|NsBK4Erbk=X&`PA^;<+iy0ZJ9cDs7GQ&XzhLZR^ z1_r&N%#MY~ni;CA85kI$+Q7PsfI5L<5MT{saI!PVg49);%n^c#foaD&7bsw4`1jvI z3L>fYjiDH3Fr$|XP>_)UtgN)U7;1oUI|IWU1_6eB-@Y?&7z2$KW|BcMSpjGp$VD(y zt2r2$pb8p5%E7ARt09hOV#q|%OgiU3PAw<_{tK*(sQ?)8pm5r@%|MT#ssvlSpatzV LV7L}<1CrYSV24YD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9d704cf90f8a7ca642deb9d6a433341e0ca88cf b/src/libs/libsrtp/fuzzer/corpus/a9d704cf90f8a7ca642deb9d6a433341e0ca88cf new file mode 100644 index 0000000000000000000000000000000000000000..1e67f590e45481f3d690ffe38b2e0ad065048bbd GIT binary patch literal 82 zcmdl#@jutgm(>gm4FCQ+NC7DjC{|zqiZFthK%!cik)ayG2dOIt@}@yV7`#AAfP!%J Hzq%R#5Bd<s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9da33b40b2fa6670ba0e4dff941846eaf3663c0 b/src/libs/libsrtp/fuzzer/corpus/a9da33b40b2fa6670ba0e4dff941846eaf3663c0 new file mode 100644 index 0000000000000000000000000000000000000000..9675f46caf52e36fdf886f35611c05c7f5eb8cea GIT binary patch literal 69 zcmZ?tU|<knU|^7tVz>pQ^r~UNrMjBIfq_NO3n&T&64lkW^wjk9wDrIMC@NZgtd*fA F69DNy4zvIO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9e37ec3b9565533fcf017f8b16736fd59b61d99 b/src/libs/libsrtp/fuzzer/corpus/a9e37ec3b9565533fcf017f8b16736fd59b61d99 new file mode 100644 index 0000000000000000000000000000000000000000..985fc1cfed4f14cab49af83dbbeabe600158fe38 GIT binary patch literal 878 zcma)5Jxc>Y5PhdbR&64w3@BEX`2m8ER8}^Yrnm@R5eOm%3vY#3_|f<i{4f3$8;i78 zh#)w=nav(V&Lzt+JG^~2_h#N+-n+zI4&Zw1iUaOkB60$F&$MO0U~*IBR~vA<$bfrh zZ#`_z=gRo}>36YZH0({eds0X{R>)5?t3!xf#-Sz5^$BO+jc3MQ@Qm;gX*JkfH2LCx z3PvpY_bgc`h)63aO);4&J$&FcK#R!%I?pz~Uh&LfF?P5)9o*A4!%VYi2OTQLZe|=Q z;Y2V1&L@FGqbgg{1^R}m8E!vA>m8?Bgy0dK73o+Ep=PFSJBzJo->cY0f5V8PZKH=+ zqG4zvRYiEMt#Te;WL@tKSJYUhZc**iD!PKG!{AB%rb%nirFd*W`ypi*+we@6N1?{$ P{GE2<@3iEf_ZPq~S%;?_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/a9f8447603bfc124119e9cdea2d8c879114e2171 b/src/libs/libsrtp/fuzzer/corpus/a9f8447603bfc124119e9cdea2d8c879114e2171 new file mode 100644 index 0000000000000000000000000000000000000000..5c4d10e405ad4579b0a617146c792ec1cc3feee4 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_k%2iizJQZ~Ll!8)$;MF7 zzyM+a!5oHm2q_GtI6xw8-+%@%2!WU&05-cbHIt*Bp&g<IXgXLcL>@#c#_Od5jR62# C6&TI{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aa26685e89708e893feb311f566d4b40d18dad64 b/src/libs/libsrtp/fuzzer/corpus/aa26685e89708e893feb311f566d4b40d18dad64 new file mode 100644 index 0000000000000000000000000000000000000000..3eb1aec2b3d1b50859e49c7e719b998263ad37ad GIT binary patch literal 99 zcmdnbz`zj94kZ3NNC8P8P+(xFu4Z6h1hIicbuo}&3}aw83FI>Y`OHwVn(O6DpgJJ< W&JQA^K?F#5akUIcBO^pN>oEY6I}Nh{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aa3b95aac3c7d1ed8530c6683279b1831ae8a146 b/src/libs/libsrtp/fuzzer/corpus/aa3b95aac3c7d1ed8530c6683279b1831ae8a146 new file mode 100644 index 0000000000000000000000000000000000000000..1a81e2d2ccd13379e423ff612231a9c49297fc1d GIT binary patch literal 622 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8U?{GJ@B|nkG()vEBSUqyI+SM(r5QLG7-Shh zY8b1FVM-YmgQVMqfdoet!~g%^K@!!)yHEi`5!6DUs?>U*3Lt>kT@ADwq$M@JED<aW zCKwsm8VcanG0b6T2MPm8ur(kRZQp>zf1x}EhSr|{%+=NZ-H{xm4FVulAh6gP%ta!M tA(F^mX=>WigctN80Xv|nQ0{Q`S8wkYBoAXUafOu^LsJtYLlZDb0RY~<reFX7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aa3e480fea9bac83b7a634bbf7248d33c771cedc b/src/libs/libsrtp/fuzzer/corpus/aa3e480fea9bac83b7a634bbf7248d33c771cedc new file mode 100644 index 0000000000000000000000000000000000000000..c2880804f236ef6087583a877b2a2d8dc5585ac4 GIT binary patch literal 206 zcmZQzU@$1DXJB9`%H&7|(LnIu(Hg>FVBln6kY!*ju4iDxp@12x^80s?LI%d_;yFTK xp*b)k+J%8E4hRoq-2Z(bHWLE_nm7YY9HJCLf;2~A13(kMfs{ZEW{?1@2LO%J8LR*R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aa5c4d5a591e8b9252992ce55ae8d4a41405fa28 b/src/libs/libsrtp/fuzzer/corpus/aa5c4d5a591e8b9252992ce55ae8d4a41405fa28 new file mode 100644 index 0000000000000000000000000000000000000000..e4f4ebf9510596cf9097db8ceff7f3ced1ea593c GIT binary patch literal 104 zcmX@8m&Z^N&&U7-9I5pnih<$(|Np)W4As>P3}A7fNOdtI1Ovq&z?wmTArHjlWM_~C bs$*~OnIiy}5^iUR2Wsz+2lAM}A|P=9z_1S{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aa7a28bb2d469bf02cdfabe01275a62b44c499f1 b/src/libs/libsrtp/fuzzer/corpus/aa7a28bb2d469bf02cdfabe01275a62b44c499f1 new file mode 100644 index 0000000000000000000000000000000000000000..16b5cab8e0756513b19407f79e7d7b29767c906a GIT binary patch literal 120 zcma#o%VQ{sXJBARO8qaK38aDG|NsBK3=GxT3=E85Ml}P&MMee&0gzmEF(Vi=00mVT n7_2!#f<OSIWf>S5N`Zz60l5kc3>+W=WEKbrLnx?uuK%h5W1%4T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aaa1f07d9414ea9fe7be47cd6503e8e11b30bc10 b/src/libs/libsrtp/fuzzer/corpus/aaa1f07d9414ea9fe7be47cd6503e8e11b30bc10 new file mode 100644 index 0000000000000000000000000000000000000000..c6fb09356e9ae99d653670570e84645360676757 GIT binary patch literal 4044 zcmb_f&1+m$6hAM`$E0GJc0k);=`<}ynmUHI24Rp)AVLX5+-2e7C6o~cLx}UzQgXF3 zi^Q>zg>hGy7E1qy)`gJLmADaIDhgdGgZm`dlI!nx?tO3G<jb0Rn7Qx0bI(2Ze4l&8 zM9mX&S!Aw~Dc3~7T013=*X+?&%K))$O9O6Va6=+s0)AmIQ6Q#t$HCoe@<e1YoEIrn zD_`AD^AbZoyI^FIMAg*B<Hg@R)vF?>-5$GXVn#<qdilP2ET)Ajgr<%d8aWIZ_w_qD zuJgT1B!%xMUZLS0|L3Tt5@=6T@t+u?=(h>_`@Hm{Uiuv5Xl5j!R1h@<<F_U}1Szk) znfA)$1n2`%vg_(wu2+_lm9rb0k{N|iIe8<+S0oQ_Qoh*NCiCCKjqOUNFE0A?Uv`SF zLYUdP>t!&~I25yOZSGd$#<p*d>s}&oAfPc}hV(^*rp*%nR#O@a)$%80xVsug^J>i! zsWi5hMw%<D_Rj0_C-$O~6k^AauaZe%-=}$C*E7<U-B7_Go1NjX6O>2G^Wx({QU1as z8_3FHFG7|890520IOHmP@sLNfV6%Qs;y(u3ICO&8CKLuq+LnrI$)A)SIyM2$3^V@H zMpD9k)Wn=ujcQVHQtz{cn*1fXeRPftOyr7=NL+OCC@AwNESO}eAki+(0vSH6W?H9= zsv0?kqrg3-WrH4hq9F1COb)PC4Y4-XI@+=hrFaZ~=(6Qim*ue=)OE~!L9BJ*E2K6T zYn7`|rRvvWW$aAJE6y*w=n3#Z7&!0_YfiDKAXZ$>JKm6YeQvm-QN)(V;x+!6?UD9I zV?@5@XPn9wVFjgp5UC8B7n5F7&hf{=z!q-tBYwP{#ACk;7S%HZ!)iH+Z>OjBkVK9o zv{r39dRM4foPFLj_s#$ZBPLY+<go-<ke54V_K1<;X-5AgUla3^D?X5hPeIiql?Z-E zpu17dP|&1rchC(_YrzI56zub~eM0;cKC#bs=&-WPZL|Xf+JIs^52-;p>7Bf0AG7z` z5u)<eUQ$bY`B>FA?WsKHM6gl0lBu~5HLo=$kXN27X5E3CJ#e(!>@{^B2BsZhQ@+Ow zDrinkkgV>cf$Gpap|PN6k|_0$I=&d6L+mAx8PF-uA^3QiAvU-jBy%Knxx33gYrzSB zP*Qb8CbgaVj~P?{;Tw@kh;N_M5`F#Cg)4qu10vT50B1Q6_Gnc%U8|ym>GP5eFQiIi z&GB?ew$%Y9yuoBS#DU`BckpK5PEus>CHkM#0$CFI5cn^6(qKs9olr$IN=?aKU1D-1 zGW&y8-gP)#fq{1Ulxa)`B6+owsX>p27O|9AH|_{xXa|N_Qbh1o4sXmVT8BV->kG`7 z8Ra^DRgVO6(wJW{UobIDARkN8U4YYKIB7J9UFiFBhiYw|MxfJfbeoCC%5J_*WS0hM zGD}Q>*xj1(o<GhqP-)6IUCr=4)}(l2DJZa(Xk{6ZoWuALmh@$2YH(2WH@G)w?QL5p zfPl2*!BD{2{S@Og9bxyqiR(0DJgb_W``pW2)TbV}T*<!4DiZ$fj-6b{byZJI&8dD? zwo+#9L5)!;c{11w(!y)Em#tM7Vj_s14RF2ifEdEP8McUgy??<qi>x4*VeX7BnC+Id z$LNzIus=5_abTv7xtC<z)@gor|BJzrC45o0;%OptIwNJNR8bKvawLQO#=AP@<$_c# zXTap8UacUkY3#Xo+R@}PfeYAj_4vv6bQ6@H_v&?w%Arvcp_r$eR5w@SZo!VGR_J@0 zasp5tF-zjqu_L~xTv3kByI?cv?kVS$+6^ytPuW<{BK2@jxeVq7=Sq<Qcc{rjM9S#y zDO(oz6gPoBfW0-ZlEnvHa^i4v^7fF&XJY*6Jc)C?5Hn)JkOq4%tYBSLI_}Agw?_^Z tyeRwDWF><m-47h;RFRKkj6wb|cL@F#s1+N0_aYWFdZY=@&0usb_y=)w8211G literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab0f35f174d1d5ee36f7c8503ff01b29e90b62c6 b/src/libs/libsrtp/fuzzer/corpus/ab0f35f174d1d5ee36f7c8503ff01b29e90b62c6 new file mode 100644 index 0000000000000000000000000000000000000000..705f1465d2e1072d412023b9bf346a7c66b1cd1e GIT binary patch literal 209 zcma$54*~2&nH;J03}65h@nvABu4ZIl;9+0@lCJTIWe_O_29A1$c3~igqly8j4k*ds zzyg;`1+o|!*cu8r8R}#~IvE(|FtkHRVFp$XkN`v5Hz4s}0K_DqMhK(^1WMw8L}zLy S#Bx@M<uJS9;tbW5#f$(>$0^kS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab179e4cea023bd1811d3abfebeb0e15df9734a9 b/src/libs/libsrtp/fuzzer/corpus/ab179e4cea023bd1811d3abfebeb0e15df9734a9 new file mode 100644 index 0000000000000000000000000000000000000000..ff024828872ece5877269761e9d640d91fa4148a GIT binary patch literal 116 zcma#oD`O~$XJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&zJQZ~K^7?TtD$&~ h5JNavCBqzsb|3>tN&qPiBr%P6y*vg<ECvJB0s!_a8U_FW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab44a7c3df0a5f904290ed70aa12dcb06d7f6cbc b/src/libs/libsrtp/fuzzer/corpus/ab44a7c3df0a5f904290ed70aa12dcb06d7f6cbc new file mode 100644 index 0000000000000000000000000000000000000000..7ee7172341b726e41f3e19ec5de20ec2bc615a8e GIT binary patch literal 106 zcma#o%VQ{s`~QofD3c>Kp8*X1|NrmHz))Syz`zLNI{?|mj1UYIg8*w7gOh<l7NoAa Rc#aTQOc+Jx?|-OFH2|;!6CD5m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab77f104aa790021b9820064a863915a2b428ff8 b/src/libs/libsrtp/fuzzer/corpus/ab77f104aa790021b9820064a863915a2b428ff8 new file mode 100644 index 0000000000000000000000000000000000000000..10df6d15cdbdc240b69111c9168674eff5b41d6a GIT binary patch literal 216 zcma#oOJOL9XJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATN>KTO8K<s#51}3o9 zzG>g*V$rGqGzX-vBwjC%K@yK03LsU6)x~O2Odu8mgAIr<U}$&=q8T_D7>s}v&@I(K Z3^Jz*!>wLGiGrfkwA7;b;#{C}a{x5@EuH`X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab95629542ccb25866fa532ec2cc211c5755acb3 b/src/libs/libsrtp/fuzzer/corpus/ab95629542ccb25866fa532ec2cc211c5755acb3 new file mode 100644 index 0000000000000000000000000000000000000000..9810c8afccbfa450437f4b20cc8e74547652194e GIT binary patch literal 466 zcmaJ-Jxc>Y5Pcg1xwE_!q99x(XeSowG!P+a0{(^=#3GGI_P}C6?X<D56tA%f_y?{u z_#bQ|w)Y2u;K%r8T}kI#*qM1d`{o1E7a0H;kD}uXT0%q)Fuj%KvUCi;rL*Sw%Ela) zjA1mZcnWZxyMQA+1KHpN*dC9rA1Joxb9O_fiECH~61e<bc9g7N0eJ*N77~XvZ}!i- z0cKGj?fKbXeVBfinWpD&I?lprx5US<0Y2OIUY=gj2n1(*@iX51gE0Rk)rv`>I1RJ< zpfIc6P6`&S)>YYA-3X>O%M&0)lVde=GF3!8W<_6#VU~Vnw2M{yO>5tD6qMTZa?WkB eef`t|%B4d(s*N;AqV|?Rc!1txc#3tME&Kp%7kT3V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab95f7b5ac2973fd98c5f05485649704e3b3238b b/src/libs/libsrtp/fuzzer/corpus/ab95f7b5ac2973fd98c5f05485649704e3b3238b new file mode 100644 index 0000000000000000000000000000000000000000..1903cfdd7cee8623240012955879a15f7de3febc GIT binary patch literal 574 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^Jdl|z3_!c7V;aa`j76#cg)<?JMfgh<?m>A5Nr)r^nj-R?K#V6qYAA9V s&{s(AXA%H<0L}3Xx^NYo@(f@V42WPL-fM`20JX54fk9;sES9RP0eg~U<NyEw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ab99877141b7d2af9892f88dd2aee0e20cd107e9 b/src/libs/libsrtp/fuzzer/corpus/ab99877141b7d2af9892f88dd2aee0e20cd107e9 new file mode 100644 index 0000000000000000000000000000000000000000..4964587c9ad9932c481247edf97aaf1e3602ce36 GIT binary patch literal 82 zcmdl!@jutgm(>g);2;I2QWY2&ih&}Wj6g0BR~IufR0H`yW-wR*LbM235ULOWbhiw~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/abafd0bf8000a84106e3aaf1d5dbcc99584a939e b/src/libs/libsrtp/fuzzer/corpus/abafd0bf8000a84106e3aaf1d5dbcc99584a939e new file mode 100644 index 0000000000000000000000000000000000000000..74bf5636d791e54fb58fbc63ada727664dcb3d05 GIT binary patch literal 872 zcmZ3^$N&MH3>>NT5axeJYp5WD5d(uP15inIF+>g_#rz#bswfkSc0*3MnmIqfM$Um6 zj4;O#)e2nZH~^hd0(65ORt3a3#sK1&;yFS%Tmm$N1>xCD4u;esi~s@p2<8$7vR#54 zEVvwlFIcppfr#W7@`HttV?gPHnBYZn406aYQ4BQkn{XUS8ox^|kbn)C4NTjhG=*?) u0TVQ68NT5L(9BQ-PDlz2!tD$U+MsmJ!l2H;0n9Ay4}hHi|G^mo?l=HLafb>3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/abc9a933d36067f16a6e15a7cec665f7e3a4afa8 b/src/libs/libsrtp/fuzzer/corpus/abc9a933d36067f16a6e15a7cec665f7e3a4afa8 new file mode 100644 index 0000000000000000000000000000000000000000..f1331a974c4d77e957d7c05f5c8553f0862e7de1 GIT binary patch literal 167 zcmZ3@z`zino0<zm|AjMw93c4r|GzH-Lv=L+10$Rv&%h)AlB+Ie1Y-sU4F(PdhQ-z( nK?VUvFvZ{qmabL@^RAExAVvU5P6h^921W)2;s5^`fDi-#H(Egz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/abcd351e2c4acca2d217d822faf119d76df34cd5 b/src/libs/libsrtp/fuzzer/corpus/abcd351e2c4acca2d217d822faf119d76df34cd5 new file mode 100644 index 0000000000000000000000000000000000000000..f0c0987e89a730ffac976e2bf4e748d8e17b606c GIT binary patch literal 142 zcma!N00XA{qD+p|dI;zL|Np)W4As>P+aRET2`FyJ0OLYMw=pm<G6*v;a4}RDGlDf% zSF1w|V6cYL44e!MvOr~})x~p!7{s8WbAa@|Z{HdAPyEmI@?|xU=Kzx7U|;|M5_lvB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ac1b044cdad246e47a4bea9734b7cc8a5e8b1411 b/src/libs/libsrtp/fuzzer/corpus/ac1b044cdad246e47a4bea9734b7cc8a5e8b1411 new file mode 100644 index 0000000000000000000000000000000000000000..6f0af374825ef44ef8f11bad2730480934719e2a GIT binary patch literal 262 zcmZvXF$%&^5JX>8@COk@u?z@;=g0*-Lr9S#*o4H&6-;L>Smr8T$kNIx>;4cSMHXgv z*qQ%_O?1IE0m|HE2b)%{>XBH)=)7B`U58~v0Cf?9XDhx9chjtIP%b#t-s*=`FT<`5 zi@#r#MsN?WrZaTy$=mQun2i2&GEu6)05?ZQUXEnNy=R!EAMAud*0#?&+qvGjPj%X= Hy_Dz&B`-Ke literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ac52ae7784ff5e407122bd10c1382ea3dc72adb3 b/src/libs/libsrtp/fuzzer/corpus/ac52ae7784ff5e407122bd10c1382ea3dc72adb3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7587f459548643be87920f2f1074918a3ab8ce GIT binary patch literal 103 zcmXSpXJlaTW6-Pq%~0RM00o{aS61p&GXP~+8LAl={zCvGrV0ioUj{CiE{1>q|1(zq XXJ@De8dS}oz~BHR)pe_@fd&8og&rI+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ac573f59d8cbc7628dc70fbe607273f7b4a90e14 b/src/libs/libsrtp/fuzzer/corpus/ac573f59d8cbc7628dc70fbe607273f7b4a90e14 new file mode 100644 index 0000000000000000000000000000000000000000..7776013297278eb994a0cf90193751665e227e0b GIT binary patch literal 376 zcma)2y9&ZU5S$A>&Q@!|E`^<f2x(Fa_I8KG73nk)3$I8jga6=fS>`uH5R7woK?D_? zV%eS9z1=xgdvw!8>KqPamVhyUV6D}D?Rm%?<$!s70DG($w;BmjGZW|(n;tN9lQ^R! z$!LcpFvIc6tnR~)t#%5So^;|LZd1GYrFV=&V?v(b5HUV#VC2to9M=bSjmgC8Rx7x= o;jl1>V5k!S*>4`JZBYGz%UjQ{Z^5MS7C&t%-a4mWq=|rh0&(bS@c;k- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ac66b21b0d6e8f86ef3e4e0acb57f277ba596b02 b/src/libs/libsrtp/fuzzer/corpus/ac66b21b0d6e8f86ef3e4e0acb57f277ba596b02 new file mode 100644 index 0000000000000000000000000000000000000000..ee342967de07276e9665fd7a42114d49b030ff01 GIT binary patch literal 3132 zcmd5;&1+m$6#u<slDvroMx&)wYsU^urJ89<x==zeB~vJYpj%hZAq;dNA7x%grMEai z8e<^~18xc<DE<$1XK>@L|3Eh`ii_xeqOr{Nch0?U-kVHZ6twg(bMJlko_oH}xhJY@ z;8p|#&AOd#K*3tO0>p;9vM{nZhmivC7O=f*M@<|!OyGxkT@{iI^LD@s7yPk1<VPMj z3&9D7?si@RA}<A+jj-MZ1rXTZvy%r0<W5+8RVPYgb;09AG=A5kPip?0Q-JZUo8<V| z_Kx^@^*TV=aoU(ioGK=PDm7a~uCmNs52sBBJ6v;|<`l~Imt78)QaTW8;a<HFwrK@p zeiVKV+?CrDAEKrHMS7*rMfx*V@8pJzfkI%F46jkqK`n(#O4!+W3iGlpkl5J7V$!Vf zpvF5wQSlPF60uW~ddwjelxu#-mRCqTbw?~9o+|4R?B8~#rHJ%=0q@H0dot`<tGW+L z#)E0vxFg0L(VyT>${?JtHAvo$38OO!qc)F3T=DZ-s~*w2p~jQ?*+rK4j3}w+oPHcL z0sN7~72#tyapV;NuKMv*)SWMOsh-~!x%wZ@AXl8d6RWq>>b868)LkJe$&(iW_-Du` zR#d`nc(M@J{fd)@B-ED;F-0H*#zZk8?0sNAknAAE&n|aLD8cs9SozCN2(@8(mz?aF zJyG7JV*&?3M&Q!7CvfmqVmcpFJtc)F6yuq~N%kv0mHqmrqus@C0!hp#^(>of=24|w z@kQ<bOgM4<^O#i>>rM9xNRFZ@^$?MLVW>FtB(WAXf;B=>6MVwdU;-ELXC{HiT<M+d z(igRyufD(Y);GdVt1ot>B!^ONN6CcMX3~o5o(?_B_6)LY+oVol95dw64pB#=DYf}O zV4#$T2UYjq_*&eSckE;<>6;Ptl9IVDuc(5pc;MG7<`=X5a3kRxpr}g|m;GCH!5_6a z{~_yv!hM;>CEV4K!y4|$QUa8}<e|pv+_Td@{a?l?KUX)KH!l&%5g>BRe@-s<p~yqc zH&?Dk#ywrBq>~4<zr%Fi(4HWN{omXspNfkEPX)IfqE`MvHI+%fLD`xG4zQ3-<T+|q z--wnrH*PgI-*?Xv@S3tJy0(aGuZreCv=c{^UhJR`)Ehi+A-qS}|2k=5dbZ!fh;Yjh zkzBXKg_n1K?^oaOq}b=Xt`id^GF9;x?|WFq&%o||y0p@4eD(c+k(};wO>gy_;_lnM zG_nrz6RtBeSEOqo__sM=ftTkw16Mz<dI*pTSk4N#TqS;hYV|=1n!cqPo1%2jt!5rz zBygtP-enFSQqsO_=9M!gU=Wr_)4i}x9Cn?w;UQ7jM6kEhE|fheH{FYF&l60A23t68 z=p*u2u_|V!p}4VLTP?;nYBSO}p2es%Cz*PbZ3X!PUsOiQs)<IOr7vmPT({Upz+|P+ zE=;64qNtX|L~}hvJ|{-6Tr!__rleJpfLm?VTJf6n1RpXt(qr%QICzIg9_ATn{T|5g z<;UgHVP^%gbL5L`hr$j|x4vU23z@8kX||ubhY05=;#~I}jQAU_Q#4`U^IP0ARHMil J0}a^<{sE=R;V1wA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/acb32e7192b794c926b90d06963f95e1c0b66e72 b/src/libs/libsrtp/fuzzer/corpus/acb32e7192b794c926b90d06963f95e1c0b66e72 new file mode 100644 index 0000000000000000000000000000000000000000..64f825bb84fa557980a8f86a57c6e439505323a0 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BamOsP|T<f6|siW44e!M dvLJPv8LEXC<`jd4=d=T<ISlQ>FhxMR8UO|!5LW;I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/acb606851bdac198612ac62801f7a1c73b82be27 b/src/libs/libsrtp/fuzzer/corpus/acb606851bdac198612ac62801f7a1c73b82be27 new file mode 100644 index 0000000000000000000000000000000000000000..19df6ad97d716cfc2fa841b270b1c0feea9e8904 GIT binary patch literal 270 zcma!NU|{f!2NFe@9I5p{8VLUX|L@DdpkB?uz{sEg7HI;J=fGeCgu+Q0!(|v4dej)I ziy0ZJtJOi8!F)@G28Nd)(>NIzWP#=b70eMb%F9Uwi7_N8Fy%3n#4{AJa2(7?%_#sn zOaawl9zY#HU0|SC{MZm;J_EyFs2D2s<tqp<u(kd#VPNoMu!qY2ZvlGoKf^aBYoI_L LL@<zn!Lbei*XviS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/acc711730e20e150881af343a1ab56b416056398 b/src/libs/libsrtp/fuzzer/corpus/acc711730e20e150881af343a1ab56b416056398 new file mode 100644 index 0000000000000000000000000000000000000000..06be2841cdc8c929ef932a66114af89c36ae9dbc GIT binary patch literal 106 zcma#|Wnd_YXJB9`%H%Mt2hu?B|NnnqJ%;LP1_nk31+YkUF(U&QSF3~h3=Gy#nt{`n jK^CYEC_P6AEGFE}z%Yk{!3bm+6N7GieC8kBVjvp;@Rkv| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/acf53b89ce2f08f052602c438ee2aa52b461f3a0 b/src/libs/libsrtp/fuzzer/corpus/acf53b89ce2f08f052602c438ee2aa52b461f3a0 new file mode 100644 index 0000000000000000000000000000000000000000..7f2c7b9965d7d5c26471538a48e1f75a1567f902 GIT binary patch literal 69 scmZQ%C}a>|U|^77sAjmuP_0v44dj3Ugr$cKBtQfi7(}ZLtE;Os0d`mnSO5S3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ad0dbd1e1da9a5830c00cddc9b803e98b423538e b/src/libs/libsrtp/fuzzer/corpus/ad0dbd1e1da9a5830c00cddc9b803e98b423538e new file mode 100644 index 0000000000000000000000000000000000000000..fd3851466cc130a13a0048a74c79212e2a58fc5e GIT binary patch literal 69 zcmbREe?QmDm(>hE{sTcBhya69Ed~%ssBSnpje#LE9>}gPW`y8s5Qm|ifw7t)o{9B; HX*B}?FUcL) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ad37b6ad4541ba1e70e8ed071dcf87bcdddfe80a b/src/libs/libsrtp/fuzzer/corpus/ad37b6ad4541ba1e70e8ed071dcf87bcdddfe80a new file mode 100644 index 0000000000000000000000000000000000000000..a66496e87da46c2f65447db69743cc953063009a GIT binary patch literal 474 zcma)&v5LY#5QhIG7JFbJrWOo{g{X!7_1E|eA;_YEJCFn|vPBv_Imi=89>^!Muo?d~ z5rU}P6f?ul?EK%%)B!$207<NL&PbCBjF}5F7NNs!^u5vHdi4`6`spf~tUrJrJjG&( zL*;!2`+(mwUG8ASV87E6#9HMz*dA;5mW;VmHzhh&puW$6Dual80e?G@dIo}jYb{@E z-Q-be4R1UuJ3Y}#&9UNgJD3&5+o!xnO%ikf7uXl#b~!IcX+s}AFEJ>YwjOpTPy5C0 VO`hsL&v$R~jNkK+!9!tWd<8TSR_Oo$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ad4b1a1e5b1d101d805ebb7701aedde8a77b2e95 b/src/libs/libsrtp/fuzzer/corpus/ad4b1a1e5b1d101d805ebb7701aedde8a77b2e95 new file mode 100644 index 0000000000000000000000000000000000000000..f14986a1d24286aa268f1e40dc293c50d7472473 GIT binary patch literal 69 zcmYe!kFP3;uP;jFU~pi_WPk#9|Njt{D8pBSJ`ezMb-+SU2_Tz|fq|J#*AfT-2|WyE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ad576ac9cf0b654830eb06800ad44c23877ccb20 b/src/libs/libsrtp/fuzzer/corpus/ad576ac9cf0b654830eb06800ad44c23877ccb20 new file mode 100644 index 0000000000000000000000000000000000000000..ebaff1a5180d5fc662cf0d316ffad80e5d8bb153 GIT binary patch literal 145 zcma#k%VV&OXJB9~O8qaK$p8lb|Nl2)U?{EzivIUyV5kN$q#2k5K$5LJ|E<A_1Q@{- zP+FUjp|n~Z$WsMkYi5veEQo*tP6h^921Z>V4`Lbv#3Z0W%+<L-L#owHffoM%?*ar2 GuGIjGWE>s< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ad83a49bd0873471b1ca7be8b42c6304c5a17c48 b/src/libs/libsrtp/fuzzer/corpus/ad83a49bd0873471b1ca7be8b42c6304c5a17c48 new file mode 100644 index 0000000000000000000000000000000000000000..4db9dee59da6bc452a37ce7020980757be781432 GIT binary patch literal 139 zcma!7%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~LzaP)fvo|^ zVvq&PG0b6T2kDs8E(|0&K+LvpK;l1x5Qq%~V6!_@Gdb!RAZn^W#)HfS>3{;o;{6k= F834T!8vXzP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ae004a2b950aa5f3a7c35c1fabbfb27f3ebacaa2 b/src/libs/libsrtp/fuzzer/corpus/ae004a2b950aa5f3a7c35c1fabbfb27f3ebacaa2 new file mode 100644 index 0000000000000000000000000000000000000000..5c51dec549a8e28b1dd25791252b2788da7d6107 GIT binary patch literal 99 zcmaz~&aWzsXJB9`%H&9`2h#X}9#HcC|Np)aHMXJ*27MsFRUB`SX;57qAD{V0w>ULE QKDE1^aWzQM$~qtc09iK_$^ZZW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ae122e655e7f051e8bf61282ed984c9d9c9ab615 b/src/libs/libsrtp/fuzzer/corpus/ae122e655e7f051e8bf61282ed984c9d9c9ab615 new file mode 100644 index 0000000000000000000000000000000000000000..764985a7a04b092f59941e16c0a65f926125ffdf GIT binary patch literal 2410 zcmcIm&1+Oi5dXa~F;8J3W+0%bnJgFuSEG&>4TcDTl?9RYAjlkER(Zl;5@lY-k2LrJ z(I9xqQJI@J|B3ZaQ1Id{7g@p{7WNPY+4TOZs(XCIY;;A7H`U$M_1)FgleLRHo5^SR z`Dzmi-uttFb3oFa458AGn(gEDElv{tUateB<RXlgRH>e?7Z0BNzT~&Btk5N_`H5X( z1Nd<jg*Yj5qTwQen|MNaBPfD#)P%{AL&fiq-C{$^Xnj?Xg0RU%MvTw^a4fl}`p;!Y zu9A4{S3k$0#h){eR^jQ<1PQ=i3Z(R=ZyD!J6O~o{$l+P+%*fPgrukiA)XkV?)Rf{1 z=L)zH?AWhs;0Umy(`~>W3DOmvA5aIT^V#h33pu<SzqP0H?E0l^SDMqQiCM_R_KBEA z(1?_E^bK~IN>V?Fz%rG-2eycAcThH>cVnciiC2w{6jR>5w>mK|NFs4_k2VxsZ>8km z|MS4Kf8s%z+;!j&dd>xzZ(A^5eBfG4iX?4X7I4%<T|Wy!N-?N50}V4^_*(}T4#I-& zMz@c~J`-IKB$piGXPEz^_CKbAw`x9yO=_(E?nJu;P;Nv0YIHLWb89^ZHtJ@7MT@}@ z9?WgsA}0}ZU#?V3lckKf5qZjVn-g~h*%Qi9a?6zK_-ssveilM1Mg=~-QA&>Yoo(t= z$h<jyF{E><l-BMvGz-<Bh!+3kq(6~R6IbXZmYv|re!7vdH_fp(q1C)q?+n1N`Nb+2 zg>;jSR=-GC$rkrD-(320uyAk)^mefaos`{`t+N6=f3@UyW}`=`^JBmJ$DbVyMO34L z2cmK$+=SRtPH+R%H-(y9JGQ%l(C&0YQW05KaKic>txqMGCqqnXD{rQ_3x>fc=B1&Z z0Uj-Q9~p)V_td!gVEsg29{W%Tlo+;0jI_!Cmo-!uIiNL@_Smr;9(6ZMZMdx+SVP$X z_cwi%pNJ5)F#rM4!2~6HIA?-NaQe>V`|k&n2E|J{#KWv${K9x?F*v?ExZ>RS;KIT~ z$7KEDPCDo6$H(e*K1h-?c5PnV(6hK&MB<QDdVO2sR2EeuW!1yNNzsR85%ll0III4k zjuts(>?22*hsNqdwZtbLi8K{4o-UO;XYj=2i5p!-obb^U({k+b!gF<%FXePQ=TjN( zmei_%uyz=cVyzfnO4Fxa-NP#Xa;Qe2Hzq;WUBg2|qC~Vz;sEjWR(>UKWyP$-J47J< E7xx8Y&Hw-a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ae9865a8b03a07140310e5b3b4ae839ec194f35f b/src/libs/libsrtp/fuzzer/corpus/ae9865a8b03a07140310e5b3b4ae839ec194f35f new file mode 100644 index 0000000000000000000000000000000000000000..51b643cba37f611c9667501a597385d2eabc46e8 GIT binary patch literal 138 zcmdn5$H4XSWi<l>!?%A9QXJes1`x;<1Bq%z28ISk26vD^bulADHBc2$=r@>*28w}E aC5-VD%m6BYD1(r2We~*>SqK|VgaH7VycHY( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aea36ae4121c712f1492013c8abc8c2a14ba2488 b/src/libs/libsrtp/fuzzer/corpus/aea36ae4121c712f1492013c8abc8c2a14ba2488 new file mode 100644 index 0000000000000000000000000000000000000000..4255ff0c13a4748094b4373873370fd757920610 GIT binary patch literal 2140 zcmb_eO=w(I6#nkCPTmYILSq+NgHtVyf~gY`Da2p`)v7RP)-E0*0}hsEnrX#&C5e&{ z#GnMa83;7n;6Au&5X8OcraQ&eY=ve-W3JzK?z@vFMYHjcdH23^&+m86JukZ(q1x+t z00&|E2`;3k_s}87Y0t;`j)R}>lJ4n|C`!~M<S9Y*Iu=bwtg;@FF47#Z@!bc_Pun?J z^R2A86pum(Z&2Oiq#%5ZhFXkfLjHgY(FRI$z@w8);JO%<s~Dy5t+n;dGhCnTxbo_B zH>}WAz+Oq2njF_z%q({O!HLc-KO#^XmV+?T(gODiXtH79!-YlzOhe`q28z;tVj3~X zNR=TA68=R7DH>S=HZ!<U?n}l=kD0|Q1sTRgiG(T5nk)C#6$(3;*e&0A&?JU&cdw7^ zWlE0V$z;@4=WAR$J{8_q2d<ZSa9o_iz9_T>;j<&+st`qx)6?aL%N%jq`B(aSXM9IV zoTCXtjZ5bJm|jT<x%~==oKkep6{rb>A)+?N%?NNB_?`+8Aaw#hp4ePn58i*&MZoJu z@Z`hop3waL)cm__`g`4OyC_Y!o3P)C!6pckU*z=<J<)0sh{4vk*nvz%u0<&)SWax& zLFtz5JeJqtDtqpk)JRk|-)iT8*CbP3ZdXwGZR^L4@Z}aYdB400KuY%v4N3E!NuD4j zt=NTZJ+S|5(P5^2L8imKf=z)_T)jZXQ_!8bp!d^MV*_L87ry)<;r#u%Pq;^zZ~c@4 zVHoTLqqC@gC8~DvdaLezp11b#Cxx>npu?po_ujSJUr3GoAG`ph=V9*`kU897fA8ZR z7T2KV38&1ps8_??L@KxUY!bNNaYolxqd+Mgjsnb}ll!G?e0&YgvhD|*)eZivygC>k z59rWonne;nb^rd9ilccWXi(hLUxTJ!Y&cdDQzjGP<5rS**EZbSUw-L2ZW4ynZ9TPY zPej?5Vi8L1+d%t;RSt}@v`CZuF&#FOO~6TPFB;z-8W!eCOO&sp*>vQeJ4z1Q|4lUT zGcDH%lArCNr<v#O7<NJqe+B&AUs);4EIjX#v*b6`kxXi$sA_Bk0jIHXUQuaW&L0q& zF}{f=<HDS#ig9^3+qPwxSUjR^crC+YI0Y=Ru>2K0_U5*v1n1+0_oHoSRYs|SYIGEw z4@2-PLa2tZx5@S66r#anbZp4Q$p?JCeleyoNZ~SV^f&`lQj4LPEwu`7haZo~z(V?9 zeDg2@8hdd>wD79QGo<wKxs&LBLP0_IY(#Qbo(1nl{I~+u{<mQi=|6><z8@?h3&H5> M_RSSkd?j@M01XKBod5s; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aeb959af83d479c18a5df10be115f641d739a14d b/src/libs/libsrtp/fuzzer/corpus/aeb959af83d479c18a5df10be115f641d739a14d new file mode 100644 index 0000000000000000000000000000000000000000..ef41a0bc2332023f43ff5757648b157499742d2e GIT binary patch literal 207 zcmdl#@h{iQm(>gm3@i-$p8_c$P+(vvW?%q{F#<^-3rK?$KqRWcqEI=Y1XLLVLnBxV okPAT|8ri^V2CVi#w1X^SV8G@MpfDD@AXZd??EonNyALD?04*ycRsaA1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aed457ce90a7906073f591e1a90899c47e40c877 b/src/libs/libsrtp/fuzzer/corpus/aed457ce90a7906073f591e1a90899c47e40c877 new file mode 100644 index 0000000000000000000000000000000000000000..e015f5f315686721c65a39b4db9f0e8e18580292 GIT binary patch literal 138 zcmZQ%V2HPfXJB9`%H&9`2hu?B|Nnnq28QZthHVf~zyuM8a<@5HJpnNp7#JCZ85p=2 vs*4%H3aYEsAqp9+p)><01A{C>@f;xrF{lVorNtZ|d*8S33>;uFsNoC%_i!DZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/aefabca803961bd5f8c8da0fe93629450c474fab b/src/libs/libsrtp/fuzzer/corpus/aefabca803961bd5f8c8da0fe93629450c474fab new file mode 100644 index 0000000000000000000000000000000000000000..ca3da64901e53c8a8f153235490381af81b57535 GIT binary patch literal 101 zcma#o%VQ{s`~QofD3c>Kp8*X1|NrmHz))Syz`zLNJA8u(GcX8%7}dp$U<?&pZVhID ar5J?4?10kZRK@tR#GKO9_=4g&Le&6Y-xQ4i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af04023d6c0b94605931eb6c898a5decd4095d41 b/src/libs/libsrtp/fuzzer/corpus/af04023d6c0b94605931eb6c898a5decd4095d41 new file mode 100644 index 0000000000000000000000000000000000000000..1f99f736209c4ecae3d5e4803be9cf7e00d69392 GIT binary patch literal 493 zcmZ`#u}T9$5PfUono3L+At-_t7J?*TVRJ&NfZwo)oDh&h?u-ZniH*d<#xin^Kce_K z`GM0a>)XjHXT(?RFmGnw&OCVU`wl=pu<4kQAa#njC*PROgz4NLZ7PqQ3I!PxGCoom zNHUE$$2)NCGT<N|JiOGkAm39Q)TuBTv=zrOnzdE5Rk&MjDA$|-rG;rTTZvtZa5Cye z7%rH^1^4O;_IqqK(6*rzbxEw_wfcbV@QO~gwUAT|u|FT(kroPUYq|BuB)6aOUKW?F z!{;xEyP==FHynL-Io#!lS`3*p2816<@K`)ImKpL*7HsIzuK!dfS9yAo=B~)pswA|l NowtYO{iC0Hd;ti>g{A-i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af13d6384d400e9ea79d5180be68bdab81b28006 b/src/libs/libsrtp/fuzzer/corpus/af13d6384d400e9ea79d5180be68bdab81b28006 new file mode 100644 index 0000000000000000000000000000000000000000..aaafc575a574c84b2704e1e73aed146237b66b3d GIT binary patch literal 106 zcma#o%VQ|fVPIe=%H&9`2hu?B|Nnnq28QZt1_nk31+YkUF(U&IgVZrF2!jY~5CH<5 f3=FbBb#pu!iiN-eg6#|p9CJWSCXh)W02T)T-TM>d literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af14df49d0daf61bfb099627cc0e03c0198afb97 b/src/libs/libsrtp/fuzzer/corpus/af14df49d0daf61bfb099627cc0e03c0198afb97 new file mode 100644 index 0000000000000000000000000000000000000000..0a7a3da165ee775e2607202a84e0830e5f1e95c5 GIT binary patch literal 178 zcma!LU|=x#|NlQ@QEDbfJ&*$gK&~$XV|6tn1M?rSz&;27v+)!E|AFKiisuM1ghN!$ iVK@$C%wcF3X5auqI6zg?4pM?p^B<@l<PNxMBnANd4<6+J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af160ab09726a432f0cd0b26bbd35d7668a5d2be b/src/libs/libsrtp/fuzzer/corpus/af160ab09726a432f0cd0b26bbd35d7668a5d2be new file mode 100644 index 0000000000000000000000000000000000000000..496920038247f99c8561b9b4427974a7b44ec7ca GIT binary patch literal 103 zcmXSpXJlaTW6-Pq%~0RM00o{aS6Av(GXP~+8LAl=n3x&<i-4q{D)<-}JXfv+sbFC8 jW#EG8V)*y}KV$WOc7|%8LDdWj3=Tk2y;`@r`u~3b5wsTC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af5cedd5aee77a244f0bfd53e11e16de96916525 b/src/libs/libsrtp/fuzzer/corpus/af5cedd5aee77a244f0bfd53e11e16de96916525 new file mode 100644 index 0000000000000000000000000000000000000000..bce9c50eb7c1a88e021a1937b1e345a6d947d056 GIT binary patch literal 984 zcma!N6k{lfXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJ& z0R`qTv_nW?AjJVv(e@2U{1*Z-K>%!aXKE%#JwrQKO%=#^khu;lU<E(|&0_m(kj)Ap zo2SeJN`nCl&@F5YKqgjqo&-t^B6pq#hfus;9s>`^@kmZ)@CEuF9JE0HfWm_&;pvJJ ckz|DDV2k(R7M{THWzz)bBVJnMBMt`!0K{{v`2YX_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af620437941a7d0844db040b95e9d96ef23236cd b/src/libs/libsrtp/fuzzer/corpus/af620437941a7d0844db040b95e9d96ef23236cd new file mode 100644 index 0000000000000000000000000000000000000000..0f4d45ab5b7c48fc17e441ab27f0b31f69a8b454 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2ht$$pTYP4|LST621Xz!JH9M2r!+M_fRlki79`S8JV%Hj b9ITLG4nsST0VIXNd~b*-sxSvwA5aSb)^!sY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/af8d61c41eb03f751c7a4cdf854472dae2f1d144 b/src/libs/libsrtp/fuzzer/corpus/af8d61c41eb03f751c7a4cdf854472dae2f1d144 new file mode 100644 index 0000000000000000000000000000000000000000..67457767f639644cfe929bc1297ea6cee39038b5 GIT binary patch literal 73 zcmbREe?QmDpVdHMRb6deTwTq`00h;=j11M)AQmeSw}Zuiq96e%0J6bc77$hK%uo#g D<oynq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/affac4eaed8393429b7f04d63842aa37490e87fe b/src/libs/libsrtp/fuzzer/corpus/affac4eaed8393429b7f04d63842aa37490e87fe new file mode 100644 index 0000000000000000000000000000000000000000..66a2891a1b6b41970f03a8768f9b301f2f89aaed GIT binary patch literal 564 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erRTr!aXtpm%1z5E?11AH6ECVY;X?5`&sMvr1OpergpiLEqbCemB z8UFwK-!2R>`~T1X>>w7@3<ewqlB(GmVh{t+HB|RB7B`yE#M83CC<28gBRDLDK=!i2 lc!-c?gvB5z7-8{%uJyk&G!eieo)M}IXeKm1U?L3F#Q^oCf5rd+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/affe9b29aa183c3225409684ae7af7593fba56c5 b/src/libs/libsrtp/fuzzer/corpus/affe9b29aa183c3225409684ae7af7593fba56c5 new file mode 100644 index 0000000000000000000000000000000000000000..0b144eb437bed86be1379e0cb792f7e5227e8a53 GIT binary patch literal 573 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgba{v8zkOB!CF(`dwC<cl!GPE&* z1VAj1Y9Og70OGdx{AaE%W)ugDGcYW+1_?3<Ffvqwb%A*dKm`yCG8+sa%79Exb_Q9H z-fELMLSPx;b_Rwy91M)IKpqoV1V%X4xj+FU+<^=XYA^=^l`(p|fJg?gveN2eWFr{_ z81{Yp&cI;?v`m;m24*Of2Kt4QL1PX>dqGiZS}G&);Q!43KqF8>GF~f>p#)3#{y+e* ztwi_-pGS=Gcmx=oK)_Ie*F$>MzZvRVU;*K|a%H6shy#fZP@J$b0OJc{6fnYpN-GTJ F007vPa`*rM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b022290019b3aed4b21d1788d75eb3ed38d8642e b/src/libs/libsrtp/fuzzer/corpus/b022290019b3aed4b21d1788d75eb3ed38d8642e new file mode 100644 index 0000000000000000000000000000000000000000..3aa47ac86778321f3e0294252052da27cde1e117 GIT binary patch literal 75 zcmWGzU|=YTFJj1KVBm1A2XcVm|NsBK5Eg?dgFzn<I5IFW76OHs7#OOV!BW*g5vZE# Lc1Fhd_|$3u4U-J% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b028acef0ec9253f6642ade799b41cd55e1a39bc b/src/libs/libsrtp/fuzzer/corpus/b028acef0ec9253f6642ade799b41cd55e1a39bc new file mode 100644 index 0000000000000000000000000000000000000000..901c66f00b2215206124156cfe7baf619725bbbf GIT binary patch literal 83 zcmdl#k>TY^cCPCG3=9koQa}O-6c`w)s~H#=L2MvVUCapMp9Bek`A{(iFR%zu5RR$= DlC=(x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b02e208540bcf9a8d2c32ae51640c9adf645e284 b/src/libs/libsrtp/fuzzer/corpus/b02e208540bcf9a8d2c32ae51640c9adf645e284 new file mode 100644 index 0000000000000000000000000000000000000000..f8d40665998057871b713169db2517983e77a433 GIT binary patch literal 1530 zcmcgsyG{Z@6g{(SB6LJ53j*2rC=5hPAHQJygsmtjv_LB-!OGD133UE}jXz?COZW>d zh~vHU++C4uf?){D%)OV%x#yg_X&(>wDS*+iK6s>GT1u%aKuSQE0OXx8Uy5<TH7-o1 zheiXF7|Gf-Tbs4Xw0{dmB1Qw%8k*|^k^>K^gFTZhJin>*un?(w=%O_N_NP=IqfQ@g zdO_Fu<;ciEh?-PX2H6v?qS1k_K<K1IK~;3s>XL5h`fv<dI&i{*E5nBnZ(8=)Rpj8? zYnBS7YYN2eEC}zH^^H6x)5s&+0UL%zQgxuMIreM`MCgDReR@_kdE-onm&>@lOMmM| zR-q}MPV#z@G@;eMVH2WFVH2wVg1uC)N@brP0r{%kJj>o!#eJ+aFf}Hc__b~=4$PdB z&ak|V%zV3QM;&`YtCS?OWD}K6x1iFvin*vEPf8fjbLIf5Db$%a(DwBGZAUH5M#Kw@ Vr4!gU%p=XOY(1p9W%G*T?GH5m5OV+k literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b038fbb7453c449f1c944d66f7d4ec4481c9b645 b/src/libs/libsrtp/fuzzer/corpus/b038fbb7453c449f1c944d66f7d4ec4481c9b645 new file mode 100644 index 0000000000000000000000000000000000000000..29594031de8c1a9593059386d1b51f5257f8b033 GIT binary patch literal 1124 zcmcgrO-n*S6g^Xt+CrirC<siVT2utus)7VvB-o~PScr=tDzp|ckS>B+1uY{tZGwJ4 zE{*;}+oG+1;3XtZ=Z>$QeNiBE9`DV}efMkbxfdp7Oa?%HGmtBCC5$m?+@6`<T21rV zG)u!)-W73BphWTX&}Bt{UOIP?#T~Gh*#>6vn<tlawqSMUT}>7AV+5uSJzMU#vVmiu z9Do|($pl?ByTlI@E|eD^i(Y)FRDzl+Y1Q_1;oarR>RxPXC%dtgn~O5js3YD9dj}oB zTjC|kG(0<|g1*VB^9;p1u8E17wlVM}hSf#&lQ+f)b&AtaljRqD^d#wg2uFUL!NDUc zI&k?xxGshW3PF68E<g)|#7k=d8jFPsQ+>qf@Bgg{`{KU6FG}=SxvB_u-BQ{^MGe{Y zszS#;np#4_5RS*nJo^yfqu_rc`OFeXUT0>u*)iM-{x4E1-nZXIE0J8$7_BE*F42ks zweEFp{&1(x>%cfaq2uhliraZ74c7-#Y!R19?i6RAa{;9I>a_4ANO*JDGu}RiH_KV! TmPV0?H8k;gWTX!Xl^5|Vi6`(> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b0542cd481de90f8dccab5ee9ac3bb38b8c237e7 b/src/libs/libsrtp/fuzzer/corpus/b0542cd481de90f8dccab5ee9ac3bb38b8c237e7 new file mode 100644 index 0000000000000000000000000000000000000000..3e7ac3c34adf5fec9bf46354b1b1a754a70df8d1 GIT binary patch literal 3123 zcmeHJ&1+m$6hCh|P2Lm=(O{_-?MO70XvTyTQHIczM36$LE?qr`@}L7rDl;9GUTLDV zmSPunKZ4+@|3KXtSMJ=oawS3+gKI~uWv;*9Irn|cM6&Q}<zeRD`|i2-eBX0U(%6x! ziAdB*{cKwly!V?TU58yR92cjhG9&VW$jv+ci0ejnQsm2~u4b|g_hN(#X9C)g_^63I zEj$w)xZ8hRBneVTryZxe0s#p7cm1)!0Nep<Pw50{ye@#wM8kKQyw?hNOp#3Oy_<8C z^KXbib~)+X511M*gAHi5Ce_A;;_6A)ms|M6IEyJJ=93`?4=D|3ExDbx<6T(6xv$92 zz^+___(Co9PwACD7RAqby;D7444H|%lEF17I<6(T6ok#j$GIs@4w=TTOOuw3Cu+Qh zQs=Q;u1xHLq@sDE{KE&gR3U$np8Aj$pr_^)CH{B6*wZk9=V#<q?!Lz1uJ@|@xMV=g z!p40Xx1v9uJ;s5YUvGoFKT1YVW{h@$qPX<)RxeH9-B{zP?B_|(nSK~c0sJ=O3h<6i z7|9iYRUS`u-TC+q)C=2`EB`QqoHcuAR`03R{qV$z8zjodQ=<U*Bji;CrHV+l`O#`O z4J%9<lIF)YO%aj6QL0G7Q~=;F@^ygX2h06AnG-)MV&ykKtw&6alDzA-mL)mIH#i~h z`h>tyR1$dZ^Dz#;D2HIB!$`>^nBX6UMgz({;l6b@zuTdj1X@@Acha9Z32*i9ztac* z8PJjcaz?m!olFe)v_kl3!V$cUH06ssH4c&7I~?SDkX?%Oc_N!>MB=%NJPQv1n7*XL zQeovJ8D%+bn`KVHHv-`6K!n%zi0jUWq^&vMy)}>l5Iy{V=7F*Fx@=P1Ai`BS=1_-( zn#V0ARHiu77*IVF+N$h7u=5C@g|YmLZM^A;BpF0gs(IDlTM`Jk8cMz<#ubsRbSGKA zvU9a_<(%bukyFa5ZoLN9Cc0TKxz$Y|E(O%A{|xXwiEjh;Kg;`qrc%Jo+O#zo?ktNR zAOuu|l*cMlg7eom0z@+MSz|Fjw2p@dqYE1xMUPo#=eCkWEAjR4SBY03?8@*o_r>a~ zi*rVM*mEFI$1LMz4By@-3)Xd^ii#VBRLP_LLXid-tTKYECn8q-LsW`Qj}=XoSHsKO ztxNUp<<_EgJx5qsOVtqPi$(_ZW1(Q!k#?FzCoWm9vn$axtRrP&0Sry3y-atuW2seX z>&DCO{r+(ldV2O!uhrXPL3<NHS72cVZ5*PPfC|ur;CTTLd$lQbUw>1&=Dx?kE$#!m z_XR?RWXgWcobU?F@E4q*K}@;WOn^s->q$pEf3OKwA<P!fQMxKD8^cc1KjI^6CJya^ z*I?NE6<Jpun(A%(RAIR$-~8l9pME6Owt9}c6%7O|S^#d0wE6CJ(_}JA^qKOAO!V|J a@U)}mh^DsMb}D<<_YZ-^`%;PcWd8uL_80vC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b0a3c32657f342f9d89ab03aac57517202b71a0f b/src/libs/libsrtp/fuzzer/corpus/b0a3c32657f342f9d89ab03aac57517202b71a0f new file mode 100644 index 0000000000000000000000000000000000000000..f6dcfef0e831fffeca13f02e8f134a578615a4c5 GIT binary patch literal 533 zcmb_ZF%H5o5c4r1rb?9<I?xFgCO&{zP$yo{k%>8D7QWCI@t%Hw_3GSJBBhmBuo}h6 z+3sB;TR60Qj70SY#0Ut<$w-Y=!Rl0Dbx=pV^t|c&#NT?U?1&kR09qsD{_$kwGrjBr zol&sv1WgKwL448T#^u1Hhvu#y4mbS21xtM9x8PH;?~bE=rpo)XX6h;Y1*}5vg5r?$ eEEEDwD4E#0{%%|Reh=@2(mfE;{}s4$pJ4zMs9gI1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b0a70264a9c59cbca4f87ce3938def92b0434763 b/src/libs/libsrtp/fuzzer/corpus/b0a70264a9c59cbca4f87ce3938def92b0434763 new file mode 100644 index 0000000000000000000000000000000000000000..a26f308a684cb679040429bfdd3ea3b3ec07b46a GIT binary patch literal 106 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc o7&sXiWEp_UDh%fcF$lK<g*g}+80K&=Faenr20%du1(4cm03DqW^Z)<= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b0fa5d53ba8dd1aaf3b86c52c46eb4e8690aa5df b/src/libs/libsrtp/fuzzer/corpus/b0fa5d53ba8dd1aaf3b86c52c46eb4e8690aa5df new file mode 100644 index 0000000000000000000000000000000000000000..4cc9f320b113cc32309ca50c54817d92e0f063f8 GIT binary patch literal 205 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5}8-b$WRSb1r&mi(O?FU4M7lb z5F5gp2-XVH2?QLe^$ZLxaKPXQ6ibaSn+}%zFUHouX$WSj0m<TO29SHec7p|B1P23y k0)sGv3Ijts!yE<{1`Z(H$ndL3o+CA%VGd)%93guK0MiU3*8l(j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b10f95e1644851b913a60078c8cb34a3b0b8e27f b/src/libs/libsrtp/fuzzer/corpus/b10f95e1644851b913a60078c8cb34a3b0b8e27f new file mode 100644 index 0000000000000000000000000000000000000000..af761e9c13ae49c73c81098fe58db23d2913945d GIT binary patch literal 286 zcmX@e7?4vG&%wZu%21S9&j1GhLEzW_|BU(nJs23Os~H#=f#S1(Sh1MVu)3HLEEdi1 z6%0UHn5=<nN|S*s2@n@I=w<l-kAaDSp`mz=5JNab-5lNHK*pR^?ZONkK*+$r0v11r zqK2UzsDyz5uIB$7kjVf4V7HwEYna0THV2^wEQ)H^9f%qSs5wYhFoS&s@+{CACLmSK HP+bWCGrc*N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b1125b0a2c6face1f55a14a2cb75d2e8f188ba4f b/src/libs/libsrtp/fuzzer/corpus/b1125b0a2c6face1f55a14a2cb75d2e8f188ba4f new file mode 100644 index 0000000000000000000000000000000000000000..590121a114a9ad62489c1bcf2da70029f7bec17e GIT binary patch literal 2118 zcmcIl%}Z2K6hBYJdAb@J+7#AEAJPYwU@Hs9RZ+|;aF-7kFBlRX=4qstQUV=}Hi{c- zsGvpo57g47|3)rdMJ+^vy8V9VzONb7T}S7=d(S=heEiPu-WPnGmH9wK8Z|#$#v5X- zt%@ue5f8I4cs{M_(;n8Ut+b>Gv)18hwpbgpXJU)>u;wpIvxKR?#K;UOJ@Kk^<TP%Q zq(ruY56;R8vYo})ld@{e=v9n+ZMTWk8<n5ObgAeC<2rCP(p@lo5&~SMcwasWT$fPV zWp&ts(nMSl)04(P1nMYfO)5(qIjzV`V@7JSyJ7ne4xF-b&aLfh$xJvYk$RoSI(euX zDARv+u|}}7&V@7e019pA6iT~?nb!zysU{UVK;c)AD7Jdqv#JquQCjRrTq3LM5g&h^ z>>Vq?5FnefzctDny(Xkdldp6nuQp?Ne&eVQt|1k9pDS?}no^<PSgypdl;Os#IBVU4 zHPDBTV%9m#8bd`YMQ*znW5@tEnn;U-Z}hL_b7Pm<^gBxh(cHL>Ktsu1?N}S$8q&G? zc??d4?*I_cQc5g9qGpya=Vkml+G{7dkdsds!_WT>ATqhLvv`wX4W33uw?yi<R=ok~ zCAT0f76%Fl-Y14yyU6hHaCTNU<&B!gjqgqx&)Z^VAq?t$;w$_s7`a9OeRn&=$DR9A z@@8OlHA27Ut^{B7O6X#1_oT7uB331d=CVc7-2Kc&Mrf-4+Jr(L4rP)Z9kiV(Djc0S z=qtpO8CA*{vly6K0Ph&3{9&v+^UHYVugr-Uq&)9VvN^PeHqXr!BI86k8jo`@5kfHQ zE>`eT;{HncW?3(?N|7d9t>%&9U6Lm_$RdB%@SvQ>4?b{ZqJZS`wE)`39X>6B?nT<f z3ouv+_v?+hq=UtyRs~9*2qa`@GJ}!zY(|azhXlw~c^tSUPYv15CCvOzqK3xO?J&v` zPQDfo+Iu?~nRl_VUvGp@!$uIzy3@|>O2`)@t<|@78(HZz4xOb>mJv~k0+q0>tpLaE zR|zz*brr;vwzw*Yw8(_(?IXQVF)vfeQ|?5+z3YhMxpr^Zaef<ibk$yRMrD0<+#a1o z9*}D^%c{l1eYxR17WMO5pVt0hV<efO`;cAy9vARPk54&=Fq*+6#G6bz0#nF8KEIMQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b12e52a882f814bfe59003345091e01753cf5ee2 b/src/libs/libsrtp/fuzzer/corpus/b12e52a882f814bfe59003345091e01753cf5ee2 new file mode 100644 index 0000000000000000000000000000000000000000..6a17501af3a3de826bfec3f4a672a4788a3aafeb GIT binary patch literal 103 zcma#o%VQ{sXJB9`TEmfA52S(M|NsBK3=GxP3=E7Af$CyLAXl9S!h?~zoD2-IKqaM& c40ED|z@ozK3=DG^1Q-}N7?>c+>L6wS0IgOH)Bpeg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b1652b614cf0beaa3e36f67925b430c8dd15b49c b/src/libs/libsrtp/fuzzer/corpus/b1652b614cf0beaa3e36f67925b430c8dd15b49c new file mode 100644 index 00000000..13507acb --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/b1652b614cf0beaa3e36f67925b430c8dd15b49c @@ -0,0 +1 @@ +;& \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/b1b72da7f573b84560265a560b936d2064774bb9 b/src/libs/libsrtp/fuzzer/corpus/b1b72da7f573b84560265a560b936d2064774bb9 new file mode 100644 index 0000000000000000000000000000000000000000..f392f77a7967058ffdad00f16c16075bd41b2c6b GIT binary patch literal 110 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+Yj{j~YXDF(Xh+9n5E7kOa~% pL2OP223epwp!6Iu24e<>oYcJd<ovvnqWl~N1}2DV2vwZJ005C06IuWO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b1c2915aec9478032a8bc6563a575ede43894f61 b/src/libs/libsrtp/fuzzer/corpus/b1c2915aec9478032a8bc6563a575ede43894f61 new file mode 100644 index 0000000000000000000000000000000000000000..02170a73f81cc82dd890c0828da79f065aedf75f GIT binary patch literal 2386 zcmeHJOKTHR6#gbgoC-o|a3dB|kq9mVLR}Rxg`!aH!nKPblo0|k4H;9U7n&d`aZwNj z7lmxZRsMwH&v5B7D|d+?_WGTB=XPeQX|-5z;UT$?^SbAq0MJ^m0od1-OWX)o$A}c* z$=So!LgYbJ_6VP3abP(%DnJgX*6Z*$L;%F=<t1}$8Wq6VR?QDP1|_fIJ{~yzM0P~K zeARWsasgJFml<H*+QEzA5x%*Iw;~FC;MxH2^OQ@mQ6N8OG!;NHAIyNEAZ-u5SFt@| zV91+Q*%C2>d~Q~)zi2tw+wZBlXe8t1S8C*?G|y?Ahr{7O!eRrLI!X+Y&-oZ~e}c_w zy&cA`7lNisL6=1MjBQ&*Mi?dmBKv+ki2|j39&>oeSQ3CPuPK2yyh+BU2~Z}ZKox5P zbb6wMKtYkT3T(29f@e{bT=68O=nC<UD?~D$G3>x(!dh8in!T1JcvTXfEzdQ4c%{#e zM)YB7Q<yi)WKgWdde{iot@=`?b*yEsVYo;6rIO!=r{abZ(mFl@PlLuglv}kIZ#z~I zO-q%f;C6QRb?>FLiRD15P0rc+SGUrcVY24Q%I-|T^7cv$Udp+Q*{dt$_dvG8sh*Wo z!(a5630zKTm8zm)Y)&^tm`wL@my8Mfm7jt1SugH3TQ|Xt217#p;mqKxfN6HMc#N}0 zxoR{#yGb7tlK~rsm^Rqi)q9#YSSY%K8ACv2OoR?<uh9nX5=NuZ%*g<sHDshI@AkdS zD|RT^^%3dGCnz&O3{Lal#kgbtd}FG=X?&mbdMw6t#FG-FQU3?y$p#}^rQd9Yk3*MO zw{Haz8m2}5&DnYIBTj=)VRqU-6n}UARi@29m9#OvIchGj83<l70*@VnTDdtVl7t_D C#ScvY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b1f12b4bd20fab90bae94bebb056697ca05a5b6c b/src/libs/libsrtp/fuzzer/corpus/b1f12b4bd20fab90bae94bebb056697ca05a5b6c new file mode 100644 index 0000000000000000000000000000000000000000..433f934a43d9af58e7d4c994cdb15aa2f1249f2f GIT binary patch literal 1003 zcmd5*Jxc>Y5PfqRO;UttAcYVNiHM@YL9i0RKx_iq*eW6+MIaz}v2j5y6g$CEyx$W4 ziGBXSDHt-&>>XZW`~n*v-0saV`(|d}EV#~m2;iiZY+lGNVCEe>-f_CuGhz;SYtH(e zQUFgpBvw^d;}Oi(eT2sT*Pzri3g8zQ*Ppdyxf{Swf(l}B%DSSZdR~h_ac(Texk2@s z#L~76J2l=r<?dd`Z67y|+RgQf)K>|VU0~}sNjRa2OW6(Lb5aVjOWoiZB>f#|6s_4D z7|UT}(fz<CIWm96ZDt@>uNY<0az@gLHbFjrC4m7VZR8S*Vk4#E$VbM5QS}6`;Rf_K zy$9|-so6&&Em10GLastZkGYCE0-tjYQ;l&MxPBR{zk$xzSP$Ri{f9lQ{Lp84nFo-m zCxjy^{f<gjL@1XPsxNQO{?I&}tX?zcTC$$0G)(yoRcR<l92h<_qeregQxnE>^ldHp Mu+PFpXib*h0FTDovj6}9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b1f1b196ad277248bd22e963655405cfeffd5952 b/src/libs/libsrtp/fuzzer/corpus/b1f1b196ad277248bd22e963655405cfeffd5952 new file mode 100644 index 0000000000000000000000000000000000000000..8c9cbe855fc29c8b033e02468b7ef1e62725069a GIT binary patch literal 1023 zcmb_bu};G<5PfzdNF)YCCx$8&YLx+{VuytfKzu@`4jt%FnD9^*)P+yz#z*iwd<GN8 z*>|qn1{eq@#g6aJr+4q2n+YBt8UTw~K3($8MnpG&bAS;C+`W;HeLmq9mlCN_6j)_A z>u$|t4v)kvrqrKF`GjP=fmGsDf~~b`dAc|R!uo`34AEZ!qc#6#sE{)+hwpqK;w8~l zn+UQfVUI&hI(Y)^5#)paXM4rBk4Z}fcWo40i(_Nng6vt$z&Ao{dekIkB~Pq;=-jw- z9vT-#@dNY8dQuJy!eFIJuqeTNJ-<-T-Nm89>s2-g^joDrh;gwk2G40~wli#o$dG@5 yec&^q$mXxG$#NM_1<{eBx2cQp?#e36k4nVpJH{8~f!3ZY(yUZsC;5ki-1-8A=a8lV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b1f58f240f4a90d9c1f2c6da77e4368358fa226a b/src/libs/libsrtp/fuzzer/corpus/b1f58f240f4a90d9c1f2c6da77e4368358fa226a new file mode 100644 index 0000000000000000000000000000000000000000..1ef2fa55947fad344c7f7a09fdb9b7a2f68d6d87 GIT binary patch literal 83 zcmdl#;Xl{Qm(>gm4FCQ+NC7DjC{|zqiZFthK%%;sk)ayG2dM)}1NqY+Vhmm&0iZA( H{jUZ9A<z(- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b23e509660302582884606a0bc8be9a4768f804e b/src/libs/libsrtp/fuzzer/corpus/b23e509660302582884606a0bc8be9a4768f804e new file mode 100644 index 0000000000000000000000000000000000000000..f037f6dfea979e27742ff5f6300f35b5f0e3b185 GIT binary patch literal 181 zcmdO6WMHt3XJB9`%H&9`2hu?B{})4bweNohhFd^MhSd17#GKO9_=1ew#AJoyj6~f6 zP6h^924)VR<PnB;AUTJjU4TJ{fx)onKXY|4ND~k!G6{gF)}H@NLO@!90muic0rHX5 kfK&jL7XO~b0M-Uk16N@LwBg7R8*3l|0zjqldU*^w0PUVA9RL6T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b291c888b73545b92980e02a535be54e949e389d b/src/libs/libsrtp/fuzzer/corpus/b291c888b73545b92980e02a535be54e949e389d new file mode 100644 index 0000000000000000000000000000000000000000..a08da334f6b7443537097b31b30a9f2901e106b6 GIT binary patch literal 180 zcma#o%VVgCXJ}w3%H&8@V*rEyYz%%34As>@4m(&NF{d;&zJQZ~LzaP&fuRA&VgRuO z7=FxQXa}kQlEOef2S~BOH)aNgdayQz|NsB{0$KGO45<v6MaP91{xeiDaQy$z;K;-P gF;fy|CT9W2%>Vxd82-<(0$L3<3uqFmSs+IN0JgCwB>(^b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b327968a2a9ee61ecfe4e1db00c2ae77e9bfd6c7 b/src/libs/libsrtp/fuzzer/corpus/b327968a2a9ee61ecfe4e1db00c2ae77e9bfd6c7 new file mode 100644 index 0000000000000000000000000000000000000000..406f9255178a3d17c1a83354b40b29be4e8b617e GIT binary patch literal 273 zcmXv}F$%&!5S$aiXe9<qOG{6|GL1e!e8LraML;85QUtFsV3AHppAYzoJjg#}-Mb_U z$FeiKGjmOa-?yS>HaVfIC3YXKBTwrd^3A3KHtmsUV5YzdB9eG!iZPqki-7`alp#+h z4)m)-iHLn}TR`+{UiKg$EMEh3MpSre1J*9br~|Yk5J(vf1fDaMZ?=muhg;<sK)z@H mmR-UUP%=TLI5q2fyMm0q=gm9LE-tG3k7K2jEcf7d)%FkjoiwKa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b33fd53eaa2d1a2352f898f378fe364f621b5baf b/src/libs/libsrtp/fuzzer/corpus/b33fd53eaa2d1a2352f898f378fe364f621b5baf new file mode 100644 index 0000000000000000000000000000000000000000..964dbe7fbd0756970f5aafb83d1e5e35e4b956ad GIT binary patch literal 147 zcmdnL@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO psNH~}4y*?x#0DZDKn-Xd1H(j!J^%kPFre6@2eZcvY)SP$1^_%ICi?&Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b3625fa9028a46535dd1a49acd1b70e752b0780e b/src/libs/libsrtp/fuzzer/corpus/b3625fa9028a46535dd1a49acd1b70e752b0780e new file mode 100644 index 0000000000000000000000000000000000000000..878205abc17414680459c22fa5bb392913865b3c GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtAd`_n7$j0%%m|`@V(MU;g~1w30|`zB g23er8((2+lykIfmb_RwyK-Ru*-x)Yysz7u#00rj|%m4rY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b36336d1d29dd3ff1cef4b6784e3631a5f555b8d b/src/libs/libsrtp/fuzzer/corpus/b36336d1d29dd3ff1cef4b6784e3631a5f555b8d new file mode 100644 index 0000000000000000000000000000000000000000..e54142f60858df2f7c4348179cb31b231f87d9b4 GIT binary patch literal 881 zcmc(eu};G<5QcwGHLw)2Re+cnyD%dq6BA2UhKM0UrK&<i9l%KG1TT>XVdGU;7`k>q zm5_S;cWxsQrL480^X2^e;@o%6hf}=d03OG_xa7<sBDX*YbbA)aCbJ@cIDkKc1LpKT zhB#a-RPnt|2RJer&P&dL5?RZ;hC=Bq4@1<_-kC#RpSbqZxn}B(&IDguSrhC|`tQd5 zoq(t2$Diyc!lrV7*0YaQjW-sHHsR#8aIeQSm3mtoBvg!jWg2;g7eNNxPojpPmNsMn zq!v>c{=%X6iIFB@@S0>r60^}XO2fv}+-PKv*ji9`1KYjwr_o}**fXu%tww5IwbMFq krB*9zT%)Kmy(cRjb}_<LePW`7INj+yZct2>QvkN(7ZB>Ep8x;= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b36abefba8e582309e15b81222eec2444aa5f969 b/src/libs/libsrtp/fuzzer/corpus/b36abefba8e582309e15b81222eec2444aa5f969 new file mode 100644 index 0000000000000000000000000000000000000000..352dbb4eb55e6800a2d07b40e32260ae6568a36f GIT binary patch literal 1222 zcma)5y=zoK5T8Ah@GdstE~L;zuMou|7PdzqVrK}JsU#p=@ftbqB~7--75P9&Z}W;k zIxDL*ieP2uA0b!>fpixz;l|%@X74iy&fS~cnc4l#=e`kA_!K&=Jli)xRCQBAj6v?+ znC7dKTmQua4ceEAw5uX3lsb9VB4%G5Q(}ZKT0pS~{>3LIKb>jX3TF3jovRfvHKcwl z@~FgiMl#6)f_2)BMVUK-UL%2NXLOfbiA=lN#l=#9EMMffjwK_~Q4dUkd!JHef&B19 z?=bX4XH8*-3sAfO0%(I_anm4^nsKn5ZLs%<H6#yvwCEp1wW-)S<Zo06^;*A2qddk} zKw~yAtJy$qjMoqcU*QuNM}O?3C>ep5jbfB{9?IJmM9}s#Q>10sG)7B$(8=dp`<D8s ziRT;Vqz_}*W7}bOQk{C2?9g6eg<E!5Im@$l6|{)htXzWzh&=ZJ7>ofMTNCXqEgb;H z>QQAu@P$}dn-gYQZq|yF8^<@2yyLmd;|>dY{S%W)V46VsI@g!x0YXLo17UUr0ZbrZ zXl&jY+wBR1W3^br*lb!^M-Sn%-SoROT^*eCS-PYiE;bx7L!eGw=}KLeSul4F^{JbD zW_RX>GmDYJ%ywDQEk9DOe#fT#h`CRbYx-{!XZSYCA7&`U&f9B&V)B@o)~BHS%rCp` n&kQf6eW6$QAvv^SU`oi7k?^`D7IcmMM3xWzHENR&Y)k$EYcJ%X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b3c38cdc5412279d62511330e04a00ad95dc1a93 b/src/libs/libsrtp/fuzzer/corpus/b3c38cdc5412279d62511330e04a00ad95dc1a93 new file mode 100644 index 0000000000000000000000000000000000000000..a0b4f380e778716b88f227215db19ff82aa61e66 GIT binary patch literal 332 zcma)&F%E)25Jf-QXh*~tjj^(@5h^=RU}0~!iH1a?f)Oap7SeeMFTe%3jyGZa3&8{{ zUoo4^{F(VXY6US^x1i@gP$6>k&sVKckjw;wr$S5=1udm)0V*?#g{G=wi@8NT4D0H( z3&44z64vv+(JjF4Dd4(cqz-AEL>J}1+wA^g+^E=0JHICAqz}xvF4ggC0E__Tg-H0V n`Q8^NFkZ{*AR?$QBQivnX?on``F*K@j*%H`N_haHOF4Z2=2~+B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b3cba0ac0c13bf7ee873e11343bb0c9920d9615b b/src/libs/libsrtp/fuzzer/corpus/b3cba0ac0c13bf7ee873e11343bb0c9920d9615b new file mode 100644 index 0000000000000000000000000000000000000000..b78ad28f60589c3afb521d0b2611f5df720e6313 GIT binary patch literal 85 zcmYe!kFP3;uP;jFU|?X#1Y#igulE1HKZMEfOq9W}4+OZ1;|($ms;lGUGymuor^Z9& Z8B)9J;~7^2H8GSjFvK!4*d01l4FC?37*zlO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b3e1785e7dca08bf2757feebb9a2648f29a3a1da b/src/libs/libsrtp/fuzzer/corpus/b3e1785e7dca08bf2757feebb9a2648f29a3a1da new file mode 100644 index 0000000000000000000000000000000000000000..ee7b1ea04e39ee4c477d49b5ec6117118cd49859 GIT binary patch literal 1966 zcmY$J`2U-jSj+$a|GzOfNHKtc0s}*FH3I`DBajEgjMc>q)j&Qf_+wj~3K97Oq^d!H zfx#Nc%w*sK>H!(R$^g~{G}{-X0<7Acfs=tj7ARF(T|5UW_TN8~BefoAQ-$FiWd>!2 z|Ns8C3q#EQ|MNdPhy^tRw}B928NtR1F~IypC4a~QgMm`_Iz!yf01N<P!dU_0e+C9J z!`Xy>;Y?}Bpd}6Tm;^^Z&SXGhu);zWcd#npO}+$!RfE#x3vr<W5n0eSm7y4v_kdtD z3ldXgkeF5!z(ETNUGj=Lf@y_%MIDW^Af$pISeP~t6;k9BruRV=2vXrsVoZV~5>$`i sj7bV}J=T~+)O$c{fgDKqf!uNxCjh$?>`t%-5Em3)|LfJOb?d8(0eXka!2kdN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b40035ce3c4a82585110a0e4773a275495c560d0 b/src/libs/libsrtp/fuzzer/corpus/b40035ce3c4a82585110a0e4773a275495c560d0 new file mode 100644 index 0000000000000000000000000000000000000000..eeed890887a40cfb48d4edc23ae3df8cbe802c41 GIT binary patch literal 99 zcmWIhZ@^FzU&N5fz`)^J&j1Ghfxs7tAUp<92BSV8aD;LZ6eAOmUC2-kBs~}ys(~~k OR1zcv0*tlssnq~iZ4tTv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b41513e38a40c11ae772fb7a1dc46849306fa929 b/src/libs/libsrtp/fuzzer/corpus/b41513e38a40c11ae772fb7a1dc46849306fa929 new file mode 100644 index 0000000000000000000000000000000000000000..8237e15069161866551aea50e82f0c044a8a422a GIT binary patch literal 729 zcmbtS&r3o<5dPLepB^L<Bm~JMqC<&b-4Yb+A_)BhAt4?Fsqon$7Sh85I|UshFI@uf z;qghA{(`PWSO0;hV7blCzJ8tiV0U)EH~Y=Zn}I4TRRz#$SoIEBf>Nr2(Y1<<$C9pd zRY))&NPDm)vJiBA2`~r9!i|p_9)WiC7|665mv^ML$39QKrwE6TgqlKT`^(J5dO)8} z2eee!cVkn$DESaNffe&D&k1mRh;oTYvCnR2(k97>uh8CUp45(-_1zq0n)8x|<|3p8 zO1w*qgnpu7vRK-5y@{Gr#fO>{+boY?@+f@!!ZkwLlhuGk^uM@@&gs`{{8iF1{)D66 zc=5PHjvoBpAf?-;5Z1k+C8Q0hyGNKA1H9+$TjjoDjfho`%6_ARenyBHV|Md^M&j9w z1hEx#NpE;R)HwB<KeVf|WA%`cm~|XXKPJuq1H$<h#r~QQR@0>!Szw{ZDk3Otoi0Xp sn_H3MR;=rZScFBJu0S9~_bMkAq|*;LE3Q&tL#hy@Ba1*fU34EBpVKe2$p8QV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b440c4a8e9536d283137d567fc89cdb3920dc209 b/src/libs/libsrtp/fuzzer/corpus/b440c4a8e9536d283137d567fc89cdb3920dc209 new file mode 100644 index 0000000000000000000000000000000000000000..f7d25904a58dc0c18cdd163ca7f1c9925df40b86 GIT binary patch literal 1932 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BN#)t>=XPMtRYNY22M_f zb`}OD%0awd9s|fFj76#cg)<?>BV3{ical7VB-B;tlsdWqh;NHckQgxxCom#8fk^;p z1iA`cxC%~r2CxbSm`_yyqXiH#E+AeFn&HS?L|lTLe-DS5=w4xfdxa6|6?7GNJj*~+ z&r%^x;0OeS@GuA_d|47TO@K2xj#y@3WZVue3Rqz20G_0giwU%xp)v;;lq?J!K*-3z z{s74N0WC|awSfgmH7uio^5#EaeE#QPV2}kDHi%@$z{DWW0L*2rJ^z`jbHN1>Bw5p_ zoB%onKcGjNu*REp$ciIi5Mo9LexG8>A{QuVY-*(?SdBxEq*QG%M+odm;dTawIlx3J z3*<4Oc-yhg1qv8}Nz_3KD0zl~LG2quF|1l-^mYLX0uv_C<w{C~aszT+;Dg%ag2)X( HyGj`VU0VD8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b447fd8e1f131f7cd3f82e8703a5ad3dddccf205 b/src/libs/libsrtp/fuzzer/corpus/b447fd8e1f131f7cd3f82e8703a5ad3dddccf205 new file mode 100644 index 0000000000000000000000000000000000000000..0af81ac03d36888c3fad626c4cb25ad122911d74 GIT binary patch literal 102 zcmdOk&ts6Bv|!r*|Gode*E4{@|NsAe85pXo85$TF85ktvc{mt~GC8V?8G&Nz5G4%O dP+FD&sHDPpju4Pv#K3_t0iwTwfk6Oh6ac+!7(@U7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b475e35ef68932ef1a70e67488b576714fc073ac b/src/libs/libsrtp/fuzzer/corpus/b475e35ef68932ef1a70e67488b576714fc073ac new file mode 100644 index 0000000000000000000000000000000000000000..ac05e331ed8ca356bcb367c5334f1936216e3690 GIT binary patch literal 628 zcmZQ%U|?WmWT>tNQVdc+4g&)xGGJt20824MgBd_J7{%-5F_aW#augt|C4*gxQx6l^ zEetQ+fZ*lJmsr$=Vi7|ZVtDwUp%`dVHKVON#6Tds80KGy*BTK(0;&cqLKQC~yy1k^ z8&>EphVu>JENl#fxwwJ{n=VeUHcsr}iB$s@L8#RT7x;jD_VOh#0U1nTU?|XUWt3%L Y1BERRSOak$FikNqxHHHyFoL)Y0EkUPB>(^b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b47b8724900dd415fa9201a7b3b2720147a0ba5b b/src/libs/libsrtp/fuzzer/corpus/b47b8724900dd415fa9201a7b3b2720147a0ba5b new file mode 100644 index 0000000000000000000000000000000000000000..aafd0b389a7bef4883158baff73a625951980518 GIT binary patch literal 458 zcmZ`$F>1p=5S%lHoLw2K3o+O(0<KcH38YcrDnZ^L2zH@XBGrNH&UH$IKH?^NN1mV$ zIGxY4C!J#q9?;xsnVr$C;8Z_J0pyupZ+H^UxewIeZrC)IuO}Bj`ab4I6znJsHDRaM zb~}DAjWK{N6l~5%Mm^p_F?hfPijvoA?0eA;i|W1^{ftpp`OjUx46B4;bn~JwTl`z1 z!U#XdKj<aHBK_pE0!^7O-xzLX_2nL0Y9g;rEhmW{GV-UdZz$}?x!{D$end)xnXDq- n6Td<MvO!=fB3qDNq$0TXL@}~HplsvG{>nU8t)^x9U$>~w;xSJ) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b48701709424c09e9c262b0367a66718df647b80 b/src/libs/libsrtp/fuzzer/corpus/b48701709424c09e9c262b0367a66718df647b80 new file mode 100644 index 0000000000000000000000000000000000000000..0d7d6b3c113b6f0ff44b64dec9d6c6291dc71afd GIT binary patch literal 348 zcma$54*`rtnH;J03}Ep8e@1FfL3K65HYA`IpT{5>50pny_}`a-0jRKn5hwwZtuAH+ zim5})Vz36&0t^hC3=FaiKy?+xbA*6m+ZY&x+Zn(*k!%4mb+>_(NrUu(jACH8j~zfQ zgvkRHG8Oy}1G@)mVgVCKJ5W3yA^<TCqyp+Xh~t1NppGl820Km+tczg|6VTZ}01Y9K i=Yi&Vu3TBEQw=l}EC(X~0TnPXXk<bJKvsr?fCvCP18ocd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b498d0f6ce383ab6aa52d7b786419dd839747bd9 b/src/libs/libsrtp/fuzzer/corpus/b498d0f6ce383ab6aa52d7b786419dd839747bd9 new file mode 100644 index 0000000000000000000000000000000000000000..2eeccf42d11833985fd97b86103bb69231d5a27f GIT binary patch literal 79 zcmdl#@jutgm(>g);2;I27!(*7s(~VmARdsYu4V^O#qrhk9J;#g42%%f49ve7>RTW> O7#KWPuB_ByU;qGla1Mz8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b4bbf596493692f306c888391e41aaeb59d3e417 b/src/libs/libsrtp/fuzzer/corpus/b4bbf596493692f306c888391e41aaeb59d3e417 new file mode 100644 index 0000000000000000000000000000000000000000..a452212c2e5801482e5cf75d48a4354457216eb1 GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(ad4wK|y3z#z%M x@Dj}AWMGg5ssl>T5n?cAV8}_$i%-taD=Eq^E(QuS6oWv1b+H2j1Cy2s0|3p*7Qp}j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b4d490f1f29780eee91544d7451a5c977e0acb90 b/src/libs/libsrtp/fuzzer/corpus/b4d490f1f29780eee91544d7451a5c977e0acb90 new file mode 100644 index 0000000000000000000000000000000000000000..a109f4ffd8369487860cf344a52ab1bcb09d5d86 GIT binary patch literal 76 zcmdl#@jutgm(>gm4F7&RNC7DzP+(vv28u9(*g&GXn316x$k$<b4g~j~LsWo8p)x?p HYM>GTJ~0$s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b4eb663685b5a179cffe6a121849b1f06d102f3e b/src/libs/libsrtp/fuzzer/corpus/b4eb663685b5a179cffe6a121849b1f06d102f3e new file mode 100644 index 0000000000000000000000000000000000000000..d3086da9a381c23a2eb360d70502f5b8211e88c4 GIT binary patch literal 107 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY7mQ)p^}k-ff39G%ODf`5FDoB#In@*<ovSK cqQvyn_~O!v+}uQldXPS#!9c*E%356w05oVDcmMzZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b4ed8fb5213913d7dcf0e5a72a3c1e2ab0f635f0 b/src/libs/libsrtp/fuzzer/corpus/b4ed8fb5213913d7dcf0e5a72a3c1e2ab0f635f0 new file mode 100644 index 0000000000000000000000000000000000000000..3bfbf21bf83942ca605ee6b29b403d68c3dd898c GIT binary patch literal 103 zcmdnb%)lVb&Q<-Nfq}t63P=Ef0s}*JH3I`9hz%sFiy0ZJ)q%_~28NSBAts;@GnB06 ddifHl6bQcagDDW9z`#%p*3DQAq(It_0RYju4k7>m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b58033dc578bbf699bbf4c0dfc07678b08c76783 b/src/libs/libsrtp/fuzzer/corpus/b58033dc578bbf699bbf4c0dfc07678b08c76783 new file mode 100644 index 0000000000000000000000000000000000000000..9c2c35da5faac57342d9c94cce740a9f9985f5f1 GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlmKyft#BamqU6jO(YSOX~z5R;P~ UNHi4B5rzn$=&NP|sQ`g$0G})lRR910 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b581d89809a1ebaedc42ab614a61d3cbd40c5aaa b/src/libs/libsrtp/fuzzer/corpus/b581d89809a1ebaedc42ab614a61d3cbd40c5aaa new file mode 100644 index 0000000000000000000000000000000000000000..6deb058b0ff65c4a1de20a4f6f6290de3fca0e23 GIT binary patch literal 601 zcma#o%VQ{sXJB9`%H&9`2hu?BpH~4)GcYg$>D2hLL?{<XF*2|<6mT*y$b#h<<}kDa z1%ae6km3L-Yx@Qy{tJPaAOJSIGc}W=p5ebQ14DH+)X*{phIqKK5JQ;|hJxGx(N8}& uFoHaW<^~0*BSum<fFl?h4j9o|#qj_C|9^}ONYMxkA|*IrU?_(K83zDN2~q|C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b583162b28fa627f80ed2d06cfd4eb1acef39541 b/src/libs/libsrtp/fuzzer/corpus/b583162b28fa627f80ed2d06cfd4eb1acef39541 new file mode 100644 index 0000000000000000000000000000000000000000..e9bdc7adfe2b0a2ed6e5b3bea19db294754227ad GIT binary patch literal 48 rcmXS}W(a)A@Uj{PiW#LC7#OOH=Ku)?#%cxzCLn_uNOA(n>gq}Wf4>au literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b598725c815f06686e3c8690697f0ff201d0b57c b/src/libs/libsrtp/fuzzer/corpus/b598725c815f06686e3c8690697f0ff201d0b57c new file mode 100644 index 0000000000000000000000000000000000000000..a973431aec82a48edcab7b76c36be7c84eddce26 GIT binary patch literal 1137 zcma)6J#Q015PfS~$|Vv~<m*6)lR#Js5<--?iCY2%KOj1}aAC>$P!6YH3P;EgA<^)W z?plic3GyHE3uscLqKm6|c{95{JBbTM^33kc?9A?abKYMC9)fbvPkJL=0N(qzz#9Qv za6k$de$q0}J+xy4cK%LYvtT?!dJH@%S+M>;X+XmxLE`+4&e}Wn#ht!G_9?+Os#BT- zeu~dmTzM(V2ed$kLCTgE*F~lZP198GbE+?VwTmS_C<OK<hek+CwS=G0?|HjrVxf8X z7Mc>#?BzJr(_K~7kx=rZ`sn;?+u3fRpTyQYM}n;6=~Cfc8+__1%kAK>I~exz{TTyC z+9V;hL*f%3NBk6_-&d0&7g3CAc*h1oZtk;wiP2b#Py+DAa~Uoa!Ik3aY-08{wH&&G z!JeIATeGUj73GK*VdGJ9j1(Jw>_>EF{7wDleHw}@G6V?o=evQig^7hfVNSr<KelNN z$%5Lt9{=>!x7A|ZXyrnlaja<6DLA{Jake2c=C)wXy$UHdHw?^Bl;USI;cXRyUuBH) zm2;V{K*rMPygpCR>TCVbC1$XYO?gFv?%S$V7~M9C$bg|2+^VN!Kkm-HU9VkU>a8oF zUS@!PdrQRNc?9D;!;kQ3_7s}B>^LYM(s~i^Q+>N(l5}2H{;+5q*>pa-T)71*e5ZOu Qo%t%03IAdojEL|50Jg&IQvd(} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b6039be1a02771294eb95a5982883ae855433a2a b/src/libs/libsrtp/fuzzer/corpus/b6039be1a02771294eb95a5982883ae855433a2a new file mode 100644 index 0000000000000000000000000000000000000000..ec9ccafcf577620e61cd28f99baf513f9a62f614 GIT binary patch literal 69 zcmXSpude54XJD+J!@$7Az`)>M4FtuEKo&za7=c(ozyanJrKXf7r^ctG76?Fus~M{G G^z;Duq7AVC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b641d3fcf623bdd676f97a8833e82992a4743778 b/src/libs/libsrtp/fuzzer/corpus/b641d3fcf623bdd676f97a8833e82992a4743778 new file mode 100644 index 0000000000000000000000000000000000000000..8b49cdd8db25bf13b013e53e15bb9755465d5beb GIT binary patch literal 108 zcmdOk&ts5eWME)O$mB?^2hu?B|NsA8|NpmCGc+&)WhCQy7#NCjxvGm98LF$*<v=Q| w*+3)%g8%~qCs2EZ=^P;j;dY<^2SWqH91ezm1x#Rhjs^t=20f4!nH&rZ02D72$^ZZW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b66b945d4a1b8d6dc719ed083e4f95754d83c31a b/src/libs/libsrtp/fuzzer/corpus/b66b945d4a1b8d6dc719ed083e4f95754d83c31a new file mode 100644 index 0000000000000000000000000000000000000000..b31ffebaacdfd9c46342f700524cdf7649238ff7 GIT binary patch literal 803 zcmb_a%SyvQ6g_D`rmjlks#s`I6vT=T1VMxrvT)-!#2}Ft6iZ@VbihclErOqry?>#< zA@~n2Td3f8=V47#!Hs7zGxyvxcV^C=Cul5%Ef&OjEgFZ0#V$~W1@K7bjAombKboC9 z>ZG|gg4?+w_V~9V>V#n@3cMTtq7!)S@ao(llBt9la(Wg9NfCH6DUMaSS~1}t6T{0o zuW_D{?GtdCA{iR5J*g8Sk(hnkyg~MuX@gwX?eIumkl+k~1O+^g#$bD7pM&MpAwY#3 z&E923@Lxe>;ZxL0RL;V}T{~~;iZylXEeneojNUWEOo$_oDx|;4gdTDtRDEFD%jTtj zR*9N^O`ceWEt{HvT#@6n%YzXSv4st@ou&}2fW=xvA-*MDB_SsXVbEeQ8rG#wiDTg5 wUI?8As?kSDep(<`z$Vb|37eA>3RU6={YQ~2x|-w`JjxzS-^PhipkIK=7Z;9o^Z)<= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b6b6ebbb24ef7c3ecd1cd4f706c1cafbe710c9b3 b/src/libs/libsrtp/fuzzer/corpus/b6b6ebbb24ef7c3ecd1cd4f706c1cafbe710c9b3 new file mode 100644 index 0000000000000000000000000000000000000000..3b1fde16768d544c301a057d61644c55c43c7b9b GIT binary patch literal 69 wcmdl#@jutgm(>g);2;I27#OOH85ydpw=*y>A`37U0|kKsULZjr1BR-r0UZhro&W#< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b6cb886ee698fcd534ab3da6654ef579547b8c11 b/src/libs/libsrtp/fuzzer/corpus/b6cb886ee698fcd534ab3da6654ef579547b8c11 new file mode 100644 index 0000000000000000000000000000000000000000..826810d25a39cc7e1c16c2b2b215158eda266784 GIT binary patch literal 480 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0W^#45jIbm2T=hc z;Wo!(aWaE1&{VLKf$D@A8W`DtIw)}`%wD*yF#qEA3)oXIeb7Lpf?tq)4s!#6Fo(nm JC`#rq008V-Pow|< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b6d8a56fc5e82c823b9d53b45f08787134d67dc7 b/src/libs/libsrtp/fuzzer/corpus/b6d8a56fc5e82c823b9d53b45f08787134d67dc7 new file mode 100644 index 0000000000000000000000000000000000000000..8e429e769282bf8494ec10f726d090a71e458e27 GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilMuX~NMz9#e*RNk8!hsA7 ajtu|u7#LpQQ~iy}8mJto3IqZf9P0oX+!%uZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b6e96fb3fcc73bf1a984f147a3fd7082ee62d5de b/src/libs/libsrtp/fuzzer/corpus/b6e96fb3fcc73bf1a984f147a3fd7082ee62d5de new file mode 100644 index 0000000000000000000000000000000000000000..098e01b8cf633c65ab7a5a6e5e43e0501a018492 GIT binary patch literal 138 zcma!N00XA{qD+p|dI;zL|Np)W4As>P+aRET2`FyJ0ONuL)q$9SfssL&fq{#mx|k8H xvAS9vVgQ3R0|S!)i2YwUlYyalju3+wNGSx&0a8w!9RI)n{|02`feZ(NY5-VVA&~$8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7001265e0587a7acc0278f748a87b5912021a63 b/src/libs/libsrtp/fuzzer/corpus/b7001265e0587a7acc0278f748a87b5912021a63 new file mode 100644 index 0000000000000000000000000000000000000000..b0cca9838cc1cdcbd698541b80b62300924871b0 GIT binary patch literal 69 zcmbREe?QmDm(>hF@aI1e6vtQBbF?$)RWn2}F))OK#Q%q_Tv@3DR00$L^8Wv4PyjLh Kfd~+ffdK%=kr+1s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b72fbdd680d25a8f3a19798abc0348698d0cd3c7 b/src/libs/libsrtp/fuzzer/corpus/b72fbdd680d25a8f3a19798abc0348698d0cd3c7 new file mode 100644 index 0000000000000000000000000000000000000000..d8e33d387bcea2235d9db050af28e91764b21a6d GIT binary patch literal 108 zcmXAfAr62r5CrE?B|#8Syr2$)<PE%`3V}gTLvjKfpWv+=rL5RZcBT(2-5eI!a0fYN rHi0Uq2y~%JaB&(Xeg0P%^VU!z?8Dt)k6kSWE}{FYFNLc3s3cQgwY(Jg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b745983a72ce95060aa62d8e5209a4681f3e127c b/src/libs/libsrtp/fuzzer/corpus/b745983a72ce95060aa62d8e5209a4681f3e127c new file mode 100644 index 0000000000000000000000000000000000000000..8482cb9929c0469fe324d9aff7c998eeecc57ea0 GIT binary patch literal 69 zcmbRE|0LJTmkbc#UJV4roFGm$7=eY4GjM=;MX4#J$*C!+1tl3kRg4f-)eLW{s{w_w B5^n$i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b74cbd5188f5dba946b826ce65c36119fae3f266 b/src/libs/libsrtp/fuzzer/corpus/b74cbd5188f5dba946b826ce65c36119fae3f266 new file mode 100644 index 0000000000000000000000000000000000000000..a082e3cc9153c0042958641f2a94ef019c7c457a GIT binary patch literal 360 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozK%0eJ={0iYtVO1=LKC@M9;TI3n- zf>eOO|4as9Ac>*~VlLR2CZGjK=INm;CDlBjjl_FpC%WDDQJjg>ZU%<M)?m*GFzU3H durXH`GlIA}a8a-%1H(#&l|WDl=KcHs9{^BrP&NPn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b74f3d88c2ba867d41dd6f3f36529933eb2dc0b9 b/src/libs/libsrtp/fuzzer/corpus/b74f3d88c2ba867d41dd6f3f36529933eb2dc0b9 new file mode 100644 index 0000000000000000000000000000000000000000..b4764e73ed55662902d23c729aecc47f61af310a GIT binary patch literal 69 zcmXSpude54XV9x=_+8(^z_{sq%SwioD;bO`b*dQ{m>8hoABg_{|38e++|IyQ{hyto Lx~1CDasNI5*KQO5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b75b3aa437555a7e6f6ece21981361287fc666bb b/src/libs/libsrtp/fuzzer/corpus/b75b3aa437555a7e6f6ece21981361287fc666bb new file mode 100644 index 0000000000000000000000000000000000000000..866a75f4f046d445ac412aeae32bb426195ed751 GIT binary patch literal 106 zcma#o%VQ{sXL!I+l*y4=&j1Gh|Nr-8V5qKUU|@s@FjN;aLU6S@RKyxeGjK96$O6?F c0r^5;G2wOwhB;ss2LlHK(5(LqK$94%0W@$DkN^Mx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b75bcc4549e2de797d41bcb716295e20f2dc4caf b/src/libs/libsrtp/fuzzer/corpus/b75bcc4549e2de797d41bcb716295e20f2dc4caf new file mode 100644 index 0000000000000000000000000000000000000000..cd89c8117ef99803748b93ecbfe601d79810e224 GIT binary patch literal 93 zcmZ2I;Xl_)>1qZB215ph1Rw<g#f%Kq(?HBd28L=72dIJ($OJ2ckW-2ofg;6>)zcUm Qih)8v1P4HNe6=0}038Gm6aWAK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b771cc23ceac245c40b5e7dc3c63f7dc1b350739 b/src/libs/libsrtp/fuzzer/corpus/b771cc23ceac245c40b5e7dc3c63f7dc1b350739 new file mode 100644 index 0000000000000000000000000000000000000000..239e67c07c87c36da95503df6627215f67e18dbc GIT binary patch literal 1127 zcmcgs%St3c5RBR#wD%@@l4W58(Ssri-n=-V7eW7EY4^~eATo5TsEzjE!Nq@=v)~6f z2>ym2;B|jMWLc<<$f_RSco2-CtFp7QvLYjE8e_m05cy_uQ^^3l_p9iXC3@#Qp=|+x zz4Y9u&F8%&3-J~XhSLy+P!<z>9DS3(Kc$=p{(N1h(H-W{#K>=8yi2ozgg=MDTP}D{ z&+<h&vyGjU<_q*!$TprH*y?y@0kU-OSAW}(!$7C~4ftVe=z_;;9O0BG?DUR<7bk<A zdd3=Dh^hUY{a@24tGxecSw^0<UK~u5HIW>u3ehLeh9>&ns?SzKk=!Jh=fuX~s7G`C zWKO9Nn<$;wUg+c%KILlIPxHIt^Vt7JP_#)`8uJYr@eVyP<~7xmD$4s%)B8CsW!=eV zZM1~W<!P~PB`hk~8oIAb`ykVk7nOMb1m)D8obkHLFtc^M6yean2bj1+A*B@LF0ZMv z6TQ!bT~eKIceHXi1lCC7NOX70q8r#D&o&cKbmOXc@OFnv^e?M5YSN6I_N@iJ7-plC pWl{0{v4SmN!8#u!6V>kWxkrL;WLs^0B_ghBL-V4x=^J2Z{0F5saY+CG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7866740d2712c92b722e0f3cfa74300c48c5b5e b/src/libs/libsrtp/fuzzer/corpus/b7866740d2712c92b722e0f3cfa74300c48c5b5e new file mode 100644 index 0000000000000000000000000000000000000000..033d19e68b86128e3c1744920dfcb8b2b0a39164 GIT binary patch literal 1060 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*Z z+;6OMFg;ME3=B_U%HSf{4aKVws3jU=H-x003xKW$T3!jU78-I4|D_lh96;d&4ml2> z3ibyKK@1H4AwU>PgD8-qK^4B(L!W*D3XA7~h*J9bl0dQnXCrW$0%Z>Zib1&(ZyEz8 fvMPwzFe5hsYzt5v)k<(IFjT)pXoad^WZ(b*cMQFt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7960b8fe4c1db84b2e0c86cb95c93c1e414b6c4 b/src/libs/libsrtp/fuzzer/corpus/b7960b8fe4c1db84b2e0c86cb95c93c1e414b6c4 new file mode 100644 index 0000000000000000000000000000000000000000..60c47d11a58e129780884c0fd826619038013af7 GIT binary patch literal 1545 zcmZ3^C}&Vo&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbJwvVE#^w zE%q>%%n<^+ZVuFq2-gy44%{xB<``1L*Z3S`4t2T#Cz@lXF~EJ52m~Ny|3Cyha<Ie^ zm4X+|B?yPW69dhI1(xazIjI)c_){hWFzgOILL?wiP=f$am|$X~R%n1T7w)8p?h>RF zf`}NfFaC8OWMBcO6rc|hA0nlm{|pSklm_(ZzwSmPC0G*}F!zIlfZBxszU+XAcLF5| safXnYc>Y5GMyTQnGLk}-gJz+MKZT<g+ra4k|KArB!^o+=x|)Fj0J6vWJOBUy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7b591c4c581bacff52f9fd9bf7304eac4d1f748 b/src/libs/libsrtp/fuzzer/corpus/b7b591c4c581bacff52f9fd9bf7304eac4d1f748 new file mode 100644 index 0000000000000000000000000000000000000000..9c47c28ad9176c7c9223918f85668947665107f5 GIT binary patch literal 696 zcmZ23%3x4Z&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R0M+hV~jbRQ{3Zcl5li|Rl z|Npuh8Cbxk02L$x0Z83H5b>XZ!2qU25xbJ2OoHYk+ypWc2!Ph2x(&M*fXW<zUclo= znBxv2x&I-O`(b{^;&tZla5o^r@cVx-*b56pwD3s*x*a2Ypn(iG1Zct^<cL7{0$)gj z<B+(B0Qwc#e58nmy8#r)C~6=cAtE9$(nu#9%!IRWF&GSii4F`9o<>QY9Q6$C4ggke Bn~4Ab literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7b7c408a7166f903e9cc756f4920f79b426381e b/src/libs/libsrtp/fuzzer/corpus/b7b7c408a7166f903e9cc756f4920f79b426381e new file mode 100644 index 0000000000000000000000000000000000000000..99ed937819f32f12b024a546906d5bb77183752e GIT binary patch literal 173 zcma!L00F@bjQz8weXj>|82<nN@5{hgUCqeA`~xJik6|AeKxBbr2b_h@`2P<i(hxjH yh#?#zH;3Ukh%u*Kn1KTbK|qgzp}1jA0|Qiz9s@+p90nvcV1*6E2y+;U7_0&6=^g9< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7bc2764cebdf51b913de3bc221f9c08373f5966 b/src/libs/libsrtp/fuzzer/corpus/b7bc2764cebdf51b913de3bc221f9c08373f5966 new file mode 100644 index 0000000000000000000000000000000000000000..981d3e5eac8106e94a65c1d2de55bfe7e87ac8b5 GIT binary patch literal 325 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_nE?#>|-z6$&6l z)j$<I4Evul)PePYgn&Q|Xbb~`31b7;6#saJ0w%CHLs2G2YCVMc|Nnnqp#Ey0?f?I8 zg8-N^D0iDdHp8}U3=BqrK0rPHtE>O>Qw!)5Hi&`2paksJBA{~^zz$(#5C%KGx>Sv! J8W=Ry>Hr0LMIQhF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b7f9e12ba48198f6312c7789e493c41c0be299c9 b/src/libs/libsrtp/fuzzer/corpus/b7f9e12ba48198f6312c7789e493c41c0be299c9 new file mode 100644 index 0000000000000000000000000000000000000000..0bbd7c55429b9cc7b161ccb6bafaaabfb8aeb367 GIT binary patch literal 532 zcmazQW`KaA)J%?g2=o8{|Go^2)zyp)+<(9#`yc?Sl6>m_Kak#r;yFSL;Sf{iFdPRm z<}kDiGjISQ9H6Rc2Pr|Q`43dj!0`V+SoJwDNk4P`{+~^no4LULLUA+1n;33}`X8s? etBV<d-bRGsbsXkEgwev8U>Gj82J4fZ!w3Mqc~o8i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b850ba1387ac36eb58c4a42135157b46d1529d9d b/src/libs/libsrtp/fuzzer/corpus/b850ba1387ac36eb58c4a42135157b46d1529d9d new file mode 100644 index 0000000000000000000000000000000000000000..2348e268421b530a5e2555585654bf760a193ccd GIT binary patch literal 2965 zcmd^B-HOvd6#ga~XaWklz1oG^Zdq6SX;)$OMg@glc(b@KAfYV5Ewp86tU?3!MqLCS zz>D1Z1YY$me1y_x@L~~#jpxivlb9IO?yev>AwM&7GV`5tzH{a{O^jYR00te)9n+gy z7>2um?*l>&!1si@X^aJ);=Y<`z_xK@qJH+~H2YvAV&I15j#@rOay5cf#hRMTJg;R& z&N7gJAQBLaOSE)aq7g~hRY(cMnxqW05HeDq+l4~m)Z&S5SdUOg9~xX5K7^P^x0@n{ zU%2&O5y(PIf!_>hUlSHx0;L&szG=4lH;JnLoC=zzG=DCw5Z8afi9#zZ<DC;`xCK;X zvWX%{z(5rgWp6)(D}HaDi16uwSy?4t){OEIKpO?zy93>0Qc&)S10X@=e-HNUT-Zv1 z=`>bkv9D#4=v0P8p;aWM&&5l3bJabSmpI@{Gg2Zy^mAa-KSVlp#wC(Aj5?Tfv8k`e zpY=bQRvwm=HIcJpKApe(j?ekTIF+RqNRmtAmasQ}4a0oc%8tc+hSqP146>Lfa~#>E z#PTp*{(PqcWH%&|aMp31m+kJ*bq)`D?fsf}&~6;soUK+UXCVM3A%2$W#RGVEOpmd^ z4SMOMH9*I;#!4nBGGdXM5*oN23tGk+F*~0C@85)>UIQE6k9D;m6&AO2TBNE>whdKm zP^vUmQKL&{!z(nWj>yj_&8WkxdE4}XXW#<PIq74~$<a?Nqu=wSesS@pjKL<-!4`!H zu*W#E$wy3TTzQha=CX7KWMxZ(o(0?FQ=_@<zX~p52k5$eXMflpc3oO}&-X6F|4Ic7 z-@F+$yQIz;e@7l0kcJ8<JSsG4ND+EO_15Fptyb$J-7P_Z{b*eYY#qa+1%<4E37z(x jTv3}|S10%4@<f%>V!}UG$sSt>*lCjIYHO1jBsqki2Jz4U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b88f6fb5473a09c4d7fa4657b606131e8dd21715 b/src/libs/libsrtp/fuzzer/corpus/b88f6fb5473a09c4d7fa4657b606131e8dd21715 new file mode 100644 index 0000000000000000000000000000000000000000..f8839868fd8bdc84c37d1e17ef01c187bf16af27 GIT binary patch literal 102 zcma#|Wnd_YXJB9`%H&9`2hu?BKbHY0+S<v$zz7jwWT<ASE-nUA)#?xt25TtIz{$W+ btyerp2+S95XJD8EW^piZfM}or3P1_~BEJlO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b8942cdf264fcfbb26c059e194bad0ee81ba32da b/src/libs/libsrtp/fuzzer/corpus/b8942cdf264fcfbb26c059e194bad0ee81ba32da new file mode 100644 index 0000000000000000000000000000000000000000..e1d04497e72096ffddfb31b4cfd7e4c414b0da64 GIT binary patch literal 75 zcmbREe?QmDm(>gi@E-z17?^=#$@xVUdO%r5sC;!XBLf&SfVD8OX#*M63{2GwY}EjM CToV`o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b8eeb4cce737fd22fd8a6fadd6d0b085d3a6b941 b/src/libs/libsrtp/fuzzer/corpus/b8eeb4cce737fd22fd8a6fadd6d0b085d3a6b941 new file mode 100644 index 0000000000000000000000000000000000000000..a626bdf7b7f25dd675996a0e55ace39660926bed GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZt2oFdm=9H$!7jQCg$TBc8Ff;&J3?P;x z!;d)(?Lc`TDa>$;fdizW?HiD&2jbk+qV&}G<ovvnqWqlrw9K4TVFo4!jw+Dxju7L4 PhJg$OfmaOdAp1A~>6af& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b9050443cf8610e1ed7f893bdfd81a22eed05e6a b/src/libs/libsrtp/fuzzer/corpus/b9050443cf8610e1ed7f893bdfd81a22eed05e6a new file mode 100644 index 0000000000000000000000000000000000000000..b856a6cb0c6bbca88ddc4dab7043f0c850f4ad21 GIT binary patch literal 499 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgba{v8zkOB!CGAMmxC<cl!f_Olp zx){U)ss;h!EB~)txdLH>Nr;-iAhQ^%VY+~VAYEV#G8+u6VGK@o23fGdCUb<qV#4hV z40AXb7-fMxCYUNP?O5jm1&nY9GBBtiJJ8DosFINZtgN)U7}-b$0fv3wzB6zb13e(j zAcJIbdqGiZS}G%%peVjL5A03{kda`&R2a-@?fHL*STOTHP$NoQ#B1d-lwih?D+9w1 Z5U2o?KY%`B;AGI4!vOIBPKN-^2LOg(j0FGy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b932bb2aa2598878de6786c90bd1f9199290a148 b/src/libs/libsrtp/fuzzer/corpus/b932bb2aa2598878de6786c90bd1f9199290a148 new file mode 100644 index 0000000000000000000000000000000000000000..3b652aa4caac8216d9d35f166ca9c0b4a0101e6c GIT binary patch literal 134 zcmZQz0D_kYP@vz+D9gye07O7gUChV@#0=Fy2n0+P3~V5lHISXhz`)7C;LacmRBGDZ zGe-zW1C_=DwWj7V6ftnrGcf%B|6dn~eSrp5|Nr>ErMhL`K8Jm}3=9n*(-;`q85pbo H1L<l241Xqy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b93694a168b6db389856a8569a80629242d56b95 b/src/libs/libsrtp/fuzzer/corpus/b93694a168b6db389856a8569a80629242d56b95 new file mode 100644 index 0000000000000000000000000000000000000000..56ce18c8fb7f1eed586c4989628b9afee8a65590 GIT binary patch literal 156 zcma!7&toWw`~QofD3c>Kp8*X1|NrmHz))Syz`)4Cz{21FWEV3+Fi;EvtYHjJ21XFm wfx!w*nLStqTpfcfNMUJp@f;xr23rOOVX!uaVn)U?xKRo~MIcomB@DvV0F9Lu(*OVf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b941c8a8a0296a082a8c2c33c3c93735d486fdb4 b/src/libs/libsrtp/fuzzer/corpus/b941c8a8a0296a082a8c2c33c3c93735d486fdb4 new file mode 100644 index 0000000000000000000000000000000000000000..fd06ce7c4c1d68ad235a25300f04e72c1a8fe028 GIT binary patch literal 99 xcmWgiV89CmfU*({)eN^7^mTwtuWAr*(Mkhp(nANkAOb2N3aF>L+7PHX69CvP4(k8_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b950473dc074b0a1d5e041ef84298cead70f06f3 b/src/libs/libsrtp/fuzzer/corpus/b950473dc074b0a1d5e041ef84298cead70f06f3 new file mode 100644 index 0000000000000000000000000000000000000000..daf49d7bb2f732305085000f3f6004ce792e8773 GIT binary patch literal 86 zcmYe!kFP3;uP;jFU|?X#1Y#ig|Np-~gvB7rVAux&T*dJQnFiI>@$s2|bc<8tfzsXe ZU^S`T_3@0W85n__hd{u<V0Y+HH2@^Z8U_FW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b95ae04faa88926bbce91e0a0d6475125e7f884e b/src/libs/libsrtp/fuzzer/corpus/b95ae04faa88926bbce91e0a0d6475125e7f884e new file mode 100644 index 0000000000000000000000000000000000000000..7536b20c0fb4a9f340b3b683975207f5d2afd45c GIT binary patch literal 2208 zcmd^A&ubG=5dOAln@vTi4IV1grlM`3S_-vZN+E?Fv`{Y|1=Aoa25St-dT3Xg9xOrV zCE!KKtx(8C&_h5(f`5S*FCK(mJk&p+>cKw0nYWuC6r~pr;)LwJ_vU-^X5P$vi!oR! z=G>2EJ2b|uU@HjF*lUOsdhEJR8qTo3_ZoncF{kh(LoIiE;}&%!yVKka#C0WW*Kv9T z4zN{705Tc`HsInbwa>-GGcV_sQ5oXU-GDJM8Um^V=ADAS*HEE~&m{V|k1}&ed!0UW z=E6g+NQ@EdVnO8rpFzpt|MwUHT1;vyQHY#OM$3FROMcc*`5ZA`m>L+RTNOaI7iQ=z z-fB268BWS8L#+fOqSq@GIAcl40#6#Zrv(!_2d)AKSPdt@je2G}51+R5cFT;VzJ46* zz9xWI+E{2@X`C#BHjhlMc=Mb1!W5nG*6+~M1$ycfJ(JAY5E$|$pd=x)AZ+ZTs7ZcP zNHUifYaI5%?M~T$QV<{hn*4L6M(QYQ$ym=j`h!Isl+Hxugk81(F_d{0d>|qdeNZK> z5-4DiiV<Uqre4oY<x*lmfF>C;_sI*CHLrjP0e3a90Mq<y(<vXdNoSL^BzjU1S*Nnp zYTJ2TB%38LNqC{?-Sdk5mgc%USb@Nb_}twUJ%b>7cD7E`F&(W#5FpJpt>IwB_7oA5 zN-U%JEC>;klfLFTG;{m-Sww96{V^ds^b5XOH3J6+1meh~&&djK;m|g(jENf)_DsK^ ze3C~bVq6+pWOrU)gIrJvrjF=hL|Ilz1#_og0`kHrG$_dpWmO)Rccblf)G6!YCB2%% zW~AWM$dR*f#AP(UR87+vR{uF&mcW-=yeWwAE}GR$9`C2~KiaI?(q0cK$}ZS&C1gE; zi#_6hUbKn0`ae_IA(_c1g@683+9;havTB?Vk2mL){GjAlbK%IBA^f!3-B{dQ3PocM zGcn$oiRC3?9VqN^P->aHdCR}H_ULYQ&6}I$MLmW2`He`o&mg|f0k2FYn3ACWl$5CS z!sK9k$Han%t;=s^IRi0;(BMqyi*P%6UxeJw-z&uTIg#9|3+-C-7fid{QsK9PP^l=r HRW|4^t%ph% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b98b9e3109fd96e1a933fc185b47555b162f6b44 b/src/libs/libsrtp/fuzzer/corpus/b98b9e3109fd96e1a933fc185b47555b162f6b44 new file mode 100644 index 0000000000000000000000000000000000000000..59e0d6de6442aff6f7f74fb988a364f35eb09d71 GIT binary patch literal 87 zcmdl#@jutgm(>gm4FCQ+NHGFwAgC^8EKW^LVW<X)dx1q592mh|unGmR5|A>Wm;+o1 N15h~-)pIaZ0|3|<5_13m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b995acb3754bfd20497513ef1b190331ea73e224 b/src/libs/libsrtp/fuzzer/corpus/b995acb3754bfd20497513ef1b190331ea73e224 new file mode 100644 index 0000000000000000000000000000000000000000..4ce792888c841199d216b41d92a1fed2911a79db GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kKfTS>x;s9cXwr@ZJ#UP;BshJ%05H&!vJrHJtG%y^@NX=nnC}02pCU6~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b99f45d03362f3fd9a8f54f6bbdbd0d5730dfc1c b/src/libs/libsrtp/fuzzer/corpus/b99f45d03362f3fd9a8f54f6bbdbd0d5730dfc1c new file mode 100644 index 0000000000000000000000000000000000000000..8a964e1e1509933c2b336c3f9985d23524d57f20 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDg;8 dX?5`&A+VTmX>n?NSz=CUYJ5RXs;wc+2mm_h6RH3J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b99fbcf533ec1a09f6e3134adb59c101e8351c93 b/src/libs/libsrtp/fuzzer/corpus/b99fbcf533ec1a09f6e3134adb59c101e8351c93 new file mode 100644 index 0000000000000000000000000000000000000000..86532a51bf1ac51af18d3788596f7778d21d810e GIT binary patch literal 232 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zbNo<PV!&J*NaDx@Kmas8b z7c)XkV_;Zp4Q2_z1gf<e!KO2)gTx_{Kn5oRgDe9`4dZ`XsPzzABY_SAfdmMJN;13z X8G;0Ww!H>&fwlpi!B}0)43+}`*|0jj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b9aee39de19dc1039a82aeebb5ba0813a01f4c9e b/src/libs/libsrtp/fuzzer/corpus/b9aee39de19dc1039a82aeebb5ba0813a01f4c9e new file mode 100644 index 0000000000000000000000000000000000000000..1beee77845a1a0fe167f2a39790c1a4156e3398b GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&o}qw~L6(70;a5ZP q93h5qpo{<m!yJZoAOlEB04WY21_H2{281nN9G{qzTl5#is|ElwtQMRA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b9caaa394e159a3b3bb10e17a1dd43430d01b97e b/src/libs/libsrtp/fuzzer/corpus/b9caaa394e159a3b3bb10e17a1dd43430d01b97e new file mode 100644 index 0000000000000000000000000000000000000000..5461bae27a854b90c63c558797d2ae2b322be518 GIT binary patch literal 194 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nm!%u=xM`GB8wE1Eu8|m;^v#5VE!BKXY|4NRcE+ zaIrOrWDsCvsMZGJYIQJ|fdL{6<Zv=D$TEPGGyb<lH4tbQ2qb`r`*k%S3Jw@vLd^kE XtPBhZAbVZ|*#Zo$Y>XvP2QUBt-9#}Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b9db8acd5cb7aab7e5abe50fc881cc8aaacf37ec b/src/libs/libsrtp/fuzzer/corpus/b9db8acd5cb7aab7e5abe50fc881cc8aaacf37ec new file mode 100644 index 0000000000000000000000000000000000000000..b2413dc92b17922191fcf56deb621e1793b0a028 GIT binary patch literal 79 zcmdl#ks<iy%W4J?aF7C13<?Yk#Xu285D!RH7c(+s!}tsg3Lt)Ub^ZVU|F`~U_+QQN Jp8+TdMF5Ua63YMp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b9e69922a79d61b300e659da5d2e2e1a14f4cedd b/src/libs/libsrtp/fuzzer/corpus/b9e69922a79d61b300e659da5d2e2e1a14f4cedd new file mode 100644 index 0000000000000000000000000000000000000000..5c253136577bd10b2039adcb4514381d067ee2d8 GIT binary patch literal 227 zcma#o%VQ{sXJBCbl=@#dlK~9=|NrmHz))Qc6ooOE!2-+-jPeXj0zmN$ph7(s282q8 z#!Lob1|&hacBnQ6pjCcAm2(iF2y87QSUUq}`hTFkKnS!}ib0Qo;XaB>G{8=hXSfS= i0T}#;+Q-1K*cvP#P}0iCro&ua3^8ye!^)Na{{sM{jyd80 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/b9ee4302c1793f9e890da1206f9a3be32a961588 b/src/libs/libsrtp/fuzzer/corpus/b9ee4302c1793f9e890da1206f9a3be32a961588 new file mode 100644 index 0000000000000000000000000000000000000000..51cf193f5545aaa7fece8e3e33f89f74bd582bab GIT binary patch literal 154 zcmaz&HSv3QJOcwmQEDbfJ&*>1|NsB{GB8wEGcYg$d8zSbi9l+00Ve~4ELa4jhB)x| r|Nr{pIYJEKW?=Pm7}|j}kQ4?|91tVmVu~O^_TT^iYcntu1FZ)DZeALT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ba2d203e7be4e0c06ded8538ebe05a2733d53a46 b/src/libs/libsrtp/fuzzer/corpus/ba2d203e7be4e0c06ded8538ebe05a2733d53a46 new file mode 100644 index 0000000000000000000000000000000000000000..c3bbddad24089a9014ad437e65c972752d9cd473 GIT binary patch literal 292 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@`(?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria56B+f^{;?VQ2>m0!gqYkjl1iK;pj;hzSBE@j#+8HB+Y^ss^jUP-jtK cjxW%;U=IP^B@A>s10i>U{09sJ5SYUN0Ev-1VgLXD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ba3a8325a6ba14ad6fae61f78f368e627cdcaafe b/src/libs/libsrtp/fuzzer/corpus/ba3a8325a6ba14ad6fae61f78f368e627cdcaafe new file mode 100644 index 0000000000000000000000000000000000000000..a71605227e0ea385227c9fb8f3564d010d856bdd GIT binary patch literal 141 zcma!NWMHs}XJB9`%H&9`2hu?B|Nk#A%~bH;mw}<Wnqk|vZF7Ve6c~it85mUN0Cj)> j3j-qq`vV3BpbUc;kPifNm;}J|e+J@}{{IiNkEt2}PIDSQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ba5715e84f3f2f69474df91f82a182e964797a06 b/src/libs/libsrtp/fuzzer/corpus/ba5715e84f3f2f69474df91f82a182e964797a06 new file mode 100644 index 0000000000000000000000000000000000000000..c86a90f54584e435ad656cffc9d4e974c06a8b33 GIT binary patch literal 116 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2MzGl5FJD0bB*SFQ u!0;~*#Nu>kkOitXXz!UL1f+p#*;@a%01f)j@C~Gj0j!FFA&`N=u?_%Ut{>$9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ba81531b7f4f7e40b5da85eaa0e5562d3e8022c5 b/src/libs/libsrtp/fuzzer/corpus/ba81531b7f4f7e40b5da85eaa0e5562d3e8022c5 new file mode 100644 index 0000000000000000000000000000000000000000..95b321b477a0975b4e2afb00b57ca5d580927bb0 GIT binary patch literal 54 zcmb>CVPIfLjgS9RT^-L*ZBSfoR9#(N1;m*^@pv_cVut_!{};y_Wd4sX-p#=Ezq*>C HT9E+&4XG3l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ba9a7f3948610b9eb91b70b69ac393854580dfa5 b/src/libs/libsrtp/fuzzer/corpus/ba9a7f3948610b9eb91b70b69ac393854580dfa5 new file mode 100644 index 0000000000000000000000000000000000000000..ed16bee9438d5b7c2c77ea34efb21dcd89eec8d7 GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkpDu j0A_MBFvv0#&k<ty_y7M4pw9pKc_l^p_E2SDim@61n+O;g literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/baa3c3de1e52d0af2e5d0a48875732b189c63698 b/src/libs/libsrtp/fuzzer/corpus/baa3c3de1e52d0af2e5d0a48875732b189c63698 new file mode 100644 index 0000000000000000000000000000000000000000..5e0472d189dbd85cf1b1989e135a9c613d29c3d6 GIT binary patch literal 106 zcmX@8m&Z^N&%nS?l*y4=52S(MzvF*j28QZt1_nlm07G>#BLoA*7#I|Q*!ti9{}VwR ePId-apgQ*Uo;gAwK7(*O1H&8+AOl5!sSW^=WfWTg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bacce5ae9090baa05828db5575c8e133fe7fb8b5 b/src/libs/libsrtp/fuzzer/corpus/bacce5ae9090baa05828db5575c8e133fe7fb8b5 new file mode 100644 index 0000000000000000000000000000000000000000..bdb1b7bd2189d6f7eac59cfbc01bf4e03a684692 GIT binary patch literal 458 zcmY*Wu}T9`5S$kTFBT#O0*V2(vk@T#3k^g$n}AyQ0f)pCfuNF$HV^a)L0d~PjZHq` z%8379t9^dpu#l|tmZuk|S$3G+eKQZz6o~-zIzjuEl@O6bygtg@cx>5Dq_M1gVLd}k z#<2S+C<WNYlSd10KtDPMHhZ0i7cSdX&5l=^;w&nVFW9ZYqH?8sU=YAm*h$e*`^p1* zH{n^Rko-RC`F%7^NUb?g(Upz=Rvw-7YuyWc*W+gyePYdTq`&uRe~Gn7hpEG*_o7W| zmb4C2Zl7tLcH6Zo4OcVwNJ68q0e<}_<Sg>@Z1X2YoZNQlZn$)rt778o{6A2IeDAa) chJ*zq{1S{LE0^y$pTT`f3CGuNZWXff1EM;5cK`qY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/badf603f73835f42dfcebf1746493e20f5873b90 b/src/libs/libsrtp/fuzzer/corpus/badf603f73835f42dfcebf1746493e20f5873b90 new file mode 100644 index 0000000000000000000000000000000000000000..fb195206e5b2035d79080c07091e6e671614a08b GIT binary patch literal 216 zcmdo0-;V3$%WMV)hHw8Jq<|C%Jd-O1lGTh13_uhOWFaA-2$cKcWj#<8k~T)Twuy`k z?jVDziy6VV5~u~D5ubrCUjmh(8>kI-2a16}RaIbDz^nk#K(N>vObI+@ux0=NDFh}_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bae520b513fd18dd19647b877cc04cc5ca3cbbe6 b/src/libs/libsrtp/fuzzer/corpus/bae520b513fd18dd19647b877cc04cc5ca3cbbe6 new file mode 100644 index 0000000000000000000000000000000000000000..0c7f1900a70b3a0f7980520eb34d8f893207139f GIT binary patch literal 225 zcmZ8by9&ZU5S-IME`=ai3)*Y!?9$u#4M&iJ1XM!e1Ck<*7%XiiALmzyXt7R`&MEdW zJ3G6+0s;ddjkPVA3HhKX*20QISaS-uM{AO37j7n56wVV57^AN_tWkAw#MBVDzJXF9 zXQSGETH9EoMAd3?h{y`KT|^rD2Gi{O=(N2dW<kr{dEZSP=p}s>+$Y&?;a{`U@Eks* R{6%rD2h<V9-{S!D!VfRsD;WR) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/baf43a9588c00adc1f4ff20422836f123a82aad5 b/src/libs/libsrtp/fuzzer/corpus/baf43a9588c00adc1f4ff20422836f123a82aad5 new file mode 100644 index 0000000000000000000000000000000000000000..1d4bffae17b5b9d9b93ee6e183745e7f274f580d GIT binary patch literal 104 zcma#oD_|&zXW(Hd%H&9`X8?o$RsVe%7^<ro81jJp?D(?8oYK_P_ySG_23ZD1hJXLT nfPvvZ1H&AKcAyd<DZ-$@zyZ-dhd~&`6bB=QIXO9hfrbG9$$J`E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bb12542fbbcba0a6f45bd83fb468eb67f5c3a068 b/src/libs/libsrtp/fuzzer/corpus/bb12542fbbcba0a6f45bd83fb468eb67f5c3a068 new file mode 100644 index 0000000000000000000000000000000000000000..889d238ac94a76cdcb0f2f254391a70a8f4fe2ec GIT binary patch literal 106 zcmc~}(2FmL`~QofD3c?#o&gO0|NrmHz))Syz`zI*V5lx;gkYc;1X#luoD2-IAa&Kn YbA-TR!tFq64g&)Rh{u!<76TI10HP)k%K!iX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bb5421891c0fe63fc68cc0c5b10b38964b648621 b/src/libs/libsrtp/fuzzer/corpus/bb5421891c0fe63fc68cc0c5b10b38964b648621 new file mode 100644 index 0000000000000000000000000000000000000000..a32c9c0b2e0258d232d4efd217cf55d0b68497d8 GIT binary patch literal 2037 zcmeHHu?oU45Pg|U2ZtgE4h5%*4pMNJ{(yV8&>=#hRcR=K8M@h@=nwh>f>XSvMG^dh zk|W3E-n}H`4bNx=9fHAMfnrS=8DkEB)*V1mDJcqB&}zH3A>1-z%b0W+(!7%5;(-UY z)k^=~OK3#donTlFoDf?1gxQw~+fXt)Ly1iC8qKV4aevaLX1JLbQF>A-Gd_%6aSAvE z#;!oPJz*h$xXie$``>=O>W{COy(N+JJnY5;0%)dyc8VS5gJ9%u*R;x|I3Kf|C!bKs LKybw=FeU}wS!6vB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bb8d8660035858ac33272a3ebca5ec75d1ce4152 b/src/libs/libsrtp/fuzzer/corpus/bb8d8660035858ac33272a3ebca5ec75d1ce4152 new file mode 100644 index 0000000000000000000000000000000000000000..e1ba7eb1dc4e6bd3a59f8923450be0425dc12bc0 GIT binary patch literal 1791 zcmds2u};G<5Pc3oO(Y}=6$3++Dgq%ut=M5>Mtnl14jsx+nChWRAwq&b=*CCzHxVm8 zfS78|v12EWL?cBkT&2brKi$3aJztU$<_`&g*(4Y*=t(AoxB)l^n0f(z&%j^TVoC2L z;1-u^XNWLF>LYG%$><J}37d^YZ=%9mCdY<SghSv!?N|R#s%}fKMuC+mcwLI_B8CPL zM#vGcl{g2~h#ZwKZD%9c30`tVY*?FxCg;)zWAAy}eP-!zO#LT-IyHy<(Tei=2<XSq z`5@<8tCgRVRCyr<EmPWWY}>yeU0%#|yf`u!@gFte)(H0$>fPxGHB0K<SxbcnKtBiA zNbnGWZrS6D*y7V-5aI30@9$HG23{`(DA7uK7to#*1<fvd0gAqqZlaxTEkxCZ_Fyw@ zRX~>6LYl3rLsXp_ov$9})ghYYLYK{yqn^wFOQMAr1JQNYra!gIxSB2xVx#0A5Sk=d z3yR&K#U?PGz9`m$;fx+^S2ur#$v9Xb?WsHlG}k`DvWldvl;L?P1bxExz^59@NHO>% F=LdQr3?Kji literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bb94b690309f0e51f458dd695f6a8860e9df379a b/src/libs/libsrtp/fuzzer/corpus/bb94b690309f0e51f458dd695f6a8860e9df379a new file mode 100644 index 0000000000000000000000000000000000000000..c19a177b295adccc2bed5f5224835769e6664064 GIT binary patch literal 83 zcmWIhZ@^FzU&N5fz`)^J&j1Ghfxs7tAUp<92BSV8aD;LZ6eANOGeaRmHBiKZ0Z9F4 KV62T#tp)&GY!Su) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bb97088074b584944d0c9acced60172d4adfc4e5 b/src/libs/libsrtp/fuzzer/corpus/bb97088074b584944d0c9acced60172d4adfc4e5 new file mode 100644 index 0000000000000000000000000000000000000000..ba83b6a22df4d4c30db008d7ed66859852833b8a GIT binary patch literal 69 zcmexkTb%kQzBt~1fkBPozg#s#;P>k4|Nj}-7^<ro1gfhm85kG~85krK7=AG@FjO<# UVyM>HC<tT%IUshmXnblh05TvI2><{9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bb9ce42c48c7bc07fb00585fb7a4e93827b0c561 b/src/libs/libsrtp/fuzzer/corpus/bb9ce42c48c7bc07fb00585fb7a4e93827b0c561 new file mode 100644 index 0000000000000000000000000000000000000000..7c9dfb4c00dd4026d22288a6713afdadb96d44a5 GIT binary patch literal 264 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*N zaxgtmr3?&DVMf43up5e`kqj*m!yy{`85r6)7^*?u1QHDYrNAzL$bp!dFRQBo3coC! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bbbd45af44d2e41cd220e37483aefef6b2f52960 b/src/libs/libsrtp/fuzzer/corpus/bbbd45af44d2e41cd220e37483aefef6b2f52960 new file mode 100644 index 0000000000000000000000000000000000000000..66de6d568cea0c326b9fc1236892bde218617087 GIT binary patch literal 40 ocmb=ft}ZK1jgS9R9B)t!2br0l;~5wjrZN;~7-as}WMC)-0BPh96aWAK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bbd426d0bccdb69e46a7483e5615cb4ab94d650d b/src/libs/libsrtp/fuzzer/corpus/bbd426d0bccdb69e46a7483e5615cb4ab94d650d new file mode 100644 index 0000000000000000000000000000000000000000..796b2791249b4ecd813c849f0a7bcb5457f5d64a GIT binary patch literal 158 zcmZQ@WcV?Mp`C$&0Z0ln<TG&m2eKKC0&zV9gJy1OQF>~8a(-S(QGQN*T4qkFFar|< zM-{_=KUO&S{p;5!5XTP!AT-Dn28P6(oPu~DU0R$PUzV7oo?4n3U%<)0A<MwXz|a6> aF@RW(Af;mU3?SPQLF!6VIZ}c4R09B0{w7xd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bc0ebc36e28b0f0c688902040f8e1ed8b2abd811 b/src/libs/libsrtp/fuzzer/corpus/bc0ebc36e28b0f0c688902040f8e1ed8b2abd811 new file mode 100644 index 0000000000000000000000000000000000000000..d4018ce015cc0df3245fd43e0f90aee350bdd660 GIT binary patch literal 3254 zcmeHJO-qzf6n@^xa*_&jC@6}?J`_@92wOyp3|fR4(JBaHkeJ1gmN@FdOU@wL2M86> zA{c~d<)W?2q(9KQen7#j+Ud^QbI!f@edkLlC}`1vdFOtdk9*E}&bb$Wwe}`}Z98(D zf27l!C>bD<afJEaQUo*dmh@FVfgDFxm<&0#?E;yD3R&%=8Xy-{RMo9Krc$yDOc&FI zvKu<v#;j1@+I2^s&rNa<u)YplxIIP*Ym7yH=pknEPS3Yk&lY_!dZw(ZmNV(k^mpq5 zF6m!xMn$Hn9jaN~+z*@tGLBKidO75dDOG#0y1FVGnWsQC4Rpi%0d&dwMrmf;c_g8c zmEe`A;8>j9VT-#7jU>ZlG!zf}b)?#51QYLsL0|CL;<=oofewTjJp!_LO?S>#QNZ$w z-D4&r3@~7(Kc_AWgZN7Z665*+(J828y?1L$^$BTCtVR)q{M>jjFDv^hQyOtbm@x$n z$ydV9_ySKh`LS|LB~A8oIvIJMc{zi~Mjf67Er<$+mBCpLVUndq+>2pUD5hf=NhvrO zK~Fs~Tgb;}tq2<KIFqfXZt|p)<^}+%DZ(;MuV;N|J(RfdadWGbH%6RJ;WiDEN<NE^ zzr5U#WsFZuApJ<KQjxuSS%*^^J78~PHQ@%vv<j37<)jL9;UJteCrJW0iL0fDC5t5Y z>5hJ>3~!5$MCfpN$uMJ*h6Yj_zm*H(SZGnd*8b3`oBdi!kEo>ov{NGotmpX~W0rxh zDs2+3z~cJpNTsnxvy+$`C!T!7GIh9;GyOV3fJ&pl8&1_Q|Jy-|sA_<i$rh_9FNqS8 zt3I!wv4zGB<<UrhVha$dVUMUGZEX=Ny?K`2v_NB&qn2jB@yd49YX2;HqiA>7&2HDD zUcGJyy4{t8cC-U_rJo*aiCs#ru~%1WT{X)BucPk@sHGKY->&P)W?a$I-&34vmmVw^ zuNRmUFHXt0-(_{piw$}P{xvs@>P@hz043K44nM_3y(APM%5QKe5!X@oUIas&FSc<| zd}tE-<I}aZ5C5yQp-KxjQ*>cw_|Gw?0wABM-EMq$@5hoY7-HYJn{wM1fHTOUQqw6f z9WJ;V#Sld;C{JM04x6#w^Qxv^uRD@_CCAAPhNkXY-*v-<{CW5Gne<z|pqra1@5C$O z+|fVVRi(&xdXu~A);GC4EbrqJ_#}S#9z)Z`XYa~#8f{Z?V%*B|%C=p4;rfJINs7DE zCuLYm#0P|T5}(D%dsl_7E?n~@um14jm)E|aM_8iKYx0G%g&>C*cgq!p^e{OyIH4ND WCo69+HkY7PZ!OvMSkgqWPuQQSe&Z<s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bc39a920a38aa8b64e7a685f27b79506ad0d23f1 b/src/libs/libsrtp/fuzzer/corpus/bc39a920a38aa8b64e7a685f27b79506ad0d23f1 new file mode 100644 index 0000000000000000000000000000000000000000..dce67a0de89b3db93541dee07a92d0a590cf41bc GIT binary patch literal 85 zcmXSpude54XV9zu%~0RM00o{aS61p&GcYjuGH}7f82<hL&%j{M03;X~nA;f`tN*hz TFjTix*Z&8D2&h6v28~PrvZ@z4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bc4952d872662fbc291a277ba13ae22d4ace930d b/src/libs/libsrtp/fuzzer/corpus/bc4952d872662fbc291a277ba13ae22d4ace930d new file mode 100644 index 0000000000000000000000000000000000000000..9dc1207d2f7a5133a22d403cc7775784dca5ca9b GIT binary patch literal 219 zcmZQ%V5lyxXJB9`%H&7|(LnIu(Hg>-_<ujw%a_#*|3RRRfg$}n1A{CBBNi==KtV7t z<YaIFDk;HbBm*;=8A#Sa<q!_B`tPXi05up)L2X$KcAo$P&?!Ls5GI}k`-DNYnt`F1 GAr%0(hbKY+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bc7826d580d440283dff429ac9c9905718bf75d6 b/src/libs/libsrtp/fuzzer/corpus/bc7826d580d440283dff429ac9c9905718bf75d6 new file mode 100644 index 0000000000000000000000000000000000000000..7f13f295b3ed28c941cf0313ba090c06754cd110 GIT binary patch literal 926 zcmb_aK}!Nb6#jNyaD{@(LnIgq(jiPGIz$l^c<4~jABbg<B?T4P#R3QNl1bn%i2ZS0 zyLRwU;PlPTYC(xYJ(!s{@4b2Recw#U08ShLe#7?qTxpj=NW4pWOu}<+-DcNwI`x)Y z%LR3Juag3@NZ3q<80tCAMFsFU=F~T^i%N8yJ0A_t?qjHGlub)|^o_X4_Zl|h8oLK6 z<vH;5Af<w!EFXMibgj9DA}|=qgb3nno-rC@<_6bIqzS9AP1hnS8%IdKaHF~fWjeS9 zjsa)V#+EaOpRtIamWR#A?`A$fbscLK^ApcAe)}Vl7zBKQDL>LPzxd@Men|Q)8!3x# zVU)_^E?mVS(Dd3)t?PE19&f!8!8*hn^oW1}siZo=*g>eoLewm@VPxs^7Hun2=j{HX zs?ESeo@R7>XN*87e3TJH7xRlcYIuc^8H@j5#^V2VDlVmy^+Tu1pLBZV!~CXGEK_wk ToqG7LQ}l1+fcm#ZfzZS!nH8Z} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bc9426282e32313a9cd0a3ece6cc715a5ffd06ff b/src/libs/libsrtp/fuzzer/corpus/bc9426282e32313a9cd0a3ece6cc715a5ffd06ff new file mode 100644 index 0000000000000000000000000000000000000000..15e0a84e994ae2fa7b6702469182ea417b3a10bd GIT binary patch literal 36 jcmXSpude54XJD*m0D`~YTUr>ZTfl4vuwX)UgFz+$#or1= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bc9cd7287ae59ba22c63b51218a0a91ae908838a b/src/libs/libsrtp/fuzzer/corpus/bc9cd7287ae59ba22c63b51218a0a91ae908838a new file mode 100644 index 0000000000000000000000000000000000000000..169e6662e3ddeae98c93db5f4bae357c7cacea1b GIT binary patch literal 127 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE{nqGcHv83Y)9%wcE;a)6{T z15f}0m>C%AAuNbypn0j89Q7bI{~4+nIR5`<a4b!YFJRyR8N$#|5D&DMlc5FxOv@U2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bd5ab3828cbac216f5d83280d9789cf4769ad8ff b/src/libs/libsrtp/fuzzer/corpus/bd5ab3828cbac216f5d83280d9789cf4769ad8ff new file mode 100644 index 0000000000000000000000000000000000000000..0ab4f263113d9a35c64ba6b0dea78eec1a58d477 GIT binary patch literal 121 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vv22$0GKmv%Xiy0ZJfhs^u7(!-41kprb3V}wT KfoiL0kPZNhITEY@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bd5e1582204b02899c6d0dc7cf0826d0bb724b3c b/src/libs/libsrtp/fuzzer/corpus/bd5e1582204b02899c6d0dc7cf0826d0bb724b3c new file mode 100644 index 0000000000000000000000000000000000000000..80b19aef401627f4c3f5d877d1d7f185469c8325 GIT binary patch literal 288 zcma#o%VUs?XJB9`%H&9`2hu?B|38xekeX=!lI!LFYOoNDc=jIzT6!26s(})WP~qxg zARmMoT6_L80a@`tQ%iK}Gd)s)216AA_4zVDwJCtbpxShx3V@U~jLFHsAPY2pjxPhy zSO$h-A+UsCJA>&Qh!Q3+Wev2F4<Z031y~sn7TJS@#h`LvxBveSbT`oLAj^RO;%ty7 Qy+8yIfaE|3L{u{X0C%i4(EtDd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bd635e6d7c9ebc629376a62e6af1aa0148afc566 b/src/libs/libsrtp/fuzzer/corpus/bd635e6d7c9ebc629376a62e6af1aa0148afc566 new file mode 100644 index 0000000000000000000000000000000000000000..6c565f1e7d04bf526cbe677e710a1746cb3d25df GIT binary patch literal 40 kcmZQzsIKQ|XJD*m0D`~YTUr>ZTfl4vm|%lJW_5Kj0Lcpq0RR91 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bd72c459d5a0efe7e82bfe4f1d32aca6687f2fe5 b/src/libs/libsrtp/fuzzer/corpus/bd72c459d5a0efe7e82bfe4f1d32aca6687f2fe5 new file mode 100644 index 0000000000000000000000000000000000000000..2173539c5a04ae1e824200acf69233f7acfe0fcd GIT binary patch literal 877 zcmd6lv1$TA5QhH+!8JAsc7h>QN?$+%TBWi{E8$3Sg&-kBE#d}DmApjW#V*g0CWWnq z1cXffnRP|MvlN$Qc5e2Yx!w6UYd+#N1MuAU`88J#5$OUU&@Ee_GZ^RDQw6>O2fWdn zHE}kdE3y1**HJYLmqV_B2(eoYg`u-L43VYnnL}S^+*|G4GkVP#@RP7jaDUN*iAO!b zq-3`Q^yoY_fBs^Z2<y%P+Rt<Re&U18qOEc9+PL=%nyGq84l0!Q{nQwlz>A;*JPaa3 zp%ylz4zw+%V)!eE@;C0Z2!l6NR-|S&nhkj>vaw0`TQ8+pu;QJq^z>F@_tO_fQIp-L d!h#X&MUj$?am#hB-9%S_t`cThD!i7)*FVf~nxX&z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bd9e7f46e6c5b1142ec9c009e5a83b523215e22d b/src/libs/libsrtp/fuzzer/corpus/bd9e7f46e6c5b1142ec9c009e5a83b523215e22d new file mode 100644 index 0000000000000000000000000000000000000000..cee7c2ee8dbb0f8e7cc9b734632422535d81e23a GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7uw-C( w31)HvMH!0c2r(ElFl?XrpX=qzYKENDy!hn&ypp1P2Zk^v1||ju2PvRp0NrI5d;kCd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bdea3acc726e3bd6d974fefb878197d5bd7a5485 b/src/libs/libsrtp/fuzzer/corpus/bdea3acc726e3bd6d974fefb878197d5bd7a5485 new file mode 100644 index 0000000000000000000000000000000000000000..52439b1115dec47a913c14c7f5a113c78180376b GIT binary patch literal 101 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lu^>=P9mLnkV=!P~ ncnOx`WMGg5ssl>T;bl1c|33p014t4G<}kD~L^Ck7S2F+r^e+>E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/be09590cc41daae7ef0277a76c20bc4fd8b36a54 b/src/libs/libsrtp/fuzzer/corpus/be09590cc41daae7ef0277a76c20bc4fd8b36a54 new file mode 100644 index 0000000000000000000000000000000000000000..cee6a67aac92c02e9ffa73813f24fdad947074be GIT binary patch literal 1620 zcmaJ>O=uHA6#h1?bW^GXW045js3BGRL%>#qQmh9rLcyCL=vwR|fm%z}h%nORP}_s0 z(1U^yy!0S?7R6KPr3Y^wiwC`U=vi!q{*2#yvk3_;K6Ynk-+b@Q%=f+-SZ6%|{0bWy zJ>!5esCpid3A%t%(KnGtUoXe+eqG*v8L(3diyCvLDFzHd7(AVrDu=;L5;(0MIuF>0 z^P~WU^)m9=<=S!BeY=o`<$?&PN%J48MvS=a05vSI!#2%N9G5W0>y6A95Cx_M(6M7} zAKk<ncs)pPA*j7rv~9B0*jC&kQ+0>wQx=AdObcX@=9IY_yX~CO=UzL0@<&KjuC$xB ze;mu=1v~~HwU#N@XrI@J#|?8}?ekmox0Hm8zZS+9(w6kxfp06M&R2%3b*@wR+p<mN z;m}-KJ!RUZ0`B8F<Y_U|#9BDpIe{xnw0o1GP@UuJa~}iv0DRhQ6Ob2ii)WQgkjzAb zrs6}t5)4k`iAtyF|7z@Q+sTdOWhDbtYEEua6WUexaY{MD1<fsPd{b^eI<w;{T7jMC zTaZOAbw)v9ecd$vWK{KHB;iyz9Xu#cl+hiA7h#69pg_9lhx3AD`bRtn?|2aE5@zkW zxW+*cjME1@vDC}4GMI=AQ5Y=}xkMoO5-ULnaeZKQ*>-MjawhECu~W`_ZVQo8G4_VG zAx+)flCpvmL;|Z{FdHY<8S)ZK$MB>Y5ECg8qIj{k9aP@BE?d!j%FxIwO)3>+*x}I+ z8<n!7dNDLrD(|Wli=E7)x~U10?RxZc%E!K4iBG`E(&KA7?wTAKMUEE;l`h9t_Rw!o zOSs|WsJlOy<hclmHIXuXccYORj@dMkyPDKr<sytKt>59$?Y>;X;YzFH2pfq*w4Pla zYU7C9%*TR)&=ZA0uuEY{-&rwWOuqa(3_7vLt`}w5cuHYi>~#v8u`*LDwux)lSKuv* z_p<_v%~d#UyiDKhfcm1a5PGCgm{ZQo-u9f3LSF%cEUVnZx03WU9b>{(SQ@B#^gpl4 hcK@1z<MCr8dnWiHgH8~7$y{JNQ{s(A_e~iS_&*u}Q(*uA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/be23a59a45fe126b642362c68298fc63aaf13bf9 b/src/libs/libsrtp/fuzzer/corpus/be23a59a45fe126b642362c68298fc63aaf13bf9 new file mode 100644 index 0000000000000000000000000000000000000000..bb5a96fa96507e9cc211bcc0e83d6617b1f4bf5a GIT binary patch literal 108 zcma#m%VQ{sXJB9`O3mb`2hu?B|NnnqhX2*o3=E7wUTS<<Voqsld;uo|gDgm-p?HoE oLpWF^!yJZoAOlDW11Sy$e~>7U*8nzzfq@-pRB16tGf=!50H9?Y0{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/be2699f198d68a817d9b05fa1db35cac7714a5ba b/src/libs/libsrtp/fuzzer/corpus/be2699f198d68a817d9b05fa1db35cac7714a5ba new file mode 100644 index 0000000000000000000000000000000000000000..718275817e34441dce16d942470edfb575b85272 GIT binary patch literal 315 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t4E4ec91QIY3>;MqKs6vq2NtLl z14k;5#i+s7P{7H+APd&XFbAX<L<$2b4j^u5`vxRqg@6PYl*9w6&eTkfdZ-$#2BSF3 z9^tMj^PtAKf?Nu<IbJW10c<RihZuZ;&INl2s1D>7xN02kgqjP{Vh!Vg7$8rB!5jtv DOaM2l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/be2d7751cc20fec3f4e6ae46fc83ab4e32638298 b/src/libs/libsrtp/fuzzer/corpus/be2d7751cc20fec3f4e6ae46fc83ab4e32638298 new file mode 100644 index 0000000000000000000000000000000000000000..1eaf6fb286133b1c1edc697401ad2d2603a91b37 GIT binary patch literal 220 zcmdl#@jutgm(>gm40`_^q<|C<D1Bon28u9(*g!(Dn318{VI~mV1Q9R*QK0}*R1H+| z@4tg7LmiL<WJs}qL`gQM_#Z<x10&cRu-zat*c?D47^nfA#lQe|FFxu25CC*F0K@=2 AHvj+t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/be5f64f7cf49e8529d9dfbdb32bc4b8a54c11ee5 b/src/libs/libsrtp/fuzzer/corpus/be5f64f7cf49e8529d9dfbdb32bc4b8a54c11ee5 new file mode 100644 index 0000000000000000000000000000000000000000..d88d58c142b236ccdda008adb6ba035cb5d8b45c GIT binary patch literal 108 zcma#I&SQ{_XJB9`%H&9`2hu?B|Nnnq1_rxo1_nk31qKFd28QZlH6UhWsIFEAt6*S| sWMFs+W^ytx$TAeq5n?cAV8}_$i%-taD=Er%U|?W^s$}2;>j7#20BN8S1^@s6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bead7fdb23ee992cf34ec618b7056d1be31eaddb b/src/libs/libsrtp/fuzzer/corpus/bead7fdb23ee992cf34ec618b7056d1be31eaddb new file mode 100644 index 0000000000000000000000000000000000000000..05a66966fb83965f5d154afbcbb47025ac47e4c9 GIT binary patch literal 491 zcmZutv1$TQ5S(X|(@MN5K|xYjq*K#rp<pH4H&|KNr0^614`P~Nlg3iGZ%Mw#A5bgT z**(uZF<ac;4l{Fe0}&Zd0L*96bj8gfl;C$GmEF$sJjvk6a6Ipk5^;L*;Zp}c*p{k# zOFYvB*U$Cv%9JF5hp3IIxJ{)>1#No8OZfo}Gwx(H!{RlNMQ{yXrGjO9_%XVS3j(&n zfa4LF4n|x0G_*t&Kl=lsE<?qr-#9lJQ8O05?JL($f0Fnw{lv;bNpvIeOhH%9<6YB} nmp3f#Q1*|bPF}}rnEg@*-GWB+C;uV?c@d_5Z)acMvK5>GP`+OM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/beaf8e60ed55818f340fde040a81c00334546ff9 b/src/libs/libsrtp/fuzzer/corpus/beaf8e60ed55818f340fde040a81c00334546ff9 new file mode 100644 index 0000000000000000000000000000000000000000..0228b19ce9d9947ab36e9fa3d3c406a0ff6f7aa7 GIT binary patch literal 112 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9VkR&fLRbQ+*B~Y* m1A{D39Z-6X5Q8xTLr#2hepM;R#A})QZ~zo6%Fkh7U;+T)RTc^W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bee09d5ddacce66a5d55c99d6dcd7166649391c4 b/src/libs/libsrtp/fuzzer/corpus/bee09d5ddacce66a5d55c99d6dcd7166649391c4 new file mode 100644 index 0000000000000000000000000000000000000000..477057b307fdf7cced2e6f40bc5e185bc9e212af GIT binary patch literal 687 zcmb_av1$TA5PfSTUb@4pgLVoBlKyH*<sS$~iYsg^Jh5;=B@oi&6Vmx5SNI?K39%8z znc3Ya27`!G+|AC+d$VtL^4=KJ959oDk`dI1XaJO!qvBX`TByZ97x?(12U{9f39K{q z;t;T@VL->HU6Kz^z%!)A1Z*u}znefb2hmPB>Y;#(mAnlh=OVtzwd8xEq4pN?+)Kp7 z>*IdKQux4Ke--kn$Y*aF){nvC3e+42&Gf1ll-xQ?kLHyff$FioJ6YZHxY51eV2gh- zj@~`w*}S6dW&1nApjY<klvJinZbNv7{3E`Ur8Gku$tNP+jh_Z6ApJiQC{ePhstV}a E14p!$s{jB1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf25eda33a2717edffe85232d873613e4142aa64 b/src/libs/libsrtp/fuzzer/corpus/bf25eda33a2717edffe85232d873613e4142aa64 new file mode 100644 index 0000000000000000000000000000000000000000..c98e0bbcef76933f071c17751fbec0431852750a GIT binary patch literal 200 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLr8gLq)6^svs;*1_oK6 zy3*?6IWX<Nv1kVwfTS5}3QV&!nD59i2Sj@_Z~!3?D1ZnCAuuTnk^?#n6~KfTssRG4 BFG2tS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf28d3c66562b717b60601e68e7fd8b4f266e528 b/src/libs/libsrtp/fuzzer/corpus/bf28d3c66562b717b60601e68e7fd8b4f266e528 new file mode 100644 index 0000000000000000000000000000000000000000..4eda14df45189b83fe4ff77d6af7223f503adc3c GIT binary patch literal 458 zcmZWmyGjF55Ir{pHc7RZN+F;YsU%n%0|{)Jg?z&nJ|Ins+;kVzPFqVcjg62WNSWY= zD7N{5L{J>h+<P&C2X<%X%-MM@Bo`?FjE9wrYg$4?23X!pZMAX?zoon9`O@JUmW*Na zTJjX&x(^X&cmXEG2xyImcTX&K>NV}CG}QzR$Oqi<bjNe`TVPs&X)uy%lzG#;%FZ(n zv+a-0wm(dsQEB>KM8{b;otF3v2KegOM_Ih#K#ASC;(1POxvqq>x(JqbqT_I7Ex_Fs zDYH#DgXCRvLS27Wv_{;IuD=z@*%3SHA#y%$5I*HQT(GS380<4w#8eWm99Sj-n%oOG bF*o>g7o=FMH@`LiIY5tpD8(haw7LHe!ak1L literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf4ca10ebc1e9daac0585d49f16c632d5dadb515 b/src/libs/libsrtp/fuzzer/corpus/bf4ca10ebc1e9daac0585d49f16c632d5dadb515 new file mode 100644 index 0000000000000000000000000000000000000000..c87bd2bfa9569335b4b1fb9716fa008d03a3b079 GIT binary patch literal 144 zcmdmg;Xl{Qm(>gm4FCQ+NC7DzU@TT(0E#d&FvRQSF_gpug^DscQtQEz3=IFL0vXj1 z1q|8oWr<*=K)xY^9s@&hPHAd91Lr}6&JLhK|NsB@1?tk(&C8EZE-fy}&y7z7X)7&G TjqjQ_xhplkpeR3$p`HN%7OW-7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf5c0891eaa757f14ffcd5977168d814e9e18c06 b/src/libs/libsrtp/fuzzer/corpus/bf5c0891eaa757f14ffcd5977168d814e9e18c06 new file mode 100644 index 0000000000000000000000000000000000000000..0643b1ed03f428d10d7a2e1b90e59a83df6a8eb5 GIT binary patch literal 112 zcmdO6U|^7B1QJD=9I5p{8VLUX|G(@1|CVZo21cNaWIPX0HkYfqn318nS{<T<!5T~p xFfed3Fvv0hl~tI|5n>Q-2MTjAG%(EJVE9+S1X0_dz`&rlXyX58YX7F`0RRG57mxq| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf6a832403a22548ac588dbf7cd340455f26b4cd b/src/libs/libsrtp/fuzzer/corpus/bf6a832403a22548ac588dbf7cd340455f26b4cd new file mode 100644 index 0000000000000000000000000000000000000000..93b41791f43669890d8d8e7bd15ef964fd23d362 GIT binary patch literal 386 zcmZvXF-k-+6h%*T#Eg|PFohsmiiN19B95KStYNAYX)KaoO^V-)ieTd!EL?_LaTUKB zh&Ml9Mev5?y_=l(k}OW|X%=9D%M(wpobw!Fg1wR?CFYQgUHEv--E_JV&@tPu^if5} zMpo0L*jLoU?{yt<a4oymOhs^|)U%_Sa@Q7Gj^W`YZ>Ctf6&c=ywT2VUO8cUKcedqe zQZ0|25+O?kGeE(4%fQ$rdhs1Rud<L4R^yWGPnnzz?{LwyGQnHd_FZqtx8-?Nqans0 bsBZi+=VN9En6}Y}0_yS)fB^kH{yj2ZO3y?5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf9a9a089dc3155f5bd73ecb3842a8c5a4e89628 b/src/libs/libsrtp/fuzzer/corpus/bf9a9a089dc3155f5bd73ecb3842a8c5a4e89628 new file mode 100644 index 0000000000000000000000000000000000000000..2f7401ad9e2799def16403526a74a7d926e2b1b9 GIT binary patch literal 41 dcmXSpuLc7U^%4jmJP=vT$N=ROGnz06006Q+5`X{z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bf9bdc5e37e1191c1006cc17edb9c2491e136797 b/src/libs/libsrtp/fuzzer/corpus/bf9bdc5e37e1191c1006cc17edb9c2491e136797 new file mode 100644 index 0000000000000000000000000000000000000000..b9a3dcaecba27282f268495cd3f7e9a60eff984b GIT binary patch literal 48 ocmXTEaIKn&0SuTK8LF!p80K(*c-0IF3@`x(2A~R%Ky`H`0NI`hasU7T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bfba791d6de2cb64a2fa5f88adc0b929f943747a b/src/libs/libsrtp/fuzzer/corpus/bfba791d6de2cb64a2fa5f88adc0b929f943747a new file mode 100644 index 0000000000000000000000000000000000000000..f17a59b60f65f5b331d92cbf222b13976dd6ebc1 GIT binary patch literal 206 zcmXwzu?oUK5Jca_fZ8Ut#6l4i#9k~d1;0Qm3kxlha%-{i6Vmw;w*HBKvd-mn7VdU$ z_Gad=ys|k$s83#=>EP~DXiTrZ0}B;x!B|{*he;dKT27$<QSYupu*Dp+SsGaXZiX<@ x>R&C&R%At_Zx8R;rPGTV&-7;>6ez-8A(P<B8u_CH$zN^GKo$K(D6jBlYhU4{CuRTu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bfcd9d6c1d8af57796c496e7474d230683d57aa0 b/src/libs/libsrtp/fuzzer/corpus/bfcd9d6c1d8af57796c496e7474d230683d57aa0 new file mode 100644 index 0000000000000000000000000000000000000000..6ec7c2a02cf004ec41a5ec3874c6abddbfe6f5eb GIT binary patch literal 218 zcmazqEl!P(X8;05j?{V(&A{;g|9@WwhU#jd7=r>>qzOcxqYyAK^r$gZ7c&A)RtFgd z=36o}C@|$Ql*BU>v2ZY?mM}2*F<iQIY5&CkTrXc%GpGT<tp^~If#KhO2Pv>?7?eOR R1A^}$r4aD{5`qm80RRD&XifkC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bfe684ae2803f6dbfabf51657fb81687ec0af29e b/src/libs/libsrtp/fuzzer/corpus/bfe684ae2803f6dbfabf51657fb81687ec0af29e new file mode 100644 index 0000000000000000000000000000000000000000..5eba99b2996041fb75a3a0df0f87e975c01cc81b GIT binary patch literal 51 ycmXS}27+Qn1|R@YT=53kAc55Q>dbfs#{bpT3=DG^IG7k5s+oW){#RR7{s#bsDG#y$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/bfe71e8415c95c9697989f224bc1f7ab94f4316a b/src/libs/libsrtp/fuzzer/corpus/bfe71e8415c95c9697989f224bc1f7ab94f4316a new file mode 100644 index 0000000000000000000000000000000000000000..c1128546a230b1332e58b302f79903811094ebdc GIT binary patch literal 458 zcmZ8eJxc>Y5Pf?F?_wpU@B;#R*eXG=GY}y*f!O#1qJ$I&K_PcGS<q5jOW_(De?m%w zjsHTiy&|nxNXEBwhn~LWc6Q#*o4J{VbVPapMo}=hrX@tAi|L&#WtpWrm)3^zUig8S zjG_1HDFxWpeStonfuwg1?2e+_2PQkvn3p2bRDIMTpRkQ|MY-AykOnYydQvUI)Er*5 z3m8{_Ex&92)`#h|Ntz=KyR`97%HxxyF}&!X4F~)3^oFfmI#HN)HIEZ2D>dFMvYlz1 zsCX0Zf3{Q76$D&nHP>Pf$QDlNq~0?3h##S2g0<K&oR>SmwN*;<C3BYs{(Ii9Q~gDr dwj`UC%7eO~Id+BI$oWS8|5tKV$1onk@Eam0V`BgS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c036de3b12eebd08719e83ba015d7fc81e6c956a b/src/libs/libsrtp/fuzzer/corpus/c036de3b12eebd08719e83ba015d7fc81e6c956a new file mode 100644 index 0000000000000000000000000000000000000000..21aeb7081925767cc23cfd914e763196cf4fea89 GIT binary patch literal 298 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qL<U|<9>>Z^g$U;!X4&%h)AR0L9~$G`wn z36ub;)TjojlxMgJQUL=0GZ}<oiUb%Sl5p)X30m6&bSA_V3=E5{!Ojw3)M+hYW3Db{ Q1bYIHECYiMR1d>S06;lB;Q#;t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c07f0071eb62d96cd63402853d07efb5b655fd0a b/src/libs/libsrtp/fuzzer/corpus/c07f0071eb62d96cd63402853d07efb5b655fd0a new file mode 100644 index 0000000000000000000000000000000000000000..83455423696bebdcbde3939b356b8bbb52604f8d GIT binary patch literal 313 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bO*!N}nb5~(g`WT*zJ0t!LMXfOlFh9HPI zh>c>{H;@T%!zMB^APghVK#*H-7znf+tLs352+J546rg;d7&05=I|eV1`4AsLNa1#% XfHg>zLEtfib@3b_AnPB43IhWGQf)My literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c09d173f9ae068a42da028e60732bf0a70fe0fbd b/src/libs/libsrtp/fuzzer/corpus/c09d173f9ae068a42da028e60732bf0a70fe0fbd new file mode 100644 index 0000000000000000000000000000000000000000..cfde2dc032c5da7722dfea455429715e7f9623ef GIT binary patch literal 1004 zcmcIju}T9$5PgS-P6C3&I*>wal#trSv#}8Th9$)n2O=S-&8=|P1<UmL4qLw`KOlnO z_;xp7vKS&K4&3apJG=Ad%{w!^$CCjtEhInXN>kO_B!t0_?;dkA=|KAD+;12S`bcnu z_XTE5p+Ck2#AT1(m{Ny(?jc6CAV)D}j-rC7hEwltnIyIxG@S_$-qZ!Gh0NXYIED6H zknwwPFrV{6YRp)wS2?76pYFN2C|)-4tQy#l@m&3ghr7Xu2QBar<OV;hUSfXIHvF`~ z6Z6y6cwXE1Aq_j`)dr6nqEz4W>gw`!X+7m9nOhEh?A;A6xnBRuyjGD>Fu;Moy{^^N rYjw*km>p|_TYu`Eg3P>JcWafU&OkZ*mzAbzWN7hGv%&~4{LjAt9xTUE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c0f465088ec83d7c198850e7fe238beff5758588 b/src/libs/libsrtp/fuzzer/corpus/c0f465088ec83d7c198850e7fe238beff5758588 new file mode 100644 index 0000000000000000000000000000000000000000..4331001298eceb01e3cfe93704c1fdb433effae6 GIT binary patch literal 108 zcma$5SIHn5&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU;?CH rgV>x546+QxbA%X-85nX>^Wu~9^Gb^Ha~K$yz$&>E7~X+F{5w4W@--R? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1069a65f457437affe1cd0900ca119211db2feb b/src/libs/libsrtp/fuzzer/corpus/c1069a65f457437affe1cd0900ca119211db2feb new file mode 100644 index 0000000000000000000000000000000000000000..8f88d220b9b3b4adfae9339ee022c45eb7393bf7 GIT binary patch literal 82 zcmdl#mErYDcCPCG3=9koQa}O-ZUb>OLp39a4J4|I85ydp!OW8&q5uE?3s?UF2|^_p N7`#B@^&r4d4FD6m6K((i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c11237425901fcc25154dedff96ffed3192ceadf b/src/libs/libsrtp/fuzzer/corpus/c11237425901fcc25154dedff96ffed3192ceadf new file mode 100644 index 0000000000000000000000000000000000000000..bd28ca2e3bb61fae934ca76775f940f63c39e3e0 GIT binary patch literal 142 zcmXTc)nxzy=HCqUEes5rV2<a?m6bZx42%pVnYpR?r6uvHaDG07Uy)gooS*Wvo`IpB rql(2^4X6#FDG^OmN&Gg5`qX+hsCvd~pbka`hH8*RdP*wTp#T2?I2$T( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c12b91ee3a68f8296535c561809d067cc09527e3 b/src/libs/libsrtp/fuzzer/corpus/c12b91ee3a68f8296535c561809d067cc09527e3 new file mode 100644 index 0000000000000000000000000000000000000000..ee19d7f34a3682c9c9704fea2d5a3f22802417c2 GIT binary patch literal 626 zcmZ8f%}T>S5dKmM#)41`^x$9hqIj@gg-Wpx;1h_3qFV{XrY6<P3VNvZ;ziGSjvn>o zy|2+1D1wyrn@!q^13R;m`TO>p_zrM%3?L3%^+-!G#+(9LW0=dw?DE$h3;_r0QlJy5 z`C-W(l99$cQlNlFr6Jzj*^pd{){RQPKk#L=Pe1l+9X!|@LG0R`1qfiterbhw${#Jm z-Q-w2b(aCTmGPb8g&EWy&f(f*zUJ)zYoyGIP8>q!AzYCa)UBn;n=+iP(k;Sc>y$kU zvy9vlO`;q$Wx9;F)1z$qU;_WX6>c$=kh^iTz*=KE84+kVss`6WD#h2zzl=J)I12st zZKynkNodn9!NRtA8Cii#rgjqJm?`7Hg=!bCSWtzc4%plMe4CcWW5zHsCu_lezFDEU z$6_Z|#tRsw*j-c2MfMKIWYKLP;Z4hUo{Y5Y-+)s^p=^Yg=T{pcqgLuxmvayLkW7C` Iy|AtE3nLtrx&QzG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1411b630bd7e3aa596b3a40e4e946abc4af88c1 b/src/libs/libsrtp/fuzzer/corpus/c1411b630bd7e3aa596b3a40e4e946abc4af88c1 new file mode 100644 index 0000000000000000000000000000000000000000..6bae4149bd89c31b3d5e8b7b869a38f88d54b878 GIT binary patch literal 99 zcmXSpXJlaTW6)#3395fHbhaSLChJr)0QImkR5LIzF~cPO{r}Hc{hyto8mP3IL4m;m NNUB%sR#!9p2LS%!4*CE9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c16d3c8afbc3ca83624683d8c7e1492b5c907a31 b/src/libs/libsrtp/fuzzer/corpus/c16d3c8afbc3ca83624683d8c7e1492b5c907a31 new file mode 100644 index 0000000000000000000000000000000000000000..2ded83e76aba285f0d0170addee1ee5a6e7f28d9 GIT binary patch literal 108 zcma$5m&YI(&%nS?l*^G?52S(Me;$NpU|?iW05Vw^s*BZtn32JwS{*7?3Z(TxY)+7> a;yFSLhKxX-HAn~oa#CT&044tG0SN$F{0%q& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1e3907ee03b769749f19ab00cb28bf33e99ab09 b/src/libs/libsrtp/fuzzer/corpus/c1e3907ee03b769749f19ab00cb28bf33e99ab09 new file mode 100644 index 0000000000000000000000000000000000000000..09479d37f5449c0325b9063c5737a4ab0146c869 GIT binary patch literal 99 zcmXSpXJlYF$DmjJn<1lx0SY`<uB_ClhVhb_7#RMGFfcPP)c^kv!vB52QZQ9az6@Lt Ywf`Bb|Fbhx1I+<zuGX!tX88Xf0ID(>SpWb4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1e89aa3e73fe909f61617bdbf43763597ad6fc3 b/src/libs/libsrtp/fuzzer/corpus/c1e89aa3e73fe909f61617bdbf43763597ad6fc3 new file mode 100644 index 0000000000000000000000000000000000000000..f0723588f8fc70f5ce8c6598aed8cdac0ad1c648 GIT binary patch literal 1117 zcmd5*F;2rk5S()?VM`PUR}_)02#63$1T}mC@dQ^XQa}-?xPl6$;R&wb5&S0N5foG` zb9X-b5+|}m#Ywhr_tv+wv$N$CPmd*l#XOlk^UEb7H-OfFat`PR<sSM>z%8!a$pmSN zWsK3ERuTSHPVZrmsKrdOxx2naa^fKkavZtC&U@VP^f_XTk+90W&ohRKWK8H+2ZHht zRF3F?@oN#HF=-;wIs$DaVX55rA+zT-l>Oe|jmra5Mh)s_vkkuKwtRiqw#UA}0Ddcp zjcbl8qKnC*<B`U9ts8w#(P-ZkBbXmkPy!6Cuo|`$BIF>WFRwDtcV2XOzmA88{H=(x zCBQ_Lu`W?tCM|W^7W=PZUu?pDYk`~HYPD{6t-3r<xFw?qZ}mMOOCokccMwh%*$6k| efoKtRlJ1;Gb}KRsJ4Iz?!Gf|bHpPm8Iq(bB)4yf_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1eb459cd03d0a4d03e31106551c69ca97124b55 b/src/libs/libsrtp/fuzzer/corpus/c1eb459cd03d0a4d03e31106551c69ca97124b55 new file mode 100644 index 0000000000000000000000000000000000000000..b9ef5b9c0627bef3ba17dfc10b4b06a20c0dbf91 GIT binary patch literal 138 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHcxJ1Q-|;ftZ1zwdX%`buoi115g74 zBTxZQ6&L_j7K6lqbn}h>|3!d;4Ax*ikl<th>nN=*o+AX-DcsJ$Fo!{aVc)m!3>*eP LAz_eG8K7nWaN8s< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1f3859559112f6c32c58d32232fddfdb526b922 b/src/libs/libsrtp/fuzzer/corpus/c1f3859559112f6c32c58d32232fddfdb526b922 new file mode 100644 index 0000000000000000000000000000000000000000..0a236e57cc0ddc1e81c30d1041b7ab27b6a65ab0 GIT binary patch literal 877 zcmb_bJxc>o5S#-cPtz#r0!k{&`~XErDk~e?6o<tXfe^%y!aN}<L~DEh%l#D_i?kLZ z__5CJ-U|xhM9AaVx9rXh!^~aY9pfeka5W6YA#WZLIRj#3+ps}@G%fPWZG?Sfz=B=b z#m;i6h}W-P8%=}ZV8S~RLfEN};v_R3j)-L)Si@c)-@UKh8M?w5;5oro!}X-KFK$r5 zf;#FI%uF$1D&5i7KB}Ap)X!bKJ>s5bv9@>xHSTVYWv*R{g9#PGFgJ|M5Jb=iE=G=F zP%n0*4fJfLVT4YG#uLt!gu@diE7G#+Wrf^uY|PhlO0j+1CO7I$`?YlnufF)lH*@61 sr<8uOkZX|S*gUCJ(Y`!RdvoZ|60`E*v-%^pP?Aqi2Ve-!$xk4D1D+?C#{d8T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c1f52c21de300b53a2e0c8d9d6545e0905698fa1 b/src/libs/libsrtp/fuzzer/corpus/c1f52c21de300b53a2e0c8d9d6545e0905698fa1 new file mode 100644 index 0000000000000000000000000000000000000000..56318296d02b534fa761c1e585f3ab7e83a389fb GIT binary patch literal 144 zcma$5&&^O1&%nS?l*y5*2Bd-D-~a!<3=Y-RKqfm_AQ4P5F!0JUFfs@<6mT*yfLRPb z<}kDa<$$Cx!+(Y<pqBWFAhn4s4F82dj8{NB1!R0@YCDGz!~Z!9Ks6i_88o13M4@Wd L#e+;Nu9gJ=HxnI; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c203db055a500681a923313c2b92bc79e575526f b/src/libs/libsrtp/fuzzer/corpus/c203db055a500681a923313c2b92bc79e575526f new file mode 100644 index 0000000000000000000000000000000000000000..0552b838364273743c462640233a622f47cb17d6 GIT binary patch literal 69 zcmZ?tU|<knU|^7_uD<pEKZ9O147gNRGdM7~=y?GpK|oJWPXmbc)IbCn00l*>pH<gX GX956=!V$Ir literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c22794f9f42f6280db779bc63a9ebe9c43bbce05 b/src/libs/libsrtp/fuzzer/corpus/c22794f9f42f6280db779bc63a9ebe9c43bbce05 new file mode 100644 index 00000000..841aca63 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/c22794f9f42f6280db779bc63a9ebe9c43bbce05 @@ -0,0 +1 @@ +s_0i \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/c2759a503427d4ffd8e1723afe56d2bdba100dc4 b/src/libs/libsrtp/fuzzer/corpus/c2759a503427d4ffd8e1723afe56d2bdba100dc4 new file mode 100644 index 0000000000000000000000000000000000000000..c2dbbe3260f12a42fdf057e4b362a427d683cf5e GIT binary patch literal 144 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO zsNH~}4y=cPfej=I0ct?Q7#J)V8^C7y#~Wk=#f_?~tBX_Pt26)q|F2$L4YR5G9|Hi5 C^d=bq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c278dfba9bfd8a3e0495a5f72e350174e1192888 b/src/libs/libsrtp/fuzzer/corpus/c278dfba9bfd8a3e0495a5f72e350174e1192888 new file mode 100644 index 0000000000000000000000000000000000000000..070f41e58577014daf95bbd558c9e08873bea2e0 GIT binary patch literal 171 zcmZQzU@$1DXJBBc%H&7|(LnIu(Hg>FVBln6kY!+GV5ly}u7(My5J^E1Rzto+Oqe6Y hz%U19Fp#c%^ZzFU2SVWccbHKil|TSjTnTaq0|2WS8Fl~w literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c285127a1a0b809aa3102e31a09c62c42c0d7631 b/src/libs/libsrtp/fuzzer/corpus/c285127a1a0b809aa3102e31a09c62c42c0d7631 new file mode 100644 index 0000000000000000000000000000000000000000..21e8aedc067ccb390f73dd28ebcae3eded704ffb GIT binary patch literal 491 zcmZQzWB>!^qD+p|dI<af|Np)W`zQYAdik;%DDv;WgA_zU=^H~aPz0<6NK_XyGE_Uv zgo0#-gA5EM@p+3G^olY&79yL)P+bDm1vIA`qz|MMWHv)I5L<&7Ai&AaAPX|R+GLIp zSU|X)fng2@1EVaE#{?FE5sq~(P{4@fKs96sdbt1<Gctgcl~xxc8_6KRu<zS<1`cDO zWx@<HFhjw#0?>Yt&tTrJ=73w>08{`}4x->d0l)HUpbLOXfIu=HNT7sryjC7Cz|cj3 aVbAab1c(a?d;tMAp~7%ZYtR3g{}}+lQeKh( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c28e7cd1d2bb18d686da20b8f435c76a2e673a26 b/src/libs/libsrtp/fuzzer/corpus/c28e7cd1d2bb18d686da20b8f435c76a2e673a26 new file mode 100644 index 0000000000000000000000000000000000000000..b724a80f3b6fa4688e6ca1067d28991b72b67407 GIT binary patch literal 148 zcma#oi)JW^XJB9`O8qaK38aDG|NsBK3=GxP3=E8L1_OftNUFM+5rV7LL0llP24XBy y`cNs55(Z8N23ZD1hSKWdxk5m$0)ucn1H&93i-m!MfrAlf<9DE)Kmw%LwHg3P$sL&h literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c28f4fed438bfafe7306966c35cb77a6bab3f91b b/src/libs/libsrtp/fuzzer/corpus/c28f4fed438bfafe7306966c35cb77a6bab3f91b new file mode 100644 index 0000000000000000000000000000000000000000..0319998955e4cdee1a5b1a4ed45b8ddacd9c653d GIT binary patch literal 110 zcma#o%VQ{s`~QofD3c?#o&gO0|NrmHz))Syz`zI*V5lx;gkYc;1X#luoD2-IAa&Kn bbA-TR!tFq64g&)Rh{u!<7W)e{5(ruV2D%r^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c2992980283a52be70113fb7f1277f9e2737f7d2 b/src/libs/libsrtp/fuzzer/corpus/c2992980283a52be70113fb7f1277f9e2737f7d2 new file mode 100644 index 0000000000000000000000000000000000000000..a50d184694c8dea4afae86c83c00aa0878fedd42 GIT binary patch literal 685 zcma$3|NlQb1LFq9qSQ=|dIm563i&cHR#!7JaQ^`d?1KP^<UbJAP&`M7Asj5gFo)qd z10#@Z7iQo9LO4KG)6M`?f>84xsGfo0|9`ORb6^r=4oDGxbBIxcW*5VMtZpW37n(WL za5E1)c+kQSZWk9g3{mWY=pinA;O1~JR2MS>gBZWxzW^f}>ZCytUqH7&U5rRe)zuIe GRs#UWzIPP> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c2a3722505d7fc1e1743e3b8c3da664b9e4ffdfa b/src/libs/libsrtp/fuzzer/corpus/c2a3722505d7fc1e1743e3b8c3da664b9e4ffdfa new file mode 100644 index 0000000000000000000000000000000000000000..706e0548d661391a9f3f4356db58adb64962d506 GIT binary patch literal 533 zcmb7AJxc>Y6r4>CvIh#9bb&wuVi7bpHX?$eg^gfuaU5YW2Z@9`P9Y1XF$N*OK<-ys zq)>33cY9)?jkE0A-FdU`YoLIW2tb->Gv`UTcUXJnc%u_0x{t@XiKe4TJnUwpcz+rK z9n>|Q1(x2ncnE>#HO*Y1?>zWQkr+M4QZxcDftv9y8N{Y0(Wo?f2L8PSUY?xu0-%?D zw7t5vg*{-ga&?=Dx5rJ6AXjUm%hi&y8tFtM3|Olg9N33q6Gy<<+(pAY&c}v|YnyGu zzQJz^L4*zYLGG|<mV^W=G*pMLTFKCC$mNFn?D3+4!lyfJlR5`>*T}3icFZ@6tNJS= u`to)PdII!mnM}Yr-Tt1F!q1$5S1*<stZaSpcNYPJ{i6%X{oMuU2Ydlim|ac) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c2b7aa8e50612547e24dae560cb4cfc8653e64e8 b/src/libs/libsrtp/fuzzer/corpus/c2b7aa8e50612547e24dae560cb4cfc8653e64e8 new file mode 100644 index 0000000000000000000000000000000000000000..f828019e44f5b17b2fc0f51f0c8ad98e19dc6bbd GIT binary patch literal 334 zcmdo09|{;47#yU41P~}NFjQAJFffAHK%%-BNC*I#VGIl>fkI3$1&YWDzVicl_5Xo{ z1JFcCAgut@YK_Ghpi~&p986<?5~u*7c_%hEG*nkJfZgyPWGy2xE=4t;fuR9O0AvNw Y7l#l4BRr}x{Rh&ul3^tfR5CCC0FlT%L;wH) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c2cea58f238f9bf8c11a992a370998bd463e00b6 b/src/libs/libsrtp/fuzzer/corpus/c2cea58f238f9bf8c11a992a370998bd463e00b6 new file mode 100644 index 0000000000000000000000000000000000000000..7eea98b93ed2f4ab18d4da1cfefb3508faa4f5a9 GIT binary patch literal 102 zcmdOk&l7kN&%nS?l*y4=52S(M|NsBK3=GxP3=NEo3=ER-JRn)F>S9Kqm^wrWgEg2I nU|`^6V31`nm?OkcTAUhRmY7qT8eh=BFo%PI396ETouL{4c>ELK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c2daed9a16520ef15a7fea26a5281386fac26c09 b/src/libs/libsrtp/fuzzer/corpus/c2daed9a16520ef15a7fea26a5281386fac26c09 new file mode 100644 index 0000000000000000000000000000000000000000..3053069ec0145da6f01dbb9fe85aaebe5272bfc2 GIT binary patch literal 73 zcmXSpude54XV9x=_+8(^00o{aS61p&GcYj01VHq^|Ns9pG(bd{+Zh<E|Fbhxw^Tbi L?$iDLUp*55mf91v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c2eeeecf81dc9b7041495009b1211f6a3cf63300 b/src/libs/libsrtp/fuzzer/corpus/c2eeeecf81dc9b7041495009b1211f6a3cf63300 new file mode 100644 index 0000000000000000000000000000000000000000..773938ccaebf9232e19cbcb7a7a30d257b6303ba GIT binary patch literal 3704 zcmd^C&1w@-6#nickclYP29y?R(@+(EnkpzLR%*e8n^M<;4517*(AJPK3LP*TYZ3Yc zGP^#38+`%SK0@i%t&1WRI-YayouAB4lhBHyCnR&{&Y63^bM86cIkD>4cxeG>H%+@s zR}$a%7XjA=gqncs2=%2oR#?J)^<)O+GPa7S9bc^aIv9y)+kT~~mXDBJ3L#BmOg&8f zUP;ZwCX5Sw<1hIIHb%>iGGip12p-Ti1wq6h7$X@PGoeO#5>f+^B?$+`Hp(B8`7EdN zHT09j;;~!57NQOZ8eG~y@mU^wQAF_jZv9&n($Es%r#;%Y2$Mbnr9Ha&p`+EkPNC`s zp`gQ*o}Y;H#g&She=#QddSRH;Iphd8feA@AVFn2pm;`0n<~C*QS}Z}^Xg)W)*sACg zjkx07K23E6Hs}(((6*Z<w6?jy)b<#7|JL^dg(=6KSK5@ZH@4lvrsIdNPZ0n^VlYN& z(JCribSbshOq7cZxjyT@_RioQuxhVc%biAN)h3N6u5%9VcgiOI(gaJnq>TJ_+vCL` z7xO59CumH&kkEEvvM;=Oq($J+e>g4`aCsjNEhr=ble)G~uBhN?=U*dzZDZ17S$_JE z^uf+taYEW`u+6ln+~Sr5t+${e5iw1SGyY_JWW&CxVLv^#kXMW7F<iM|cQ<myV54E` z-L5?RzJ8VLGh{+#JM7L0o%4cXX%5BG9vP9((mAl{9m-kNj>NbWMh(mlk*lvp!`hLq zm3<8rI7+Iam}h71YgR@Cp+!Iwf$?``#B{YMk@I0IKlYDjX!|tDoE?Jn2RqT61Fh4B z50V}00oD9P;%&)dw)Lv9+Oe(H%35Q&>Z~+oT4gRU1u8S}z!XluTt9dM0Uh=-rX8;_ zfr_jwRb}x2mF4Gn#HzZIITpQrHwoWAU?4DBI?_KWX&GuO<At737q+s3kyElI=l3%D z9ci#Y$923>>woF-*%w2}V2nyjW<)G-UhU->!T*OT)$~)#LhVA8KC*OPBsJBlene@H zZn*hyW@&(D;5u#{u4Bx~30e^bZR$@&{~$hAqx6LuB?22uLmo2hqolXBN^0^7^EHUt EFFEE@^Z)<= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c320ebce64164499243bcadf7d3fbdc048658e37 b/src/libs/libsrtp/fuzzer/corpus/c320ebce64164499243bcadf7d3fbdc048658e37 new file mode 100644 index 0000000000000000000000000000000000000000..659605c4f95c3e2979f5000dc51b49d8050b018d GIT binary patch literal 108 zcma#o%VVgCXJB9`%2Z5M1JXe7@Be>aAObNNK?KA6|6q!Nm$LyRP#}AlK^7<_!0=-Z pLpx9aND4FjXQ*P}`2T+*NNFMq!+#+V;}sB3k7wvituC&X1pr%{8PNa$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c3502c0c149c2d815caeb5887b505a00bd8cc3e1 b/src/libs/libsrtp/fuzzer/corpus/c3502c0c149c2d815caeb5887b505a00bd8cc3e1 new file mode 100644 index 0000000000000000000000000000000000000000..281c2dcbefd3520ee0c4279b1d4507698ea8f58c GIT binary patch literal 37 hcmd-mW?*0_j;}UgP-9@IMg}Zu|EpMv;|-!yO99Eu3_Jh; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c35db0e03cf5ceb983298ecf8e7f43f651b4b058 b/src/libs/libsrtp/fuzzer/corpus/c35db0e03cf5ceb983298ecf8e7f43f651b4b058 new file mode 100644 index 0000000000000000000000000000000000000000..aca3104b037305ae3e06815af5a486b3eed0ae78 GIT binary patch literal 305 zcmb7<Ar8Vo5Jg`JVzF?6Vjv_?!zmEp&;^0O5JGFniXupQ2{cJ9VlCI;3Oxg2nb{J+ z^2OxO-~VT4=+oe^HJhTL-upQxYjIbn*tZ%zG~WXEEMMnwF0Yyf?}Kp)H7lj&CZz+; zO&mmIsVz)NVtE#4H7I6Pn(W9^p*m(1M4eR~#}-=ru7#{6gJLx;{{l9<bR`wjD_Lls ZHU{$uv{~L}1F=Q&$?&ayZqZX}5nr;<PJ#dc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c373e20971c91af94c6ad258f0261fc21037a3af b/src/libs/libsrtp/fuzzer/corpus/c373e20971c91af94c6ad258f0261fc21037a3af new file mode 100644 index 0000000000000000000000000000000000000000..46c10fe7cde24644bf7870d58ee3824ec7a2a659 GIT binary patch literal 278 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2kk_zk5Q{@50$LfC(R zRCPB<F&JbrZ~^sz3}97d0BZvp?h8}`F~XdIlYv1NXl`kB@f@hwfByuI)Ow%^6$W#Z w8I&3R|3fGdVgNdju=`-PL)}#kGT9m^2zCvo)&JQ+8ZaF8pFzD^x4ya<0Cbo-&j0`b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c37fdda0a01bc6bdb2850a750eee373338e5c40c b/src/libs/libsrtp/fuzzer/corpus/c37fdda0a01bc6bdb2850a750eee373338e5c40c new file mode 100644 index 0000000000000000000000000000000000000000..6071cab7b64c754b1b2081a9fd678e49478a4610 GIT binary patch literal 108 zcmY$>%VUs?V{mXN%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)EKIZ1%YDfj1V=Z3=A*9 mEKUXnS)e+g^c-FWV+Mwt)V%m)h#CmV<j^&1L1|8EK@I?BTNFwF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c39d08faf1a141c5c7a3cb2aefa623339b2579b8 b/src/libs/libsrtp/fuzzer/corpus/c39d08faf1a141c5c7a3cb2aefa623339b2579b8 new file mode 100644 index 0000000000000000000000000000000000000000..7c8617bd4845e54e546803fe06fe722ac8f3e5df GIT binary patch literal 108 zcma$5m&YI(&%nS?l*y4=52S(M|9=f%28QZt1_nk31+YkUu^K~lF(Xh+9n5E7umsYQ v3=FaijCBkQI>mE@7>pSha#Hi+lk@XRigNN97?{8+lk<xT^clE-Y=de5gu)bD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c39f87156cfc35ed4440508caa05c4c3f956bc59 b/src/libs/libsrtp/fuzzer/corpus/c39f87156cfc35ed4440508caa05c4c3f956bc59 new file mode 100644 index 0000000000000000000000000000000000000000..a4c0900628fe3d4720eb0b9fa8b2803f712d583e GIT binary patch literal 69 zcmbREe?QmDm(>hFpz!ZM7)UCBcwmrF-EeXm14Cv!kXK#I2*G+F4nsQwqZNZzeChwV G{|o?-+7_4q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c3cca12bb9769a8a49bda58e3f111a7061fedb3c b/src/libs/libsrtp/fuzzer/corpus/c3cca12bb9769a8a49bda58e3f111a7061fedb3c new file mode 100644 index 0000000000000000000000000000000000000000..dd14ae29ce5821d06697d05a96b6f3abe8028379 GIT binary patch literal 180 zcma#o%VQ{sXJB9`%H&9`2hu?B|39NI14DH+0|O(Fml|J|2o?qtj0|iI1)K~FvS2xe zISlPUVIV0Cq&Pq-+P(pa|3VB5EFd1l?9S9oj(Uc6Q;?D>hX0O03qW#U)5{nb;^F4Q NO#hDpQ0xMl0RXApCy4+6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c3f12d7f35d7d17a1c105547ed8800ff4a769490 b/src/libs/libsrtp/fuzzer/corpus/c3f12d7f35d7d17a1c105547ed8800ff4a769490 new file mode 100644 index 0000000000000000000000000000000000000000..99eac7a5dedf66f0c5b36387c3bbefea69aea903 GIT binary patch literal 1138 zcmcIkyJ{Oj6g_K+uu@PF$xR4>ErL@72|-G`u<MW_U$7XlhQ)fZqjjMzBt)=m+&H94 z*!)R|?LWvTxNxJ&ol=A_Id^77^dyaaL3ifP+&TAkR^0;d5|k)(gMn-St@V2#NdU(l zAW;sIWB!uY=A@M0&2C`cFZhXXS@GUOWemJZxy{3c>k!yVoTxOk2>SP$U;>ea0+vI? ze3*jB_>OUfiz`T{Qz}hd>wZ8N$~%cG8&4F<MpN~Cs&gjeWDtF+TFUt8AaC6&cZ86$ zy)5h5G6Q*xb;A$>$rm^|6g|sBYq2mgTI+jbj?ki8GY<UjY&1i0a5+qAdsZ9UCk^^B z{iXaQkrr*?1DkGT(e}a=gO79>^7&J)^HQ{i<QKgW@a3s9?)aAHTIXb{mQ=?+OObZd zuA>Gh$(VLpxT&@6c%tx(9xRq*M77%P_>EZgIxRn-ZN%PLOfNgJRnz!Cq32juT49-i zv&5$#^CYF0OM4hXKlw*!(t4H9FH9=y2(9%FoAsQ1+uu;FXPc~cSjjV6QXQC>U11x! z9Pmy4090DSTc8=V{l;~y0*>e6^Vct(=<3s-;$*@pVY;r{S`&nq4dc1^fnCmhVBM&5 K6vFMJ>HY<A%<9qr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c406d3bb7e6b5ad45ea5ecf4dadfec39b6ab83db b/src/libs/libsrtp/fuzzer/corpus/c406d3bb7e6b5ad45ea5ecf4dadfec39b6ab83db new file mode 100644 index 0000000000000000000000000000000000000000..d5a9a367499257adbb218063c6567fc67034d065 GIT binary patch literal 1147 zcmZuwPixdr5dWpSV5)d&#DgLP6bqFWJ*t=X<Uu|314xi1N^o~ml3fozVHZ)`9;JB8 zM-hwPpdZ159&+-wO2s~ZGm~s>>yXTwd2ilt=FOk2Mc^7pMHZ$L5diP~W578euno8} zu-`4~&c!ZI9;vAJ&)6-MJd6=-12-y)U4#e&0vnB8S!H@1{`Y^JiMz%XaNi7p#?_d5 z1tQ}Uwj(Z~7`&g6dE#Cb4I4BeJrutp#KN$ooNSbk?J}64fp{gamS-FU=$cvdjSz=T z#IhXmSAa=~RE1NiN(B{o`BeDvMbYp^x%WR5qSYEeIdg`63UWZS{y0sx+B{FiHe_Wa zhfSc&g}nCj>}Q!cC+}UrCNpSsQjfC=leYpwk|gq`l&NY89?L$9ee*=YfxAGhM;geX z=dr53BUza;mJ6zrt@wACG|G`*w}K!jW8OIsa@ed<Gdk_CWNm2m_@@QoKN6sQ!GePA zb)+k-DPJT^vXqPZ9jpPRB#C;p_~jUGhZc;E&5YI6VV?BH<tQH{tespfvdiR3W@O-T zyW=mRL%Ek1`yc+CuWP!(%&%Y3b4+bfqyP`-=(<jc1vuvv<{zETWeTG0f9DdY(muyb zf_q|Xy(^||`K{>E^>`9W6KEDKL9$7jw<%zOzt+tr@Y^wyC1z(y-oM9IXeM@9+w9y| z8n$ifZmq!4nM2G8`(;x|9wE0-WeRn2rT&Aoc%CM`d^jrde)25qrx6=7)KS|2{sNpf B{OAAx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4968ca50dce7eafd827b705c86a3c8c243c31d9 b/src/libs/libsrtp/fuzzer/corpus/c4968ca50dce7eafd827b705c86a3c8c243c31d9 new file mode 100644 index 0000000000000000000000000000000000000000..46f4c77ef73470350ebcc69aac86322762a5010d GIT binary patch literal 132 zcmdOk&ts5`XJB9`%H&9`2hu?B|Nnnq28QZth6Y9;PcohdEL&a72ozHXt6*TT2Garz q44e!MvJ60V6~=Rfz+%GfK#Bv81j8H-2B!FbKzkV&;u-$uF#rI<TohCQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4a194108fb7ab614960baa527ee628537d95c9c b/src/libs/libsrtp/fuzzer/corpus/c4a194108fb7ab614960baa527ee628537d95c9c new file mode 100644 index 0000000000000000000000000000000000000000..50f75484190ed08528fa38f2c78580a7cdac7e56 GIT binary patch literal 69 rcmbREe?Oz-%W4KN@Pbefvbvaofe|WDUBSpuT@1ufg$xWp1_A*9kYWl) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4b037bf36b8a8e329e1076545f13ccc01f26cce b/src/libs/libsrtp/fuzzer/corpus/c4b037bf36b8a8e329e1076545f13ccc01f26cce new file mode 100644 index 0000000000000000000000000000000000000000..8332b2fd46f28bb3f635542f168d3186dfd02a0d GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZt2oFdm=9H$!7jQCg$TBc8Ff;&J3}6<+ zk2wtOKzSf345T<f8rr@AiFzQ;O)W}KjZe<cD=Es)iBHSSNd>E^0vYcJF&=0b0~ZkA N?_v1&|1Zcs4gk8$A;16t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4c6a62291252abcd228ce97cbe438eea026ea4c b/src/libs/libsrtp/fuzzer/corpus/c4c6a62291252abcd228ce97cbe438eea026ea4c new file mode 100644 index 0000000000000000000000000000000000000000..9184a4dc1df84394644aae0b13e0e2dbbb30e035 GIT binary patch literal 190 zcma#o%VQ{sXZWAWz*v+i%m4=e|Nr-8V5qKUU|_6=G2|JT1VEDig){##Ff;%eU`4+{ zir}h2ikN_kT1(iNtBV;y>VbeO<_MS;fC*G<GXhOl2MaPVSVL(BP6kF<pt%xItD!dj X23iCJ3IG3ttb_oD{|AA9LADwI!`d?a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4c9912ea6b2374c13c0ace6976f2f5f699ffc43 b/src/libs/libsrtp/fuzzer/corpus/c4c9912ea6b2374c13c0ace6976f2f5f699ffc43 new file mode 100644 index 0000000000000000000000000000000000000000..fa42023011c4ac44c866190a0d4fe735b7f3e81c GIT binary patch literal 50 vcmXSpudd~2XJD*m`2C;Z@AsA#hLvDYsZ-4W0wAgX><rZ{)s7&*z>o<51V9oK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4cc17ce9208d1f2d50d74e06fc26da26c948a80 b/src/libs/libsrtp/fuzzer/corpus/c4cc17ce9208d1f2d50d74e06fc26da26c948a80 new file mode 100644 index 0000000000000000000000000000000000000000..11d6634d620319e5c5065022a9142d9a33dcdf8a GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*Knnb$tsyeH44e!M b?JNv)I2is(fMnXBTK@kB8l$HNGK2vD9vKzJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4e3b28572a3afa7a379f3267cdab64561948efc b/src/libs/libsrtp/fuzzer/corpus/c4e3b28572a3afa7a379f3267cdab64561948efc new file mode 100644 index 0000000000000000000000000000000000000000..ce518843cb8c41eece67dd430141a36e5cbea602 GIT binary patch literal 70 zcmZ2k#{dJ442%$FHKU|<9fVz+YLLoU4H5?Nff6mn48Q;X1#+$cH8NILR|mdic=;ay DT=EY6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c4f4c8c8a72b8786f036463efbea8cf93362402a b/src/libs/libsrtp/fuzzer/corpus/c4f4c8c8a72b8786f036463efbea8cf93362402a new file mode 100644 index 0000000000000000000000000000000000000000..ac2c3a69bf3ac44cc9504c14130ecfd04e771516 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&9`2hu=L!w8`n7+{R*Vnzlqu2u(2@iJJ$lyEXI$b!^W7tav_ Vim@;Vw=*!z;b353f~kPe)c~!03fTYv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c56253ae481518c118362e32bacb8e589583ed45 b/src/libs/libsrtp/fuzzer/corpus/c56253ae481518c118362e32bacb8e589583ed45 new file mode 100644 index 0000000000000000000000000000000000000000..9fa2984dee3689db5360b882bddf80b626cd4ef6 GIT binary patch literal 579 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvR<N_6h#(2Fv29Q%2i&Fm!XF|+JI7JoiCV2))h$IH7jv+#c0EQD7k(|IJ05lq1 zg)UqLr#u5#1p~q-5RU?NA%qa&jApXR9H2TD1`Z%(WMF>)<otj}MzuCDCaPf`1;xTY wU>N=9U|^61#}?cLKpCJoPysL=k=*t0|KImO@w<p%M`huO1fYolK#bvQ0Do|0mH+?% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c5664724fffb21fe4aaedcc2f4cccb7c734baf74 b/src/libs/libsrtp/fuzzer/corpus/c5664724fffb21fe4aaedcc2f4cccb7c734baf74 new file mode 100644 index 0000000000000000000000000000000000000000..50503d4f756c04036e878fff9d1d412b76f25c26 GIT binary patch literal 69 rcmbREe?QmDm(>hl@E-=Miy0ZJfr5+>aRx9SBnE^azy_jWsJa>ewwV<` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c56be33619e05333c72cd6a96122f506495baa3a b/src/libs/libsrtp/fuzzer/corpus/c56be33619e05333c72cd6a96122f506495baa3a new file mode 100644 index 0000000000000000000000000000000000000000..2e4abc73e42264b2bb66ded62d057da55bc4ccbf GIT binary patch literal 154 zcma!LU|=x%|NlQ@QEDbfJ&*$gK&~$XV|6uzml|J|m{Xb>U%<=2Aj`lA5hR{$D4rw4 m5Drm4hoK$F0FuHC96$&LFfl#-;-ZoQ-L%rGs?;K&Of>)}Xc+|n literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c5be0bd184229bcdc209d38b7717c203d540b609 b/src/libs/libsrtp/fuzzer/corpus/c5be0bd184229bcdc209d38b7717c203d540b609 new file mode 100644 index 0000000000000000000000000000000000000000..528d6e98e9293cb4106f2b4dd538626dd853a62e GIT binary patch literal 136 zcmdOoV`2b<qD+p|dI<CX|Np)W4As>P+wcJ0Z43;I4ALMS)tn5)V7gizVgQ3RlxE;$ oV2}kWE3Gb`BLt)w7=+sy80IhtFz|Ey|8B&{Aj}}c1yXAb0J1bB00000 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c5c5c5329c41fc7d9e10875ae471e95a1d25000b b/src/libs/libsrtp/fuzzer/corpus/c5c5c5329c41fc7d9e10875ae471e95a1d25000b new file mode 100644 index 0000000000000000000000000000000000000000..fa8856b55777d2523b77740e72156560f8679deb GIT binary patch literal 39 jcmbREe?QmDm(^C)P*BXs00h;=42;#)AeJhK$G`vpK@khG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c5dadfb7466af003759276ad3a4db2a31bd3a1f8 b/src/libs/libsrtp/fuzzer/corpus/c5dadfb7466af003759276ad3a4db2a31bd3a1f8 new file mode 100644 index 0000000000000000000000000000000000000000..31928ed0df2de59324cc24c841f15c60080d873f GIT binary patch literal 136 zcma$54+adiMVTC_^$cJD6!B$XsIF$%h6m_wV_;xpkOpa}E@lMltFBfD(+mvOP?~|0 kfk76ithBm#ju2Q(xSfGv4ub&0zHi?dI1CwpJTRyR0R5~hZ~y=R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c5e792503fa363e620df0ff1d53c1047a89a7854 b/src/libs/libsrtp/fuzzer/corpus/c5e792503fa363e620df0ff1d53c1047a89a7854 new file mode 100644 index 0000000000000000000000000000000000000000..3b0d1e4ea9249ba27842360714e59b46b084c16a GIT binary patch literal 41 gcmbRE|3BBum(@UE1tO}88IS=Zh*Mq6$WUDg07jJyPyhe` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6092d37ed02088b0cf87d5a056aeff5f73afe60 b/src/libs/libsrtp/fuzzer/corpus/c6092d37ed02088b0cf87d5a056aeff5f73afe60 new file mode 100644 index 0000000000000000000000000000000000000000..f13caab5e4765eb369afe7e02b82284eb2fc068e GIT binary patch literal 300 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5qKcU|<BXfkZJ73jkSR3=AiMB1|xOMW}o=NWpi0 zAP-{7|Ns9bfgA-O-x^^GSQTDlK*pf}5;TJyieg0rHkYCpkH&%f0w^AU>>nluuzwhi F0RSkGBe?(o literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c612595448af7cbec999dea23dfc8027c85f5a24 b/src/libs/libsrtp/fuzzer/corpus/c612595448af7cbec999dea23dfc8027c85f5a24 new file mode 100644 index 0000000000000000000000000000000000000000..3c3f405b114dfcf755ce4a23bece15d7d1f19eb6 GIT binary patch literal 252 zcmY+7Jqp4=5QSgVV(kQL!Sw1mMDPf*1X)NxC1lkiTclBg;0e?_+F3fjb)(?G%$uKY zX7pr(tp-qJ%2ZU^L*U$8m_>A>_sME!be^u0<<O?dIPU@jM2f>Z>Ja;sDIKRLL**C4 zI;B8nRE63z-o8l5Jb+}3%+N5ZgoyCk`5@wf4n4N+8t7IJBjEU}IsCtgS4;+2;392j On-`(?>AIVZ_~8v#Z8F#Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c624a46979fc72671616c7a7a3b0af43a85b2d81 b/src/libs/libsrtp/fuzzer/corpus/c624a46979fc72671616c7a7a3b0af43a85b2d81 new file mode 100644 index 0000000000000000000000000000000000000000..934461b6f71636f4ac37267de0acba2b1fb25d23 GIT binary patch literal 39 ncmXSpude54XJD*m`2C;Z@AsA#hU%7T28JyR3=CjV1_&PjAw&#$ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6274846e4c681ba7c78592e01ce0491d486f286 b/src/libs/libsrtp/fuzzer/corpus/c6274846e4c681ba7c78592e01ce0491d486f286 new file mode 100644 index 0000000000000000000000000000000000000000..d5a762f811034f589b53a5fde370cc79f5ed3f56 GIT binary patch literal 252 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}_DEFp%;9VurSFK%yR`5uzPP6)|L{a?~@lgVcZkOi2}x4N(YGlltF_ z0jh?h3h0FYK+`%~{{IIlU;$#q;_6ut)l32mIt&c0==`4l%+<wE;}n5v7#Lz1FvS>J Pd;T+37w@0=pX((6b7nJ! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c654b0d1ff308db5f6fbac10f1dbeb4a8b07ae8c b/src/libs/libsrtp/fuzzer/corpus/c654b0d1ff308db5f6fbac10f1dbeb4a8b07ae8c new file mode 100644 index 0000000000000000000000000000000000000000..fb18600fb297632225a93597bac22e827d50b364 GIT binary patch literal 106 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO pgV>x546;CVK<PO`48{x$Iq}K)Ri$7PQ}clAypp2)|2feNOaQOL7m@$~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c65b95b4755c50f2cada1929690bece4316280e8 b/src/libs/libsrtp/fuzzer/corpus/c65b95b4755c50f2cada1929690bece4316280e8 new file mode 100644 index 0000000000000000000000000000000000000000..e88247b39a8d65f4d28546e83f4887b8a5915a41 GIT binary patch literal 736 zcmb`FJx;?w5Juk`OR+mdiijdIia-=mBKm|2AR)Mcs}w1q2vls5CMXRJeL9Z70k}z& zHeE^z#4_V`;vWe`NQ`BzcRc>)eLGJ3JUynsWE_pAvPwATuEAO`K7oBOOy$;`7ThrK zZ+gTr^N`M-Foj}3!XZ4rxC48)ZNS?wY#)i{Nzk0b>4JssF35KfB1}aWlMslCur$ZI z<kXiL^{$x|ZN5}ZzmMcHG*+_tRBNVz?W(79$!MsjZ!zy8XlLFl*sXuSE)4wbDed2* zV=|Lb)o?bFvy$OsmYJFIsrXrziaK(1VZEZaa~tP}`zzx<oOkDD`uil*aXgCX3*@bW d)+n@P-Ri6RxLU78Pe!Bj^>$Ue8rwORvp)j^hmZgO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c65d8988d02b26bc78043e664687663fbd060f7d b/src/libs/libsrtp/fuzzer/corpus/c65d8988d02b26bc78043e664687663fbd060f7d new file mode 100644 index 0000000000000000000000000000000000000000..230140c9ec3ff3b283ea847659b52fde19de7076 GIT binary patch literal 138 zcmZ2=apHf;czr{LqD+p|dIm7~|M$PIK0|di0|O%iLn{MAb+H-{GXh1_Aqp5Q85mwN kC;&N}3=9ggAZ69XbA%X-85nX>^Pp;ors5eG5_57G0F%iR?EnA( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6711df234f649cdf74052665e6ab184f3bbe151 b/src/libs/libsrtp/fuzzer/corpus/c6711df234f649cdf74052665e6ab184f3bbe151 new file mode 100644 index 0000000000000000000000000000000000000000..8213d004ad5881ffe0bc2a542a58c48ffb39ffc4 GIT binary patch literal 484 zcmbVIy9xp^5S-X}T8VaoC?X;Vf@o)RLMp*;P>>UBMDDZ-_^8gp#_}MIKce_K{=iu% z#=S)43L9P6ESY3xcLz$T-T;6*v78lE3WEAL?N$0x4&e!aMJOG@V-R-miV@Dhd@uzX z?qqw2lOf(LA_}i=n1q?=P#IFPR1yU(+?HAWl=A^;ffeYM(8&AfE;;8mC1-djJ8$r6 ze83(jkRkfR7s886B7<Xih1H@hT4B+UwT7@hjn)JU7+wlB34i7~W5?A(B}B7TByhhW Z-t~W5HeYOsCi~eIz3~@YnsTQCg(r98V*vmF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c67285c5c3b640ae2064eb61661049d8b178660b b/src/libs/libsrtp/fuzzer/corpus/c67285c5c3b640ae2064eb61661049d8b178660b new file mode 100644 index 0000000000000000000000000000000000000000..f23d71a234740a62e1afac8bdb7a3ffed64bded2 GIT binary patch literal 106 zcma#|Wnd_YXJB9`%H&9`2hu?BKleXSw7Qysfe|9W$WYBtU0e*Ls?{MP4AxMZfs=tj e7O1YYx_FKdSWLK`fng4i#lpbBzya0-Q3?RAQV$RS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c691cddd4168a6eb89aa72a640dac1458970518e b/src/libs/libsrtp/fuzzer/corpus/c691cddd4168a6eb89aa72a640dac1458970518e new file mode 100644 index 0000000000000000000000000000000000000000..5f8a9cef0796a284e89759cf1294335fab94f5ac GIT binary patch literal 482 zcmZ`#Jxc>Y5Pf5zcPS*8N+Dop8YK|4u{q(YfHu~0NVvd3h;kc2Sn#8eSlCzww(*ZB z{+#@Q*kyflcR4Ne!7#ILXWo3kd*4q0<XMp3(-Wjl@$u>#^SOnwfRJ3$tP$8~R$+io zY-+w@l8k|aJbQloEdpCshnix|W2r!{#Bt>%+&~+$4%>BG1=pGaE`YT8TC1{3cXAh3 z5G;MPv-*^N%urB#-dIx$ot;mPMpuK&QF_?pBE5xb5=EsAYWW9pT(_>{0BGWU@de?) z7g{3w|MVzwS97Y+-}1Zcptl4P<jAnCC-+_n2W|}4;O&VY0@D^B0gYf%Z1)(jRTBu& aA#<Il!!%FKSo=pbJtc74bx$vT=J5@1?p~Gv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6996110092ddf633c57a9da68804f1fb0253ba7 b/src/libs/libsrtp/fuzzer/corpus/c6996110092ddf633c57a9da68804f1fb0253ba7 new file mode 100644 index 0000000000000000000000000000000000000000..3d16d46aeedf58c1516d846d3739236d29a5d6d5 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7uw-C( i31)IKFvv0#&k<rUW;g%_FpX+9Ao=QIut|(SeboT3kQLYf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c69be3fa3872e7cc34ea0cb72fc18c88a811a9c1 b/src/libs/libsrtp/fuzzer/corpus/c69be3fa3872e7cc34ea0cb72fc18c88a811a9c1 new file mode 100644 index 0000000000000000000000000000000000000000..115def03d1a35162ee17058d6a0efcc2cb7461a1 GIT binary patch literal 115 zcma#o%VSWCXJB9`%H&8@1JXe7|Nnnq28QZtAd{VeK@UhJK0^RWAb{``1wg7>d;T+5 m7c<B*FakM@K%GGCV31Rq3No0f{XfGT4v<QQ_ySJZ|BL|sgDJ%T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6a571ce5c35b68b82a4c6767fc11a9d49154a2d b/src/libs/libsrtp/fuzzer/corpus/c6a571ce5c35b68b82a4c6767fc11a9d49154a2d new file mode 100644 index 0000000000000000000000000000000000000000..e9a60d77192fd58ffdf2b5cce11a822738e25bd3 GIT binary patch literal 144 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7`lN<<}kDi11Sz5W@!5cBpQK6{QC>yf<aMgCPzJ34F^LN$oQS?K;s=@(u&1E L*1!J_Qa}m-I7%St literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6b069d2342f2357cc7f61532e8a3560a6723204 b/src/libs/libsrtp/fuzzer/corpus/c6b069d2342f2357cc7f61532e8a3560a6723204 new file mode 100644 index 0000000000000000000000000000000000000000..25a8ea0ba7b24709ef67cc555f85f9a8134d9e73 GIT binary patch literal 136 zcmZQzU@$1DXJB9`%H&7|(LnIu(Hg>FVBln6kY!*j#--rfe|rW-28Qb5IYJB!4Gau( dp!$T{5o`{S7|5LeU;r{2#NYx6e`5F!1prMcA@=|P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6c9c1f975551eeaab2ff3e5519f723a75494078 b/src/libs/libsrtp/fuzzer/corpus/c6c9c1f975551eeaab2ff3e5519f723a75494078 new file mode 100644 index 0000000000000000000000000000000000000000..efdfd7cc05f5570622262fd55f212a2b45e0211b GIT binary patch literal 165 zcmZQzNR2N`WMTL(!~g{)@&Et-_hn$Ht_BLQg9Q^AiZVG;>lqmsY#A63vOqpVYFQ#w zACO{XU~4GgWMGg5vVdR?LncQ(L%T3oL1!wM!)OiSa#Vqg0V={!z#tjVz`z35!B7vO H{{II6sP`X- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c6e510c7b2921decc4755387eb6ca4fcfdaf07f8 b/src/libs/libsrtp/fuzzer/corpus/c6e510c7b2921decc4755387eb6ca4fcfdaf07f8 new file mode 100644 index 0000000000000000000000000000000000000000..223cc8f83a910fafb1274f5363374ae932c8529b GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H&9`2hu?B|39M;14DH+0|O(Fml|J|2o?qtj0|iI1)K~FvS2xe zISlPUVIV0Cq&Pq-+P(pa|3Li^05-cb6=djtUnE1z7~&b=#*$$uk{cKpI#V+_>Y;9^ R0@(y|Hw(-OK)M`=IRI-&Bhvr? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c706d9f94f4e3d4b1c1e9c98962ed77d6537c54d b/src/libs/libsrtp/fuzzer/corpus/c706d9f94f4e3d4b1c1e9c98962ed77d6537c54d new file mode 100644 index 0000000000000000000000000000000000000000..81be723d38faee580d0b9f17feff1cadc678ec5f GIT binary patch literal 259 zcmdo0-;V3$%W4J&hHw8Jq<|C<{CX-^45X?VfdnIiJ4mRyn316xs0t_qA)^@>I>Brp z7cLHDyhS&Rfe~)lM7UuvgOGJrLv(&;hB*VPPE2P&8~`yX8p%l@XEP`;Ffakd7^{mJ WimNkHp<ehF{~rjd81(YK0cikAVl-y} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c70a79cd3fdc7fee7c7b2d96b65a4678e29fa657 b/src/libs/libsrtp/fuzzer/corpus/c70a79cd3fdc7fee7c7b2d96b65a4678e29fa657 new file mode 100644 index 0000000000000000000000000000000000000000..c89bebd5a713c6f616979fc7927ed408fe9a1b19 GIT binary patch literal 284 zcma#|W?*252jZek4wZT!4Fv!H|Mz8JsICSwtBV;S46p=*uLc$?OUx-{aA06aO^q+$ zWMGhGC{9dEjZe-mOD#%FPmM1w&CN|@WcUX(3k0Cr8Rj6FQ(Xtt#mG=vT|7q!EG*p4 z09LT?+xOylpzRz?4Al&QK>Mw$L4X5h2q9Mi)gig64CE@1qp&!s6{r;EB#`M~d#bDB JK~^y_003^KNMZm0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c72a2338bf5493bf10a0047f00aea94d7a10dcd0 b/src/libs/libsrtp/fuzzer/corpus/c72a2338bf5493bf10a0047f00aea94d7a10dcd0 new file mode 100644 index 0000000000000000000000000000000000000000..52ca0b8d14722994f93a1b50dd0a19a79da1dbae GIT binary patch literal 106 zcma#ot79n9VPIe=%H&9`2hu?B|Nnnq28QZt1_nk3g*=c*bul9dgVaHRHH^UtVlc|i c@nt9$0*eW@Gca(>0W+Bx{@({024+_S0PQ>yumAu6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c72abe9f4196721dcb62adf662bb7df1b99023a3 b/src/libs/libsrtp/fuzzer/corpus/c72abe9f4196721dcb62adf662bb7df1b99023a3 new file mode 100644 index 0000000000000000000000000000000000000000..00bb0be8d47f40bcd16328f4d078c8101d2dbbc1 GIT binary patch literal 48 lcmXqzV1NQ!W=4kUY6gZm93X*e1_cI~00RRPP#lD+D*<~U2D|_O literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c7416348fec1d098c05d0c807753cb378433d70d b/src/libs/libsrtp/fuzzer/corpus/c7416348fec1d098c05d0c807753cb378433d70d new file mode 100644 index 0000000000000000000000000000000000000000..e63dcfb154ff123a3432019df81e693219d0ed9c GIT binary patch literal 208 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)muu4aC06z@S*n$WZMt69{gCh?z54KoTIp z$iScgqN{-_c7e3l0Y%_I4QR~Fng4}>I)LUQs|8zyp_YNch_PWN$het|2y?Njh1&sT Iz|E=$02PxeJpcdz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c74fce558990731d1b6c4bc112d124e4b4be76b4 b/src/libs/libsrtp/fuzzer/corpus/c74fce558990731d1b6c4bc112d124e4b4be76b4 new file mode 100644 index 0000000000000000000000000000000000000000..28d4820975888f616ee818faa079e0da470f9467 GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_l-e1+YkUu^K~lF(Xh+9n5E7FkonS j31)J#FvvFb%n@Sv_y0d5NW_7GLA)p*EXM&R85pYpFvAk} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c758ec9fa65a245017a4cbb6e0b81b05d62920cc b/src/libs/libsrtp/fuzzer/corpus/c758ec9fa65a245017a4cbb6e0b81b05d62920cc new file mode 100644 index 0000000000000000000000000000000000000000..bc7c5b4370d3193c25468e9d02f33af536a68e40 GIT binary patch literal 294 zcmaKoF$=;l5QV?$VBCtG1*f{HyOTe_-w+%!6pBb|7bCQryK{f1xW&6v6c-PYd%1gg zmlwM_a<*{Cg{&Y(2w@N2L-GOSq}ud#GAzFw$ZRG5X@QjyR~bQ77?%&Xz9X2#%AstW zJxwul66ge>DCOC66Nc=WB%|cbV+^e#7=&mIj-nDy;DQN(-H2aJA-_c%U-vUPF6i`0 Ts-%9S>vAowrJxbL$}hkR#KSlg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c7706f33b8ea531644b84641cc9f830572b4df89 b/src/libs/libsrtp/fuzzer/corpus/c7706f33b8ea531644b84641cc9f830572b4df89 new file mode 100644 index 0000000000000000000000000000000000000000..4407f47b75eec0be0fdcd20813bf9a9562c23619 GIT binary patch literal 738 zcmbtSJxc>Y5Pchh<`jY$h#Ck)vCu+Mqm=|M5Su`3tR;kyA`nz^XSJXa1O-8`JWOL_ zWqoC$jlV$bw6Mz`I0fa_nY{}!TKeF2zTSM?&O#NHDg$WNW3@$+1f^67-77WL>q#<w zWu{E_N9H_O<PoI5MA$=+ro({q;5b#lF7E-$&HDMxcn}93Lq!;ONJD+JC&`gP;tZH? zQ!k|w`V0@v&L0&*2<|@}l*kSGLlg_-6kD2hC@ozTRCRmDUT^GID~;MlmL|=5=^#19 zLdMV^yu~I4c|aQz3mxwr!UT3H3bCYn;7<?DMdw#FAQk^FF5`Z955tvsoS}BKA1|3a zC9(%o{~KQ_=fdCx(I=z@$r~hm1_JoXS=XxbirLUXdw)6(bjmHEMH%j`+o!`N9E5kq zy6cJ=Etn&s2_lY2i#wug*|dc<(3Z)T7MJB`)i0mlWR}VMScL&${~(Adj)4Y<^2j2S pA*;;4Ll}J?l<~<A1*{mje^dU&38K0Qc`F2t(v#(*iF!<_+BcDev3LLg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c778f53511dcd17e8bf0d4d445a399301e33de92 b/src/libs/libsrtp/fuzzer/corpus/c778f53511dcd17e8bf0d4d445a399301e33de92 new file mode 100644 index 0000000000000000000000000000000000000000..61baeacc1aa9ec2cfbec295c260b243be282fb56 GIT binary patch literal 411 zcmdo0-;V3$%W4J&hHw8Jq<|C%Jd-O1lGThrf|0=;BvM_>$WRSb1r&mi(O?FU4M7lb z5F5iVMwnq76Oj!g!a!|^>Bzc(Hqg-t)le6J{nUUQLU2zppm++|d0@xOV*+4k3NSMK a2LnjpfpjH9{8|zpr<ccIs~4XaF8~1g|4CB- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c78cfaf4ce942c3806ee9e47c1ba3b36b978560a b/src/libs/libsrtp/fuzzer/corpus/c78cfaf4ce942c3806ee9e47c1ba3b36b978560a new file mode 100644 index 0000000000000000000000000000000000000000..7b268f34b4784f11be6e7c0237bbaddc7ca0894c GIT binary patch literal 137 zcma$34*`rtnH;J03}Ep8e@1FfL3K65HatLg8v`Q)gEUA(buo|yqN~-xGy{V*lxE;$ lWRL}_E3Gb`BLq^<Al%NtFo!{aVc)m!48jaDP<1Q})c}mEE5iT) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c79e9bc3125722cf4f5de6e03f8ab1f46644e9cc b/src/libs/libsrtp/fuzzer/corpus/c79e9bc3125722cf4f5de6e03f8ab1f46644e9cc new file mode 100644 index 0000000000000000000000000000000000000000..7779ceb9527f14b57e1f976f5d679c8203188a95 GIT binary patch literal 456 zcma!NU|?X62NFe@9I5p{8VLUX|L@DdP+iTyzz7jws4ixNV4xUCfj@&aL`HWxCnrNY z3xg67APK*kc)dJ^5}->Mi&Fm!XF`lexI`81BzXo&h$IH7jv+#pKmu4-9Rr3N{s#hO zz`-KVz$5@<qpQ$mgt?Lvs)7OG6%^kyFz8k@Y^w$;{|+*cQ{I^2BL~n#9LhUkpaaGL M(!e-^f`;Nb08Z;nA^-pY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c79fcc7f3f545c0943c2817b6b11110d61c79a27 b/src/libs/libsrtp/fuzzer/corpus/c79fcc7f3f545c0943c2817b6b11110d61c79a27 new file mode 100644 index 0000000000000000000000000000000000000000..955bdda1962fe99e26f5cc33421ca578902e9ff5 GIT binary patch literal 1997 zcmds2F-`<A44fb&PD_JCcLhIyH(W<WL%YqjS6_9c;z7KDuh3BJ2WXH8<4oe?bkS-l zKnu~zvK-qRPsYyk4Z2~70Ny@UOPo{Ty4q62KoM|jhPVxg^rA_!&kA+>wD;cJt1-nD zc&%=3X(t^GWJs@nOEylR^vWG^a=|J#Rtk_(x?@<xbtp<rWoKg?gLX0%Xpok`DhC@h z3woTr;6A5fwsdKtEccoVfNgjih*cDXfbf(2tvman6a2d?^}Crs*xaER*b(P$D!UW# zFg6OjYv;_bwFu!TQaNP!la{;v%@#T;tITed)qiO=FO-VD5w5f+;http@a^a_J7+yd t9UHQtuQ<slez?OSnf9p5LA$1(7SJXpw3j6g)`5@ZnPL)zPG<>Nd;;+&ZQB3< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c7aae761a287af4a79aa68e660f69f433879e0f3 b/src/libs/libsrtp/fuzzer/corpus/c7aae761a287af4a79aa68e660f69f433879e0f3 new file mode 100644 index 0000000000000000000000000000000000000000..82f0439e615ddb8bb9b701165d3efb78a4d4e37f GIT binary patch literal 112 zcmXAgI}SiV6h+TW6k{=1z%(`>RxnX1Bq~&<U@DuiR?jm|PIB`;*VpXZ04$Rm4^2fx qI+z<U|AM$0VrwuFRO#_&K2?-(72J-;B45>ln)EFbf)Fw~ruYIMeHc>! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c7e54dcee056c6deaf8fa3ba0e1ef7bafffb680f b/src/libs/libsrtp/fuzzer/corpus/c7e54dcee056c6deaf8fa3ba0e1ef7bafffb680f new file mode 100644 index 0000000000000000000000000000000000000000..7db6549d8d802370e8fe5e59575e7fa130ff8561 GIT binary patch literal 1023 zcmcJNJr2S!427RdCE5+qi2)VyBL)OwhbthC(20Qo24Ers6Jp^AY#f5?a117blaRJb z2P6uq+SHEYeDQNK!hV+k*erv^foC34${8R8K*j;FCG)aR1<WxqD?@}KPCnY@M>1MN zk<ex#qoqlok@Qle7!9*n`1T8)GL8ZQ<q*6Yr*<QTX+#)9N5I~sFP#FFAuH~6lIP7# z%TM?qx@p;ca`E#m;iTza7{^Dz521Qz<MHkrG2o^VRut7RPu5cgKvOqXS}lTy7+lfg zSysf#HXW{0zgg#PEidW-e9%Q%V?-xysbjfMv&(*kO}GcB{t4TFe!#XDV1{1}n^MiJ OhLKY%rB5(&soxiQH-kO^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c7fd8a6586fbe6e3e5127700514262d5289d2e0a b/src/libs/libsrtp/fuzzer/corpus/c7fd8a6586fbe6e3e5127700514262d5289d2e0a new file mode 100644 index 0000000000000000000000000000000000000000..807be6afaeaf3a19955a1522243860dc45a18f9e GIT binary patch literal 458 zcmZQzVt|06Operg2=o8{|Go_SC;sPp$q1E{g3$Lkg}@Bq_GpGV91M)IKpsp#M1^CW z3luOi{QK_!)dw|(lbu190m!a4nFBM20m&Q{h!J2CyE$s#7>cVIKt=!wFBcHW0Jg5Q zx){mGZ~Fuo<}iF`;4lHI6ox2gV32~iQ~_vzbur9!KmJ#9z`f7_G_V?^9IV+GtXT#q zh5!nLH3O9Zfn+?8Knc?Lc%XR}7{b7i2D*n~8w3<ULsKh{p#-Z^s5%%03IJiCO+S7x GR09BT5LkEs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c87fffd6bce59326050af06433afdeb5f56640b7 b/src/libs/libsrtp/fuzzer/corpus/c87fffd6bce59326050af06433afdeb5f56640b7 new file mode 100644 index 0000000000000000000000000000000000000000..847e812011b8bf270d311a855d993c0750569d40 GIT binary patch literal 1529 zcmcIkyG{Z@6g>l*uvi(fu^^a@kHSE-u<-E*#%OOrMM0qjS~-bUhK5g|^ABt+{Segn z7gDI>xjVBvu<FL}7{bE6clOS?_nbS;2ClD~06Oikb<1BaW6Uw2HK42m`cm01eX`*M z2R2eixr}arD0dBVqb}HNTtJYhPRmr<HoZr(E|7X!p$4qj;MntvTQ|l$6C0oQO{rbE zMkrN7VUZ4=BJ0c;8d;F_WIM`kJA5UX7T7ap^~@w6H9eOpsSaEgK9qWlX%CWWN8taN zX06X60)+f1l-_6zoo@6NMWZ+AktKo=l1vCxV_~J;QYesCw)d`Qiuybe9qtc<>JndD zEmXPy59*7x3uno(6ooH#uCR$}D%jf|_J?^e=H>m_BcJGBW?+i!&B*A+0~611jRW&4 z!5@N6^^K%;qKTNLC>li5u(adLof}Ix{}C4pqUh{><_C12ZVHZ(y;MLm=69J#$QtLi kWSy}WxlMB1$+eR|W4;aCddmF24Ypj|k|w|tjzTPi-!!lR4FCWD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c885d4e934ded27b595be49adcb64a2ee930e1f6 b/src/libs/libsrtp/fuzzer/corpus/c885d4e934ded27b595be49adcb64a2ee930e1f6 new file mode 100644 index 0000000000000000000000000000000000000000..4488dc83ffa2d0f05c6d73490cd16931adbc14ea GIT binary patch literal 102 zcmX@8m&Z_2&%nS?l*y3_qJiMQ<9}ZUhH9J=0zfs^|Nj4<2vW?+&L9h<gg|Tt;dTaw UIUE9|#i{XSi4aDdUS4rL00TK00{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c89fc8bec2aacd1960d1dcfb4f0af442f9031759 b/src/libs/libsrtp/fuzzer/corpus/c89fc8bec2aacd1960d1dcfb4f0af442f9031759 new file mode 100644 index 0000000000000000000000000000000000000000..2f6dde862994e11aa709085339f90b5f1f6ed823 GIT binary patch literal 69 zcmdn^-(KToYBduB5d2s84+4w~)zu6Pj35y(!N4HNP+bf}P##EvfdQxlNLT}@>S_SJ CUk{D| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c8a324c6f9e6acda5e9869e5346176cdd0ab146f b/src/libs/libsrtp/fuzzer/corpus/c8a324c6f9e6acda5e9869e5346176cdd0ab146f new file mode 100644 index 00000000..bad2aaa0 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/corpus/c8a324c6f9e6acda5e9869e5346176cdd0ab146f @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5i_0ÿÿÿÿÿÿÿÿÿÿÿ5i_i \ No newline at end of file diff --git a/src/libs/libsrtp/fuzzer/corpus/c8c49640b501d957bce4df15bb613b69da71e96d b/src/libs/libsrtp/fuzzer/corpus/c8c49640b501d957bce4df15bb613b69da71e96d new file mode 100644 index 0000000000000000000000000000000000000000..7b72cf15ae9ff790e1043bbcc6bcd965b13688f4 GIT binary patch literal 224 zcmdl#^FP<im(>gm4FCQ+NC7DzQ2NGD3>0Amu^Abv6pI-dsvTwm!A%eW0}vGoAVt;1 zdl`ZH>wv0ZW`Km%faWkTm@qal)PuMT4FCWC_XQDPpa~=mpln~D86Y=6KmjKMM-@<= f50DF00H;J@ioi5n7{*Wl3s;w_0o??2b+tMG!sc6X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c8f6333fbf8e772ee2fc2831ef7286199320c315 b/src/libs/libsrtp/fuzzer/corpus/c8f6333fbf8e772ee2fc2831ef7286199320c315 new file mode 100644 index 0000000000000000000000000000000000000000..2ae8d7437e7b6f9159f8b005b631eef1599f2e22 GIT binary patch literal 69 zcmbREe?QmDm(>jaL7<KS0>uB9YJph^)eR@7F)(Dt19{cOj1XK6;xM!`Fjh0fGqL^$ F@&K6a6%GIZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c8fc63056d32b214eeae41550e7c1e92532720ca b/src/libs/libsrtp/fuzzer/corpus/c8fc63056d32b214eeae41550e7c1e92532720ca new file mode 100644 index 0000000000000000000000000000000000000000..6c69fcc0c5728b766a99ddd1b773807ad26155c0 GIT binary patch literal 104 zcmY$>%VUs?XJBwB%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{tE-C{s?`_-)gek43>X+* sf|;BQ46+Qxb9fny85nX>^Wu{aloqGPmnD|wq{bH{<)>xlaDdbS0A*Dc&Hw-a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c92e26e8feb8075f32d63c887fccf53f801ae9db b/src/libs/libsrtp/fuzzer/corpus/c92e26e8feb8075f32d63c887fccf53f801ae9db new file mode 100644 index 0000000000000000000000000000000000000000..4fa8f0a77291c0aad3534edd589ecdf84ca0175e GIT binary patch literal 66 zcmc~UuC5MFjjzu9UtAntUC+_Zpvds|drJ#LbxSovacXJ`17kG<2qaWD7-atc{~s({ PsZ%Xl&rr>v0F(d#aX1)_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c96741ea1192395e90d2a86d5537ed6f20914df5 b/src/libs/libsrtp/fuzzer/corpus/c96741ea1192395e90d2a86d5537ed6f20914df5 new file mode 100644 index 0000000000000000000000000000000000000000..4a455f209ff7b3c9ec1c4071340ce05b7b9669e4 GIT binary patch literal 69 ycmZRyU|<knV31&_X1K+`P`#!a3S6qI85kH8^q_!|fx!>PhS5NI(P~4W`b+>9fDcLl literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c982bed40242835ad29a8311f65792f5e27468b3 b/src/libs/libsrtp/fuzzer/corpus/c982bed40242835ad29a8311f65792f5e27468b3 new file mode 100644 index 0000000000000000000000000000000000000000..ba5b78cc26b3b1086977c958ceef348f9f6808ff GIT binary patch literal 431 zcmZ8c%MHRX41Jc6TEPZAumQ}F8$)yijy;u}I~S{P;m`%(P>J$fhr}VWtoXg>&%2+o zpXUhR^$8sg{O}zIrYKB;ivn>FM5+ieGp-x2(DH+fIC-Ma1<C&wHWr?R?o%L#tyIPb z3kpX<>29nY5cEnXd-7kDmH532n^sM>oYg#5eK+sWPO%xbJvld#P43-36KVEWXGc?( TCdgFPgwj~=;!s)Co1pyyJ{VH@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c9e3994dd8c9fc3633edd9058ba0e891428b8fed b/src/libs/libsrtp/fuzzer/corpus/c9e3994dd8c9fc3633edd9058ba0e891428b8fed new file mode 100644 index 0000000000000000000000000000000000000000..70559a650be1fdbbe600a7724dfe504f01d6bd70 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATM1Q;3E8VWcW7-Ye6 z409OTfucZC7)UvSRJ45q690ujOb`H@-I<!nQP0o@Qp3^qpMmo~$Xo^$5CH<{7K6lq eZh!&?Ll7SbU;?;kWEJ~?iXhGh8eav}%mDy}K~lf~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/c9e5ef211a0d346179b4c57ea68a60bab5f055c4 b/src/libs/libsrtp/fuzzer/corpus/c9e5ef211a0d346179b4c57ea68a60bab5f055c4 new file mode 100644 index 0000000000000000000000000000000000000000..1857dfaf7912380292967ba4f280ea11d17adf0c GIT binary patch literal 138 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHVf~zyuUzVSsVBnE|;#83qPM24Rr; z>f+qelEjkK_>|Owk_?cDHHZKKP6h^9hT=Iw44*(e;dX|VKxz&{9f$`8`@R8f11kpr DjGQDo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ca11304a8c71477b12b246deebedb8e7a4377478 b/src/libs/libsrtp/fuzzer/corpus/ca11304a8c71477b12b246deebedb8e7a4377478 new file mode 100644 index 0000000000000000000000000000000000000000..7cabe2f313a3f41084f69faebccdf5f31d8f99cb GIT binary patch literal 132 zcmbREe?QmDm(>hlz{tSBs{S7WL>QPE1Q?R@i(UeO8xVkKI4IC>Wt0Uf2O=P-E@tEc iVutGf{tQ5)WUvAT1||yzHUXeK1nGb@GB9XXR|5cZI4LLq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ca1cd287450cf47cd3a5a32e1ec545d40b0f5222 b/src/libs/libsrtp/fuzzer/corpus/ca1cd287450cf47cd3a5a32e1ec545d40b0f5222 new file mode 100644 index 0000000000000000000000000000000000000000..e5d29c017ec717f0cfabeebcee80db0ad8e0efd9 GIT binary patch literal 244 zcma#o%VV&OXJB9~O8qaK$p8lb|Nr-8U?{Ezih>x`Kt^gkvJ{AIEd&u^kYr$xWncty z7#aTiR`2Qi|NkFUMzFQ#KXY|4NDc@tG62m50%jol|9vnMLIg0x107KUbOb{YM<$X@ z%OG|`^)rA>0^@3Rka<904WSqqI6-bGo&$1HI|IWsAoZW2j)Q>-CJ(X*q8KP04*<2e BK$idj literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ca37a2f08915bd7a9ac1988b29887b10cb98cadb b/src/libs/libsrtp/fuzzer/corpus/ca37a2f08915bd7a9ac1988b29887b10cb98cadb new file mode 100644 index 0000000000000000000000000000000000000000..efc2ba1528e675a710bbc983ae057b504d83d9f1 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BamOsP|T<f6|siW44j8S WtZE^KImL4zV(koI1_w+9P!<5x#t*ju literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ca54415b2181663aa978355ec72cf9435c4ccd8c b/src/libs/libsrtp/fuzzer/corpus/ca54415b2181663aa978355ec72cf9435c4ccd8c new file mode 100644 index 0000000000000000000000000000000000000000..b89318311d6f2f59ef01a72e7449bf3a38863d61 GIT binary patch literal 144 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~Ll!8))&OKN zfLK5<hoK!p3Iiz)kVxA%An~6;2*d^gu-TodnH=>D?O-)kAmhP$AqqgGBM_&=>!kwC F0suSI8ma&Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ca9ba8fb49867faa4c26829869d2cf0b2d00a651 b/src/libs/libsrtp/fuzzer/corpus/ca9ba8fb49867faa4c26829869d2cf0b2d00a651 new file mode 100644 index 0000000000000000000000000000000000000000..fc1809bd9266fdb578981af737e03894ecdc939d GIT binary patch literal 2335 zcmeHJK}$kG5dPL8pPj0AG7_x7qC*6BtAl|jA?hD29XxnQC@rD~>CH<K9Rm;jlKM3r zgl>U$>NPX#%G;jVB_*f<eY^8!K4(8>zfp(AlBX5#xB)Tp>;pjnDB73x`H}I%YoO)R zx}Z0!sOu@<vf@2c7G;z)y&#Zs6y)hHob7Z72=8HG(V(n!QR_o9eo#{g3ipXMejEA~ z2~xWZX^Wu6U~Mo=7H2ZH*p6MKlE?_~c6&j5ehb)Ihsw|{VWZ@^cUA10iWHdR0$1hi zP^BV8DoEH_P<v&_UifkWv@wUrZVz6bPT^z8LC!LNRG&R|;0=DdiKc|7A_){e-`@&L zPB=kP1r!44G=DoR>y0Y8>e}@(UvF%2D%##KDi~MnTTW&^b0Rd4os*yHlLLFuL7(Ku z&?l4O1Yh+D(sUcAhxEzG<oYCbcZd_ZDSu8+x<Kx?>WTD;s~kp8t{=jiTUX2f^@N&N zRLGe-e_KyR%pI$<&U55+aYq?z#V`#SJ%1_dkn*zhiT@+8N*}4hOmK<@Vgmuo_yBi~ Blw1G+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/caa1a16a87c8cbf3931d8a34f84c3381635ed56f b/src/libs/libsrtp/fuzzer/corpus/caa1a16a87c8cbf3931d8a34f84c3381635ed56f new file mode 100644 index 0000000000000000000000000000000000000000..ef7a4dd50c3e4481d8c072aff68867896b6172b7 GIT binary patch literal 256 zcmZ8bAr1mD5S+q^T7n{&!+?QPSS0e^a3ByQgpg|uS#bywesalKL@l4-6TAVEvb#kw zqC4H4ogGY&Q19)tNi@b-;zESb2EnP9`uYiGq_quz$%Zl^XQVuw-}>A$W3OHEQY)|( z3~~{%c&ZCTGvFhgCGhHRgxNd7DlEhqhl(0|LqT{qR~ZV{T~!?6E2erQMs(*nyZ;gr Vl~INKjD^&IM#%mn@F8*o;0ycwKwba< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/caa5305ca2de94339ed73515b7d3f75dd6847414 b/src/libs/libsrtp/fuzzer/corpus/caa5305ca2de94339ed73515b7d3f75dd6847414 new file mode 100644 index 0000000000000000000000000000000000000000..22221adfc2a81325f747d911b31d4fa3624f39cc GIT binary patch literal 235 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFE!pK5iAVhGO#ria56B+g5?<I zFth{ZfTS>x;s7aY`vxTb3o$VK`VZoQ&F)Oi<fw<LsR9`fGM9k`M1TMmi-Bqo0HTT! V#b%HV5P)t2NR$I%3se<Q3;-l9Gc5oB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/caa7a34683fa73ce233b6b4969bcd0c414a2f764 b/src/libs/libsrtp/fuzzer/corpus/caa7a34683fa73ce233b6b4969bcd0c414a2f764 new file mode 100644 index 0000000000000000000000000000000000000000..c16ec437b8756cc716e4caf1100c28534e1c59a8 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7Fl1nO h31qe~a56B+DiqHVVlW14QPo1z1QfNZ1_B0#cmQam6kGrR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cac0084ef7e39a66daf848b7e96e02f95524b40a b/src/libs/libsrtp/fuzzer/corpus/cac0084ef7e39a66daf848b7e96e02f95524b40a new file mode 100644 index 0000000000000000000000000000000000000000..7edfd4b01a392e75bf24d7fafa1d210c822b6daf GIT binary patch literal 115 zcmX?@k(yHw&%wZu%21S9&j1Gh|Nr-3V5qKUU|@s@Fenx?8deuGg2foVf&oZ|$r?!H lF)(m4Ft{_w0#zHd_skIj(qOd=Km&l_8%!056Ue|&2LNFf7?uD4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/caed6aa4f3955e947b45532b8aa7a81e6c17a4d5 b/src/libs/libsrtp/fuzzer/corpus/caed6aa4f3955e947b45532b8aa7a81e6c17a4d5 new file mode 100644 index 0000000000000000000000000000000000000000..46e08dd6dcbe6a99f9df8b4e6eebca4d45b8efc2 GIT binary patch literal 3117 zcmd5;%}Z2K6hGIQ^i2hcme7Z2S_Vd;mQb3gXdA)W)hZrAvluWD#|iO5GYdy4Y9X`{ zrdqgY(K4uA?t=b=HW9QE+BTyE-hStPym|9xMuI8mpzpmo_uO-T_jf+-^###2pNJMy zUNVa}M7^&o7=214=rmC)$uuTIq`aWtc#P_gR+>oA#O9`yvkD5fO8SrP&t;PSLV~<b z68)sK&<al|(7JiH<K?ktt;kQ~p0JFRi4C=VcxOkNdFlv{Td}I+{^faEitc5k306`D z&NOO`9Nu&3LR-#)hFO9L*o>O?)%9P{Jy01u4MGi#(&W!&u;#6MHvzj~_7P^mkWluQ zkyu7=rky8HtEYzXvz^Ysh9!>K3|uTGReQ?l;C9vk|L#6S7d5r=Xg<FebL96CZCTbW zT_i6uVJ;?7G+0KBSxT%!tOaWcOx=3%lTi|t-#?ELU<{{;M!3tOS(8K9C5zsrN1_wo z%zh1-d^~MMfar-+#-y)EY1ylpA~7=!r66r)7$hpGAIq9S`dBQHcLh5xvuJ#D^VX0t z&a3nS3^~eabA;JZW#(`)L-I?_HE3;|m#hDtmvZVSy=+wmx!p1^`u}aM<VexDrlXvB z;&mNiJCO)VDM&WX1CG^Sa7A>;dE@GZsN3A4u$Se*LNE1_+E?q`FnDNBwdl7g8ib6M zN|`jDr76|~<wFCe(p|j+u?v34@lo~xsp;6d#BjAQL|aW2J33YwKpG1t1PKA$0_*Tz zdS6yR|Jm~91Pv@@;VfKTlcT&k%aCnLGF{hZ5d9W()prsr9pGd`edg8*8R3Uc5wkQu zfw<zY28?q0g-(&6fpPkA|1Y}~)SSafV7jgAuIRCq{a=}Of@!*|KS`#%thHI;=(1n# zokr~O<yaeNh!N{^Ffnd0>JHAzf*nyocn)ONTHBYax(e-BO>M{oJ4GT_OLdt?4~nS8 zCE+X*?kI8R&3V;RDb?#WqN(&<@vEFB4xB60D121W2d?OaxU(P!pVPq}m%$#b(K!xT z9M=k*NYwHTKXy%9(CLGRPIqLuxPvj0F_K&i_$(b`g_dsOO74d>Y8ghMPxRDJ*2=!B zaR=Be?NN&Z0z>~rV5+Ya`<#}z5b2{IR|>~IPTMX%PV>)HOg_{cn{Wp`!jbjWeMH_B z<ScSv0_PF>-npRv34isPM>s7sT++w&u)fA1d5q3sG<i1eE|f|C#Va!u=M<dr@ni9B z`6dm3+Z)Q}le>}-^%Uv(sxq$O|15GyOVAesvO*^U&0+<8fM6nb%D~!Ul(=$lZhmPf RRt#h7M!d7F`c6)3zX1^BO{@R_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cb7a32fd05f4bc7254396a23aa29cbfda662181f b/src/libs/libsrtp/fuzzer/corpus/cb7a32fd05f4bc7254396a23aa29cbfda662181f new file mode 100644 index 0000000000000000000000000000000000000000..2a1603aa57c3e216b1c26109bea37d17dab1262c GIT binary patch literal 251 zcma$54*~2&nH;J03}65h@nvABu4Z6hWMD{*Pb`B7Gca(}Gqei>IUH3CKs7)~1_u_1 z93ulqDv-s<z}8T}$xtT?(#gOuhoK!p3Nx^BfCL!Yz5$8<0w5*<H9{aYAW#wyBsx<w rA(pdZS}qE75Zvkiie(uBUoyO`27zLbE2<fu0|A&1H-(|PvX~J75Y;*I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cbd0717c174942743197b51f7013f4fddf04df6b b/src/libs/libsrtp/fuzzer/corpus/cbd0717c174942743197b51f7013f4fddf04df6b new file mode 100644 index 0000000000000000000000000000000000000000..62e3c70072b6f143110adae8caf32cc6520c869c GIT binary patch literal 69 zcmZ?tU|<knU|^7_t_G5~bgHeZA;1MBpyve?WMI%_xO7oZPeVfw1pp;PW2>tjJp=(M CL=SNQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cbe6344d0391e969f5cdb73426cb5b8752077068 b/src/libs/libsrtp/fuzzer/corpus/cbe6344d0391e969f5cdb73426cb5b8752077068 new file mode 100644 index 0000000000000000000000000000000000000000..7e296415b44afbe99ef952c69625b2470cac6bd3 GIT binary patch literal 163 zcmdnb%)lVb&Q<-Nfq}tGiV;XMFeoroGXN2o10<@885ye885kJD7#L0hrI~<2%uupA zUN4V9GM>?pp(v9hwH~aU;eXwKUwww^YKTsdRtAo|lA?SEu-?R+ocv^v`NRSM2|yMD literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cc0fea9c65c25e831ca3f76bd867ece650c01e28 b/src/libs/libsrtp/fuzzer/corpus/cc0fea9c65c25e831ca3f76bd867ece650c01e28 new file mode 100644 index 0000000000000000000000000000000000000000..2e893929210ca6b4111623b506e72540c377bafe GIT binary patch literal 102 zcmdOk&ts5`XJB9`%Jhh00@6V6|Nn1a28QZth6YAP2B0jD07Ee&kgpDu11YfvDPj;{ h-~^Jg3_v9n26KeKV#4h}iUX)`4hPgMh6bQWH2`=r4rBlT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cc27c11056cf4590bbfa72b498e2b350710c03d9 b/src/libs/libsrtp/fuzzer/corpus/cc27c11056cf4590bbfa72b498e2b350710c03d9 new file mode 100644 index 0000000000000000000000000000000000000000..45faa27ead78f694859ff085794f602d2983efa0 GIT binary patch literal 143 zcma$54*`rtnH;J03}65h@nvABu4dSV2k35NU}RvB25Bg+W}FJq$-uw_W>^DBM-YpX vAtN=XfI*glk-59&T364k%Vmi<rK!;cMfqtQ2AV)4gc)SOS{N8ufOY}^^>r`A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cc38cb68a800702ebe89fdb081416f955ad55f0c b/src/libs/libsrtp/fuzzer/corpus/cc38cb68a800702ebe89fdb081416f955ad55f0c new file mode 100644 index 0000000000000000000000000000000000000000..b000eeeb853e5f1dff663e8327987580d19f6e24 GIT binary patch literal 2495 zcmds3yG{Z@6g`6^>?Rf{v9KTzf-ycIT3D%-jSaEz1E?q{us|!epizm5pFrnF_!oWx zq4fuhv2Z-Iv%9m*W&>og&>_su?A*O`=ALu!Zo7%WT^m5Z>vV>^vPmghfad{1-+*^3 z^q=>X!4*#RN&~KoQ69DIt=+tVLL&MdS?X%{2FXqYse)}_ORvxNyR*}bvjhYYgODrI zyKT{kEZhow3z(Bw0a^$gkFVPLTw}|5Y$|IJ>Sz#vv*AOCSD*I0F!1MY{VN7ZXcqYT znEU48@F!51a`G9d)jOb6y-*5)Ou4?2X5$hO<6+2bi~pzz`;4%okYuMIbuCG<^Q{!_ z0A=66ctQ>pFv}jE<(k(E3lUz<^5so(S<RJ305=+|*%5-75(R6QNq~@-SSFh4mO)fm zU{~kE)(4nO%t00#EmK4%eoCa185S{Rk>$7%ODC&kNhN$?N^t3^p8}iDP;~ko7fVp& zYCz?pXhOYbhBZ61*KsfY%aT=-fuiqa<ox!R^<1A#!{bzfbsXpG89}}#D@ZEI=}aQV zWD1c@7M64S^XH2%kQRAF#~ET&;y|^>4|YR=0WYGe3sS$+br9G%10||U;OSn<uwJQ$ osRr}(KF7ggAKjS^+;|bBE4D+``40K{wE?fET(JpOJiK%81Fo5cHvj+t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ccbbd4d4c034a0d57e04471466b739f2e146fa3d b/src/libs/libsrtp/fuzzer/corpus/ccbbd4d4c034a0d57e04471466b739f2e146fa3d new file mode 100644 index 0000000000000000000000000000000000000000..ce61b9811673fdb5822578c97c6da318303d7993 GIT binary patch literal 116 zcma$5m&YI(&%nS?l*^G?52S(Me;$NpU|?iW05hwL)flRa85xSI)uB?QK>9U^&B?$Z a%TPQ=iot*pDy0pfb5dc(pqRqYzyJXF`427t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ccbef69d827dda8e68a70ac42670785e65366c1e b/src/libs/libsrtp/fuzzer/corpus/ccbef69d827dda8e68a70ac42670785e65366c1e new file mode 100644 index 0000000000000000000000000000000000000000..a1f1b2b48f9be521159f3f2ba96fa13e90d51c03 GIT binary patch literal 216 zcma)$u?oUa3`Nfa#dHuv=Rzk(=_m9D{Dwz|H*^tcJM{^66G!)cr#Kn&D((hybCY{X z;twY-9%vg0d#e_2)gx7mMpyHoPB_9kFPxEc204xmuZf#UhC7x>vXxJ>ToVILi>wm@ qO=})yKvZY(3$b&=?jKJvX65g$PS|_$NIU8Ux=p0A?0tU^Aj1dI)+&Sm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cce4e6135b059ac313a5befed1dfd0b79f27324f b/src/libs/libsrtp/fuzzer/corpus/cce4e6135b059ac313a5befed1dfd0b79f27324f new file mode 100644 index 0000000000000000000000000000000000000000..f69aa6a526554e719a94ffdcc18a2a96545d0c90 GIT binary patch literal 206 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5qK^XP6@dlu=-q+|IzDG6%?H zVNhq_U|?ime*onC{|_X9pjulCs8}7sVX%hM44e!MvOuM9(|`<l1||WJbZgIl=IUIK o92hKy=n?oG2jN$1GlC2>s4j-u544v9*<PSa|Nj>TlOUoR0JNhoP5=M^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cd1f25c66282ecd98e8e6d3dea033c382522c7ad b/src/libs/libsrtp/fuzzer/corpus/cd1f25c66282ecd98e8e6d3dea033c382522c7ad new file mode 100644 index 0000000000000000000000000000000000000000..a372578a865a669fcb3a1bd7a34192bc7be51c37 GIT binary patch literal 325 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zq( zhhhIyhB~kwkPr~40gYi`Fkx%}o8lkOP{0Hf1@ekAIa2F^OoreR)8vxMf>h6B*MI;2 z|KA1yU}ZpAD0iDdHpmEmG!Tr&ry6%As>cjUz)md!x(4JVkY9vBZfB@2RRepxx>_9o DOmRa} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cd296a7d2baa3daf5d983f2cb30ad6ca3ce74df4 b/src/libs/libsrtp/fuzzer/corpus/cd296a7d2baa3daf5d983f2cb30ad6ca3ce74df4 new file mode 100644 index 0000000000000000000000000000000000000000..e079dd6d36de65cba0ac046c03fff38b536b2446 GIT binary patch literal 458 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wp{vk^ ztKgJp0IOht*u@02mw{o^f3RI}ML@f-8pFWIxE<^)7MKdCF+eL3PDVFIWe!l9g@FSI z85!6g069OvwgOGkW&~QS4io_aYaspyH0D1C1A{EcSquo17?>F38Gt@(?fK7KoePo! ggT*#1vO++X0+Vn%0|Uq+bf1&zWO7}}aPS}l00$yl3IG5A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cd54a4b235bdc936ab4471bc34a2b74c7f782184 b/src/libs/libsrtp/fuzzer/corpus/cd54a4b235bdc936ab4471bc34a2b74c7f782184 new file mode 100644 index 0000000000000000000000000000000000000000..e7fa2b6d00057470ab3a6aab14aea8d379002af5 GIT binary patch literal 61 fcmbREe?QmDm(>h-Ky@)ALv=MLTm^`)1{MPVNYe=v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cd5ca368cd0a670971a45082c71f142700346747 b/src/libs/libsrtp/fuzzer/corpus/cd5ca368cd0a670971a45082c71f142700346747 new file mode 100644 index 0000000000000000000000000000000000000000..83f0a2fc6568e2146683b9bfd4bb4fc02d716f14 GIT binary patch literal 105 zcmY$>%VUs?XJF7O%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)flRa1%YDf5G4!-3=A*9 sOil&{S%%^{ybQ(+3^}QJ@yQ2Di&Nvv5=(PZ;|myGre)@EfYen30C0vEO8@`> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cd892915f092cfde339cf5ca9bd411b2b9497e1a b/src/libs/libsrtp/fuzzer/corpus/cd892915f092cfde339cf5ca9bd411b2b9497e1a new file mode 100644 index 0000000000000000000000000000000000000000..30557b560c688954a296d8e214c4873b5803bba6 GIT binary patch literal 2000 zcmdT_&ubGw6#lk~ZUiMHr&?R1Vnw7SQuJU!TBsm}+Jon^hOm-AT0^!G$w-@vt%4xE z2ud#E|InkQ;KiHJzrjQC9(%Fl_hu%$`DHJjd@M6>-n@A~=6!EAc=UMvZsl3APzmpZ zn=qucUILT?Jg&pwd7)AdgK7%?xJa7hU^t+KZK`m*&&ik5TWt=`(3=ifi$E<b`<vL# zif#jxK1}?`;VTiH?w7*+G#cvx1+}t2JSx#vkq1w4;vv%BGG-0KAytvkO#)RkUf4W} zwL(<lu|u<!44-H5ldH6cSL<g^iB(735aI@j(Mm)@6T`yVJ%Ofn<>JQVY{$G(H)Kgl zf<`H<RL#}a)y-DMTz{4q+(H^(+P~oEDazuKJ%`h@c2c<6vQ_M=XI$9J7)i_SNf~on z-SP;8A(2Xyv5mKSco@nQARfuYAFm_k$;fK&hs;0@h@`GUa`Wn*<$E<K<7P0uhC!e( z<R$G+3w&1vzPZ&>p%|44Qx3j@))>A-qy=@qv>VhCj15WV1k18=xbIbw=tg^CET`BW z(gN@sBSTx@qe<HosH=3yi5t8-(E6Ye!QS{+5s49T^|Iq?Qlv&6O&Y)@CCmdB{w7_? zc4*}PL2`RL`rP56KtnIu*6i=fMB`Y`U6fRTt8K`0A$6LUQQA?>eQ;F7K8U9^V7gX* z{b|!2;V|nMFLjo{*GEu!wx^J3PaobmdCfabXnteCk%z?pWa1y*;sVvZ2S%-~qS$2D zn>@o9XWC+&WO7hGM(h$z&I-x7<fV}ISrIL7%J{&552xE_jXo~?I~@~|LcNwGoIZCs zN~9EQWYka=#?>h&JgcMi0EBP%K-ko<bsjT7C0q-N^+-Ct&L0@p!9+Ea$vkCg<f2@y z;O=kK4>jc-+R@h>o+w$i(p+Z~Pl%TdhX-b6|Bp?N-v82hlD~lStTAE!px+1nplKX+ pJwYqxvH88lSexJ81J`Y&W3*shc0D?p|4*Oc7v$=M_?oA<`U4q5gjxUq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cd9d7abb0418ac92ae0f529c4d9e7d420da14b50 b/src/libs/libsrtp/fuzzer/corpus/cd9d7abb0418ac92ae0f529c4d9e7d420da14b50 new file mode 100644 index 0000000000000000000000000000000000000000..1f8ad8fe4437d92dc3c05240ae065c33c2aacc4a GIT binary patch literal 143 zcma#o%VQ{sXJDAbkosRZlK~9=|NrmHz))Syz`zJ+Ffa&!<f@AqA-Gx{qL#rLNJFK* z{cq_3N~1`DRdF&f$TBc8lvWqd5dsP*FbKCZFtBhiFw6n+fE0s+0+3*2aIFRaD+U-U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cdb0f7126374d95a4155cbec6f1740a727aff666 b/src/libs/libsrtp/fuzzer/corpus/cdb0f7126374d95a4155cbec6f1740a727aff666 new file mode 100644 index 0000000000000000000000000000000000000000..8e6e957a45127b843fcad2ce03e81ff37313b2a8 GIT binary patch literal 40 hcmXSKXJi0_>gwv3FTcKg38bN*n2`a<0^#cFN&rA25S;)3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cdbccfd8ea91e5f44c13e7aebc6498b424145121 b/src/libs/libsrtp/fuzzer/corpus/cdbccfd8ea91e5f44c13e7aebc6498b424145121 new file mode 100644 index 0000000000000000000000000000000000000000..a1375071218e1fd6461bb763a1760a566a8c7ad0 GIT binary patch literal 108 zcma#m%i}1CXJB9`O3mb`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^P&`M7 bAsnodVGct(kO3rxffNT8G4|gu3mB>a`&|`U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cdcc248525d2c629b83f5a815d7daa05105e44a2 b/src/libs/libsrtp/fuzzer/corpus/cdcc248525d2c629b83f5a815d7daa05105e44a2 new file mode 100644 index 0000000000000000000000000000000000000000..f1d837ed598b6da084de33ab65e3276547aae5e1 GIT binary patch literal 102 zcmdOk&ts5`XJB9`%H&9`2hu?Bf8l>$28QZth6Y9;4<=h(%m@^#0gB{;6oG*N0|O^e ZO-1n>A%+B?h;TatToV&R5kwKtC;;Rs5L^HN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cdcef0781a108edea5523dff574b7d2257c36b81 b/src/libs/libsrtp/fuzzer/corpus/cdcef0781a108edea5523dff574b7d2257c36b81 new file mode 100644 index 0000000000000000000000000000000000000000..a817ebf5c63096eacef597fff49a68ea999e5a3a GIT binary patch literal 85 zcmXSpude54XV9x=`d#0`00o{aS61p&!+1bCH?=4|H9k2%ucRnHCq6ARC-px=14N#= Xoq@6XKf6_ZOSPlpJ}cet|J5@A!<HDI literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ce10b19d79358c860d8a11f639a7bbfb56abd171 b/src/libs/libsrtp/fuzzer/corpus/ce10b19d79358c860d8a11f639a7bbfb56abd171 new file mode 100644 index 0000000000000000000000000000000000000000..5fd67418ffef7e0bfbb8d4b5f9dfb4db831d83da GIT binary patch literal 209 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VNd}gxeVyROSGg zEDY)l91M&M><@sP|Nnsm5L9bx0oAKRI1JWMnt_vnK^CYK)j%cz28Le@tv&ylt8+ne sV6YgXM}QINCJ?CBW&{~%P+g2_zZlSd4v_uq4}hwGF8=>t7(`S909y4aM*si- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ce2d5784dd0cb116a7903977da51dcd9bd669128 b/src/libs/libsrtp/fuzzer/corpus/ce2d5784dd0cb116a7903977da51dcd9bd669128 new file mode 100644 index 0000000000000000000000000000000000000000..1070a8c8351ba2b2697040ff43fca6de85ce2181 GIT binary patch literal 139 zcmXYpu?|2$5JaEu)M|xB$1hzJS4c#JP@vHH2|p@|Gk0t;GrK!8w(i+2Ft)~(VvT=% zHM4DyXmfUHy4l$w#pK~~ND&oWoU#Zrk@*5bMT;qf3Du0QHU9Uk`1pW3)`!2ms(ArA Cvlkcu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ce445157963acf16cfb95c1894742140002b5204 b/src/libs/libsrtp/fuzzer/corpus/ce445157963acf16cfb95c1894742140002b5204 new file mode 100644 index 0000000000000000000000000000000000000000..25f74c25a5b7aa6e697b848ae778020df573ca16 GIT binary patch literal 491 zcmZQzWMGhuXJB9`%H&9`2hu?B|NnnqhW!)&bG>|74dnj&?;r&hXSl~H1ZD`gGce5I zU|^I5@|Yk}P|~r^1qv9E^f6Qe%>h~j2Gzxk3}6g08w{*r3{G|iS&+JFi#gaVQh})h z(%3Ch`^HcVvx?En1*ndZ0qmaA>S81#zwHxXn8Wa$fx{SRnJ~;{P){lV?FYFJ;_V;* zt2y9)YycWq4N{JzSq3PE017b8pdiDl7pMXVBr$?KUMr8G1Va=U5kF8sb$l664C2D- k#GKMppkd(n`dj@ENP_^_0tXNY4$KO}xvf3_XZ~jZ0O+=BX#fBK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ce5339e0496213c0e19c3296ac96f0591ac50289 b/src/libs/libsrtp/fuzzer/corpus/ce5339e0496213c0e19c3296ac96f0591ac50289 new file mode 100644 index 0000000000000000000000000000000000000000..159e69b81185b9ab788871a3dcbf9d2dc9e921be GIT binary patch literal 102 zcma#o%VUs?XEbCe%H&9`X8;4M|NnjU8LF!p6oA}T28QZlH6UhWXsT9+D2TCSV0Z~; qaxyT;GBARa%n@QRW?;xk&5KXY&nqd)cVJ*(Vqi$j$;nS<s0IKqa}`nm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ce5fcc6f69e4cdbc9f563d5b06fec3c220db2a62 b/src/libs/libsrtp/fuzzer/corpus/ce5fcc6f69e4cdbc9f563d5b06fec3c220db2a62 new file mode 100644 index 0000000000000000000000000000000000000000..709abecb4a9384b5d073e2c3fc8d4bab7b394e0b GIT binary patch literal 148 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_m3iHbjL2NKrLV p1yH*wLmgNTNQlh=M1p}D&^QK$iT}YAhGmQlnm|=72y3eU0RT?HCgK19 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ce9b9c4d5094a874ded6caa3e0b3bea2c66a672c b/src/libs/libsrtp/fuzzer/corpus/ce9b9c4d5094a874ded6caa3e0b3bea2c66a672c new file mode 100644 index 0000000000000000000000000000000000000000..f6a3d08be7c5bb34b9b65bdbb39156bb55bc8d92 GIT binary patch literal 225 zcmaiuI}XA?3`E~be2heaK$JNN4Hux`1gW-2hgcd|iBKit4%`pr0+bj#5wuJ(vOS|2 zm#R8dJ*rj`YkJse2RR3rgK;be0VLWKnA{FCu7zvxpdEO{So}cqGSY>Qe>_X~I8I)1 pkCoK4mV;cdH#~nka-Fr8e;<6Of_+Dq9m!l9cpCcsmqI?L@Bt-(Gy(ts literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ceb3f7aa23f8a22fae7a939752d3c4664b483df3 b/src/libs/libsrtp/fuzzer/corpus/ceb3f7aa23f8a22fae7a939752d3c4664b483df3 new file mode 100644 index 0000000000000000000000000000000000000000..7d1bd41ee9c3ddb02f2b0ec555cade3358febf54 GIT binary patch literal 368 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erl>w{^Xtpm%1z5E?11AH6EYR4}>f$+2vH$*=9I5p{n<@<FC^INC z{QvjAT^M5a|DXTaK`f{l5CgGmt|U$~HrK%21eE;$pMe3Nk3i0Wn*s9z%$W@A49H#u Rh9Sta5D))nP_Ndl2LQabSaJXW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cec2152fdffa5cd17459775824378dfc369773c7 b/src/libs/libsrtp/fuzzer/corpus/cec2152fdffa5cd17459775824378dfc369773c7 new file mode 100644 index 0000000000000000000000000000000000000000..2dd2e62154afdcffcfed5f23d98f1d19f6503da5 GIT binary patch literal 733 zcmbVKu}Z^G6g{s9CJvz}bPx))E-n$FI>kZ@aVe;Sqezk3LZK)$b$Vbs2z3%1i(UMY zsQ=(vN1;Cu6{XkvUSb<93VI;9ypwb9xi|NLN<?J<&AL%-b7T<FHg2zIZa9>D98qCW z^NDN#j~T(IK|)i2Ec7B&a1XS~$G~c{esROaHnqlyl){`v8uS9W)}PnhLKo=oL!|jc zW+c<0c;+6t8e-xPFUTYEhbXzM6kA$!D!p;ZoxRq2<D_!fsBYxA(_EmcGxQA7z-Qwf z<|HP0+zOH_e((&z9tSE#*xCbA9$E|kTQ&Bu{(<Fq&ZRZt->(p7ElaiY#g6wAq*CWB z3~={k>!~tobp%r_h#w(6NS;OEEeybW-n%CM5la!ldv8CCy%hP2P5ASEu*rdT;e=&v rm?pY2$WEgcqXvHiXX-1XJYEeLDrVHH(*yX6fg)epBx*dg!{dJd`sA}P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cefc3942c377bad56e45cc3730f8f9242621f751 b/src/libs/libsrtp/fuzzer/corpus/cefc3942c377bad56e45cc3730f8f9242621f751 new file mode 100644 index 0000000000000000000000000000000000000000..6b61ca4db7fefba9dfccadbecabc2be9832b928f GIT binary patch literal 547 zcma$1|Np;#JOcw`QR;u;Oa?Fj3aK(M6juX9|NAm9RBLN7R9CA*<QS}f|KC6HKiA8b zKxu}5{~e?l{{IKEiWo9eIqDhOg`vvYz5yBaj0{ykiV+Awz$i77g8{0BqY9|+f9$D= z-@AdfGZX=(>cNUY!XQgQwgUxH<I56()a(LI1_oKEIS_S($-n>q*B8$bVhA?_tDVEp w4y1u3$c-Ej?Qk(gkRbc-|NpgtJ_j;EzN0&!qN5gDBe`CHQ63o}$q>T?0OJEj_W%F@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cf0e0ead7aa41476b072cefe7c9ead66ec31c562 b/src/libs/libsrtp/fuzzer/corpus/cf0e0ead7aa41476b072cefe7c9ead66ec31c562 new file mode 100644 index 0000000000000000000000000000000000000000..6424dd00b9fdcf7dc2747e53b969bb9dfe0de399 GIT binary patch literal 41 ncmb=fuC6XljgS9R9B%+*LP2Ic0|SE^LoowTH1j_Y#Fqj9Z;BD? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cf2786796b3d0611819e69d00c3b2785c5daa987 b/src/libs/libsrtp/fuzzer/corpus/cf2786796b3d0611819e69d00c3b2785c5daa987 new file mode 100644 index 0000000000000000000000000000000000000000..2cfc473a45d9892c2148597bbef2a7f0ea258053 GIT binary patch literal 179 zcma!LU|=x#|NlQ@QEDbfJ&*$gK&~$XV|6tn1M?rSz&;27v+)!E|AFKiisuM1ghN!$ iVK@$C%wcF3X5auqI6zg?4pM?p^B<@l<PNxMWCj2m10Ll7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cf426b8b6ce33c44a221c704820191efde0fb226 b/src/libs/libsrtp/fuzzer/corpus/cf426b8b6ce33c44a221c704820191efde0fb226 new file mode 100644 index 0000000000000000000000000000000000000000..61a44d6c84746899b7f5041c8f5fc4fc00fdb42d GIT binary patch literal 1486 zcmcIkJx;?g6#m=>k!*-g3{{E&F;p!FfD<4^93fMO4luMV;DHHs;R2QzkT?WqVE{35 zgie?jJI;?ID^N8rimdnY#rfX*J|~^x{x$`$n1{0mS}BxL2_OW(OaWra%q`9|;0ovF z$ple^RRI3y_%_IK<Arp3gNzAV%+z3RwlA5S6qI5d<gDD~)GYvq&62K+Jat=s0U8vT zN<uT07`;70x`+uO%-o_JfwB{)U;Cl$tj^}uwA9j)V;=fo>`l`TETTf+yUp=4wGber zi(&VRl6CGIF(%UpD@taVAJS8Wz)%~jm=;41F=(QXPpU7jwdqU?op^$Xw8f_f;3|&1 zhaK3Fxd^`})(Rh0p*XL9^r)WxJFD+q%Z!+Jq*JG!$kc9$&21Ba&RW@(oqyjKEna5X niSEeDnRKrg!Em2*vGEV|T}nC_mr_a$Rt43BCIGrP)dlCjnuqbT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cf4465ad351e6129ecda2126c8078a49d882ad9f b/src/libs/libsrtp/fuzzer/corpus/cf4465ad351e6129ecda2126c8078a49d882ad9f new file mode 100644 index 0000000000000000000000000000000000000000..bfc3d092776f974c61b96952da39c2c1686658d2 GIT binary patch literal 183 zcmdnb$iQIwvYLT`;oE-)DIf&`&*X}MWHnHVfsw%-BvM_>$WR4T1r&mi(O^dP3v{iF saIF)Ow1Tu(W6=&X5GVzajR!MIfD}VgDg%=M3&?UH02u%Ui>-kS09OVZga7~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cf563882ac7eeb71f0fde1dd36f22f9bd1a5a2ef b/src/libs/libsrtp/fuzzer/corpus/cf563882ac7eeb71f0fde1dd36f22f9bd1a5a2ef new file mode 100644 index 0000000000000000000000000000000000000000..12f769b62bbea82f6ac44cefc435e76b561e116e GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk3B_KbKp}JTNh#7%m>Oj5#5F0Zv oyaZAV44e!MvJAy@gg_!WT6yuw`FSNp`3?*WOkimS2B6`g02|g4zyJUM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cf94a895f1a8090736e9b61874a82fbda3b6c300 b/src/libs/libsrtp/fuzzer/corpus/cf94a895f1a8090736e9b61874a82fbda3b6c300 new file mode 100644 index 0000000000000000000000000000000000000000..e9808cda40f4a0bdbcc074bf32b6d7964dee7d37 GIT binary patch literal 103 zcma#o%VQ{sXJB9`%H&9`2hu>$#t5Mq7(k5F__D;D($x3@P6h^9kVr%E93h5qh>|%B e6M&344DG@U3|bs8vH#!O85sUUfXEymn*jj5#uv%} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cfa56ebde00a1fab5173e0eff7a0f1f4bd1af77c b/src/libs/libsrtp/fuzzer/corpus/cfa56ebde00a1fab5173e0eff7a0f1f4bd1af77c new file mode 100644 index 0000000000000000000000000000000000000000..801988f1f71f55dc3af66c2e6e47795cafb5d73c GIT binary patch literal 106 zcma$5m&YI(&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO ogV>x546;CVK<PO`48{x$Iq}K)RizLUQ}ckFypp2)90mp^0IRMRp#T5? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cfc516d23c2dfb0ae85094323b8b14d4f222bec3 b/src/libs/libsrtp/fuzzer/corpus/cfc516d23c2dfb0ae85094323b8b14d4f222bec3 new file mode 100644 index 0000000000000000000000000000000000000000..0dfbfd86ba1216cf54a7cf05b7fc12dbac26726d GIT binary patch literal 577 zcma#o%VQ{sXJB9`%H&9`2ht$m`~UxchU#h{x1OVl#aaz0<hgQXrA{>iW3@V1MLZ*e z1)46P9$%nbbv45_JOHQ)28tO$iWwMzdcY(ldZQ0!q~;XFb1*QZ0)1itb|VAOA`h^k z49pM#2E}4V!)lPd3xEP&!2l$~WDO+p7#KKz0ND%-lAv&ag-10*H8V&H6f6cQ{m<|p z=wuLj`4UJneEaVp1(j!%D+aNuff^<<7BjemIT$`2TF#Az_!UMnCPP>y@%w?^2LRz{ Bs2KnN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cfd0d6bc1f78e03fbaa6990e751ccae66f674640 b/src/libs/libsrtp/fuzzer/corpus/cfd0d6bc1f78e03fbaa6990e751ccae66f674640 new file mode 100644 index 0000000000000000000000000000000000000000..39cb1045724ae31e097a62c1f64dbf28442b317d GIT binary patch literal 70 zcmbREe?QmDm(>i&KmpE4sBSnpje#LE9w<^>%m~3C#nlY$42;zb@k|W=|Cg5j2LK~7 B5aR#< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/cfd5256cebc5ddbf045a099af9c2aed984a06b22 b/src/libs/libsrtp/fuzzer/corpus/cfd5256cebc5ddbf045a099af9c2aed984a06b22 new file mode 100644 index 0000000000000000000000000000000000000000..2c758df287277cdbd390e7ffe311c4739f002b3e GIT binary patch literal 179 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bOh1|~)ZcaTVRF(X4YP!&)JLPmobKsE$H z#GzauXCh1=0|P5aKR?4IppifcbbZMT$G}FE#P6R7wILp)0cdr8Q6@)fJ&*;|_W%EX M-~aVMa@+s^00*Td$^ZZW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d0286867a9a40eefe46c98727c9fd06a2cf1df59 b/src/libs/libsrtp/fuzzer/corpus/d0286867a9a40eefe46c98727c9fd06a2cf1df59 new file mode 100644 index 0000000000000000000000000000000000000000..c8ce95ae5973f4342d6a256862a89ed02b6817a8 GIT binary patch literal 81 ycmbREf4|qum(>gi@E-&|{{Jt+z$^n1O)k&}Dqw^vsV-(@0AmKQE+#e*jX(hW^%KPa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d02d8d90d95b71a88b634f8ee4e8b3a94409e92c b/src/libs/libsrtp/fuzzer/corpus/d02d8d90d95b71a88b634f8ee4e8b3a94409e92c new file mode 100644 index 0000000000000000000000000000000000000000..cde15bcf8410bb5b45109c0e7925f990952fe453 GIT binary patch literal 587 zcma#o%VQ{sXJB9`%H&9`2hu?B|NsBZ|NpmEGcYg$d8zSbiC|$c!N|bYP{7H+APbgb zn8VNx6b6#QK#BvTqU{@y_%8%vf&kd;&eTkfdJ@!Bft&!e`~MFXh$%p`ksRmCz+hhu zciohEFf}0eLR}Y+#aj%%KvNk&8iDFS?uDx+(=RZ4@tOnn%fI2_7m$as#xGEO4g&zB CTxJ6R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d02ffe597db3e53bd478ce0f799845834fb37758 b/src/libs/libsrtp/fuzzer/corpus/d02ffe597db3e53bd478ce0f799845834fb37758 new file mode 100644 index 0000000000000000000000000000000000000000..7220edc02051badaef9025ef0db532da46190aa8 GIT binary patch literal 270 zcmazqEl!P(XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YjHh&+c5j-d<S=QA+$s4-L* zGXhOk2N?$DTQW2-yabuf$-p4X&<M1)c#e=!UQQ}Vj3G&ZDUYEfo}q|^gCVtqfx(aA U5)lANKhP^6z{o;S8_2r<0H9WlqW}N^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d031d343ba645a52ab822b8c5aeff2c1adf78271 b/src/libs/libsrtp/fuzzer/corpus/d031d343ba645a52ab822b8c5aeff2c1adf78271 new file mode 100644 index 0000000000000000000000000000000000000000..ef4e57129264c82b15e5bf033cc779a3c94ab07b GIT binary patch literal 466 zcmZXQF-rqM6okLEag!>TN+Bo~S{VpI8=DAM1++;mhlE28VuZU`EvSv0g^gw4K>Q<$ zKgU0CcCK%C&v@Vz`*vq%X5T)nwc|S=OLgL^K&VsRpKbedw<0&794m{-6=t-oG35gm z@f`YD`uN&3i`a-S;JB`;wNB5+49X49bqgppswbzlS{2I4ZB#??ZAV*y-D|cpj)YWr z*^S9pk!O>|(d>G9F-s1I((|x#=>nf&^y;B|;S7I1X@w4N)fY-yKX(>&(0JqbR)^GW zCkUwn{>3VG{B=x5%BCBwwT>x~KU214#)1Yz(Up^Sj8{cwKkSkD$#6Q*BJR&+;#|Ev RJY|;&g<V>LO@10+egO51TloM0 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d04353d0b588f28ae24e9a8070517733cecea63d b/src/libs/libsrtp/fuzzer/corpus/d04353d0b588f28ae24e9a8070517733cecea63d new file mode 100644 index 0000000000000000000000000000000000000000..04c99524c3ecd1956aae5634f3b59195417d531d GIT binary patch literal 196 zcma!Nuwf{PXJB9~O8qaK$p8lb|NsB`AI#$a@5{hYT@93$XJ8Tl3AL86F;^Eef@Oik zVrvMCkpV2rP_4}fRId(|hDrj>^JkD{0BK_UZ;NUmP!0qV{{OH4f4{B<#D*Hq{GZ_^ V)EpQEwCy#JEx^#q##n-I1^}44EJXkS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d057f87ceab445641eca2b2410f0cf777780466e b/src/libs/libsrtp/fuzzer/corpus/d057f87ceab445641eca2b2410f0cf777780466e new file mode 100644 index 0000000000000000000000000000000000000000..f446aaaf9428d8cbdb6d364022c516b1ed36e737 GIT binary patch literal 206 zcma#Mn#W)p&%nS~l=@#dlK~9=|NpPbz))Nb6#ehZz))Q+&oD;_D5Jn2+|IzDG6%?H zVc-BlMh5l=K+gaFKmrJ=wHbkm)gc@PYbedY$-p2BR0=l@$dG4X5&%iJ_WWnA&IQSV o!D4F$2OvX$5$GTg02=uJzbsa(H!`q40ND%$j0X=gFt}C&0F@>xegFUf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d079ec49f52a1bb718f3bddbe4e20daa450ac010 b/src/libs/libsrtp/fuzzer/corpus/d079ec49f52a1bb718f3bddbe4e20daa450ac010 new file mode 100644 index 0000000000000000000000000000000000000000..fdc9a49ca24948b98ba7a03e63ca8eb0f837aaf8 GIT binary patch literal 632 zcmb_ZI|{-;6r5EQ>;kF9(!wLCrDe_#Ei7y`-L~507CDK>37$YupR@Zmfi(~i@`|^! z?>oDbV}l|G%=swk3Eo5`1FU7V1q+N4m%J6zvAq~A1gf=1NfWRu!^UMuYm%24FbBsP zBik@J3}n#RUXR$LZq|g8+a846_Ctd)?yBHvh?dZETzb%6!p@u8I)XmpZt7sf%jfG_ qe&nsRqW^PrI}&8V^<IksB#2+~mwIt)uX^#HtEQ;MOmO!G?Cclpl&FXR literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d07bda374e7e88e4ca026fa4c00443be8cbd3169 b/src/libs/libsrtp/fuzzer/corpus/d07bda374e7e88e4ca026fa4c00443be8cbd3169 new file mode 100644 index 0000000000000000000000000000000000000000..d3dbd39085605ea7d4e7d23ee6e2c643e7b85494 GIT binary patch literal 40 mcmb=ft}ZK1jgS9R9B)t!2bu8<3=C=v#SB2v%>SAU45a{6sSdLM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d0b0a301657dcf4805c6dcd3f4fc144705e07389 b/src/libs/libsrtp/fuzzer/corpus/d0b0a301657dcf4805c6dcd3f4fc144705e07389 new file mode 100644 index 0000000000000000000000000000000000000000..ab2a5e23ff9f94d9da1ce6c424a53abb03591435 GIT binary patch literal 1348 zcmazqEl!QkP0a<O|H7FJVDSI{e_sZM>S_iCMmR&Bfk}Wt0VwSN#8)bS1S12(@5@(E z0Rsn66%gnn8C6{!|NlS3e@-lb6)47wMI2d(31l7v!%H_Hc=?j^B}~o}#=uU4wQ;@# z>L3juTSq`A>4sw(2n<9vOi`!^vRhCr(_`QO2TIi(hRV$h8gm%h3yR|P@)%0ufx<<Z z9I0hsX$GW-ga|NH7c)X|wK`P98cH*8GBBjhn$^3YXX4+VAhBu&KA02%S{9TRs*C3c pfz=7OGce47xQ~FoQR$%@0zZbH)4%_xlACQoxd@a&fF&dd003J9UAX`N literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d0b93f8e00e90d36c66068393ae0fb0c6a95dbe1 b/src/libs/libsrtp/fuzzer/corpus/d0b93f8e00e90d36c66068393ae0fb0c6a95dbe1 new file mode 100644 index 0000000000000000000000000000000000000000..e8da19f4850bda532c19980146d494ff051fe991 GIT binary patch literal 451 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*Z z9FX-CCJmLqr2!@mSB9(+Xa_;tR2dk4!|Y;+20H@c6uc%wti$dHyc&U8qG9HP41stU z?gA7!B!eI}fi%DnF1tBl3Lq-s!NE}d@;?JZ71RK*Fvy7FdSILsWpY%%e96E7075`T A2><{9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d0ce1f5e5efca547b3768aa02735f279d7c3e03b b/src/libs/libsrtp/fuzzer/corpus/d0ce1f5e5efca547b3768aa02735f279d7c3e03b new file mode 100644 index 0000000000000000000000000000000000000000..d14764903f06259a7f97a8e60bee42949ac822a4 GIT binary patch literal 723 zcma$34+IR18yJgHGdb!RzyK)X%fMJ&&B(z02Q07;0wA(@$^ZXA(hbFPgc!mh3g<8! z2Qua`v<owE03jTps%Zx)L8$o;RL{TwbQlPn1Czv=L%LnUVADx)GtJz?1r8q+ze5~H v*zbQpA&dya>S9J<@KGl&hzXw-h$6gkN-g(*!v{Gr#mhjQSX~Wd6fpn*3V3kF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d0d46e2d7d7af4d4d2854b3e702874e9adc36f0d b/src/libs/libsrtp/fuzzer/corpus/d0d46e2d7d7af4d4d2854b3e702874e9adc36f0d new file mode 100644 index 0000000000000000000000000000000000000000..7ef32b182435efa6e8476710aff020f08baf8d7f GIT binary patch literal 69 ycmbREe?QmDm(>hV;9tQAV}j^}>V}ik7#K3+f$ZvHMhFHf7Jw;YV*UTW^gjS2bPrAd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d0f5075f11df42aba75cc94b58de6ee9224ce2dd b/src/libs/libsrtp/fuzzer/corpus/d0f5075f11df42aba75cc94b58de6ee9224ce2dd new file mode 100644 index 0000000000000000000000000000000000000000..1b777916074da27af3f7b30ab2fc129493c9ad3a GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0AmvA;7gC>Ap^R6FdSIdkSsAcg~&iUkY| i)j$;p?P?J1@dnw|)z!tR@eB-bW_9NO{|pS)K$8Jx5hkes literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d1141e2f1eff32caeb93c2e86424f9b32ecab656 b/src/libs/libsrtp/fuzzer/corpus/d1141e2f1eff32caeb93c2e86424f9b32ecab656 new file mode 100644 index 0000000000000000000000000000000000000000..7a105410ba7f4f6f21c32fdae819affa3b75f86f GIT binary patch literal 416 zcma!LVBEj}1dK(gnH=>X76Zfo|Nng%7^|z91i(DuOt2`U4Mc*Wx*Dh)q=JF@4_Ia& z1e^kM(1`#4Kmv`$bA%YeAyRV~jsqEU7}|vyIDili8c@`<gOniD{0FKBISj1&9GFBm f2k2_BG^#md*u?;GGsWf*;bxfUvDpQZn^O${DYi_c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d11aaa3f763944e66460c5c95c9940bd57036406 b/src/libs/libsrtp/fuzzer/corpus/d11aaa3f763944e66460c5c95c9940bd57036406 new file mode 100644 index 0000000000000000000000000000000000000000..52cb6b073dd3ad8d8670974ae68322c5d0db961b GIT binary patch literal 345 zcmZ`#F$w}P5S)nMX(iZMsfeBWfNSyr^#x*eg<ut}40slTwWV-A!qV#AVP|V;W9d3c zI8eb!n9XixcS7=m)b4i+;3c}rKy;p1vZCCX)LtrBeI%}q3Is*Vi7XW*<QHswk1O%e zbMXuLf3vX@{+OM-)x~jPrVFzc8hfCdv8#-T>x{|`kaz$IVB(SPfJcDHM-ocw)r=#| wJW5hVf;}T(F$|ewtN0ySLGcmXGC{ocw|!KBeYu`Rc$FZKnMsV8gp;TC4Huej{{R30 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d1d82f2754ff02073bc989023db179df7fd797f7 b/src/libs/libsrtp/fuzzer/corpus/d1d82f2754ff02073bc989023db179df7fd797f7 new file mode 100644 index 0000000000000000000000000000000000000000..072a96180544949624cedf5a892b4e79b212b738 GIT binary patch literal 73 zcma$5|Nr~{`~Uwl7G-jz)-!;?|NsAe85pXoIk#<N$Y%lzaWZ6R<yaT|lx1K9^5-xJ QFzf?~TPA==23epE0RHzE1poj5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d1e3035c943cf57e9965a3a30a2a5abb787e8dd8 b/src/libs/libsrtp/fuzzer/corpus/d1e3035c943cf57e9965a3a30a2a5abb787e8dd8 new file mode 100644 index 0000000000000000000000000000000000000000..da96c8446447bbad52d3975a5f918aeb94cd78f3 GIT binary patch literal 106 zcma#g`^O*|&%nS?l*y4=52S(M|NsBK3=GxP3=E763Sg1yVl{^9Vn(2tI+)MEU<ssO lgV>x546;CVK<PO`48{x$IjMOiMfo`l3``J}To8((8UTJV5-k7# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d1ed8b7bf002647ed552c115f2acc0490a828f36 b/src/libs/libsrtp/fuzzer/corpus/d1ed8b7bf002647ed552c115f2acc0490a828f36 new file mode 100644 index 0000000000000000000000000000000000000000..45d9a401dbc722c53c42f293ec23e354969d6c17 GIT binary patch literal 408 zcmb7AF$w}P5S&;@>_jUS!OFryEG#S)t`dAhu((1Hkvp{s=vDfOdy7Bu8z)#8XV(+1 zbs*Wzusb^&XMmXlkZf#xVI)F$X{=Ql)+u~ypvRX4rg=-#_6^7_OrNisFnUR{I7cN6 z-eKMq4j2|lDWbw=8Idv2vZGI{l4#;yJYlD-92Y(9g=%>F_|3>jdl)y~(f;2!@CP<X zD*J{N^-6cKJFU0J*zFszeVVLi%pe(&L)PZi=3^iXI#jECryK1c1Mrof(4dIFOPA6i L{W$`z!YT0q&6Inl literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d1f13863e3eb0a7a85c12dba44ab16c666cca019 b/src/libs/libsrtp/fuzzer/corpus/d1f13863e3eb0a7a85c12dba44ab16c666cca019 new file mode 100644 index 0000000000000000000000000000000000000000..79aae6d6ee6362cac0536ba1a98b2fb36dd415d8 GIT binary patch literal 196 zcma$5m&YI(&%nS?l*_@u@IMd80s}?{1u$J*tj17X%*aq(tqzfZkhrBwfeK!O6mc>z f$TBc80Cmq1VlV_UkU$QQjWB|#0jLTnLatT-u%H&S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d20a44d80ee2ba2c4d97352e9f0fe7f950b70687 b/src/libs/libsrtp/fuzzer/corpus/d20a44d80ee2ba2c4d97352e9f0fe7f950b70687 new file mode 100644 index 0000000000000000000000000000000000000000..4ccab3b5c9f7f526c4392ea323af2890ebc6208c GIT binary patch literal 1452 zcmc(fu}%U(6h-gAMrN%DR2Bqc6bprDs||jD->{+BViPq4v|&x4F~r1%p6}4#@hc3K z<DD56*qLBN3MXNA_U+r5Gxxqn)W+~30?<!nJmQ^0DRpCKAy9*WgwT;R1w<W%GCEK; zp@lHSB*5YBBWmA6lZbw-s)=3RlIVSp*8mReOYeH(MRo~z2#yATo6%ZkghnOqzB-8` z&@N>Dx6b10kH$;m+?s;4(8q@m@5bc7nw-PmxXjUvc>zm=MS{`?ALjIsH>9V6C6k$Q z#mE=^RMOTIla@dzpbjEEzp7$-XFj$^_^+DK`#xn|(bR`obVWxiiINF)Zy)2R7edy~ zh&<-3p_`?Q`3w_g@LI(sb>X=9WJ<ohMiMcSK64a?kZRFUX6bYwL^^1U!=4qZ3^mj3 zC#U*#H-M_>Nrykvyf1MgN0@M{%21OQsWdQ^3U7HHqb;y^?(kfb?q?q4c$&ZBA!JS; r^Jn7g696s`LtF9uO`m<``n5?P3cWo~=ABm$y6`uxN9*%aua5Q&*Kzcf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d248267c8185eaea4425691b96efc36028273a9d b/src/libs/libsrtp/fuzzer/corpus/d248267c8185eaea4425691b96efc36028273a9d new file mode 100644 index 0000000000000000000000000000000000000000..1c4733a0d718d9e8f9f858ebeba46e680a37df65 GIT binary patch literal 2040 zcmZ3^$YxMd&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`p~e!b#*mZ20jLJIA<W-# z8v?TkXb8-rIYMBA=Rl1|IK~i<W01_DhGXmrI)-MR!WPsRzH`74UkFz*2>`?II74gC zf9C39U<5LNVv%7n%p^#hLV|i41D3GnWH|8X|G(}=1{QG20P0Ny0+2cXK*WCr1_J_0 zkP{S03$f`6=EMO?R|3fHhGzsSIfmxxYX50SP%}_HvpC>Lau_)mcXEP<Ce)1#7<#d# z#KDy7F&vEQ**dVtfQrC*=O9wvc}Ru4!v+mDY6J-Ph$)l*LjXMO!D45Km25hY$VaLT iQEJS1y*!2zkQ(ID>p!eq7ZVe!t_BifpjtoyY!U!jcSe=~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d24d9eff7fcdf6f4a40f0d6f1e1808a33f79e237 b/src/libs/libsrtp/fuzzer/corpus/d24d9eff7fcdf6f4a40f0d6f1e1808a33f79e237 new file mode 100644 index 0000000000000000000000000000000000000000..645f0bed2747d991cf600839b0bb5f8c2da5d601 GIT binary patch literal 466 zcmaKou?_)25QhJya5Thq5{XDC73ef15+V`a;3T5ZC>)JV(9tR-*NFEZ-bA7C0(92Q z+$BWtCo?<y{j<B-fib4#02mLg!Gcy2p*D^i6I0ODZJ<6*z{D8=g>iAcd$l$ItpUX+ zFI2m9ih~%s411hd(FoGqr^{XvIiJ~{1(l{cgt$*6*XH#=3J+6F`Bwf0SEC|NsaBn! zg0xMwOINb&72sJ39B%ieRiaKCO)<Wu**8e+{DU(#e>|}glsVq?v3+x><UwC?<#D}! dnw6jWLsbaL1*T)dJlQ~ddPX)G0W?RJ#uFZ{LID5( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d26c0fcd2637abb33b75d0307e3f50b02a7f5b8a b/src/libs/libsrtp/fuzzer/corpus/d26c0fcd2637abb33b75d0307e3f50b02a7f5b8a new file mode 100644 index 0000000000000000000000000000000000000000..388a8cc0ea29ee0fdc14e231cb33f8b701068c01 GIT binary patch literal 157 zcmdn5#lZFQWi<l>!@vIyQa}m_l)f<(S2Hkz*+5dUn318{VI~mV1Q9R*)B}`M0I8}5 zssL&?V5oy=0t&H##34WpXdDB>#Df{BH3jiNp`uKV)Ov{2|Ns9zfZD4W{&Rs$gINl+ KlOd2HUJn4k1tnGh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d270291d131d6b8ecbbcfc1942894db9be5b74e2 b/src/libs/libsrtp/fuzzer/corpus/d270291d131d6b8ecbbcfc1942894db9be5b74e2 new file mode 100644 index 0000000000000000000000000000000000000000..086e2c53511df45c09ae946a441cf15d78f916e9 GIT binary patch literal 103 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5qKUU|<BXfkbsNBZMEuz;F^M!~~RMW?=l!P;JOi d&GqtSHN$^@28QqaAmu<{2-05+(a#9e4**N15Lf^J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d2830a6f96665cebb8b8389dc4400ec1921e828c b/src/libs/libsrtp/fuzzer/corpus/d2830a6f96665cebb8b8389dc4400ec1921e828c new file mode 100644 index 0000000000000000000000000000000000000000..08b616674fd99441feaa1b00f484f3346529a4a7 GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc1_nlm07G>#BSW<VBLibK0|OBK_h+zf s088mIa56BovoOrzVED(x@Sov-d{JuA#Q#O9xfT1HGfR^5Q&MBA0Y79J_y7O^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d2a114f6d6e7209dbbe15a603164fb0dd0f8357f b/src/libs/libsrtp/fuzzer/corpus/d2a114f6d6e7209dbbe15a603164fb0dd0f8357f new file mode 100644 index 0000000000000000000000000000000000000000..05b67adbc9e22bf74dbdb5f24d4e0308dbdbea5c GIT binary patch literal 100 zcmXR8V`O0PW6-Pq%~0RM00o{aK@2_y22WOoY6b=-W`_SFAQ7kvkOYwDQO&^R3zP-P dKmg-^#_Ip<4Anq`su>g*92lyrs~P_P2LS2U5aIv; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d2a7edbe25a7611ae1fa19ed0200e67d20f30869 b/src/libs/libsrtp/fuzzer/corpus/d2a7edbe25a7611ae1fa19ed0200e67d20f30869 new file mode 100644 index 0000000000000000000000000000000000000000..92340314abf754fb8649fb580f356dc48b9c5801 GIT binary patch literal 102 zcmX@8m&Z_2&%nS?l*y3_qJiMQ<9}ZUhH3!@21bYgLv=AD1XqIu6oA<J-~ay;K^#tY l23dxlIYJ;dgK#?o!yFEQ)cCT*oYK_zf};GiOj|=H1^`(97I6Ro literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d2b1ef6c8944f2e881d8467ac8bd99ddd83a945a b/src/libs/libsrtp/fuzzer/corpus/d2b1ef6c8944f2e881d8467ac8bd99ddd83a945a new file mode 100644 index 0000000000000000000000000000000000000000..fe0f28ab15df6deaa3a3cefc34d7c7b6f73c03dd GIT binary patch literal 1095 zcmcIkp$@_@6ud5ktQZJ56ap|L2s{GBP<#ObJwph?HNo-?Bzy%9#b2O7?gy~t)@5zN zvSx<c*1f*nd+A-9iE9_Y0KGFXyfSPc<Rx%^aiX<osYF02Fx6*<cxxnlDZydIXU^Di zV3^o2=kD!vhvOj*_p$^wF+>lgRO3$sToRE+M4G04vXoBFJQHK!lQUANUh5>6!?Csj zmFs)DFHX|3jwDy;ja=7SMisqGne;pB|0-p>XeMQyc8+Z$THLgg-@v2nzdO{AqCf7? z>{n;Syvovxfijlc4dj8(j(dQ|9Vfb)L%{Y%(8+ST7jtB5a&9{RBj`1Y#~&n%FJBvd A1^@s6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d30e49357fa2da4ffdf45aec13968a1bf028ef3d b/src/libs/libsrtp/fuzzer/corpus/d30e49357fa2da4ffdf45aec13968a1bf028ef3d new file mode 100644 index 0000000000000000000000000000000000000000..7ea490f2c6f87e59e076b7d57ddd54649604407c GIT binary patch literal 174 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria5B`%f^{;?VQ2>m0!d*8Rt~VjwrxP_zYv%WBue6eL}zLy#9&rTgQ4b& Jf{oV80|2hFBD4Si literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d31c01b5d791844e563bf59d88beb46adc59499f b/src/libs/libsrtp/fuzzer/corpus/d31c01b5d791844e563bf59d88beb46adc59499f new file mode 100644 index 0000000000000000000000000000000000000000..e64a9d7925b09563c2de4a8c0b013005748f0294 GIT binary patch literal 863 zcmbtSO-jR15dNZ|uU&~n7fPXmwBVw2;Z6j*7S9k|1PRnq61&hR)?F_Vciuxhg(vU| zLGb7K&Ab;=-H14lnaN~k@_jQC_YZL$1ISX7bZIHhxf8%zx~m#E9Zi#X(tv3r0&eL+ zyfwTOm@}h5+#lmY+azX|YSBU)77Zk3^T<E8=TmTiEANGtQ=1o6`D=xO<&=4g%7`~8 zu}m`)-($thAVHcj$FZYv4#Oq<fZdo#0Wk=QfPk5`$Y&MX5hG|n+zp8yZE09lw?q!? zM=?j_84KR0Dq(@gw#J5>4&@kaqa$;LOx7r;=A9RzwUax^>xja->Xwu$yvV&15AKCo zEt(|ik9bX@qhs%Lj<_j{_9LdTq`fd7a6>`JY=a51p#YDoS8jwadm*q*0W--GvA~F+ z`Ck9->#ibCtETds*ZY>>&yPq0l3k#6DgP3A+#A1flq+e>7hd$kvxdnGq`*GmwgY8d TvmWOEj#Aq3vDGNq_YCDHrvBes literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3255f6dcf44ff3fce3832e68b05df7ed2e2c096 b/src/libs/libsrtp/fuzzer/corpus/d3255f6dcf44ff3fce3832e68b05df7ed2e2c096 new file mode 100644 index 0000000000000000000000000000000000000000..a91aff0f249e6d27cc36567d1aa558c097895b54 GIT binary patch literal 430 zcmb_YF$%&!5FAl)qX?pvMOtg0;0Js|NO8q=A$Ez7R0hj{WnSn5#L9K{un<K-aN&06 z_U2~iF3}1034q*-Td^{3s#|Qzl5i9nX~@7dMh~d72rx9mwL`-*<^>c5MD;;sIgo2n zM;WgMzILFjwAM}s(7Ay#*U2m#otFxYHKl-RpGJUotTy#G`m?nqh7f9EeW6Ze2vp}A cxf3|}oc8}QASl15uXF9&UVid}-CY^q0hwA{oB#j- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3260713b8603b337c776e95be380df4e3bf51d6 b/src/libs/libsrtp/fuzzer/corpus/d3260713b8603b337c776e95be380df4e3bf51d6 new file mode 100644 index 0000000000000000000000000000000000000000..7342f376e57a15dceb137eac609ebfda6f0d1947 GIT binary patch literal 233 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0W^y*60o@pq#JGn Ny4k2kgUtuq0RYPpC6E9B literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d33fda0247b0269d223a45817f6a5fdfef2e8380 b/src/libs/libsrtp/fuzzer/corpus/d33fda0247b0269d223a45817f6a5fdfef2e8380 new file mode 100644 index 0000000000000000000000000000000000000000..3bb767d74b1c961785b7db39a23136a5d3dbfc18 GIT binary patch literal 69 zcmbREe?QmDm(>g)-~c8;M0GJELp4y45h_wGQC-Xc6`KhbtIkNxDPRC9`OnZ<4FC_C B4)Xv2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d34fd332d61e28636723070912e873d6f086c179 b/src/libs/libsrtp/fuzzer/corpus/d34fd332d61e28636723070912e873d6f086c179 new file mode 100644 index 0000000000000000000000000000000000000000..fcbfc9621130a841f6d1a5c1a75091f36ea7eed5 GIT binary patch literal 239 zcmZQzs4iw;sIF#UU<_jbf@)@tYOa?rf&3c`4Bz=dLI@hjRA698u4d3;1gdB7g=+i{ z0bIq5Aj7JQ8RPZxFpVq$>b{KMNF%tBK(!zMGz)^O)gb~95^M#Kd7PoO=RY$@5d<u@ f2GW{9%*arZnF|*C|3AO9BtDhlf8a}om(>*j?yE8q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d35e97781b13cede28c2c8a2df96b2ca29959905 b/src/libs/libsrtp/fuzzer/corpus/d35e97781b13cede28c2c8a2df96b2ca29959905 new file mode 100644 index 0000000000000000000000000000000000000000..db0c7db310332f59ee0a2ce5329a7f1d15f4dfec GIT binary patch literal 967 zcmb`Gy-ve05P(022$BtviJ=NYR2@(&b{N>Jibu#)sU2V_o$%19>cS&bEIb6S!&|_F zIolzw91v8+Q4-(za`)X&ssRu43Ybl^@j~9Rj4>n78kAR{@0GtrXAN$+^e27toK?!{ z?yDNyVM)|%Y>KIOA4s|lQpvGDY(0A|%`S=-g4#ex4#jnB(QhpB5@&%aCbovdHxm_T zJF@+s%_F~?Vrb)U<S6yxI-aUP9;Zi>UTt)?7Oa#^F2%vC2=DdC=yRDD-Q!wxxLNs- zR+<btZl;1K5=x|)%SW@PZ@=b^=c}}HB%hun#R??Q+DaGHk_{^(8j}4l>?en9p})tL a{4`o(Z;u@j2li(7$3MW8-4XiQ+wCV)1dmhz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3945a1047680d560a57b83792e52838f4c77e23 b/src/libs/libsrtp/fuzzer/corpus/d3945a1047680d560a57b83792e52838f4c77e23 new file mode 100644 index 0000000000000000000000000000000000000000..4e074542bf9401359b35729ad6c2184d6ebc5137 GIT binary patch literal 2095 zcmcIk&ubGw6#h0=vMmT{147k8ytD`H5A8)1p*<7?DToJeWeIVi!I;!cQ>7!;gS2?5 z3VM<C<iWF-9$WgC*lYiRR6KP3-kaUc2BFr14>FmVoq6-U?|ttfp1*^{27xhnfHfQ3 zY1a|TKP`9W=qNoCjp(;XM-E$M4!&Cr!XLw~%nLwn-+k4Q9}tVBZshnIdHziA5!Kn> zlQ(mwu>RkWdkI)1-4+bHqTAMtlYY;;VJDJfqrjm~d)XoLvp^$k2DMgmwbeGJX3TuG z(J(DzOksSg3CyWe;7PDn75Cu!7N!8x=!C(8LGCcZMR<KH#gcrfI9v{2-<~zm1wz{F za$x$Jco}fkuKVG*B6XgfucGc$<<S*Y1s{IRnX0ISpAoirf@7wVneI6t6`nw(wZpo< zF~>78*5Su7=7E!Z61vZafT1tWfUCl*{$!u_4ak(w<yTo05AaY!B{$xA?292ILbzlg z9~sL2D-06k0%>)~*Lj=j*ZR?TxXeej*(IJ0#YB3p_oB+~^T~Uu7{nPN8~fQ61pIfz z&J+Rx&xv`$cOOmszH@?2?uf6;bg?FWvRZYE{3t|;*-V5PQAy%Dl)#8WD>Ho&O4#il z!Jpw)8CMct11dUQB-f%vm=S3S80IxUX&nU;@<T#$_n10-NAZ9wMhP>`36?Zj!EqC# zfy+X$vi!7KtC;2LWFn`4x?fF|n8Zl0S%rxoLP}Jy_aPoSJQPZg<GD-x3;FBg^cOeS zz*Z6u3AHN)M^2&D$F<a08Kt32VSghJ7u7wYLP;h`7cPnO`&O74AP+vgYbYLYCH&CJ zaeUj&Wb`nu65R(DtjLWA`$Z==(T%X=xGD75s8}<c%kWIrW(GvWQ`7c2i~OdxneFZE zc{=JhPty1dmc>e=_JUfc+G&J=bTIC`4eQ#T+N}n|NX;6_(rDmQxw6|wcn+MNw`T7> z$w?dEi&<(eK902w=<Ucy!CG&^^hyEoC$trh$}`{o?xyW;JJ<gdE8@k9trNAdU!}f$ zmbo^pwD(G-CAF>4<e-?{(mR}`#mc69Y97SHDY@W-!s@>x&496WJZ6J<<j8R%qMTBb QII_mfhyGAg7_9mD4F{46%K!iX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3a2751c86b28596c5c8d5d9c57213f2aadd2f24 b/src/libs/libsrtp/fuzzer/corpus/d3a2751c86b28596c5c8d5d9c57213f2aadd2f24 new file mode 100644 index 0000000000000000000000000000000000000000..972e463e4f83df426d81dca53218c10a41d427e1 GIT binary patch literal 174 zcmZQ%6say|WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*Mj0`|E4Ao#Y3=lFJC=WwmO%-4g zNN6`QFc>g0y!;PRIKMc)x}Kw*fiarl_kV`J-&<N3R<5jW0qIm=Q1}0j3cyA{Y_A47 L2WmS|G0b)VXv{4- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3ab149e5c1cb609842f55b565cb516145678caf b/src/libs/libsrtp/fuzzer/corpus/d3ab149e5c1cb609842f55b565cb516145678caf new file mode 100644 index 0000000000000000000000000000000000000000..56a0fae381eda30f20a37e9351820a987de26b13 GIT binary patch literal 103 zcmXSBfB@#-4D~HgHiPHNm6bZx42%p6tPIr*3``6R|NVkX%yROR6LV5ct5~en7=gkJ n423`y)tT|n7#P&5tK%~jKw|$PK$w9!H7BEhLA|=V8Yl(;j7S{n literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3c9aa0f7eca577aa41e5ce7d118890bfb33abf7 b/src/libs/libsrtp/fuzzer/corpus/d3c9aa0f7eca577aa41e5ce7d118890bfb33abf7 new file mode 100644 index 0000000000000000000000000000000000000000..285ec8f57d16c85895dda5f0192bd11325c1eddd GIT binary patch literal 347 zcmaiuv1$TQ6hu$dkgHWlY9W<Xko<wB73|Y37F#TYAet2M1=d1XQri0ieudxT4<v%< zb>5nQA%#=iJ8!seW|H;`9|<tZENy8E?%t;xg6LH#44&W8WLU?VT)<R}$gbHeD0HED z%Ow_%AHJ%Pm*0*?dKoF%NH@*|bLX+bAJ4mKefaC?3lwb%f<X<xIeNistofN{mQzI0 zCJLzTWyjoCjrBSf7P{qx9-SZdf7MQ<aT0PXp3Z@GV4Kg_?7nA9mcskJA}gm>YNI+3 H#-VutQ8-Qg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d3d9c64378addec6052b3e22d3bfe2cdb59822ef b/src/libs/libsrtp/fuzzer/corpus/d3d9c64378addec6052b3e22d3bfe2cdb59822ef new file mode 100644 index 0000000000000000000000000000000000000000..2ba4613274dce8c235ee8b5b67df4a5076a5a973 GIT binary patch literal 231 zcma#o%VQ{sXJB9~N_7;@WB`Nz|Nr|kFjQAFF#Lfr808t51VEDikrXkCSu@~N#0XXm z*8iWOnvnt7Btei|YY7{3bum!cHxQ3uu{D?y0PAA`vOx^S{}LdF2r$6x2Re;G79rIN Qv>r(cD2ombf&c>p0Qt{BIsgCw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d4048366b2561abfe2fed3cb0e4b6248606e59fb b/src/libs/libsrtp/fuzzer/corpus/d4048366b2561abfe2fed3cb0e4b6248606e59fb new file mode 100644 index 0000000000000000000000000000000000000000..c99044168abe9bc56798d9a17508d5375d7e55a0 GIT binary patch literal 73 xcmbREe?P;^m(>i&Kmp9DE@ot?21+nOrI-XjjQ_%!3=FIw#{d7m3=joi1^@+$4m|(> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d40beafba088aaa47eeee2e125983f253104a3a4 b/src/libs/libsrtp/fuzzer/corpus/d40beafba088aaa47eeee2e125983f253104a3a4 new file mode 100644 index 0000000000000000000000000000000000000000..06d06e354d51c437012d439cc816b11076944b36 GIT binary patch literal 1117 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^JO+?U7>iQ>3ui)%N4P{4?j(5zNr)r{sg5B+i2#NZ7?GU7BmguTU4<@O z1*bd%SOo*ZCujjgiOVqcq8X0NMZ_f`=QA)eZU;v@3nQlUaT=pC2k0CY1`Z%(WMF>) z<otl9n`&)fqN#>O3Mj$+1IFin4h9BUaKeIz79#@_gFFK;L|c3QGgs%r5*@>08x~n1 zpf&|2;dTZFpha^)JOc(O4`eMcogzFt#GI{wa5-5lQZmdvP@uvC9LR>}EX+iU%P~0Y QgN8ad9RLl6B?b@+05ejjoB#j- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d414ccf23759eedeaa2d42db29b215158ee23764 b/src/libs/libsrtp/fuzzer/corpus/d414ccf23759eedeaa2d42db29b215158ee23764 new file mode 100644 index 0000000000000000000000000000000000000000..7a3b40a24bd153283bbf43d64207f6b766142bd2 GIT binary patch literal 493 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRhmU{L$_-$4o@q4bTR7%0LB;sJ^3 zVn&8)hnY~2%y5u_p(H+!fkCe*vtuE$Sq#-MT|kX(AYC8~6oUY37=x3YK^APV$s8fD zm~cA-!yFC<Mp+<_35a81Dj6K>T%drF0pUP3WCwb=097+GfR&Y27b6?VAi%Ki+jj;I zW1ugD8D!w5f*1-wkJSO)2Q#%=0&F!%ssV_rfkr9-X$A&Kj9`n`$^(V~PzpUT8Ge8O he!qdu1QQhctvC-9R16Lv0&Hc4;hff<|1<wH008aJVweB` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d456cec2575aa27e5d4b85fb70f8afa971db3330 b/src/libs/libsrtp/fuzzer/corpus/d456cec2575aa27e5d4b85fb70f8afa971db3330 new file mode 100644 index 0000000000000000000000000000000000000000..9cd75cbabe6a935b5f2d28ccde51aeb89a86b472 GIT binary patch literal 364 zcma!NU|{fw2NFe@9I5p{8VLUX|L@DdP+iTyzzF1}#+M~p<&?U{7jQCg$by6#5Q<uB z5Q=h2Q<2mFRWryk#H;5ql*Il21vWk(qLyI}Lp#s}ASnzoh+*Hi?+hJ4DWC=@NW^9o zBZC0L4-~B&Amwe}7#NsP91iqLY9>cL$oT&ZQ4Ada|1&r;Frb;aAg`o|fgzp&>gxoM o5+DMD-y#eKeSN?Hr~(Cr2O=n-^2Adwih;oev<B$kIotjK0O`d>i2wiq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d49bb7f3855d7f9878c9864b916558a439e53cf6 b/src/libs/libsrtp/fuzzer/corpus/d49bb7f3855d7f9878c9864b916558a439e53cf6 new file mode 100644 index 0000000000000000000000000000000000000000..a8a0e8970eaa5459cc016dde135390d84bad75a3 GIT binary patch literal 255 zcmZ9GF%E)I5JVq==tpBhv?j6g9A3aP5DE%nL$CuA>4+tXC1>zxRu&e<b@$V;$<Ckb z&fl3#)?727E?sfZSL-Ko;@GxImwu3YgiT5ST@{0|gwIH?JH-SU(JyW=Z5|<8BX8}8 zoxc~QyV2XwHOS(tCNQjIc4vps;B4vZtk_-xZMZoK%DSIxOgL%wU0hAsW_}WSKVB+* KS{|ZM<EDQEh&p)y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d4e6203130344061ecbbeeba56d501e46e9f0c02 b/src/libs/libsrtp/fuzzer/corpus/d4e6203130344061ecbbeeba56d501e46e9f0c02 new file mode 100644 index 0000000000000000000000000000000000000000..5df36f056cfd6da521b02bde5cbfdff37511c3f5 GIT binary patch literal 228 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}_DEFpvTXFtmLG67?XBAngiZx+pc1qn@E1qy_{~l|aNmN*JJOII4h7 z`0v5M(AffV#DB0e6pO28ff)=;0t`9~46Qx?nX8K-_An>{#ee`P#sm^8)(7!o85peN JQy4h*0|1nNEII%H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d4eb367a3608d272e1bc1053300c8f5e0045862f b/src/libs/libsrtp/fuzzer/corpus/d4eb367a3608d272e1bc1053300c8f5e0045862f new file mode 100644 index 0000000000000000000000000000000000000000..07e2ce7321915de6263856b1e2d3f473ba2a6350 GIT binary patch literal 1708 zcmeHIIZnes6n*1ZBJL2WC?X?^r2t1zvRokwH*l3A1r&h_OHiRS93dSypvhqZh+9B` z7~b~`ULgx19b<Xyzj)?(-up9A3s;vBfPSyuz2TEhYuyIo7*NK6_(GYRK1t}{*hE5j z9tJLgiETVFYJ*Yh9D+pkySmXc!)HjgQb<15O|Z~^Fm=1&S=6XNP&o+BDu*v;glUH7 zBgsJaC#5Br16?>hw={U(%($EeA4-i9+FezJ|Kl*5L&9@W=cTanLgUTqCf=oJ;vIUV ziC}~zT?d+pu+r61aNvV0dV8m9@!6N?aDU=9*ZA3n(-;7pXeib`tR>U7_j1x(Dr}<q zE7<S)LF=d2$2?8HcrO)9jcb!D-D1H!ORyqXWE5D&MbZgNK`;&$Vd<d25|+Z!^(^Az z52d?ER-i|8Q*ewNrqKTRoudk8<=55><<0ZN^sse$N)En}q#DT~lWZ%JVD}bz`vhhw BBYFS; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d4eeba4d10d0df6b37df70d13b346d6e63c53802 b/src/libs/libsrtp/fuzzer/corpus/d4eeba4d10d0df6b37df70d13b346d6e63c53802 new file mode 100644 index 0000000000000000000000000000000000000000..f75d4824f487d2294ce8524df51f893b6a7129ee GIT binary patch literal 59 scmXSJXJi0_YDP)zIw+grWi<>GgN3SrRCRTOGQ%7O1||lEY7njl0A;BRga7~l literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d4ef2d723c263dd1faf63de6f6cef5b680c70435 b/src/libs/libsrtp/fuzzer/corpus/d4ef2d723c263dd1faf63de6f6cef5b680c70435 new file mode 100644 index 0000000000000000000000000000000000000000..8a05bf4005f6635a80eca425ba789297fc7ae2b5 GIT binary patch literal 69 zcmexkTbvsIr#Rk#fkBPoe{nTK;Q#9C|Nj{n7^<ro1gfhm85kHD3K;|#{xAd}%kae; MR09D}b9Foe0Eeg;oB#j- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d538ed38a6021ee134d512906058f692a1f7b409 b/src/libs/libsrtp/fuzzer/corpus/d538ed38a6021ee134d512906058f692a1f7b409 new file mode 100644 index 0000000000000000000000000000000000000000..3f240d26123b15bd930f4e78d3f075c743930b16 GIT binary patch literal 147 zcmZ2=(dfTqyuKkrQ6@)fJp&m0|NGxppP{;%fq{`h0VvYSz))SR2E>d&L3M~421^Ep zmtZC*14Du=P$f`)ju3+}14B+~9#joPwI+~fSqM~(sig|8C0;L&p}3?dKaZgr0Q$Ba A0{{R3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d53f8b80b76651c0a71fc786d598ab60589ca31e b/src/libs/libsrtp/fuzzer/corpus/d53f8b80b76651c0a71fc786d598ab60589ca31e new file mode 100644 index 0000000000000000000000000000000000000000..63bcdd15420cc3fb2951eeca6023ba473fbb4d2f GIT binary patch literal 66 zcmbQp!N9=qvKk1is;jN5tN#PR@87>CGBOr2GB5}LC9A7-K+-V4Q4ACZiUO(XY9QkU E0D`L+0RR91 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d564e03d6b83fa5ade5fee4496fc6cbd4bcdc503 b/src/libs/libsrtp/fuzzer/corpus/d564e03d6b83fa5ade5fee4496fc6cbd4bcdc503 new file mode 100644 index 0000000000000000000000000000000000000000..fd760e496dddf5389db90bfb2810c69d36585c18 GIT binary patch literal 237 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK#WkZqNz`y`9zaHv_DxmXyfEND;xt)Op IM8E(C0QH0=QUCw| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d584a0d2694f58abe1c29316720319cb32a3745b b/src/libs/libsrtp/fuzzer/corpus/d584a0d2694f58abe1c29316720319cb32a3745b new file mode 100644 index 0000000000000000000000000000000000000000..d8511a17a603736f712dc08d243608e1e4443b10 GIT binary patch literal 213 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bOh1|~)ZcaTVRF(X4YP!&)JLPmobKsE$H z#GzauXCj8aOF$!m66pGp8IFOCD2d-c@juih|6ndr1KL~+G!&>0M8Mq;58?wImtU00 Uky;Po{Qv*o7l{A=-}e7M0GnPe*8l(j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d5924106fc83b0da01dfc76eab3ca1a7f69368c1 b/src/libs/libsrtp/fuzzer/corpus/d5924106fc83b0da01dfc76eab3ca1a7f69368c1 new file mode 100644 index 0000000000000000000000000000000000000000..c994dc4959c1534a94e95492c4ebb122d430c1ac GIT binary patch literal 161 zcma$5&&^a5&%nS?l*y5*2Bd-D-~a!<3=Y-RKqfm_AQ4P5F!0JYFfuSS6mT*y$TBc8 z2r&GZ!_W?t1CqiFtPC6=Wd`4XO6nmR{(}qx@;De$88VB2YW_1+F>w6<50M3v)y2vA d@l_@93>*_d{6rRp|3VB5uYk;=DIjNc0ss>eAnyPG literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d5a04e30f6d0b4c8b93aba48c03128d490c93299 b/src/libs/libsrtp/fuzzer/corpus/d5a04e30f6d0b4c8b93aba48c03128d490c93299 new file mode 100644 index 0000000000000000000000000000000000000000..5386b277767fcb526746e2555476babc0be60a8e GIT binary patch literal 223 zcmZQzD9YqWt!Ds(|NsB{GB8wEGcYhRD1b$(i`5vai>Cv{)Pa0Puox0Crya<d!_Y1a zq%s*8I9$O7!HwCrZCijRkiZ6Xw}H$9X)I=_h8PU71Z2E5hyVdj1_oK6veN3}IYM9o mVW5q37z7yhef!S9!N5>bln)YCVAzIi9?&?TA2_}-FaQ8?#4|wv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d5b63bba975637e9a05dc0775b2a25262721a013 b/src/libs/libsrtp/fuzzer/corpus/d5b63bba975637e9a05dc0775b2a25262721a013 new file mode 100644 index 0000000000000000000000000000000000000000..8b0f6a84a58e4ea7ba7df3e312733d6192e7b0e2 GIT binary patch literal 69 zcmbREe?QktF9rzs4+hc-P%eaG%4c9msBSnpje#LEo`IpdxR`;Fp}Lx}8mtSf0|4f} B70v(v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d617c156f8add1aca9f9ed9ecf6f178434844c1d b/src/libs/libsrtp/fuzzer/corpus/d617c156f8add1aca9f9ed9ecf6f178434844c1d new file mode 100644 index 0000000000000000000000000000000000000000..63c571a7e1b40d45f6a821505810d247f905016d GIT binary patch literal 130 zcma#o%VQ{sXJB9`%H()j52S(M|Nrm43=GxP3=E763Sg1yVnzlqu2vTS3ouwhC<X>j w1_oJ%Vl_RGw*Olo;J@$x|3DL<z@QHZxQgQqjvcFJ0CRvmkeqJu93h5k00@vG*8l(j literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d627a5bfa8031a15f91b4c1e53584d912f48ea41 b/src/libs/libsrtp/fuzzer/corpus/d627a5bfa8031a15f91b4c1e53584d912f48ea41 new file mode 100644 index 0000000000000000000000000000000000000000..dabbe120f0a2af8520e3a126a358b807a14ed119 GIT binary patch literal 140 zcma!NfB>nYOperg2>bv4Um(U3Mh1pzhHVf~zy#z00aHFy077XqFfs@;2yihp6+`5! qtJT5k7#OUfGy^9CgDg;4X?5`&AqEC9i0~XH0T9Cxq6%acLp1<&GaR%4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6299d106713090e7e031f799118be78f1b97d9c b/src/libs/libsrtp/fuzzer/corpus/d6299d106713090e7e031f799118be78f1b97d9c new file mode 100644 index 0000000000000000000000000000000000000000..a4529e6df13745b1c5d77e4c247f2cc1f1cada68 GIT binary patch literal 1843 zcmeHHu?oU45PeZW(Xm?x7k{LiAh@`8c5rg&q``0VS6m$Yfi8maF4vS)(xTKB1Vc$K zcQ4J$y-Uvf0i@-RB*skac}AmF)F~|4r85Psc?#)MYmm*K#O}eETT?)RtAmxEq4T8H zDE+coIrSG(r~+=uAbhMKb)rM)gD}0_Xo?&r1`^H_ICB$1j4#*#Mp{&iJTS<j`pa+g z>B7<e66&%{JUWroFB?)z^pn1_pW`7I>Up8yYSp&YZ~xf<p1xZeMvacO*KFlcZ+qdw zk_QvuoL#B&fdnVY!2iOP)#j9udi_mFnY%CPmtW7<qOGQkHm|%5i{fqIVQZqDeW_vA Ka`Bj|we=Gp7)zu8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d66d8ba52072490550f35f22a83488c7c242f304 b/src/libs/libsrtp/fuzzer/corpus/d66d8ba52072490550f35f22a83488c7c242f304 new file mode 100644 index 0000000000000000000000000000000000000000..c8437b5f8ab0de37f358a4b20cf5e73e0c76b848 GIT binary patch literal 1400 zcmcIku};G<5PcUSk!*-g3{|3tilJ%;*76I8Psr4v0}Q1T9zd$9E_^~K_z3=ik3f6| z6XtBEaU8n>HRV}JbZ6)C?(SX6F&-8rfcY$$KJt?xrMw1&0LVBX?#W#2W86qg%+3gD zigk>lJIe7L6cd_HWp8G}TPA~=Qie0L>D@0pPZx(rff^K|6As-zF{)3b8T1L*OkUgy zbz$be>&A90+sohRgXm4SJtm+2&M@a2rV}IKML7Os<Ezq*7_w-@wkeYw_~w4f1n6sF z)zu<I$iNj{J<B6;t3_vW@H8=Ks`LLe@xf_?(C#>F4pqt8Cw6Ee2c96EMirqC?(cJB zSJqNB;6PX&3Wl2}u=hVBIE(=`D_H}tS8@N8>zYTsHNf)SDC-iHrNqpCKU===Fz~)7 UP7br3F(b{Q0Iw$WoT#S$0EzfCIRF3v literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d67ee847e6170f63a71190335d274b1caf1d2948 b/src/libs/libsrtp/fuzzer/corpus/d67ee847e6170f63a71190335d274b1caf1d2948 new file mode 100644 index 0000000000000000000000000000000000000000..fb92f500033f68f4832c540e08e3051841d4f1a2 GIT binary patch literal 355 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLuHjhl*H3X$DRPhD-)~ zFb_%Jd>jCz?m8jB$ceD98fu{|&@H9a#dAos3!7042)Dyb6=Gm;0J@$mz`!8PFbC{^ U4h9ZT;4uP81_lMN5Rj+_0Q!iOq5uE@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d68087b453669cce4195fba0b972038d7fc58b08 b/src/libs/libsrtp/fuzzer/corpus/d68087b453669cce4195fba0b972038d7fc58b08 new file mode 100644 index 0000000000000000000000000000000000000000..c857a5a8b328cc14050945b42a129a4d24673e34 GIT binary patch literal 362 zcma)2u?oU45PfM8;-)wYc5#sEcewZo5{d*{P$`W%G(#7)2!4V1oenPNMWc%deUN*{ z-MhO-CTfGN0#Ia9SIi80z}gvcCirQ!PgXmv@^qan1}06$c^l{>l-#_be#ah@E8ukJ zPzj8f+&H5^re%fNX&gS1l5^ojh0Y|rMwTF=DR4dz`5lOiy`tsDgAQWgcp+;--;KD& h;9Ahk&+@+?w}?IKc>_PM^It!qHNSp_UE+_C5Kou!Lva8A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6b53d53a88b7942aaa96e140929b0009f907db2 b/src/libs/libsrtp/fuzzer/corpus/d6b53d53a88b7942aaa96e140929b0009f907db2 new file mode 100644 index 0000000000000000000000000000000000000000..e4fefb5ad6d63561608c0f97b9dff9616e359a16 GIT binary patch literal 120 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0BxVE6+f6pI-dsvTwm!A%eW0}vGq3<?Yk q)j$;p?P?(HKz$Yr4Dklp)z#I-sqxjB|Ns978XEW?D8cB(zyJU|871ui literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6ce92c0ceaca8522ef64653103f3d8a16b50bb7 b/src/libs/libsrtp/fuzzer/corpus/d6ce92c0ceaca8522ef64653103f3d8a16b50bb7 new file mode 100644 index 0000000000000000000000000000000000000000..4753327e7d4571697e37139bcb9207f0dd966b77 GIT binary patch literal 161 zcmXT1Wq^Qs2=)K}e_sX$wQ2^2|BOJ9?8Kb-veMM}0tN<I21av+Uk$}`_D^JC*#DHF zy<Hcq)&r;(q?Ezo8v`d$*%ctCx_FKd*gRn{8BkiB8ef)}1LiO|f|YLoa}*dDiedV} Q`WP9iVSI*aMoH~D0LAAZHvj+t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6dd23b471088f8889d8504f153011b67dcd6de2 b/src/libs/libsrtp/fuzzer/corpus/d6dd23b471088f8889d8504f153011b67dcd6de2 new file mode 100644 index 0000000000000000000000000000000000000000..650f5c380eba725c4ff68d94a977add4b82d563c GIT binary patch literal 584 zcmaJ;Jxjw-6g@8$j0Hj3O|Z7mNz_TfMbJr?g1bWq<v{{fOG6!+p$^p|xHt(C{44$y zCn0~JLmi&y=Ek^)H+kot+>gBb@s5jno~Hm7?qrin<g=9!Q$sK~6U$p-kTQxU#mj<_ z>#KI*%ASi<f^)7%D?O$n+weAkZbtVCd_D%NACOOfA_;P@J0uk1+o_W3SF=iRN|z08 zUo=9{>@)p1AREQMsY{m7bK>S<LO2-PU>IG6{dN+Cd&4zg3pJn440FXMl^F1_AWRK* zs3e^-LTvph<`N_F6EYz;WzfjRKFS#F>l}ETX?v2?Nxoh+mgCq3?w?#O<(v!Y$cPG? z*Pw2r$+EgFQXSc!4VeEMFw%iadXP1;bzKba^<=#~N5H^d2mNt49@sKe3z7{kfns2F Qne0s-<+A+D+-0or8z&obhX4Qo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6eb0ca72bebd0db0d43439885ad172ab2c9b5b8 b/src/libs/libsrtp/fuzzer/corpus/d6eb0ca72bebd0db0d43439885ad172ab2c9b5b8 new file mode 100644 index 0000000000000000000000000000000000000000..1622bf61bc6df5ca1829cc9241eacb2a00620948 GIT binary patch literal 102 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkonS j31)J#Fvv0#&k<ty_x~SIBM^ue<=Zm=5knVLEkiW`v5pyk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6f4a9abc74ccb8cd87f1e59204f7df3a2530fcf b/src/libs/libsrtp/fuzzer/corpus/d6f4a9abc74ccb8cd87f1e59204f7df3a2530fcf new file mode 100644 index 0000000000000000000000000000000000000000..35164b8be485144a8377036d892fd6ee952d7630 GIT binary patch literal 332 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qKUU{HlI808rxA(9LjiWrd;F$n-wp{ig6 z8U<6qDbD~_!GOgs0>%Jc15?2QbPdtQsLTPnh=qXz2pJjJ9{@T3tAGR$RBJN=J*f`i zFjzxr22KVBS)fvobucgc{{9aN4Mqkg26+ac4_kZwGgs$=)Bu435LW|DI>-P3V?;lH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d6fd0be7a56f267c6c1bb3f00551d068e75dce31 b/src/libs/libsrtp/fuzzer/corpus/d6fd0be7a56f267c6c1bb3f00551d068e75dce31 new file mode 100644 index 0000000000000000000000000000000000000000..f208a127d52b2fb789a3f1d54bc566de7d1c5761 GIT binary patch literal 286 zcmbu5F%Ci@5JYFK&{AtV<9$5Ah8SW@{L%as8WJtN1ZVlj(oS4J8e6AfcLHyAVFIoU zU_6@5T~AfcxfMVZLX5p@{kD3+o_z70<I5aaLu_!oKL<D3gJbc-U<q$!6?H=T7L|L` tR|Fp=EvvnH0Oi8;d<ko)nIU4Q`Aw!ney3U#+Fw&?TFYs{WgY#OL?0GmN@xH8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d71496a6c97e10574c0a6378334237c26917b3e6 b/src/libs/libsrtp/fuzzer/corpus/d71496a6c97e10574c0a6378334237c26917b3e6 new file mode 100644 index 0000000000000000000000000000000000000000..02f265a5f42cb4988194fa2054d28701798a190b GIT binary patch literal 307 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB zkqTrnGO#ria56B+f^{;?VQ2>m0!gqYkjl1iK;pj;hzSBE@j#+8H50$VD9*A+xNFKh uuptZ#u1Ge=>*Ya=Me-1XFVMMQ4*}f;atlFsLJbDl#lT<<)&Uio!vFw;#y4sJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d71ac84919378e263e7f8de363f06e01a73ad614 b/src/libs/libsrtp/fuzzer/corpus/d71ac84919378e263e7f8de363f06e01a73ad614 new file mode 100644 index 0000000000000000000000000000000000000000..2d694556a70c0e9a38ccaa2a286d7b932f6c3b45 GIT binary patch literal 106 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLr8gLq)8iGy^9CgDg;8 ZX?5`&A+VTmI|IWUFpGnM1EvaS902o=4+a1L literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d71ed070dfa1a23451fccc45bd286a642d2d0f25 b/src/libs/libsrtp/fuzzer/corpus/d71ed070dfa1a23451fccc45bd286a642d2d0f25 new file mode 100644 index 0000000000000000000000000000000000000000..5bee2fe7b130928c81da266e615881b6d9d75d6b GIT binary patch literal 79 zcmdl#@jutgm(>gmiVO@6QVd|Az`#%p6yan9@_?AJx|pFF#D~Z-R2MTs@Nb}i7f28& MS^fY2e}>9x0CzSJt^fc4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d7265e3f69d695ce1fefc893078f666516667418 b/src/libs/libsrtp/fuzzer/corpus/d7265e3f69d695ce1fefc893078f666516667418 new file mode 100644 index 0000000000000000000000000000000000000000..e1fb5c143a52c4ea2a3dd5dca875faa923dc7388 GIT binary patch literal 218 zcmazoU}6A+qSQ=|dI<CX|Np)WjMdeQ49tJPBKsf!BFhkOmj`7r=<3GD|A{S5jgL>Q zX9Nn$!z94;CWZn|1_oIW+cutofvG6<zi=jl8Ib#*;s1YC28QBl1_oB3T@2Mg2BSQ~ u93h~b0)ucn!!-l|X=ebN1F`{xftrDOe5!%;|NnI$0WffcNP^VJ0x<wP-7vHO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d72888039e173fb59116b0bafe9e5af6ab46dbb2 b/src/libs/libsrtp/fuzzer/corpus/d72888039e173fb59116b0bafe9e5af6ab46dbb2 new file mode 100644 index 0000000000000000000000000000000000000000..81acdbef02fa447ee9811bcc85e42ad1862b5a63 GIT binary patch literal 305 zcmZWkF%H5o47|WV!w7RFh6-N66FTsMs6r8{paM0tO9n<}_Dp<)udwz7u+U(q0#tEJ z&d!~ERzu*Zu0WYb$q518`xLMicoK!!s*Askn}!;Huto&s=Y#9Hk<_cRUBz9k)j<L= zOjc{P-q*U!Hd>jgC^CVTHav{7HX`W&D>8QI*R$N=ObSOLH{r3Ea?L6ip?z_F{maj} k1Bmp&mjOvcR)Nty=0g`C9v;B^q;mptNvXwmPAZAJH^OUJi2wiq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d75b92734161809e82ea62e0bed26b2481f303f8 b/src/libs/libsrtp/fuzzer/corpus/d75b92734161809e82ea62e0bed26b2481f303f8 new file mode 100644 index 0000000000000000000000000000000000000000..41349276070347bacac1dbeae5fe961169798a78 GIT binary patch literal 2294 zcmb_d&1+Ow6#u<R)TgBooQ2XfW~SE9=#UDc7_8ZpmV(&q3ZmBmZ^@9T!@P+tUT`WH zM0BIjg=KbGb}xl4Wd4lq>~iQn3YA=c=iGZ|CdRfday0LqcRud<xW9A8Pa;sOk=w(8 z_1<5^ymS28rIPyciZ#vM$fuA2Ka+!S6L{Ul1zL3Rpo|^JaYoE%*J;#IN61n0{K{d` zXwk~!4s!2NOktsqz7s04*(I8va^LNyr$!fV@+9Lnl&_fDO|%Vp$@H$M)b@8U(eZ2= zr3sak8~9jt;c*e7N5+cK7A6>e-lck6>Kv+98F~BZ!5}8nWpYXkGa8vm%w$aDNYG*~ zz7ZQ8^VdR9!ZbUN)yIC!-3UFR`Pv_TYA@fFQkfB1o*GZ1s$EgzBHI_wT?+vwqW273 z^#j7EBel^_<B=&-IdYr`$O)O3a;|@+y)63~ew>pE@1+WBl+e6~o|=@x8DlJBke4V9 z5(+!e>#1dpXP!^Duiz>XOSFpKz>Ssm;*~eRy;N~&FDm?}{WuU}0Fz|s#qJYGwvl%P zx(SqZfKV^2xm{ltj}`k@vvo`0j-r+*K(-3(N5QV?pP6kKHr&`wCYcKvV;^<0-++S> zN@xJyI2-W4P)fI}8Q)8$Fs}2x7;d2qM;maoC5{z1KN1nas&LMK`Q}P;alb}I-fY<) zY|9ik2MyAh#ZO;!d3Dcx7-9NxcsXT*;d)9@CQSjJ_zQdbea0p6Hk2y*)T*h7NyIJ) zhEzR;WAYwG=Ev>&D4Ne};b|JBUvewggc+gB!lOUPE^FC$MyQY^2D21q`)C{v-b|z+ zu7coyr%meH<lE(J4SU1|6z`Dv$si}=@LrqyXB!BA^E8g=YJ2Bc%x7U6DWv+9Gh}3= z9#TQ7@xwYD8r>Q;YxBMeA+|hY&lEn#za?$4_!j{e<Y`yPRY1pjZBBj~v`H0ZFbc7> zV5g~i&$0@Bac5=N^^yXD?Zp!xF~8yGKcS5D**X+w!oLElGV=4!NPo&Bk=8?t3h_XT zq5I+BZcZ=BZ=E%+L0lIz4h!Dh@xD(VnG{PHxkAo<QA5mOeS<lCL?!7!!G{xEX82kJ zBSRQsUsfcNm;YfHY5pEv5E?4art9B~XNTwiK_{O}4wESd@@cd4YA;bdCn}+UhmZl+ zX}mnhPUgC<x2?Huo9)FcFXPkTAx|xm?-sb9ZP-P!9=-t{-uGTwAXF{Vw&O3-iA|Sm Wj)*-;p?#9OnDzA*?Q&BbGxHV{hH2yg literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d75e24076c7217f29c9fb8fc9169dfc95a119ede b/src/libs/libsrtp/fuzzer/corpus/d75e24076c7217f29c9fb8fc9169dfc95a119ede new file mode 100644 index 0000000000000000000000000000000000000000..4baff06c7f08250c60576969b1c633abbd81bacc GIT binary patch literal 198 zcma!LU|=x%|NpyVQEDbfJ&*$g|NsB@WniqXhVWA3%Mx=+Q{xMG85m?47$JgKNP8?| z44Nzr#dCxh!Xa{V7}|l1ISdRo3>-iR2gquG((MeHC;+5IPrtaRq+o4YRcaAj8=O%M E06>f&k^lez literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d781fceea762f5c716dae52eb94f9dfb67514e62 b/src/libs/libsrtp/fuzzer/corpus/d781fceea762f5c716dae52eb94f9dfb67514e62 new file mode 100644 index 0000000000000000000000000000000000000000..3e4ffebd1aebbef0cf464739c1675897e9ff0170 GIT binary patch literal 292 zcmdo0-;V3$%W4J&hHw8Jq<|C<{CX-^45X?VfdnIiJ4mRyn316xs0t_qA)^@>I>Brp z7cLHDyhS&Rfe~)lL}bHI3<PQvgqsF2;X5<TIk-%KTMKklG+Z~>jnN=?f^Ap`bTZUi g5C1d3y#-PZ)DJ`PdU*^bMVXv%0QNhW$H2)60O8ItivR!s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d789e4ff7d0561d47354313ad534778b3ad832e3 b/src/libs/libsrtp/fuzzer/corpus/d789e4ff7d0561d47354313ad534778b3ad832e3 new file mode 100644 index 0000000000000000000000000000000000000000..7477829f884a992dbf1c95eed7212584bc2e440c GIT binary patch literal 40 kcmXSpude54XJD*m0D`~YTUr>ZTfl4vm>@$!b%Q}B0OunLMF0Q* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d79a4b9626b363119a990cc25932860c8f97a7d6 b/src/libs/libsrtp/fuzzer/corpus/d79a4b9626b363119a990cc25932860c8f97a7d6 new file mode 100644 index 0000000000000000000000000000000000000000..e0a772c1e5f2794f73f82d55abfefa2e78d06920 GIT binary patch literal 108 zcmdO6U|^7B1QJD=9I5p{8VLUX|G(@1|CVZo21cNaWIRuGF(X5DwK_zW!5T~pFfed3 vFvv163NbKLn9dPm5N-#Gb1*b8%;8}8SHJ{O+@Qd~ptoq^|7U9drs)9yo}w1H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d7b4bde787daaca7cfebd860e3579404bcfe0207 b/src/libs/libsrtp/fuzzer/corpus/d7b4bde787daaca7cfebd860e3579404bcfe0207 new file mode 100644 index 0000000000000000000000000000000000000000..8d0fb98d9c4a398ef65507545645fd263c7fb44d GIT binary patch literal 196 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43=9Gw$<`7!=IUZbxI&=X{{jpG zU;*qpKuS3o7-SiMY8n{-+d@s2XJ8Uw_z!|0kN_qTL^O!W@DgGToLp?p@EXVg+J@u| G*J=RLJvwRt literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d7c5d185ba98a1f76dbd97de50ea281877ecbf4a b/src/libs/libsrtp/fuzzer/corpus/d7c5d185ba98a1f76dbd97de50ea281877ecbf4a new file mode 100644 index 0000000000000000000000000000000000000000..9fd3496e90f2de965fd5f71f18c7915c1107a350 GIT binary patch literal 97 zcmWIhZ@^FzU&N5fz`)^J&j1Ghfxs7t7#SG6fC8cnMt!z@eU3n;16ZDufkBo5D9OP1 c-<N@*x|)HJQJ#TG04xV0s-Y~#+W6FJ0Ae)~V*mgE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d809314cef9c3264868ba63183d8180bd12c93df b/src/libs/libsrtp/fuzzer/corpus/d809314cef9c3264868ba63183d8180bd12c93df new file mode 100644 index 0000000000000000000000000000000000000000..daf166d09024ac8921393d3decd7a29ce16d0efd GIT binary patch literal 408 zcmaJ-I|{-;5PfT*YbT~s30PTJ1VIZ+1uMZbEEXvQ31W=Rf~L|-<Scrt2o|n0V<G{; zf%)v4*|+o7C}3&;>^C|*QzmonDY;ffXim(=3gXQMd=P3USz9{Z705J{Pp29q61bS3 z7KJIi+^owOFvt;GFa?F>f+J)sv2m3WE!^@4^q3}t9!~>8VfFWklrRfrf{3;+>|PfC zb5*xnF^#Mgn&Wz#gl5--W}Wqvs*hrl3DU~Zqtqt{IzOLih7k^g77vVQGp2tP>+q$L M$2n*|U$`fYH-ZXyaR2}S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d848fa1ccf89d98df57a2e2c6a40869f81b9971d b/src/libs/libsrtp/fuzzer/corpus/d848fa1ccf89d98df57a2e2c6a40869f81b9971d new file mode 100644 index 0000000000000000000000000000000000000000..20440fca0d16825f0ac2d7b8cb443dfa82696564 GIT binary patch literal 116 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9#e*RNk8!hsA7 ujtu|ufE=#xJO0Z8RU5ST%n<_8K(%bG|670t{b%^bWDQgSQUwGcEp-6uvmVC) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d85617cf6726d45c5b9a4c46f1bb7e252acea4b1 b/src/libs/libsrtp/fuzzer/corpus/d85617cf6726d45c5b9a4c46f1bb7e252acea4b1 new file mode 100644 index 0000000000000000000000000000000000000000..1336484b6b44d5e919b7cbef20412d20e551f411 GIT binary patch literal 191 zcmZROjAvkAD9YqWtq0OT@c;jRUj~NiY6#B(LNRzjX@-RAhLh767&1Y+s*4#R7^JwG zp`C%TnjxNv_5c4;t(KJxD_1fYRq6nxm|%MUffzvZVSHvFLkFajp*p^dK>$c8f(*p& WoH-2b!a(&LAkA&xKqLc$A_D+v?<OVy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d85d0dbc6d67ee1b69bb8f11fffea1344495c3fa b/src/libs/libsrtp/fuzzer/corpus/d85d0dbc6d67ee1b69bb8f11fffea1344495c3fa new file mode 100644 index 0000000000000000000000000000000000000000..0d954b7f17bcc49bc737bc915685cd6d700a05a0 GIT binary patch literal 209 zcma#k%VV&OXJB9~O8qaK$p8lb|NmEIU?{EzivIUyV5kN$<Qe7&0VNd}gxeVyROSGg zEDY)l91M&M><@sP|NnsmkXx;-1yrvN;sAj)gkoUeWMGg5Dn&JrNdP3>+V`KiIu|4d k28$tj1Q>yC0)c96Mv#Gq)y0_h!|ne6Ul{0S5Qx_U05G^JLI3~& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d864846a65c1be4a0b06984516b29685eb907070 b/src/libs/libsrtp/fuzzer/corpus/d864846a65c1be4a0b06984516b29685eb907070 new file mode 100644 index 0000000000000000000000000000000000000000..1e55b4f6e15a773a9538d48a1f384cbcd6b5e296 GIT binary patch literal 142 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHZF&?luMnMh0n+`rpMsLx7;VS{+O? wFjzA%aDbVd3=FbBWu?`{bA-SG!tD$Ua~K2|_I>-#z+nQE5@wKrY62Pn0QB7@#Q*>R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d875368bcdd75d662c93d2c537bffbdb72804a9a b/src/libs/libsrtp/fuzzer/corpus/d875368bcdd75d662c93d2c537bffbdb72804a9a new file mode 100644 index 0000000000000000000000000000000000000000..534c655fc378284c12b2c53bdc26979f038d9bd5 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d^)HNJq8fk751^baTx s0wAS%3`{_B4nw;z!#)NMkO-LP!k_^ZD=11$OD&2o){D<$kObNR0C5-{{{R30 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d888a39eec6a74844416f80fe9668322a2a8a0f8 b/src/libs/libsrtp/fuzzer/corpus/d888a39eec6a74844416f80fe9668322a2a8a0f8 new file mode 100644 index 0000000000000000000000000000000000000000..397d206b00d7d326b3d4c46dbccfc8894257865c GIT binary patch literal 99 wcmWe+Wbk0X3(|nH5)9Q0w;1$!fK0Dy5OArkW^iC&(8CRYN=2)W0hML~0NLygo&W#< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d8a5e06f53da63007f410198d8700d6f3b15c75f b/src/libs/libsrtp/fuzzer/corpus/d8a5e06f53da63007f410198d8700d6f3b15c75f new file mode 100644 index 0000000000000000000000000000000000000000..db3647379cad5de921e92e023212bd260909a693 GIT binary patch literal 67 qcmXS}W-!p!W~i>NW`F=u1}h)~om<QZ7OIBQa~K$yfQmr4x)K0dz6#C& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d8ae193f4f67eb2cdde635220cfcacab0ae8d0b4 b/src/libs/libsrtp/fuzzer/corpus/d8ae193f4f67eb2cdde635220cfcacab0ae8d0b4 new file mode 100644 index 0000000000000000000000000000000000000000..a5d2e576edea427b28c20ae29b482f43b1e34b4d GIT binary patch literal 410 zcma!LU|{fJVBEl1l$yy=599#B|NsAe85pap85y|$fCctJ0GN$Q0F|QvWEKDafp}`g zbA%YeA>wlwjsqEU7}|vyI3OYnj3BxJtmYh82t^G{6<iHi3D5*2b8xC@2U!KN3#<m> u9*A97%#nbIfk;#}Xy*I}x*r%$V8lSk&2zE(9T6fRqd<;?hCYx5<^uqt#ZAos literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d8e44ed28873a3a02c9261988940227a3c8f5584 b/src/libs/libsrtp/fuzzer/corpus/d8e44ed28873a3a02c9261988940227a3c8f5584 new file mode 100644 index 0000000000000000000000000000000000000000..9c879aa60f8ea26ccfde6af21144028482678499 GIT binary patch literal 72 zcmZ2!!oVQF00oQ?x|&f^yAHxGPBlnntOf}q<bMBW`2W477$|V14k%t-T^;!HKLAUj B4w3)> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d93fd9291ee9aac39f3e0aa9a0df6bbedc80f69f b/src/libs/libsrtp/fuzzer/corpus/d93fd9291ee9aac39f3e0aa9a0df6bbedc80f69f new file mode 100644 index 0000000000000000000000000000000000000000..6af9c25a68b6cdd5b1c9ccb315b4a3e4f27098f1 GIT binary patch literal 408 zcma)3v1-FW41M-eH$w^W)P@dOGInVRflx@nQz3Jq%MHPUp*Uc-(?OigKjClb+COrk zg{V)uG-S+!lkVO<>2#8dfVl%u6-nOE6Cyw6<5Pw@gRdjl^8d`@a1&i#;1*>417hXO z&}Z4xmPQd_FUy+{Fzr!$XaLP~rZ%WPeBF&qleR#IAwK(WBr_`S`mtTWa)`)Ek5yhI z4cZifSB5^`=P2Lc)|>LZ+AKpMzXDt_;2fZ)%Iex_B`@L04pxo6GeAO4j1eY2qQe*W g<WnkCbHGWScu0YMkBu};*eCYT?aMHQYsY!~0cLV)OaK4? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d960c0eab8fe08c08ff247c19ad0cd8bd2635ca3 b/src/libs/libsrtp/fuzzer/corpus/d960c0eab8fe08c08ff247c19ad0cd8bd2635ca3 new file mode 100644 index 0000000000000000000000000000000000000000..58180f3306bbe71c0ca078e3b4f6541cd4020ef8 GIT binary patch literal 773 zcmZSh&&c8x&%nS?l*y4=52S(M|NsBK4Erbk=X&|F8p!?k-$4p2&Y<*-p%^H_2;u>W z>S9KQYKNInkj!w9fuSTmkAXq2D6?ZBvRMq(FkL{6U|mH(oglNpz#7KjWM_~C8*DO1 z2rMSt&cHB-gMm>N$YX-30@IFlE>OUT<Ulo$1J6Jm=;Z=b$;bd!R$5(*Y$SsK!@h6d z890oAz7S@RK`~hY=tPhkVcxFhfLq-FQVv!fUkzje0TV+en8r@bq-K~{AbWtgF!>2` z7C1~`kw$!&JVo}B0`<ZKZmb}jg_ZFit0+hiC8hoXD`NsCrfm>Vzyyw&ZA{zpVL~7Y cPyh%s2yihJ6oVp{fhDy#o*{*SBNb#G01xVZ!2kdN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d9854c46ebc5b99048ac9fd9b0aa810f416dd43d b/src/libs/libsrtp/fuzzer/corpus/d9854c46ebc5b99048ac9fd9b0aa810f416dd43d new file mode 100644 index 0000000000000000000000000000000000000000..d265093a9eaa53f9db064d96ba174291339e9690 GIT binary patch literal 214 zcmZ9FF%E)25Jew0QY#G}01FatA_*s;qM)&G?IwiMOK?FhV7vU;t?(y1$-bHYKj#=@ z3pZeyG$fHHm_Y%<<HctXeNW}Mr2X+AAqxfR**%}+Ddhh8-`{U+p0AeKT(bK|A)>4I aT39d6xPC=Skq%B??W(k>j-s(2A&2fa_Ako- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d9a48b14aa054ecfde4b93c433cd84b58538725e b/src/libs/libsrtp/fuzzer/corpus/d9a48b14aa054ecfde4b93c433cd84b58538725e new file mode 100644 index 0000000000000000000000000000000000000000..8844cc6f5086d3eecc45074f31c52415153adf82 GIT binary patch literal 106 zcmX@8m-n+Io`Hd(D3c?#9!LYh|Ns9z7#OOn85kHL0t|}9j11Kv3={(cCTk#-2V!!v ZGsptf8MODz5dzX+RSZyN2vrP@bpVFH5y1ce literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d9cae8d7f17912fa57ec6c5218424f50f0f83304 b/src/libs/libsrtp/fuzzer/corpus/d9cae8d7f17912fa57ec6c5218424f50f0f83304 new file mode 100644 index 0000000000000000000000000000000000000000..bb93570a805e7734058d54a6f89dd5a34269cf4a GIT binary patch literal 388 zcmah_J!=9%5Phe@ov8#vhyme};zW|PX|B;OO~_9;5Dy}R;71`i;57jo8_R?IkyQSJ z^huT0KcJnHH+uo?e9P|4zI{9MnDt7}HX8x3*Ul9KakIsQjAuEI>xl>HJR{G)b8sD@ zP=zKGs!CXYV($JK#Ux^>?jum+^-|<V$UXEOOkuby0`weZAWOd9&`8LQ2SJ(@Z>svl z4z641D0!zem{sD)Gw&F&uC(o26ay6mTt0ryitf-$6|A9J*ISWf5R(2U%KD;sO^0a7 tJsUWcPEX?4T=!s(WrJcAHV!ikgxv97b!C^Tk0$5hFP0y;Fal|o{Q=^~YTf_< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d9da15e86526870a5de3d3596c857070dd1a6a78 b/src/libs/libsrtp/fuzzer/corpus/d9da15e86526870a5de3d3596c857070dd1a6a78 new file mode 100644 index 0000000000000000000000000000000000000000..19ffc86e2037c67cf8e8f4ca9b981bb595cf57ad GIT binary patch literal 2958 zcmcguO=w(I6h1GBW)fTsnNk{U?BHmFEr}8Q0mnc>TP-QUrJ&eng@+EdahR7WrB6&j zYY?Q+l?WpUF5J4xN-SBq5JZ>m{6iclbT`!|%=P=uxp(GuGPUZ$GxP4dKj)r%&iT$c z_thsvW(3rz6_O2hM4WT0B3UL9*@R?iWKTA$Gmnl{{fg-RJ$zFs*2_}b6nVIX?wAy$ z5J9j}GfP`Fli+rS9LD4PQ6hs!HL<ZJkSt%yW(ltXCB5H4;~@6|j$|1upi?}ToiZDl z(iY8njOGI<6L}FAX*JFGE|M{0EBy))Ug6%$1l;bb*`BWwiWND3hHY<;<46u`>)Z`D zAFr7Ld7s~ckX3S036VCuFI~5EzmB*!#f+|@Q9Q!9?8oXfFs^V57W;qnByG_ugM`CO zyb`Y^7=q$?o$#+-K$t}$4>oF($wpCGVVMQU)~PMhM>*NKE|A}Gqwqh~1$A!FB^OgS ziiv|NN#wIyp+4~+Y4dLTM(mLGbD(y+eK&TlR}s)zpb7cO2}3!f0ng)EMBh7_I4C49 zYbUr{9SCHHSaru8zrpp5+JPZkg32?Y6W*r**CN1)8i^}~TypLaA1J+~IwU}(jGyHq zR3MEZl*WHV$60VncJ#>Kq#TaP2^`TVxcnh-Jm=*B$10?W6eAxn*-_2mCy|l;!0Xon zJs%5<i0$odkrQ8JRw#}@ikI4u+Utc4m5b)uRX5qbJul>;4kDR&EPV|6flVO8rp(<$ zuSiV4=SU+xo<;{KQGpezoX<su_Z?63+Cij0*xW%7=$BO}|15-BO`v%sEO?tzY7;^T z)1WGq@D&%sr>&;mBdn6F!u0+NEYA>e;qg{QD&o3MOCQ$UpKhEyUIt?_4C47Z3(b9d zj8o;-!1rc+{><5ClEigi$Gg-PL?KpW(e9J7RZ*RLx1`&_@RVs9?f~jLC9bo7|9h0c zf;B;_@kANyR?R3l(C%XDi_b2mH0i9|*JKiVC}8Jj*UdRX{=FlbX%fS`$ILOZFjVJb z14>6xPU*@gL);zk!sY2*NAnp;Cx?ZTT2E&r@c1)ln<wb;!VG<L39}x(%Wtc<lnJop zcnqI-7KP%pyQP4>WxRcuco*V|bA4lEuZMf5*3-wx|B8A%?ykvnY{3xM-#EvWA#{lV zzi11+=qO#gIyT<U+LH{LC6>SG0S^HA<&#K3tRI-0i{skv9E++aS3$IVi_3TD7e^W| z)MASq&6?4$P0FFC^C$uXms750+1Wk<Ec@(AqKMBe=5)7-Vj*G@I9IY4S^%{j4h)cc z;EVD{-x=WPeUFT6=#Fpx5AqR&LYCA}Gf^F!yd;`BQ(Aji|65WlxF;|y$-!XEzy*T1 zE+BcAMOYYe5lD1?31uoeB>omyzn8bU3d2`Q?-uaV{Vm`})o`YF90J(!LWSfY5T2gJ z3{)&D^K|^_+Ij;uTm1Lwt5gktrJa4UaODaF=;s?kEFVIi=bycPHydI&iOFRJu(!1( zU!xC@O8{5l#n6map5=Frdy4uWZE~2GQ^okAmE*ca*_v5vYuE0@o9_Ar#YMjA+?2ln D!6>Pn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d9f5164820147fa6e1b7cf28b949053a82095107 b/src/libs/libsrtp/fuzzer/corpus/d9f5164820147fa6e1b7cf28b949053a82095107 new file mode 100644 index 0000000000000000000000000000000000000000..53b61398d5f22c326aafe417ce90babebd5b936d GIT binary patch literal 244 zcmZQzs4iv%Vuqqjj?{VvF!=xfzb`{Wbv47bW!pfYfC(ZF<{$_L21W*9kPOHKAlP4A zQd*)=0%W0^#Q-!5s8|7{3aDBQVrR8Fn9smq%)s!HApykU*aRdv85p*0)7=KrQ5;`g z&(Y4HSIzLdz6GQJ1Uy%+tkeM-2z3=iP#Q#4GZYJY0O@}~A3%f|7?|4`gc*UV85|v} M)%WQ#GHuBO0F?$i%m4rY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/d9fe9965084aad0081d5fb1bb858e85e2ad6cb16 b/src/libs/libsrtp/fuzzer/corpus/d9fe9965084aad0081d5fb1bb858e85e2ad6cb16 new file mode 100644 index 0000000000000000000000000000000000000000..acdf53d0822fe0558527a73626c79c642ccffe69 GIT binary patch literal 500 zcmZ`$Jxc>Y6r8omU8;~&3IVZD8$}7)*qm@xz%<r!NI2mjMA?lXEcj7KENm<T+xSP6 z{G9xOvvZx@TjC*cihaD{&Ag9=wYHxDkVTX~FcPHB@cCw&i-l(TZIcbpW2=NBBV5Ku zD*>I%0*06alWYv^%i`s|?gd?`Vkgw<sZu&`kCPBZ+(6eGADFi1I#a+z5M5?#p{fd} z_i2Er4Y*w&u%EJ2z?a=>wX__ZPmV{|!^=^A)Z-St(zz3UNgXX4J(AP-)o~QG@KJt2 zaP$i&5qtmi2(^FQR`=Ls8-G${kSMV3KEhh(Z@>e<H2EV$jls0TECN!!<7k3c<cV59 aj9uz(WPX*)OpX2B5;nLyG|#VgX7K|_5o0_6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da07a113b6b3cf701919895ed621d2093228505a b/src/libs/libsrtp/fuzzer/corpus/da07a113b6b3cf701919895ed621d2093228505a new file mode 100644 index 0000000000000000000000000000000000000000..5a8eec8be89243c187faec1578468ad753e34611 GIT binary patch literal 878 zcmb_bJxc>Y5PfHp)iftp8BnY&Eb;>cA*rlvY*QS9R~!V91dF&rQi%Qu|BHXc#v-kS z2#V{QncGVa!ZmsvGsEoL`FM}b``5V70Zd9)9MSU&A)Eu=Gwf($IKD0Nn{Bv#B*22v zOCLMSr64|j20e5YhJz`+CxoywN%?7_b(kWScBBDg`R(j$<C&r>oC4k=tWK^K-Abif z$Vzdm1yUq&lQppR)@py5V8J;y7mfKl>j7}|nW1Nvs+a?W&lI1}c;eKw8J&|29(QTx z62)z(P*J+MV!|<82p9sFW5ZCWcl|;S7-&w!aEA#xuegvROrBEN5Hhu9YUDr5MvhIV zDBJf#WTTz5#%V2e&2^h%cGd2jDC?_h+PqOaj^jn18c4_}o+vl1ra6rWm-9L8RnG~9 L2}q{(Ib8w2>-C&1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da0da68a82c7bd3a0f097260704aea9f63041f09 b/src/libs/libsrtp/fuzzer/corpus/da0da68a82c7bd3a0f097260704aea9f63041f09 new file mode 100644 index 0000000000000000000000000000000000000000..deeb94944c0ec9f0b2195bfdbe458ab75220b419 GIT binary patch literal 95 zcmdl#@h{iQm(>gm4B!4cNC7DzP+(vvW?&GgW(2Ys8Qeia)y0eq)j(B1AqW`_W-u^V VgJc;d{@-711(W~-xDeONY5>rP6GZ?3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da1002d28c0f1a51565f64a79e6231549089222d b/src/libs/libsrtp/fuzzer/corpus/da1002d28c0f1a51565f64a79e6231549089222d new file mode 100644 index 0000000000000000000000000000000000000000..91aa133ca08b68f3f025886d8054ce69d321d8ad GIT binary patch literal 219 zcmazSV}O97RF3*g2=o8{|Go?i)zu6Pj9>u}`JI7*pMe1=g9@sP85uqSrK_veA$l3C zp)><01A{C?w0KS?Lnj2(bat|Vt@(xz0L_{Y13<HZc7SoU`ZkE+5IZ;+I6zzlh!}(i L<uEWDG^hpu)EY~C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da1bfd406502ee8361aceca8926c68f681f72fcc b/src/libs/libsrtp/fuzzer/corpus/da1bfd406502ee8361aceca8926c68f681f72fcc new file mode 100644 index 0000000000000000000000000000000000000000..5a070e826724cceb8bad2433883694f525ff692b GIT binary patch literal 115 zcmX?@k(yH!&%wZu%21S9&j1Gh|Nr-3V5qKUU|@s@Fenx?8deuGg2ldq0Z4+$8c5`U jSe)(*vOvWK?LBjZfHYVs15iH@d_$;WVEFo#!Lbeib_^PF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da2f13f5261c8d49e338e9edee8bda0853b1acc9 b/src/libs/libsrtp/fuzzer/corpus/da2f13f5261c8d49e338e9edee8bda0853b1acc9 new file mode 100644 index 0000000000000000000000000000000000000000..da91baa5e0938b0a6ac203f7ecc33c5d49e26390 GIT binary patch literal 92 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M X?JNv)I2iu@XJq()?LR~uL{<X;fC3WE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da7efb8ab79b6782d364ff2ab03b55944d11460c b/src/libs/libsrtp/fuzzer/corpus/da7efb8ab79b6782d364ff2ab03b55944d11460c new file mode 100644 index 0000000000000000000000000000000000000000..313ffa644434b40b611a17c77ab6c5a61cb5bcbd GIT binary patch literal 108 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxP3=E8L1_Oft14A(*LopC1RjWf3GFU@t i22KWLS%%^{LO{L(gK#?o!yF(>6C|qu#Ec+@Yc&9#s}UIh literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da950c304829b8c0b5f89cebd3dc17a600d1e36b b/src/libs/libsrtp/fuzzer/corpus/da950c304829b8c0b5f89cebd3dc17a600d1e36b new file mode 100644 index 0000000000000000000000000000000000000000..6869f069c71d2ca22854d2aca2fff258483d55a6 GIT binary patch literal 320 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbSZlhZ<6h z+YkdzxJ7e>z?RQ}IsxGrf))|uRG1nxTNv6)i&KC$GBW-51^Tuc$YM|cxuCjO5Xe;r avN%~7o-;7=f`TL`H7`E7v^0l-Ar$~}95D+3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/da99db29fd53d20ca815d4dd60822ac52a702cda b/src/libs/libsrtp/fuzzer/corpus/da99db29fd53d20ca815d4dd60822ac52a702cda new file mode 100644 index 0000000000000000000000000000000000000000..9f9183a4d60cc890c7ebb669c883bc738d528e3b GIT binary patch literal 106 zcma#o%VQ{sXW(Ec%H&9`X8?o${~0$hFjQAFFfc*{7^;gIflLdKm^wtr8Y;uU$-p2B bQrA#CM~Hz5C_0Cs9ZU!V*&I++4nX4oop=ta literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/daa4fa2885909ad7ffc983c60643a44ac90ca4cc b/src/libs/libsrtp/fuzzer/corpus/daa4fa2885909ad7ffc983c60643a44ac90ca4cc new file mode 100644 index 0000000000000000000000000000000000000000..0c13733b09951f6445d3ce4d622bb128b73fb1ec GIT binary patch literal 116 zcmX?@ky=v_&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9!Eh$)|efybJG u;a?s|fYY5p7O2{wy=RUPkOrz{YyIB>H0VFWHzuG#3}96Z41o*`j&%Uth8gw% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/daa92ea4600a8737e9fd37f83a9c852f545537c2 b/src/libs/libsrtp/fuzzer/corpus/daa92ea4600a8737e9fd37f83a9c852f545537c2 new file mode 100644 index 0000000000000000000000000000000000000000..a840fa9e9d8526577cbb8d0cba36d9b45da94679 GIT binary patch literal 1356 zcmcgsJ5Iwu5Pj=d!tM~MC?X?^Pk|Ca$>$1)+`v_e6i@^zRw5Nj!x7SP1DYHrfVc$| zh+$@T@%jTHl7Y4Sna_^j&b*ndhpWpBz-Sl^#{A|*L??jOfU*kc3uSNCiNh(5tfh-M z#w0|#aLpH5oiXd3Ly)M^fZ9VF-Xqz{AthM1#?tehUAIe`ra}#ZDnJNUIegWln|s6w zj0gNlDk*4+uDrhzyeRrw{sbRN%}m)tRfqp=n9V6e2@&z7u=32ptK*H{Wzy&!*2ogV zNRcQ4I)+$zwiE&+;EdkfQcItGk`8yrVP}oEZ3OKJz(1Obv<D~2Z<(k5uzw1hQT-O| zH@YW!e0i|Qmue1wNdHx7m=@=z(7NS@c@krdu<#{t6&FgIDy8W>ZBnKEf2h*+GUVa| q<x|8r=pn0_aATr_0)bMVd7NJ}`D{Y^?Ds|5)Jz7Up}sgc{(k_*m*MXK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dacc18e91c81a6bfcba0340ecb58bba6556e57eb b/src/libs/libsrtp/fuzzer/corpus/dacc18e91c81a6bfcba0340ecb58bba6556e57eb new file mode 100644 index 0000000000000000000000000000000000000000..c56440e341df6960cb28bcf8cd214802443cf7d7 GIT binary patch literal 100 zcmXSB5?}y=`kw#H)y0e;CI~FH22%n+focW@CJ=|2p@pFyEXq)vnwqk5Wu*>C%9nxb e-~a!N><rZ{AhilW6<{3>KuWz@x4N3)|9=2Vs}uPE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/db1d12798a20e9035b9a5abf805394c855059313 b/src/libs/libsrtp/fuzzer/corpus/db1d12798a20e9035b9a5abf805394c855059313 new file mode 100644 index 0000000000000000000000000000000000000000..f059412d5c6e4946d6b5a20222e38b04223882d6 GIT binary patch literal 230 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zbNo<PV!&J*NaDx@Kmas8b z7c)XkV_;Zp4Q2_z1gf<e!KO2)gTx_{Kn5oRgDe9`4dZ`XsPzzABY_SAfdmMJN;13z X8G;0Ww!H>&fwlpi!B}0)4CDX+WHvgz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/db7c8b0d344767d301a3b076919f6c36fa53193d b/src/libs/libsrtp/fuzzer/corpus/db7c8b0d344767d301a3b076919f6c36fa53193d new file mode 100644 index 0000000000000000000000000000000000000000..7b8891e391cd468df6055b18082a24bb60def5a2 GIT binary patch literal 352 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amu^Abv6pI-dsvTwm!A%eW0}vGoAVt+c z761O%0TsiHU;+s<Fcf8Sq}D^2|NsB@1*)tDD*XR{8w3<UlmP{_!2$-^4BNIbFc<~; z09F34{@=jBU{C_qUj&qA082752ty16S*i$R?k_G$gjwUb4QeD%DFh&l1lmFtP{*q4 SJ4kdtlGL_s2&)jTR|f!Zhp#FC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/db903aaf171f26afaa2f67bb24c000d7bec621d8 b/src/libs/libsrtp/fuzzer/corpus/db903aaf171f26afaa2f67bb24c000d7bec621d8 new file mode 100644 index 0000000000000000000000000000000000000000..d4cc8d42b19f4728cacf2d335306f7e5b1eae2d1 GIT binary patch literal 467 zcmZSh@AdzGJOcwmQ6@)fJ&*>1|NsB{GVGuDpX=qzY9RODe+MbBID^tRhGL)yBZvni zs*4#JsvTxRK{CTZ28NROJO&26qRftkbw9y+z-ED2jGXND46<N-26KeKLc;9~40AXb z7-fMxCa?&MaIABI0!AeJ)sXG?aseu4WB@8#;!;{&3^&p*xWp_cKRGcc)zld1NaJrH z(}4i&hiVSEMGZi)Y6hS_e~>KLDGUM(`@Vf=U<7**D9ES_x5EX+4xqC^Y7wS2fXrZ! z;==~MfBg6nn>Z<Az^M7pz{#L7hoQZoC^ap$D84uk9AXY2d%>YvVK}F?=l{(A3;;Pe BSoZ(` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dbadd3f18ba2c307ca91180fe4aeb1b4580bcca7 b/src/libs/libsrtp/fuzzer/corpus/dbadd3f18ba2c307ca91180fe4aeb1b4580bcca7 new file mode 100644 index 0000000000000000000000000000000000000000..077d365c68c4f3e4944cedb7fcd3e54781108629 GIT binary patch literal 192 zcma#o%VVgCXJB9`%H&8@1JXe79|Ed@Om?t9Voqsl`~^-14p|0928M<LP6h@LOMv0W z9ENtF3Lq)W5X-;;Wd3af>tJAz2GT%td_mlz)J%?gkedGtRSX>e|1%^qFaXUgPK_^1 s%#i~sC{2A>P?V1_SMSFh2cR$q&^EYp{&O)fC>H-`gy{pylrnGt0IG{L(EtDd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dbb4f3bc0bb09722267e7d0969d2ec0d9b1e085a b/src/libs/libsrtp/fuzzer/corpus/dbb4f3bc0bb09722267e7d0969d2ec0d9b1e085a new file mode 100644 index 0000000000000000000000000000000000000000..61de24c53ee359c054b9ead1da0356ae2a73c571 GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ wa~Rrz!aWS_!a#}xq@wK`koeCa1Y!dL*zC^KOpbb}nkta-Aahy3@(6+h0MZZ^MF0Q* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dbc2b27e3cbb9fed8d92c7c60b25fd2a64bdc9ee b/src/libs/libsrtp/fuzzer/corpus/dbc2b27e3cbb9fed8d92c7c60b25fd2a64bdc9ee new file mode 100644 index 0000000000000000000000000000000000000000..883dd6180902c31ed45e0eea810b15b25bac41b2 GIT binary patch literal 1118 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44j+{ z?JNvRl!JJ^JO+?U7>iQ>3ui)%N4P{4?j(5zNr)r{sg5B+i2#NZ7?GU7BmguTU4<@O z1*bd%SOo*ZCujjgiOVqcq8Y9fjSxV@B_ZcCFfwijM>`86rt@(cqcR8R92N!+AY^1< ze*onCfTo*jZD69QhD8b}!TbZp=YI|c23c^zf`=9(0~3Qh129Bed;T+5=fV;l!(tm2 zSs|b{1t#Hk1_q!-b3i-;1}G0?Eij!TygF2z{pbIt|Nrmay@PN$Su9dA%spVhVJ28m k9>+|yNR9!@19{+*0FopEFpU8v8&I(TP6!}rXlekl0LkpEr~m)} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dbeefe004d68f9ffa8e45b64362c6737b22e3de5 b/src/libs/libsrtp/fuzzer/corpus/dbeefe004d68f9ffa8e45b64362c6737b22e3de5 new file mode 100644 index 0000000000000000000000000000000000000000..2fd66bac9c34f9a511bb59d97abeccacb06777b5 GIT binary patch literal 50 ocmbREe?QmDm(|tPy+>PGs!bS*85w|}8c0=FgIFK{WFSyA0L@$t;Q#;t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dbf50cbbad010e57d112f069929e50a8e6800b27 b/src/libs/libsrtp/fuzzer/corpus/dbf50cbbad010e57d112f069929e50a8e6800b27 new file mode 100644 index 0000000000000000000000000000000000000000..7935584d4f561bb277b40b69052284010d19583d GIT binary patch literal 466 zcmdl#@&7k5v6lb;|9@j}kYWG>1qO!VY6b>QMj#J}8LNvKs)2k|@W-||6(aHnNL7OX z1A{e?naRKf)B`erl>w{^Xtpm%1z5Eu11AH6EKsVnx_Ay$?7x2|M`}ILrV3&Vl?A#9 zt7gMF$_&a3KNuM5-T<ux+V=bBe|C_iPzNBn#u>t9uwdXM)zb_RUz6l%26GHgGr~O` f0dY4tbdUp&fIt8L``-=?Z$@x*fkK_(KSMD9w;N)O literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc0ce718c3648df982b66a8d17ba07554dad528b b/src/libs/libsrtp/fuzzer/corpus/dc0ce718c3648df982b66a8d17ba07554dad528b new file mode 100644 index 0000000000000000000000000000000000000000..c41131cb9b702cd9bc97958f1489fa627eded6fc GIT binary patch literal 280 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2WME3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zq( ziDCavhB~kwkS4GhKsp5^j|}wU^B5#k<1-l;iWoTRAu|8}|Mvx&Qq9o72r&SvVL#k) z49vIygJe7p(5y@jkRz(A)uCFg!L$Ga11AH6EXY9>#&d*#e*FDkxE<zI4xpMj96*;N N0i|yY0>wbL003k+HjV%Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc48283fd7e9ac4b61c740457f288a6e7e4b9f35 b/src/libs/libsrtp/fuzzer/corpus/dc48283fd7e9ac4b61c740457f288a6e7e4b9f35 new file mode 100644 index 0000000000000000000000000000000000000000..8628c5c42768bf9a57960b040f4637c7bc660bc8 GIT binary patch literal 250 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozK%0eJ={0iYs~N<9V!RFxXl42<$D zV0nm{U_*8S1yMBJM=@RlY>zy{U68RL@IRA5n1SKne+Gud){Gzl0Y;tH5;o@QVnzls Q4Ehf?2xJbjK@1El0W@4R4*&oF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc68425075dfef8c3146f582479ea22a7a5723ab b/src/libs/libsrtp/fuzzer/corpus/dc68425075dfef8c3146f582479ea22a7a5723ab new file mode 100644 index 0000000000000000000000000000000000000000..8e4e65d8b5742b5d6af970b7a498b4e90dc03204 GIT binary patch literal 139 zcma#o%j2ktXJB9`%H&8@1JXe7|M!30Qikek1_nkTFEzd_F{d;&zJQZ~Llz{`0Aw+M zSquzw7}|kK<}eru11S!O1|SL4s#pxt%m6Z)p(r(zqn@E1tfq?LKUji+1#CJ<8mx2< F2LK3E6>|Up literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc6c395aa0dea86ac6ba8b3ff4a076e99d528f32 b/src/libs/libsrtp/fuzzer/corpus/dc6c395aa0dea86ac6ba8b3ff4a076e99d528f32 new file mode 100644 index 0000000000000000000000000000000000000000..ad6fe2e5110127bfd9185553b09f73a0ae83a922 GIT binary patch literal 92 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*KnnaBtRXVG44e!M Z?JNv)I2iu@|F8R>LG%BACWsV6H2{*F6iomC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc7287b83a08942f085ff81b5e6e155a9327e749 b/src/libs/libsrtp/fuzzer/corpus/dc7287b83a08942f085ff81b5e6e155a9327e749 new file mode 100644 index 0000000000000000000000000000000000000000..4ff3fcb534dc0e2af33e001e4fcca247d021a260 GIT binary patch literal 132 zcma!NWMHs}XJB9`%H&9`2hu?B|NnnqAj!_K4G3Ot+g88?5#Qzj5`Y5+21W*9kW6(k r&=3$^tq!Ic7_6Z*11AH6EJN`eA%^7qB9KO~9-#UE^+5y}=rI5QC^9Sr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc89fb2b8158788bca28632748593e14c1f10587 b/src/libs/libsrtp/fuzzer/corpus/dc89fb2b8158788bca28632748593e14c1f10587 new file mode 100644 index 0000000000000000000000000000000000000000..8efae664a5f0f78b88285408add5a71355aed961 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7kYr$Z r31)IKFvtSc0j1{%F&Hy2<fP`sC+Fvt6y-ZGFfc(?Gw`W1FjfNqU>OqH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc8cfe2221ad910e170cedf09671c9292a09bbf0 b/src/libs/libsrtp/fuzzer/corpus/dc8cfe2221ad910e170cedf09671c9292a09bbf0 new file mode 100644 index 0000000000000000000000000000000000000000..43c590b0e18bad6401875ecc5cde97b8ef20cbf9 GIT binary patch literal 795 zcmc&y&r8EF6#g;?O+{h4n=qIl9z^FwM3BJ*4_*ZSgHlGYg-%9G6&A1;v3T?<`K$a3 zyzc5@2L<Cx(h3tCdh$V%_v3pnA79dAKtBMG##|J1lIb@{d9KN$B1CW<Cb<a4(I^~t zvnbpf`#=Xv9GK5A%0QuXdz%iE!2OK2f`RRr$Xbf{k{2iq##jxRkZ<lZmWr68!te=* z&X%Hd6a0|oGI%c(X^U>Ou-m5ycqEvYjyUV>%Nw;i%)>kpwqj|S68t8yuK+j#5^)uL z0WV~>2KfreXIiGS1^Axnp!h(o+hOezOc9CBhMT=TLq=eRW7kk|x9Bbi{TuGJ2u7w# z1ky?Ttdj$M*GcO$;Nea?X=v7F_WtAs8l4>B`mVV*`DZPOS;MgdR%++u_OvpF4?S3* R_n^Sv^j`2+mZ#BFegYd7h4TOa literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dc907469f9e0fc79c4a0eecfa8cebf5e3eeb8534 b/src/libs/libsrtp/fuzzer/corpus/dc907469f9e0fc79c4a0eecfa8cebf5e3eeb8534 new file mode 100644 index 0000000000000000000000000000000000000000..a0fef47e9f9711194a25715c87aea21f6496e11d GIT binary patch literal 99 zcma#gWnd_YXJB9`%Hv3_2hu?BKli^c14DH+0|O&OfRUk^p}Kf6kg8UPh%B~-&<qTm c3=Fai>_BOIA+V5eJBZ={LZIg2c>d~o0AX1V761SM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dca6505d695c2a0e7247ff2dee70ffaea4bc7c0d b/src/libs/libsrtp/fuzzer/corpus/dca6505d695c2a0e7247ff2dee70ffaea4bc7c0d new file mode 100644 index 0000000000000000000000000000000000000000..bd5da7498eee49194311a4bdae207222de86704b GIT binary patch literal 491 zcmZWlJxc>o5S%AMUaW#wDFnnq#X?9Y*qm@xK>P`Z$O!>C<Sr56f!c@`HkN^F{3H5% z@&}?-*4fRST*wsr-VU>~9}tmY3ZNMI?1?Wy>H^;%vNf9prVEL8jmQ2RB^jp~Lns|W zJgsrfvdeLr11H7k?X&HL&{VO|s<cwQ4QI`#+d<!qPpfU?qF12uaD8SQjmqBh$E1d9 z4S3KVaF|f(V6sUl+m`70ulW!BfLlb^Tyfsxh&p4vw*PPZOj)2I1;ozU(bD4_<29D2 z#P141datB430Jq1jBa*vjSG<=q75o=d5sYtuZ(3$I9&d*JX;Uw;)t@lBD=|ow9M^L Qv5M@N4}<FEU8WuU0sN15LjV8( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dcb501fbbb94c31e2be960dc4898b3aa252310a7 b/src/libs/libsrtp/fuzzer/corpus/dcb501fbbb94c31e2be960dc4898b3aa252310a7 new file mode 100644 index 0000000000000000000000000000000000000000..2b39e99aff0095f450531f3f89563d4f79e3cdda GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXdC^Z&mugM(@{kjV}fNX#isjW6J2;E-itWMF6jvKT-t z0frxQ7}|j<fTS=3D+32uF@qI^V(?<Hhp_577*ZKBi-79i&ta&pW~jW)rjW$Iz{2of R2&$B!B%Yy~p))m;0|5Au7={1< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dcff5752df020ec00d95f49f463d66f9dc49d7d5 b/src/libs/libsrtp/fuzzer/corpus/dcff5752df020ec00d95f49f463d66f9dc49d7d5 new file mode 100644 index 0000000000000000000000000000000000000000..8e9755eea8f9bc98128af58387fe65b2e2f310fe GIT binary patch literal 86 zcmdl#(TeNk%W4J?aF7C13<?Yk#Xu2GMj#i6?SWKvF(X4YPz=ab1}Osbi~j?`dmsjj L00qIQ9!LTJ_Jb46 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dd04c9200f6068173671eeec932444f83efd80ac b/src/libs/libsrtp/fuzzer/corpus/dd04c9200f6068173671eeec932444f83efd80ac new file mode 100644 index 0000000000000000000000000000000000000000..45108817e1f924fbe9ebc869244e1340372d39f2 GIT binary patch literal 115 zcmX^3-#@1yo`Hd(D3c?#9!LYh|Ns9z7#OOn85kHD!4yQ8fhnJXfybJG;a?t5;3yJc r;B;q@Wng45Xz!UL1f;8r8QEI@w*bxg&+v^2sDlBd0|){+864{Xjo=}; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dd0e12e170d32c6f7aa8c5729d258ed2e02acf6a b/src/libs/libsrtp/fuzzer/corpus/dd0e12e170d32c6f7aa8c5729d258ed2e02acf6a new file mode 100644 index 0000000000000000000000000000000000000000..aa48a53f1caa28ab5aeee865e6f9ba8682b41e52 GIT binary patch literal 140 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j~L2q1u{Pyi{a t2C4vR*Jr2$>j4P?ff~>l1_o2c28dA*4GPGL85tBn3K^<P)fj+A008zSA~yg4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dd655371b3af77e124d99d4c34e545b0355a0f02 b/src/libs/libsrtp/fuzzer/corpus/dd655371b3af77e124d99d4c34e545b0355a0f02 new file mode 100644 index 0000000000000000000000000000000000000000..9e354689171d5c997129d7ee2e2caba01936924c GIT binary patch literal 97 zcmdl#@h{iQm(>gm3@i-$p8_c$P-tK%28u9(*g&GXn316x!iSSU1_Xg<xIP9HePB)1 E0OB4H%K!iX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dd6b6aa89f2f1c46e60e86ea705720bc5f44fcc7 b/src/libs/libsrtp/fuzzer/corpus/dd6b6aa89f2f1c46e60e86ea705720bc5f44fcc7 new file mode 100644 index 0000000000000000000000000000000000000000..d3200a5c4dc472e55fe38c5905c4dca8781e300e GIT binary patch literal 112 zcma#o%VQ|fVPIe=%H&9`2hu?B|Nnnq28QZt1_nk31+YkUF(U&IgVaHRHH^W@#vlt+ fH^-NuSO_d8*v`PfF$W^e1T^bD&^RD~2vh?AR6iCp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dda0cdaab12c354534d015fcd77d7c0f0f8a9fe3 b/src/libs/libsrtp/fuzzer/corpus/dda0cdaab12c354534d015fcd77d7c0f0f8a9fe3 new file mode 100644 index 0000000000000000000000000000000000000000..3c3167b2eb5362f3c2bd0609d65a0132beb929de GIT binary patch literal 81 zcmdl#k%j$b^-He*3=9koQa}O-6c`w)+x{~!g4jT!x)?|RF^E=UZ~%#7fNG#J28RFt H|N8>~ct8#) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ddb0b04c9ceafdc0295f8489665a32ab0ea10f25 b/src/libs/libsrtp/fuzzer/corpus/ddb0b04c9ceafdc0295f8489665a32ab0ea10f25 new file mode 100644 index 0000000000000000000000000000000000000000..d0acef2394c030f3694bdfa893fb9afc8520da36 GIT binary patch literal 80 zcmdl!@jutgm(>gmObiSTQVbyAs=&Zd3>4vH1ag45x|orn8psE6K>*ALiTwt0ycipR KB4E@BB&z{~-VW0M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ddb8b2d424ece63cf6467b9a0f616749bf091469 b/src/libs/libsrtp/fuzzer/corpus/ddb8b2d424ece63cf6467b9a0f616749bf091469 new file mode 100644 index 0000000000000000000000000000000000000000..07b0848e53e066af32c897ba1d2ca92f79f3e7bc GIT binary patch literal 106 zcma#oW2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*Aix^N-~=&%>Z*(9 S2!WWw?F<ZaI6y2^Pz?awKMqj< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ddcfa3fe1e0c57792fc3bb8dae41142a8a1ca29f b/src/libs/libsrtp/fuzzer/corpus/ddcfa3fe1e0c57792fc3bb8dae41142a8a1ca29f new file mode 100644 index 0000000000000000000000000000000000000000..089ac548e6fb9c4a4f560aa6b85e79e7a26a0b89 GIT binary patch literal 48 zcmXT^%@Fv4;c0bswXSYnetdN?BLf2ibG6YN28L<|#%c!kfB*khGczy&xy%gJe=7l+ C5f8Qi literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/de12ea7a0a4d6eca893b8b990a4a4f9342decc0e b/src/libs/libsrtp/fuzzer/corpus/de12ea7a0a4d6eca893b8b990a4a4f9342decc0e new file mode 100644 index 0000000000000000000000000000000000000000..07bc043c5a6929f673b0f471de6d4f34c97bb562 GIT binary patch literal 72 zcmYe!kFP3;XJB9`%H&9`2hu?B|Nnn~2#Z0K!LSbmxQgQqG7YM$<Kr{`=oY8Or*_xJ PGp+_JVq`dW=vXxX^CA`m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/de20009e5dd442964c04154d85910e7059e084b9 b/src/libs/libsrtp/fuzzer/corpus/de20009e5dd442964c04154d85910e7059e084b9 new file mode 100644 index 0000000000000000000000000000000000000000..b736850c57597b5c0507d4b948f845c0ce567d14 GIT binary patch literal 266 zcmbQ3jsOfmQ2ni#k--m$p#UoTl7WE*DgsggSK!6~Qjm%;1Hr;H04xU*MzsW?1&!4J wF#;%>48*vczyWpwnpRXU&>R7%$jlkqGiE5xm{DC1@nhJ_>SDzi)y0f601>xKo&W#< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/de5eb0d67c436883a0089b189ddaa11df92c965c b/src/libs/libsrtp/fuzzer/corpus/de5eb0d67c436883a0089b189ddaa11df92c965c new file mode 100644 index 0000000000000000000000000000000000000000..c6ea9e596b72a33680b01c2d79f64de19759a2aa GIT binary patch literal 99 zcmY$>%VUsS`2YX@-f7=w)-!;?|NsAe85pXo85kHDIKU#+#cB-I#ezUFb%+uM0|thd oU?wL6gKTy299{-v28Nu}y!hk;rNyc7<%y*^sqt@sCjDms0DPYvzyJUM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/de84d2616593dddce2f28615e28c0c72f746de9d b/src/libs/libsrtp/fuzzer/corpus/de84d2616593dddce2f28615e28c0c72f746de9d new file mode 100644 index 0000000000000000000000000000000000000000..0a625ef60a5a17685439c9d9a0a468262d5c60fa GIT binary patch literal 161 zcmazSWME*32jZesj`~a>4Fv!H|Mz8JsIF#UU<C6aBm+NK1}KRHs*4#JJ^>X~SF3@Q zGB8*}X$DRP2H9$L5U+TSK0_x2)O2=oFfe|Dga7{}fC|q4XW{@-3P8-jzyX9n1Azut JS0B7k1pvM6G!*~< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/de9259b73a79b875b3e20ce9fda7647a45d6ba26 b/src/libs/libsrtp/fuzzer/corpus/de9259b73a79b875b3e20ce9fda7647a45d6ba26 new file mode 100644 index 0000000000000000000000000000000000000000..a0dd1c335576b3cb86f2dce8c9fbe0fc656569cc GIT binary patch literal 2537 zcmb7G-%Djx6#ll(=urYi^I@8#TQfKYY1e|N3{sk!7!Z=?HBMp|x^z*y$162E^bTku z43$t1f)D)_(o+&d|3FXkG`&Rl&`U5Hjkx>1b<Vz;&LAyx|6F^owZ66Xckb?H=-%7& z0FJ`MQ|u_u?IYug)0oY(nS-C$qTEvxCD$lP$y0;J%UHHETIx`f%Mh;vHh=oK^2I{R zrFu1~tmIoEgm-z|<2)yP?hQ}Tn=#n~uI6{3Z60`HoB_;fq3Z?)soYq<yWPirICC9q z6I)@GrULfc6shU4pT^|!mOnbzxWz{V+InRm^jFovy#Zc1W$wd;sVOiFT^})!m-eqk z6FQkoSEo4%{}P>)^sfWk3EUvZZMG7d$>r;X7{*14gek8zQ|{(<Dm$23!)GV2L@$2a zKS1&dHT&^&ywrN<OYAcr6YslQrkmV2txjcMB-)(t$$!+9A*vvyrB~0UImc<|vGVoK z$c}=z%qt8vc8T}bG^Ir34!c0)6ry{+KusWY618~_`hg3;&peO=q)NbNW7}(YgZE2Y z2zbW?p6hVC=M?`zEdE^<{k>TD>Ld2w=gvk5qg|xsPdw485Qx^$S6P7!MW!V&CRj`? z*;eYBwx6fh;Rb8&N-QKEHrp!afVZX7(Ol3C>F6953*fzaN_=OSk~ZI&^a;}ODFMXN z1MAN^Z6+EQVrMv(v(a&?s}{KM4D=?hYJP#oSitD~jg!BnoX*bQ<`|(~{WUs5H&_WK z11Ntb>CVz}wd{SGRuAzHm6Hmf&6QklruOZIj&c1LF92z|*Za?rIDE?bKE!)Wu0hKk zvP>;MSE42#pl5Bs{e?cgRxyAgIc5M%B1`>BGBUCbXTcr>4CvwB=~!#A#)&huB?`*) zxCue~g9p2tc%Kwnpwlr8-kEa|(0%Yj7(^six@50bst#qNsQ>8|+3Yc1jrl6Cr3fs> zF32sf!)zDojE;LZrNF`NH)k2wWh4ad(Yuqi6jO)r9nXFse<@GaE7hdP5T{cD&!L@6 zPgEQXohvd%8P7X%vmP(6Zxy;|kJV<ZAj7IY6O}t<H(Q)pEG=@BmxWm}+>LAwb=8p3 z#W7X94D8`UBCQK3?GLfC8Y6l^Ahf<ffmi{N!co#*)I8SWT6kTgtbChW9IqDSu7xJ~ zsChO@F5jW_@zeO)Lq9uo@~d~s=GiF9XztO>Da;sKtumLsH9xmlpMTT#HJ`P4&5_D& zO<6qt^Wy1C>3wbGpWdP@($S@YF}U+lXt3pua=@HaK|WS~nvC!iZIi0Gc$tcZJ#hcg zA}!1HpFs*pmu6~>N=mv)tPXPGl9pMH?DhMK7Gfc<aprIh_9G?V7zg$l>7^8<RxVrm z%+dr8luT8?Qi^iIaPdTB@zyOh+QpHYo}M0f<I-hwPA*Brj0VfaoEN{`=R&Zb0xi8q z>*SwyYFl6%_FxF_MI^WNNae%?KUb6iLLT2)ILZbwy~lVZdI#f7<{uQzsa)5IUib|k fZv^R21=^bh7q-_Kd)8Q*Y1AtAduyBSkG}XXjNwNd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ded0e3fce4f5a1c5572ce632a29adcf37897881f b/src/libs/libsrtp/fuzzer/corpus/ded0e3fce4f5a1c5572ce632a29adcf37897881f new file mode 100644 index 0000000000000000000000000000000000000000..1bf146fd71a4f979f31ee41e77048c70dcda48bb GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZt2oFdm=9H$!7jQCg$TBc8Ff;&J3}6<+ zk2wqs?F<Za7}|w_$~Zt8+P(padLYhCElN+dP0r6NDay}@Ps_|n1*@q78Se--o&#tY S0~ZkA?_v1&|1XfizyJWT^dTbv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dee7c3e7cac3ebd62b0de576789c0ed0129e5d2c b/src/libs/libsrtp/fuzzer/corpus/dee7c3e7cac3ebd62b0de576789c0ed0129e5d2c new file mode 100644 index 0000000000000000000000000000000000000000..bcbbe6b45f7b1c5acbf1e46326462f0c685b329a GIT binary patch literal 97 zcmcbX_LuAB%W4J&1{Q|>Pk|H=C@?S-14S4?Y#>ox%*ap;;loKF1A;&_SRtl9pr)q` F)c}an4|xCp literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/def4bb0f286f7c45281a035b558581b327e505f7 b/src/libs/libsrtp/fuzzer/corpus/def4bb0f286f7c45281a035b558581b327e505f7 new file mode 100644 index 0000000000000000000000000000000000000000..a1f35406d57c174f072b846624aeb9b9c8711f71 GIT binary patch literal 323 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_nlm07G>#BLuHjhl*H3X$DRPhD-)~ zFb_%Jd>jCzj*$~#UNzJ_S)f&=)x~qDU=#zwX)sfT7#JLYjw1^&FbFfu0eg>wfddpa Oj6jlsK>;iTBB}u|OnB=6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/df2cff3e2d1845b09e31e2e99b50fe3aef5da229 b/src/libs/libsrtp/fuzzer/corpus/df2cff3e2d1845b09e31e2e99b50fe3aef5da229 new file mode 100644 index 0000000000000000000000000000000000000000..548c3da14329bb65d0641b6bb61867b1e856f8db GIT binary patch literal 73 zcmbPe|B~zF|7r$C1_V$5Gpmak8LF!pU^2yA@dgYGMj$ESb_Rwy93Ykzh+qJzECv9; CBML?U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/df2fa8b9efa11a9511dfeb146446f597bd82b6dd b/src/libs/libsrtp/fuzzer/corpus/df2fa8b9efa11a9511dfeb146446f597bd82b6dd new file mode 100644 index 0000000000000000000000000000000000000000..443a6ab32d18965b65de7c05d8fcc07ec4e4e6d4 GIT binary patch literal 549 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;0}}&7L-8CThH!|& zISj{vj5!SL!VDZh2nS#_OMq4ZK{7)-1IHW&gqr_A^$b9FfK{IZlX%S`#xA%TpvlN~ zF#z2R1Vp<TmpM>31Dy>tjgXt?5*I%B?P3xDIlQ&_KXY|4BZvtCi><+w03$5;z+60W TfMy2+1H=HJHcoIX0K*CZ(ZpJ8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/df4c7b880af9427c854b76c0d11f60c340a0a922 b/src/libs/libsrtp/fuzzer/corpus/df4c7b880af9427c854b76c0d11f60c340a0a922 new file mode 100644 index 0000000000000000000000000000000000000000..2b7e0980468fa203729e33cf83f760729a8e8b74 GIT binary patch literal 609 zcmah`!AiqG5Ph2#vH=CPH=)vkc#v8zMGqn<co0GG4?-x5EwoY+qR<6<u`PmMQ1Wqp zgNGgzT;FEbgNphfGqW>qCU0lk0yvHVq<yI-^n`hZ)|ZA6i%{`xGRRdt>J5`_BkLu5 zqX?*@B3UdjceX}n6Nj@U?L=Ug&bAXN`bthPw;YR^xhN@P#=?_Q)tB%bIfgOj9C&;% z#?L@Ads{eeu!a^eeKHlD`D&9nV)|1LzUf(zMm^VG^mxfmj~ztL|9bQvdMGC-H3l0T z)<Dg!DNKhFQI)$B?R|Y$tfB)9)J@#YlYF4axYF4=^b6d_ghdqE4(2+A9fopPAtCCF z`4@+k&*1d_%tPSaoNT)M&Jvln>ptR{>iqr6iB8^j!AceKfbS>}KJ(<3|J%NO+ZKsz Qqm^YRZ|h#ZrBMX<05v^jNdN!< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/df74057846da618e308c75b9389616d125845bba b/src/libs/libsrtp/fuzzer/corpus/df74057846da618e308c75b9389616d125845bba new file mode 100644 index 0000000000000000000000000000000000000000..ffcf9a53e7cb4c8ba339a19ce39329fed44281d9 GIT binary patch literal 133 zcmdmAT#{I#U6NW{!tnne0|YP@D=<_uFfcMO#OviTl*9u?i!wPTLS-5L_X1hf(O?A( z+3{tGAPGYt?w#B<Yk2@CP~X4*|9zPRK;r*}GeH!P0TcpiD+Ox14`Rd@a56Bw1WFWT GG5`Q9&mV*U literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/df8087a243ae78d551a128d812ea8336a3042f75 b/src/libs/libsrtp/fuzzer/corpus/df8087a243ae78d551a128d812ea8336a3042f75 new file mode 100644 index 0000000000000000000000000000000000000000..348cfd30c8b43eae87400c2f0dd96e0a63f3557c GIT binary patch literal 755 zcmcIiJxc>Y6r6ViyjTP^5K#!m)51m(VyYNOAT|MQQp+JBMIac>oz;S-5VR63gK2E? z6H-R}54PIp51fLM_3iWYjF#do$MWW8-^b2ESG0Bkv>SH)jCY3CdKY)sdU`Zc9FBEy zQFzM<;4woSJz7Ems@PrW3Tn6qeD@I8Xg4lzIoY;o@}ZLAQ%FO<K;?RK!X+<&o()QK zq~oDXw$f=i1V!~xi0XqXWmeLT$WD~^m2$7@Z#7%BgJwOK<xaDK$<B}&l#S2EJIpCW z=eQNjtPO)_5YM=8j?lW)z^@vj#qdWqu95gFt`cLueuK$Ork#m$>`#zNowG1N=npc+ zI*qt7h(A&ulyQ*p`mq6T1@A@=pRgPf?EAxa-#dI_&>t8ag;yoP@&92!3sRy_v83rr zd1e4?dcK&Nfq5sZJ*Hx?dC|Q2&3$T0<rRTntISDDux2B1s|Z+Czm$h-u7yEuz;WII DJ4d&t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/df9f04b41873b05b7485b379b40f126e9915d9f0 b/src/libs/libsrtp/fuzzer/corpus/df9f04b41873b05b7485b379b40f126e9915d9f0 new file mode 100644 index 0000000000000000000000000000000000000000..8310ac8c3e406454a9f4344c975b00cbaa4637cb GIT binary patch literal 3126 zcmd5;-D*=o5T318(}ECMDJn`Ml`5@<ih_y=mR6Lahz}r9Bo_fuNvud$O!2=^&|WI> zLVSnxuE850!Z+v(#J}40`(}4@PSRTcE_8Bo&hG5&{Lkzb@;BsmLBy1cuD>J-&bbRB z6$>l}mV-g*%8DEic|7kn*^2R$B5zOXC>s%W)L_H@u<REx=@Ho@q%mvu*7`&WK?^CD zGR3Mu0YYQJ^)4?%I^gs!{XiS111v|?FfSJFTn+2^7}+v=t0hs!&xt^H*<tMmeDXHJ zBrH2EoAXo2)*ZGcPcg;2AD;|Yo;2}t(9#3FC3D46rV1}uyGVH+{FWK0FZK!6bRA2| zA7&(vb-HKs8fQq>IAw!vFtpuDN>QfD*!y^!tnsm}(4}eTi8}9#<jA3=S5!M;smr8D zKbR0jnfNnO_viseYFL-VeRYSXHBAuttQ;ryglNKSkS{elw@V*x=;e!&&y>L4byLvJ zD5#1hs>?WEpDq><-Hhf_I?kPu^Y$6A+zZ74<R)cCE<_ihicUy-I!8KrFc0$rntHV+ z-XX_)PRGoiR<FC}z`!Hy(c<YLZ~T$+>Kw92VC7V$=w~bVXiAF4vP4%HR$n(wBx6<} zz+Gf@faBf6wILZ2x0>Y2XSY>Jd|9OQo$zBBTUXzS4uy?LDLnLg9SNc8P|h8uC#+-z zF8HVLGv5wx;M=h^zD-A-F(t%$h`ladhxS8$I3F6`FBGFzv*)S>fMAEmhdqk=jnWfY za8BD!Y=d48Na;s=t7YB^y8aC`!*c1_8&($p5lgjHVjy`{rF%tyIY~6Y^lbGF-5zDL z0eHS*kQc1#6pY`W3}9r{#YR5d^d}4n&D12{qGZ03h*p+p-Am1nk~sp;A88H}FTS7I zOiR!#a25=5_)2@*z}&gQh(G1fwZyK5)Ff%G&5-v*{f!}iYCh#^KSO2XfPLwRNP!+f zsQek=41NSQGO5Z#o>Pu}>^#n>IdmVt%&uo&d0HIZ2Rl0PULNO)>tg(JYW6;i#%?nm z%Ee4oZvzER^iam&2RR~kWWz)Mt{zCbAC31@I95adSRx(?<Bu~mJx|wqhg|Y8E5Nqn zZ7NyjXUwW}Mu4(^H@&6o)s_~|-yd`aB;laW*(W^-wE1g1R?Oj4C3akQlv%6#LUy`3 z;Z`ueUZ1+4h<d#bU)qJZ_o6}>EhPUBuUx*IE)OUfFE;-G7F<Iwa?v#J&ESy#QbE;p zT~E2`5yfAj(;0`HPPt*bY{K~3&2nSmTe!G3Tm5cU$$UZ@Ig3&nimeqns+`!u%%Y$z z<C@cW5ih?nyRo;DYdnu=@Y@BZ<1Ai6id!<@;B1MvAQFfEG8)-%n{$;>E0>&|ac&t4 LT@aAPRfg~#w7!}A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dfac03fb3798072a55d8ccf0f28ef4f81c3ca355 b/src/libs/libsrtp/fuzzer/corpus/dfac03fb3798072a55d8ccf0f28ef4f81c3ca355 new file mode 100644 index 0000000000000000000000000000000000000000..3e4e8875fa26d47c37d93a9f018bedb84b4dd1b8 GIT binary patch literal 636 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbO*A6J-d@ zqB%lf%jZCyfN+c<*fFdWIEIOVfn>-02e|{&F(jLV+f#!ic&X+iLqlkMKl=Z#yODtf UoV0-6PXq!`D6lZZgQyZ60MAriL;wH) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dfbca3b91615e12cbdfdf2d302c2411137eaec86 b/src/libs/libsrtp/fuzzer/corpus/dfbca3b91615e12cbdfdf2d302c2411137eaec86 new file mode 100644 index 0000000000000000000000000000000000000000..48c9de0eb1f0c54171399889f8384aae9782587e GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2ht$m`v3obj_PV4i;+PXBv4(<2%;FOtJT3Y1A{e`X5eIC bk!2{JBLwCPw=*!z0kOUTF%wt_L{tL+eRmEe literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dfbff6b133d07b84b48b20402c1dfa295735f144 b/src/libs/libsrtp/fuzzer/corpus/dfbff6b133d07b84b48b20402c1dfa295735f144 new file mode 100644 index 0000000000000000000000000000000000000000..3bc3a5752041de0227725e56a9b71a96fa26eb34 GIT binary patch literal 106 zcma#o%VQ{sXJB9`%H&8b1JXe7|Nnnq28QZt1_nlm07G>#BM3KCSF1xstf4dmCj)~l XNL_XD93ilnFp!+X0TMvgV_gjZ88;Fy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dfc459b99d0e933191615817e735395cc2f8b6c1 b/src/libs/libsrtp/fuzzer/corpus/dfc459b99d0e933191615817e735395cc2f8b6c1 new file mode 100644 index 0000000000000000000000000000000000000000..2ea64729b0d769e604f99399d885ca655f9b4cf2 GIT binary patch literal 119 zcma#o%VQ{sXJBARO8qaK38aDG|NsBK3=GxT3=E85Ml}P&MMee&0gzmEF(Vj5q#3L^ mL4rWQ$xvL%z-Y}N%P>a>$W>rq-~bUIvp_%?LP5=Qtp)&U8X&j; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dfca552d0a2f6b45984b31d8644eed7aa205af71 b/src/libs/libsrtp/fuzzer/corpus/dfca552d0a2f6b45984b31d8644eed7aa205af71 new file mode 100644 index 0000000000000000000000000000000000000000..673a6f78f650905470ce1f8e60fb558373ae39a6 GIT binary patch literal 458 zcma)2u}T9$5PfUo#wz5xkbqdIZO|^w30Fn@hC}26f&{rEA`F-`Ar>~4f%_K4&&dzO zt6bmCu5xw`+|ACuxAWc%E&=5H%3E73m>JHwE4;tDgY8yWez~--_c+?2;!QVHkjg;P zO^h3S07BTbVNVgZ2oaI-b2ubxptdkWmU|Hk>EbDiVOsjfL0<*TB%69IrOl<Pd-_sa z(&5|g6ZVYE1cN`F54}mc`k6}Xuk;dVnnv;mjvq*JeK!xUJNp>=$>h8(^dIj98|X$M w?KRZk@ZdiQ0z6t^oyke8$C|n84o*qCFN<kW=G9CWm3mMOJ&x+ti`zJS1Lv}36951J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/dffea25836343414ddf96e76d8853c21819b5fee b/src/libs/libsrtp/fuzzer/corpus/dffea25836343414ddf96e76d8853c21819b5fee new file mode 100644 index 0000000000000000000000000000000000000000..a33974a6322114ee15d2eb25c2a9614928b66ab0 GIT binary patch literal 430 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;0}}&7L-8CThH!|& zIl9Mzj5({?g&8=25C#sSs9|UaDq&!NtNA|%B=Y}1SoJwDIfnsk4nhsoBvf<2Y8>F^ qU{!-=7X#4EK!C*@0(PO919dad*+A0>xp^)kd<gl=8tMs90096zQAEoC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e02da98090daa0d3e750cc83581cbe8843d25acd b/src/libs/libsrtp/fuzzer/corpus/e02da98090daa0d3e750cc83581cbe8843d25acd new file mode 100644 index 0000000000000000000000000000000000000000..ed1fa828e01c2d697a5ba31289988ec0960c63fa GIT binary patch literal 69 zcmbREe?QmDm(>hFpzt38q!mCsFi5CwI5~}hAu}Gxt1f1Q;A$@h22F-`2F7XztyHG} HtjeVTl`j?a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e0347261cfbdee5566c1188b107b40329039cd8f b/src/libs/libsrtp/fuzzer/corpus/e0347261cfbdee5566c1188b107b40329039cd8f new file mode 100644 index 0000000000000000000000000000000000000000..2619ad40eae1ff127554dd551bd52a87678f2334 GIT binary patch literal 203 zcmZvWAr1mD5Jle-#3C?MA<zhty#QxGBOAmD60(8<rUKlCJM;>ivHXu%#UzvY^Yh=d zu^YHW;CgPK8oj#KdVrjvu@fJs%Y7~7lJiPsMaRIAII+E9)x>_3G)_*b(Xp*HOZLCX hoG?OZVP->#e<@hN#&@zG)sHBQ?_fkCAfBB!CB9<OAu0d> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e05959e65d29bd2833ff854b5421d8d7d802a49a b/src/libs/libsrtp/fuzzer/corpus/e05959e65d29bd2833ff854b5421d8d7d802a49a new file mode 100644 index 0000000000000000000000000000000000000000..6327a39939910e77b0bfa198f308815905e92246 GIT binary patch literal 97 zcmdl#@h{iQm(>gm3@i-$8G#f86az)TJRnhB%*ap;;loKF<3AHjF**&?3(`~#03e49 Ap8x;= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e06bf2dfcf2fa17f033f9cc3f763107b9e07c715 b/src/libs/libsrtp/fuzzer/corpus/e06bf2dfcf2fa17f033f9cc3f763107b9e07c715 new file mode 100644 index 0000000000000000000000000000000000000000..652bc8b496cdc90b1b336e8770559f9b2978c0a6 GIT binary patch literal 305 zcmbV{Jqp4=5QV?^gBwMVSO=_Z^$1?TGlUc=QW=uY6_PGk1}t+z4-l*zXA=V2y0CBF z?t44)Hj)*$2*^{D?6vB8i<~)Gt8~#{#67|~#DgmH!LbdmmRdE%Epv>s9Xqv@!vk@R z^khg#bM**UjL4w&XbTTp>?%JSdrFIrHjR_x84@`1)ctTV?@4Md)PW1~s~$$VbTXJL TBGZY^q*=<}ale1rd3pE&_oP3- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e06d264feb90a182320761ca936fc35887dba84a b/src/libs/libsrtp/fuzzer/corpus/e06d264feb90a182320761ca936fc35887dba84a new file mode 100644 index 0000000000000000000000000000000000000000..d0cea61c3a5b0ebbb77e68ce897c322879bebd79 GIT binary patch literal 108 zcmdOk&ts5eWME(@%H&9`2hu?B|Nnnq28QZth69X18OeAa29N>}sIFFrFc_@Cv;YGG sCj*0Qh58&J2H|#~5C=m8!yFEVe?TMJ&!-A8FeorE=mD)r1<F+e046#V$N&HU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e09c5721b6c55681eee5481a476f4d1ffe8f56c3 b/src/libs/libsrtp/fuzzer/corpus/e09c5721b6c55681eee5481a476f4d1ffe8f56c3 new file mode 100644 index 0000000000000000000000000000000000000000..0de0d6a47b27e331ab3acaf198e81eba457f6970 GIT binary patch literal 108 zcma#o%VQ{sXJ9C1Nc}II$p8lb|Nr-8V5qKUU|@tZKx!soRl@*NBLLJ>%*bG<mxpW= OgCtO=Ls4dGJp%wPvmA~9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e0ba21767e10ff2bffafb1fe90ebd6ffdd8bc6b8 b/src/libs/libsrtp/fuzzer/corpus/e0ba21767e10ff2bffafb1fe90ebd6ffdd8bc6b8 new file mode 100644 index 0000000000000000000000000000000000000000..fbd9813080201bb78c9ff8a69d93fee17c09789c GIT binary patch literal 912 zcma)5y-EW?5dJP$Tm-=%EGz=43<wE=WeQsnMXl^y4p~GnF=WjZSs@{yseFU$e2Wx5 zgRha!DvE{c%<Nu%K!U?D%*@Vw^Lwo#Py$i=Hr72B0O#B(aAJYT8>Yf4P_eie!@Tp0 z#O6NM?6PQ01lt310?3K2yJAa|yAE5mRxOD)NvhTLeX85ZjaDX)0GilQq)}m=Mk9$9 zt7Gs8W$~uWzz<dJoHZMiw-P}1fw72^$hnLPv?g1_0dS|A>bhgJN+aXWQ16Rl7FsSG zRqrXmVazQ>Tz#O|It$q*plVG#P=TYR^uja{TIx6d2nkxwM*ne|hZqdbeHnqP+Ek_H zj)T&q#XmjzebZ=YS6Y1(5tn!_eZMeOp~kP=x10=5NhX3J&jrIR*6=p@M3<gu@PP!1 z02ZJktmBJ<$R~ux?EX9f3gH;*HFSB*`GNAT*axWc{S8-;#j<=p+k$@~Zu6FaZEvJ! zYR=zHQuVDwobK=Z!9fD{sCPp<zZ9f0VC4Epqu%A<y-s}gS-wa9xn`4-NpTVK3D}e| GB+)NR8U2g^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e1263d4e0e1ed6868a4e4168a620e6f893358213 b/src/libs/libsrtp/fuzzer/corpus/e1263d4e0e1ed6868a4e4168a620e6f893358213 new file mode 100644 index 0000000000000000000000000000000000000000..f06e91b0c5352455fadeb0621bd9fef685f09d9e GIT binary patch literal 392 zcmazyV_>L>XJB9`%H&8@1JXe7|Nnnq2n(64t_Jeh!6Jz{rK$0kI2kx(85s9Z{LA(7 zB}neue+Mb31_dB33uZIUVQ2?3fTS>x;sA-YeFGBzg+NR==uFMzsE4Yl0y%&YB*g-g z=SZoCFhNcOO2tE*2yzmTXAh;t>%h7oenHZ}z+eYfsKCHr&A?C{ub0PA0`xLtQR;u; zOa=xkpwUR?f&30NPyl3Ubul9tgV;c@9Bc@K0LU+a3Ji`6|MDOb_(;?Co;e^7JA#}G S0@aL?46^z5AVb7JVif=}H9?;M literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e1724c8cb267c6efd73dddea9cf6facd5c561e68 b/src/libs/libsrtp/fuzzer/corpus/e1724c8cb267c6efd73dddea9cf6facd5c561e68 new file mode 100644 index 0000000000000000000000000000000000000000..432b95974fbc870b515383ca58456ed2ac5eea09 GIT binary patch literal 485 zcmbu5y-ou$5QIM;e@Q9`9a2PeP{S2;N2EjwO(bY|fGZG18j8E4vIJEGEhWMYFG9qF z0CipfQA8|jV-ZRurdjXoc-CWNBvJt7xN&~1RUsnBOz)&Mn^|o?rN0&UBz>n+#%TAF z1PW~bKH`jLsEZ5OE62BwYIYbjc~qL_8Xe>Vo4I!2HgCW+Fdglr8D*giu7(k2v7g>z zKV~#kr8x?+OI!U|o}AVPI+^#X2YGsBzpH0fTB`MLpWq{fgjh@FcC=M=$^B%m$vuzR zCRzWEs%lRP*6@40;qOiA)g@acKFO}bsqw$@_BRLrg&A=%ETfN1Qzd1PQ$!C_dh!cm C1;caz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e187531dae9a9095709353882ed7d298b43f8551 b/src/libs/libsrtp/fuzzer/corpus/e187531dae9a9095709353882ed7d298b43f8551 new file mode 100644 index 0000000000000000000000000000000000000000..722669b602e1cab7f4021a71e6017f4a1032b874 GIT binary patch literal 108 zcmdOk&ts5eWME(@%H&9`2hu?B|NsA8|NpmCGc+&)WhCQyfU>z<)y0eq)z#_{B@EVJ rT7ZFp6UeAAog>5`+zw=MFf=gC;rR8hfC<P^U|<jc;yjQQKrRCSAvhHe literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e1bb1e140c9c63c1c36cf54a3a62da93c14fbafb b/src/libs/libsrtp/fuzzer/corpus/e1bb1e140c9c63c1c36cf54a3a62da93c14fbafb new file mode 100644 index 0000000000000000000000000000000000000000..caa234c65cc97196198d6f841cd22937ba60bc35 GIT binary patch literal 544 zcmb7BK}y3w6n&ExoGyggtXwE9h={~?<IW4X@dz@6GT1;`O2#O37TKsp@B}4CaN~_U zgGd)H9N(nLLPWs_Gyl(@_b2b=57i9U3P6@fT`&^v1J+(RW`awrn>fw2nop+jxNj!$ z$-D#Xp(S})V!7Ev24BF#np+`o%;4LJ42hOScj-AE4Q0XnNYt!MClUoJl3c(!cMd$> zIafb|fw8L%H|Qb)?w?%Cn)-IY8o^r7W9$bZbsg+8ZBv%S3$|W)aN-?i!~~bX8K6FA z*j2w66h95F*x9K6ZtzOh+Wq4V#T#to|HB{XC5Zm?hw#~dD4R-j+8l-$j_hr@jZ+}i rGd0fRJk`n^!kQh}H&n}a5Y_Yqa%)Nsu-C7O^?#yTfA*pyi!#6$vG!zT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e1cf89658b836d3f662012d3d2a288d5da975993 b/src/libs/libsrtp/fuzzer/corpus/e1cf89658b836d3f662012d3d2a288d5da975993 new file mode 100644 index 0000000000000000000000000000000000000000..2027872c59bf0067da965aa0c5032d6990df0a63 GIT binary patch literal 80 zcmYe!kFP3;uP;jFU|?X#1Y#ig|Np-~gvB7rVAux&T*dJQnFiI>@$s2fe{_pe<Dv2l VsonMQfB*hvTwNSrUC*K04gjIj81n!C literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e1d7d8013afbdab4d3989b86d781dbf513bf5839 b/src/libs/libsrtp/fuzzer/corpus/e1d7d8013afbdab4d3989b86d781dbf513bf5839 new file mode 100644 index 0000000000000000000000000000000000000000..148d613c303f0e2dac628c456954046853cae06e GIT binary patch literal 263 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozN43`_zHY77hrMOalZFo4X^1FAzY zLj!D>Ji}c9kOluU8HCYQK&%7X0#s4j&Bk0^%*epN22#(k*cwa;00qFHTKgYRy*iW! mkpyx$85m?4Kx!EOLk$AD;y+lG4!RL58CC*8C0O#`|Nj6-4m5iJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e227f418bbc10b012cab197e463e8dae45853356 b/src/libs/libsrtp/fuzzer/corpus/e227f418bbc10b012cab197e463e8dae45853356 new file mode 100644 index 0000000000000000000000000000000000000000..269d74d1d819d1e11cef4eb920cfb94909679618 GIT binary patch literal 476 zcma!NV9@c1XJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_(JH6ZHNJq8fkPG~)PP-4 zPHAd<fe3|w=gnti6W~??EoYErh*!^JD2e<33+&o_i2E4kFth_51SExxKn~mY?K=Yp zPztC43KGFCLo<qzL4e^0LMu=y2Ll%bfV6#MV5o0{=!XOcFoaSWbU`B3#fm`82o4|y zFQ5PjGeiR=py>a9T@P^hfkO@1J0d(NJP|ZE5%3<!8c5^-BjF$>V0cl?SOroO4-Akw H+x`FmIQ3!A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e2554b800d5d37c9e508155ebcbceec3793fe6d0 b/src/libs/libsrtp/fuzzer/corpus/e2554b800d5d37c9e508155ebcbceec3793fe6d0 new file mode 100644 index 0000000000000000000000000000000000000000..da272e2ce16d99823d7a97df71ad2fa0d7adbcd7 GIT binary patch literal 324 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2Zq( zhhhIyhB~kwkPr~40gYi`Fkx%}o8lkOP{0Hf1@ekAIa2F^Od$CG|GzI#e>Kqd|Npl^ v09YAN4$9qTkPR||pH5&Vs=o|Mz%DHUItJt-kXM934riz?RRjCGx>_9o5Z*&A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e263798e59a5d270abf73edaa624be0700242a53 b/src/libs/libsrtp/fuzzer/corpus/e263798e59a5d270abf73edaa624be0700242a53 new file mode 100644 index 0000000000000000000000000000000000000000..a145618bede99884c5337b9c5851266801e51c6b GIT binary patch literal 106 zcmX@8m&Z_2&%nS?l*y3_qJiMQ<9}ZUhH3!@21bYgLv=AD7&BBWR6~TU|NZ|z5ya$V mXOIP|V{h-7BgDYK!oVQh&cHB-LqMgpI5oa35y%2FG8q7!+ZP%D literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e26a332fc58db1c372fcb67697bcad0ec6b2664f b/src/libs/libsrtp/fuzzer/corpus/e26a332fc58db1c372fcb67697bcad0ec6b2664f new file mode 100644 index 0000000000000000000000000000000000000000..a71030e7df7374ec653979f44b5d9b49a71341ba GIT binary patch literal 140 zcmdl#;Xl{Qm(>gm4FCQ+NC7DzU@TT(0E#d&FvRQSF_gpug^DscQtQEz3=IFL0vXlS z3~@jO4B7Ezi6C)92E8Z-hT@#k)c62SE})|S|9!!#7#Lz990i~jkeNU&sj2Y=m{u|X E0JV7{CjbBd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e27b58f72661df12161b25eb208a2dd380e00058 b/src/libs/libsrtp/fuzzer/corpus/e27b58f72661df12161b25eb208a2dd380e00058 new file mode 100644 index 0000000000000000000000000000000000000000..cf0fd5e359b3f71a6f63aa65843cb5ee82064b8b GIT binary patch literal 139 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!aWS_!a#}xq@wK`kf>)60<nPrY<6dACPzI~O%=#^Mnj+!3s?b+(EASnyt5Y@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e2e9d9a7e4578a32921a8704d6352067a2a1cf14 b/src/libs/libsrtp/fuzzer/corpus/e2e9d9a7e4578a32921a8704d6352067a2a1cf14 new file mode 100644 index 0000000000000000000000000000000000000000..8eda506e8c42eaac1e7f749e623b9b78484f7a74 GIT binary patch literal 513 zcmZ3^z+g~P&%nTt3L=2uzoRvT0VItWWEmJ47^;gwaz&XOm}(3;861FWz$Rc-!2F$o zZic`tnj-}E!5o-B+DnU5j6fa%f>Z_uZQQP<mUnQt1QE6niyCpdgv5|%!0B+Tk;Y)a Oxj(nGB(WqlJ_P_@&rWgx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e2ff946658b253ef36ea36da4b4c869b46e0308d b/src/libs/libsrtp/fuzzer/corpus/e2ff946658b253ef36ea36da4b4c869b46e0308d new file mode 100644 index 0000000000000000000000000000000000000000..888b2d50dff3a60b0e60bd02e0e8fbadf4f71920 GIT binary patch literal 566 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;jJng9A_vZbO*ABN@U0 zwg_mVEs8~koNzUBqQREWfjR-<7y~o78k~*+nuEhJKr3Z|Mxr<dhp&+xBLs2=m|(zk z5i_1(!7v1ienVWrD+P2d2#7N<;Pw$j2?O(gFM@FdattUE=V0*(J4gzo;J~B*|GFC) c{{R2)6%Q0bN)SL^LSiC=0}wMXNC6WF0EEs}&Hw-a literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e3062519c6b0bfe605e4247d493c8efaddee6b97 b/src/libs/libsrtp/fuzzer/corpus/e3062519c6b0bfe605e4247d493c8efaddee6b97 new file mode 100644 index 0000000000000000000000000000000000000000..7f82e6dce897059d9a91af35edbffa4a9afc85ec GIT binary patch literal 249 zcmZQ%V5lx;WD{p#U|?jB0+K-R@ION_kg8?`67E233s%EWT@6yh03oBn3?LhbzyL-= zxiCt*k%7U0k>TZkpgiOJ;`r)%j&=sdYKGtc8UB86X<=BovbqIihysJU|9?~fHUg_# P2<ZVDh{x@WV4na0r+h+6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e30d49ee6f7ead7b4f24b8fcb88792b4c521d4a1 b/src/libs/libsrtp/fuzzer/corpus/e30d49ee6f7ead7b4f24b8fcb88792b4c521d4a1 new file mode 100644 index 0000000000000000000000000000000000000000..1bd47e4f1835ef922490696d0783011dfeb3d959 GIT binary patch literal 2407 zcmcImzfTlF6#f<nt|lfYS7D;AMvuZMKdcNf(pg=Ic7|d>vnCe-2@3?-M6f`j9f^&} z#m3HmLjMI58aoOsE*5r#gvj{4H#5uL9jB;avN!W)=FNNG`!R1WUQCmCCYj-9$~9;+ z##DhU1A?5mgsu`IyN|795&?f(Ee#>L*ai!tRL;L2cSt^Mnlp_CA>qJ`ofjRzm0hF) zQfPLU(*W7nJGQUV`DQsH4AUfX=<ye1x3(dqwWe&$zKq6*EI*<`1;9wKrt-(*p{Lv( zxo;LY%=4F7M7uCVG{yzsA`gT_b7~t8tRzY+o65~u^v7hHuZ78~FzTjvGa_Bd(kx4n zRd8-V=Mc~hB~Jqv#K<hI$CR}|S?C}ONaCd_CxAnM-nBV@9;jo3i|orBLScKg%g*!( zX`ARNeBXeblWsOjwx1~I&KOg!?&}h9753BzuajE1>TFq&$dSkF^>|BKoPAf5k(){U z_PysRc<3nCqH50K7BHR6#*aVCby=EPoKE7oN6((rrqzKS9D(LvGgcJs*rw(^pj!ZB z*Tp~|?oqBBNSF&|ib$^Hf=MtS&5Lgw$KlDkgfl{!vA$X-*~3tWfn>HeFRxwjNe6l- zM}7#_qUjvz7HehN=7Kg4bT-i?!E?ESnq53Am*JQfMQ)3>LIM)e@r!{Ef~_`MG9*6) zz&#NxWy)c+&YJMHh?@U*)1m$orH;VfmdV#>kmX}E#Jcv1s>`}5G5-T|hw@vn6Il73 zcMAx8F$m@p|1@gN)YxmZ{;IALgD>|vq0b^ve0NK<P^yFE!%@|NFO)i=RR%mpDS}?n z4^KEnSYPPvW_sn<KEFl<4>gg30v|?oC^7d!#l>lR;ZmOboe9hxht%qR=)_JoiFXtC z$f*SFsPQ|AQXq(fEY(^mI}XYKVJwfZ$e9DfpwKBS#1RW!4o~h-`ci$xV+P}}M&JgB zaia(IkpBgE1-pQcUp7sDJUHC+qW(11L6>h4C9Kn$v?86Pk1yD_xdRHEL?o*DI`<KT LeJylLd_d-3Hw^ld literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e313b472b8e3780b2d77b1394ea1cb191f028896 b/src/libs/libsrtp/fuzzer/corpus/e313b472b8e3780b2d77b1394ea1cb191f028896 new file mode 100644 index 0000000000000000000000000000000000000000..99b56a6eaa0788308424dff2e2416dff7f637e77 GIT binary patch literal 157 zcmdnb00ZCtJH$cR&*X}MtZGIe!NQ=<z`?-C!2STp`Tt+|zxsbT0E#d&xC2Rs>S9KQ s>S`d@K?=kL0!FwI6VcTGm4h@gFu-M)KpLWf=Klamfn}?IFzk;90PqtbkN^Mx literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e315fca490e48b2e33f0ff395fd359f9befc2132 b/src/libs/libsrtp/fuzzer/corpus/e315fca490e48b2e33f0ff395fd359f9befc2132 new file mode 100644 index 0000000000000000000000000000000000000000..a7b006feb34508489c35633aafac82ab53172067 GIT binary patch literal 994 zcmeHG%}T>S5dJnPbOQ?2-h@I6;z6{6c<`v;!Hdv0h(Q(`Xr*L{LKn=%8iYK7?6Y|G zc|3UVvd-p@Mk*qBbRaXs&g?gt`DTXzMn0)1<RT$UVm_eMg&~j8C;Z!B5(|Geo(5Na zIS%$`9?*l!DX5Vax=Y5&<2$K@VNQnS_X%2r90^jJ!{;!@oC8k}##neOgC>pzu7P&R zFY_XV*Sy48PAO{HldrX2SJaZ~xd3!JILws0kkn~eVbB2_V38STlfe4urij4Xn8IsO z&un<0?({m2fr+^BWgNs4L5U+NH=y216!(&j0IzLt0P09vFjz2X4%Q=|suZ$TIj8q$ zr7*mhldWoEHeOA&?oa2lTn;toB)*?h@st0Y{5>c2%3wzmH7ztb`Q`4edMC8IPR<|g O?%of(yR8i}1$+VxYps9) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e3261856e55ec4324076b259314dce283739c4d4 b/src/libs/libsrtp/fuzzer/corpus/e3261856e55ec4324076b259314dce283739c4d4 new file mode 100644 index 0000000000000000000000000000000000000000..42c72528127956540189189be372ce040acbc13a GIT binary patch literal 856 zcmbVL!D_-l5Pd<hqfiig7CiM-q~~55FCGehL-3G8KtxP?$rh5E^yuC1=+*D>2c#f4 zzDWwj1<~d~CX?OC%-c7!(QuB>2*5It_>pfyRVN6YqkC5_OlKc)v}i;6PXSQS8}t#N zi=PcvjG%qM3&et-_YBF)->O9X62wTBj8S9|)oQo2E)4>g4vO{ysB-ECEG=u>o;IO9 zb3#7vM)NC9B*%)SdYLh894*~i6yN83$imR_`HZgeK@C16d8W_rS$ut(b@Zvj$JeK$ ze!nj1L(Q)As}3J)qGW&l>gaB}vjHPQGxugHyy2D3_$J&ks~38~8vbl>>7Qpe#wo8v OAw!2lZaIO7cj^S6=eV8# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e33c7989843428aa27bea82df1d7144112034a1d b/src/libs/libsrtp/fuzzer/corpus/e33c7989843428aa27bea82df1d7144112034a1d new file mode 100644 index 0000000000000000000000000000000000000000..4efdc6cf6c051767fcd541f235c4678f89e7f34b GIT binary patch literal 69 zcmaz~&aWzoXZTf=`9Jk?Jp&m0|Nq|?!eS6*Fz5pTuHtxuOoQs``1s5}48Q&t?aJg3 PO=Vz6bYSTGU#$WFYC9P9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e342a3e59590671c6d6437c42cb537751085d03d b/src/libs/libsrtp/fuzzer/corpus/e342a3e59590671c6d6437c42cb537751085d03d new file mode 100644 index 0000000000000000000000000000000000000000..e2a55d402ea3e0e665f4f482b042e3f9f5acdfae GIT binary patch literal 102 zcma#o%VQ{sXJ%li%H()j&j1Gh|Nr-8V5qKUU|?iW0Eq}x7c(+|akaVtg9S*)5=4Li dCj)~lL-8CTFh{tZfng2@kjVr_U@;(34FK~V4-x<X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e3692bc33b8a25a54b8cf31d374056bb958d6f9c b/src/libs/libsrtp/fuzzer/corpus/e3692bc33b8a25a54b8cf31d374056bb958d6f9c new file mode 100644 index 0000000000000000000000000000000000000000..372ed5498a62a867fc87ea2f15a1c01a7707ca3b GIT binary patch literal 180 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbqhEd z7-Sh3Ie?OL7}_DEFpvTXFtmLG67?XB5bYqkC^eI#o}nG21_W>^VSuWsVgT6<0*XK! Q&jI4crvQxv*#)!)0KTjrG5`Po literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e3837c6d2e4cf4041061e1c10f1f873fc3e162f7 b/src/libs/libsrtp/fuzzer/corpus/e3837c6d2e4cf4041061e1c10f1f873fc3e162f7 new file mode 100644 index 0000000000000000000000000000000000000000..5c76d0ceeeafa2173b578aff6561871e79544609 GIT binary patch literal 292 zcmY*UF%H5o5OZ4uVMBCAR06@o#0X#D4Vf4a8!6LG9S{po=*Ay1!dLhPQ}8t{QavQO zv(NFtK?Dh0!h3;;U3+5;%t%69J#BjV9WcPl6Cjg!N}&Pqj=};eT-NLis5exOJ}g3@ z)he1^d!{PISEWRuhe8Zekz{>_v!Y4*Lsg|Yyx+hho#?>r5wbRlmUzZhEcPfZ17D6| YdukYF2?zcl?EW9~&ZZn@aUqcZ0o?sE?EnA( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4189007af713f980b50c47f1e4794725c57a1de b/src/libs/libsrtp/fuzzer/corpus/e4189007af713f980b50c47f1e4794725c57a1de new file mode 100644 index 0000000000000000000000000000000000000000..23cf82609e01c02239b80521296c165f7d2620ab GIT binary patch literal 102 zcma$5m&YI(&%nS?l*^G?52S(Me;$NpU|?iW05hwL)flRa85ydp)uB@6R~Z;ygV>x5 c45|#pbA%X-85wd?^VDDfWF`Xx7nrOD0DaRBumAu6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4309d4eefa74c5f1e318e17707d30ca56cd1e7b b/src/libs/libsrtp/fuzzer/corpus/e4309d4eefa74c5f1e318e17707d30ca56cd1e7b new file mode 100644 index 0000000000000000000000000000000000000000..e5b0fb2b07319a545da908e3b1537ee3b1c4567c GIT binary patch literal 40 qcmdOmkI($0TdW!%pW0o|xSD}MnE?z$Q&Zy^4AdAj8A^+RECvANAPIW_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4582704c43bd71deca14d631423da232abd51d5 b/src/libs/libsrtp/fuzzer/corpus/e4582704c43bd71deca14d631423da232abd51d5 new file mode 100644 index 0000000000000000000000000000000000000000..0e88987000a0af60aef71d0f15490e00e7f6db72 GIT binary patch literal 109 zcma#o%VQ{sXJB9`%1q^`2hu?B|Nnnq28QZt1_nlm07G>#BLr8g14Tfh)=(J+P6h^9 ckVr%E93ciKi0B-Kb|3>t3Iiz)m`a9f03a+6v;Y7A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e459f0c472dc20b4d0b01f3b63e95ba9cc8e7512 b/src/libs/libsrtp/fuzzer/corpus/e459f0c472dc20b4d0b01f3b63e95ba9cc8e7512 new file mode 100644 index 0000000000000000000000000000000000000000..223e29baa0627e136dfcf8d1a336cc96e25a6909 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?BU-!Q+14DH+0|z5SfT6mW5s0~fV(L&4YbedY$-u(U bP&`M7fe9p{#xRGW9Y_Po`3&nBIH0NklhzNu literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e462823402b1be1965b492d9da008a2ec8b9d8ba b/src/libs/libsrtp/fuzzer/corpus/e462823402b1be1965b492d9da008a2ec8b9d8ba new file mode 100644 index 0000000000000000000000000000000000000000..afceef461bfb5ba823e50eab632184dd24818277 GIT binary patch literal 271 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWWjO_ za~Rrz!a!0ONO6Evw0#2-|AjzI5CEIqnVQK_4^>kIG9F|u0}F@%0VIq60WG#i*gRz( hL<NY1+Z>O@$qc?gQ^8IKssp(Nt{T5PAzBcY004m~Eu;Vd literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e482b35af1c67890c17ddf534f579dc2e1940557 b/src/libs/libsrtp/fuzzer/corpus/e482b35af1c67890c17ddf534f579dc2e1940557 new file mode 100644 index 0000000000000000000000000000000000000000..442f13d4e4e8879bc20095f8039cb14e03913e59 GIT binary patch literal 166 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYU^NU7G8!lbLtsr<3C8)w z@zwPl?F@|748Q*~{Qch2!mx5>bqh$R0)x6gP*b%o(A@v%U_awapz#dx|NjFW@xKHB Du9z+4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4ab5ceeed7e78124c0b1b13da7af7ce2acac25d b/src/libs/libsrtp/fuzzer/corpus/e4ab5ceeed7e78124c0b1b13da7af7ce2acac25d new file mode 100644 index 0000000000000000000000000000000000000000..a5d2b057370be47c03b9041a795530f53fa4377d GIT binary patch literal 170 zcma#o%VQ{sXJB9`O8qaK38aDG|NsBK3=GxPKo%pE!N|Z62$Cu-PK_^1%qdNcFDS}S z%gjl&H3EuqGI%inRS1Gq05$W2Xa>ePLO@c1LAafPL1hk*$pTcv{s71TDglDx>gr-f ipe^b^5fHEjVgaBWkb=00g`udrc#e<)gDp_VwHg2cKq%h; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4ebe578013e5a5230eb290e27c224ba2fb7f3d1 b/src/libs/libsrtp/fuzzer/corpus/e4ebe578013e5a5230eb290e27c224ba2fb7f3d1 new file mode 100644 index 0000000000000000000000000000000000000000..5555bb1c2debe807685274073a253886f0cebc9b GIT binary patch literal 246 zcmZQzU@$1DXJB9`O691}1kyn8-%+gr%wS;PM9{Jf`#>Bf1_pJgAS;xHQ9vmW_zwkh zgculZLxfrw7)^?+85kHrTt#7sAeaP-JO?s>av;zy{DXmk1I$FY2j~V|c7tsMS%+j7 L1EVPct5g^On&uyf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4f22162b2dd655dca074bf2679ebe8b039b2cf0 b/src/libs/libsrtp/fuzzer/corpus/e4f22162b2dd655dca074bf2679ebe8b039b2cf0 new file mode 100644 index 0000000000000000000000000000000000000000..b2f3f788d976761b63d479e6c8e46b682c63c43a GIT binary patch literal 143 zcma$5&&^O1&%nS?l*y5*2Bd-D-~a!<3=Y-RKqfm_AQ4P5F!0JUFfuSS6mT*yfLH<y zKjtvB1Lc6EFvEX_Dh7`K{~;P!82$@^Sg(M1N<0G-vYJl}K%+S(f}|5c>O{fn+6Aif Gt7QQVh#l7e literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e4f7f398637af48001261e0131d2f560601a1a41 b/src/libs/libsrtp/fuzzer/corpus/e4f7f398637af48001261e0131d2f560601a1a41 new file mode 100644 index 0000000000000000000000000000000000000000..bf07aebd833a099dca2662dcd16c65cc8997ed95 GIT binary patch literal 112 zcma$5m&YI(&%nS?l*^G?52S(Me;$NpU|?iW05hwL)flRa85ydp)uB?QK>9U^&B?$Z Z3seV`o+HFy2xK6E93UHE1XBZ06#%++4vGK( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e50b6b4f412137b8d28f6cc2f3074cc4e4ca474f b/src/libs/libsrtp/fuzzer/corpus/e50b6b4f412137b8d28f6cc2f3074cc4e4ca474f new file mode 100644 index 0000000000000000000000000000000000000000..44887b7e92a248490fa34b45fedf08c9436036ab GIT binary patch literal 733 zcmbtSO-lk%6g^Ln)P+cbi$Id3s6}E(s|pmRjZg&bf*M3zNMhh<n+Me*s8!UWMc}4C zqV#k815?o8>)fa1*Rl&UckY{W@45G#3sW}61<<NTYPa+>W6TlyFD5n^Xof>mT(Re& zH6I>N6r+;7wWpwqZ)2<C18BQVAlIrtzO&fAP200?rbU;KhWUcdcbDy1@&V{Zpwf&? zbPThu<T%a^AIDJ>er!zmp~?=C>d=BZ+WRYceA?b`TvaQL+HQe87JR8rvoq)jLZc9O z^cs^qwt~cF&;NwtjOT(<+m-_h92Se-Ts3mU|7%b2A+KL-wvx0nLq~o5RO+5UA7g!x z5$Oz~99!g3+JhDaY2PCU1P5M?>d^v(V+4t!;dQx-vGS6W?`DzRGDA=?h0*nrZ=TMs z!!MoX3b;D<L#-l|5E_%Li=&Yt=sz#46<f&2KX&Zqn%p2lr?wI1RdO{hWUNc~x?-VB V*g@_L@EV<(dlHRV;;9i>@(18rnS=lU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e52c04168e8e4103462c2bb9d0bc993fe53ba13b b/src/libs/libsrtp/fuzzer/corpus/e52c04168e8e4103462c2bb9d0bc993fe53ba13b new file mode 100644 index 0000000000000000000000000000000000000000..7cd08c94a9a4993828cd56370f883fff978c1b96 GIT binary patch literal 167 zcmY$>%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nlkc!)eu2ru}HE{oGZ1+W!OJ!%Zm k#f%L9{TZ|yz#_U}l0gzky#z5i872ZTLp#g={ai1r0Zki8FaQ7m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e5651106cd93be0ac68f7c2f81d6f274a727ebb3 b/src/libs/libsrtp/fuzzer/corpus/e5651106cd93be0ac68f7c2f81d6f274a727ebb3 new file mode 100644 index 0000000000000000000000000000000000000000..a1477026cd1d1555a91497871e143b3e73edef7a GIT binary patch literal 128 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtAd``yx)_Q<Tm}UOhIS4R0}dD&KnkkW j8H%bI0-I34ONN)#5Kzo01=IjG!2zN(je!$r_<wc)LIoW( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e59b3a4b2d0b6bdd8c2558ee32ed0af04dffdad2 b/src/libs/libsrtp/fuzzer/corpus/e59b3a4b2d0b6bdd8c2558ee32ed0af04dffdad2 new file mode 100644 index 0000000000000000000000000000000000000000..5e93b02d2aef60a6c4a0b6dbd0893043fb2aa767 GIT binary patch literal 192 zcmZQ%5@29pcnQQX@D0dVYz^iKFajw~1_oIM5QDKAh#3?Plm@59mnW8{W%@EO6jw7i zI5ISVRaX~RGcpwaVqgehPzMVzKuiI$VP;ep&zZQN>;KD_)mGI|P|TPNG^e^6WQ9T= mgJe8V`F93}|Go@!I6$T_fe0Xo2Qj!97!*Mq1+WevgAo9#>>ud> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e5b37fb5b8be337ca0f01fe30334ed3d4d5c684a b/src/libs/libsrtp/fuzzer/corpus/e5b37fb5b8be337ca0f01fe30334ed3d4d5c684a new file mode 100644 index 0000000000000000000000000000000000000000..6847478a4d660777e083abf1081e89381fad42a6 GIT binary patch literal 108 zcmWIhZ@^FzU&N5fz`)^J&j1GhLBRLFFNDV+%3#t51ddQHf?{L>vI`linZZKU)eH=b SP|50cDDy8=fU!0{wHg5Sp%VN6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e5c3461cf7cfff32ac4fd52307207deeff46262e b/src/libs/libsrtp/fuzzer/corpus/e5c3461cf7cfff32ac4fd52307207deeff46262e new file mode 100644 index 0000000000000000000000000000000000000000..3bf467a7b11e89a8cac9b55d30c2b141497fcbee GIT binary patch literal 112 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZtMg|5y1_mI>kR4x^m{Xb>U%<)0APW@v o)lfV~h#?%Tnqdw@JCFe+g@F_Yl9&cite_}W3@nuM7erM90CW@=1poj5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e5dc0ee26c8cb6fd079b751cf0ac3d3232035749 b/src/libs/libsrtp/fuzzer/corpus/e5dc0ee26c8cb6fd079b751cf0ac3d3232035749 new file mode 100644 index 0000000000000000000000000000000000000000..d56365c9d7816a62b22bed8dc3094d4082697693 GIT binary patch literal 69 qcmZSdU|<knU|^77sAjmuP_0u911{Co3=RwodiVfPpJ?^5>S_QUgb%#{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e6090fd057eabf660f91e3d2341ec3c5849ee324 b/src/libs/libsrtp/fuzzer/corpus/e6090fd057eabf660f91e3d2341ec3c5849ee324 new file mode 100644 index 0000000000000000000000000000000000000000..a1c7b0da699800899548e9b6e5438e9c9f8ff3f9 GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&zJQZ~K^7#^P&`M7 hAsnodVGct(kO3rxffNT!EO&lUdMZo|WCj>i0|5N;6cGRb literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e62e395eba8efd5026e743540fa0657aac71b795 b/src/libs/libsrtp/fuzzer/corpus/e62e395eba8efd5026e743540fa0657aac71b795 new file mode 100644 index 0000000000000000000000000000000000000000..c2a826d207fcaefeb6797a23558a709f74dca2cc GIT binary patch literal 129 zcmdl#@xRo|m(~BJ82&LhFhGFPH-_SB1_nkD4@f8$Gcr^=%mjj)>6su30w5|BK#Hn? xD*pX<&}66s>tSF}`^I3#z+l1H05YIBl`FnF^Z)<<>c!Rn5yk@b#aI7h007&8Bl!RT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e62fe5b7e839ab0058f01e0809bb492813f73691 b/src/libs/libsrtp/fuzzer/corpus/e62fe5b7e839ab0058f01e0809bb492813f73691 new file mode 100644 index 0000000000000000000000000000000000000000..b4a1be1ec8e378736c1fdcd296b1433e90eb92be GIT binary patch literal 714 zcmcgqF$%&!5S+w-u?waa(<umIV`XjW8&X-=SR_^+hzMfi3&hTsq|kTx0$a;<_clkW z2tja)V{<#RmzleC3T#rq%a#<cU_nF+AUC`#g^{8UKLUop@k}j~d&&fEGh0P&!;Cx@ z49d1P`J)5$ARNzWeW$&4fp80=x1A9<0+a3V1kHy#Eo68)UR#UE)Ze2q4vd{FwcrEm z&U{_=WV;%xr0F2RE6Ny|Lh6>o{sBRy)xc|i{7d8ij?2e0F}d6u62vEj_Srn!&=4zQ Op@c;g-;1IE=H>$_s<jjV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e673b0bce870c3ae72b554b013fda36cfe5bf241 b/src/libs/libsrtp/fuzzer/corpus/e673b0bce870c3ae72b554b013fda36cfe5bf241 new file mode 100644 index 0000000000000000000000000000000000000000..b49f398f2568e633faae1e476d8b2fbe7cfe7ccb GIT binary patch literal 100 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28JAc1_nlm07G>#BSW<VBLibK0|O8-1~6Dd jWONxg85r7G80K&={A2nL(#ZtX!l1&y5E~l{<W&Oz$D<Of literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e690ab4aa1902585c1f03163fa2fd44b5e55309c b/src/libs/libsrtp/fuzzer/corpus/e690ab4aa1902585c1f03163fa2fd44b5e55309c new file mode 100644 index 0000000000000000000000000000000000000000..adde0ef959e481b273977461fb39d8dcc31ed510 GIT binary patch literal 220 zcmY+9u?oU46h&`E@f8t7aV&Il_7nU8zaezUkgc>%MzEVW3Xc6kKcG1Ed0)iAK;FB_ zJ-JDoE^u)Gnjn71&M~SUafp#}o;Ipffn|XV=;|CWwZgl{jUMX;Gl*gPfyniHKrM(X zfk$Y_D9#Yo<W^JY+SH5l=`g|F2l;0bIK(zXY|AdMfA?w+K2ILzr<^T?<(&AHQb#2p Fiw^-HFOC2J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e69b72d2e1c1047ff3130814a4451666d6ea7e22 b/src/libs/libsrtp/fuzzer/corpus/e69b72d2e1c1047ff3130814a4451666d6ea7e22 new file mode 100644 index 0000000000000000000000000000000000000000..69eedb2298e5db9107d80bf3d892ac80b635d329 GIT binary patch literal 112 zcmdl#@jutgm(~mn4FCQ+NC7DzQ2NGDT+P712x0>X#bQQ=YKNIXa1%tp07QiXNKrLV Z1yH*XLmgNTgCYY%3I<?ch_C*~005m-A=v-` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e6e23396fdef4750a3833247bc63fe5774488c46 b/src/libs/libsrtp/fuzzer/corpus/e6e23396fdef4750a3833247bc63fe5774488c46 new file mode 100644 index 0000000000000000000000000000000000000000..62f61eff4006cea3dd57220f7f3413b7ce51183a GIT binary patch literal 2083 zcmb_dOKTHR6h2c$Cj}uSE3MXX)1sxZP**KzyK__Y59koeNQ%=YWI7_b(sWT<gyI9~ zMzZribZICEZiW7WE?gA%Z4v7AJLle+Npu=FJtTMT<Gjyz&-E)SwCWR4bIA?b_=2?7 z3q(p0Iame$i)t7LexpF{4c=MDjATaCp)IgrypNBIKW!diu!`O!WHiD^u;jLBtIWJD zw(~Hv!@{>B7~QJ{Qx$3r_KLYx<dCEAfe@(sh-PJip%Aj`5<r7mFHIba&1zJG*r6O{ z!{=H0iB-{|*Q=K<uvSYrV8Ve(g{&})<|S))08Q?4;zn3LQLogvRhKzUwIFOrYGZY~ zQ<C(Tk>Cy$>C4eExl`CG({(F&5!%jjmy=swGK@X-ObdIHhKhVTAYwjN6Aplo<0*TY z>e$x#ZYW7xI%1OkkdAbY39q_8_)FvwMO;@V&b*p2^L`HO;n2^8FI-;GR+{0v%<%P= zYt_Z5R-Lr)WwfU71tJZo|K9BdH9M05A;Yq48{GG^uy<GcFBePUdhit>w>6Y|1wKjG zQlOsFktcTE?Q6Z?ipXUAEAO!qHuWkoH71<AAB_p%vJy@a8Td=M9Id^v{hps=a7MB5 z2>1Kkg6n?J!-t0k8g$L*_vE9Z{{{}HRMfdb(?nsg;xEP#<0MAg!`dHhluD&%NG!ur zE+8jrNR;;s^J{IhN~^T)K=B!+0F!2KFN=({)bIba)FPeqVDgEe?{w4J9KqL^>gl8! zjnvheszlH!VT7Y#jDv$lv!1l-B2`X0bJ%vJ9PA6zFt=Ro7`dH~2M9POm%DcNeUjbZ zdhRX+nIh$QXI?wfJ77s(jps<Gup;DpRDmqskhlKh0_?-EeP8U{Q;OZHnwLhNngpeJ zomQ>~*Nb~ob|F<X6LS9T`{a+~WqYcB$;(!^Y@FP^+@6uR#Evj=pO!x?7@AEch0Eso zQ`6|tOesV#??=h}TGl{NBznN?*=@{J4r=`nG0lm+g2@E5^_A6TJ+vm(#GOR3ui7qN o4LUvE*dVoG1K_~aH}0iK8cN_{jd_d?ktVcKp@^lo;c7~M0D0x4AOHXW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e6f59822479477dd4f7802628b8590472948621b b/src/libs/libsrtp/fuzzer/corpus/e6f59822479477dd4f7802628b8590472948621b new file mode 100644 index 0000000000000000000000000000000000000000..50e2fa0a243e190bda040998a4071fd187129997 GIT binary patch literal 102 zcma#|Wnd_YXJB9`%H&{_1kyn8|NnoWXmvFM10#b1Sfsj`kpYaW)xmrQ25TtIz-h}M V%TPQ=2+S95XJDAa0h5B$)c{iM4N(99 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e70149bf42394a6061e2d00095f581739dd44818 b/src/libs/libsrtp/fuzzer/corpus/e70149bf42394a6061e2d00095f581739dd44818 new file mode 100644 index 0000000000000000000000000000000000000000..e28aea13b6daa793a9da0e4f59da3b5954ada782 GIT binary patch literal 71 zcmYe!kFP3;uP;jFU|?Wi2VxNT&*1-`ArQn8Wiadm0U%Qc#0ScOB|$7v5W&E}#-PZ+ F001_Y4MG3_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e7195da10d3844dd8b0d9aa3d34ffb28c9dbfaa6 b/src/libs/libsrtp/fuzzer/corpus/e7195da10d3844dd8b0d9aa3d34ffb28c9dbfaa6 new file mode 100644 index 0000000000000000000000000000000000000000..2f51064ca5f7d765ccefafac043290ef429b6d87 GIT binary patch literal 102 zcmdOk&ts5`XJBB6&E$w;0@6V6|Nnnq28QZth6YAP2B0ht14B_JS9LKXP)r@7guxn2 k3otNnGBC(87|am@^M%`i6bC~W!yFC<rUbB%AdvI`0G0F(uK)l5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e7254f572fa927cecd700e22d42a327e5ec9e777 b/src/libs/libsrtp/fuzzer/corpus/e7254f572fa927cecd700e22d42a327e5ec9e777 new file mode 100644 index 0000000000000000000000000000000000000000..eda8dbe5287f20c367f3d76dc1d0230012e30f1c GIT binary patch literal 290 zcma#o%VQ{sXJB9~O8qaM$p8lb|Nr-8V5qL<U|@tWfYM+AAT7_pBmh(dQmMzl08<H+ z0IJlet_G{PDc}h)2t@wRWDrJI$k5cn05S)n9A+R;_fB*R6#oAL*}MeRg1aCmfB?{N x7>#BL&}g9Xz7Y4K+5>Vp#7ztgi><->1sHW&OW2sJiy1-Odr(mZhWM2XD*=26I?Mn7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e72d9f2f5c822a13c99798ee0fb80b6521b61d3f b/src/libs/libsrtp/fuzzer/corpus/e72d9f2f5c822a13c99798ee0fb80b6521b61d3f new file mode 100644 index 0000000000000000000000000000000000000000..37de153146ed5657fc26114587cfff58aca69aa7 GIT binary patch literal 91 zcmdl#;Xl{Qm(>gm4FCQ+FfuRzS%yGPF(X6uG$73Y5(066;&55G8lVVRA&_S90;vYd Iz)*EH0Ls@9djJ3c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e72e14359deaf76577b6368b4ca05102daae538d b/src/libs/libsrtp/fuzzer/corpus/e72e14359deaf76577b6368b4ca05102daae538d new file mode 100644 index 0000000000000000000000000000000000000000..e129dee397573ac36c1076b406fff88512e6f2f2 GIT binary patch literal 144 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZt2oFdm=9H$!7jQB-$ucl9Ff;&J3?P;x z!;d)(4DAdIa~Rr%8S)u8KpNV<0f~Ab&P^>!PmNE`&nqd)&xudV%t;jniUQ4cgqRI9 R31k`rg9X(3__Wl_dI0W0Aj1Fv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e7441f5521f1b9ad33caaa8cce88161e5bdd8275 b/src/libs/libsrtp/fuzzer/corpus/e7441f5521f1b9ad33caaa8cce88161e5bdd8275 new file mode 100644 index 0000000000000000000000000000000000000000..f9bb543140b78a704dbcf8f11164cc0edcbf2c44 GIT binary patch literal 108 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkoPK t31)IKFvtSc0j1~gG8i*3<fP`sCzlqd#+N0Q=A_0K2mwJ62T<w%Y5<907MlP7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e76ab8e03532cd5d2bf0c63432e2993bcd7467ba b/src/libs/libsrtp/fuzzer/corpus/e76ab8e03532cd5d2bf0c63432e2993bcd7467ba new file mode 100644 index 0000000000000000000000000000000000000000..6363c2c89f5439b08d07e6c198e28c0c8061c732 GIT binary patch literal 3107 zcmds3&1+LZ5dXb2+E^^q1_gy;>PG{X)+k=YLsRI<kAo*ckPsw?U~5ZX(?b{AP^wZ8 zw1@{G^qzy)9xeU@p7l@2$y<BNbAGe?UXmt_skIje-oE{qo!y!F&CJ3BZU&D4)Pw9L z`3YUwgKq#?VY4#odobD0LO<DrWI0k~GQv?0R>`eno#3P~=^-)zceTwdt?|FOv$F&6 z(=*NhBS2C)bnB>eWyScFVQg=2b0PT_s3d?P#4H~$z|O9}lrJU<B9`~!Ob}2Vqt}yu zmnB(kP`1%+^d_TjT6-#;Js7qVY(g5dTAOr$P2Qu0&W0n=2x6p<qRzDn3V8i4=reO3 z#?@FERhbObR~UpulNazVLw7c7S5?YQzQj^a_!g}hxJ9lMnE)u{mh+so<l%IAK`ky8 z7Mns2VoURjeStT7(geJwlFHr`iJs$Gp?L1~;*JGse+~{FtPJ*aSyJNEI-W(hE))}r ziT2IQ`Pot-7u~f?G(1s>9d3O<lYTjC93Y?t2nj(`$(hzcNfy5D?fW@nsB{dE#m+*$ z^Wv)?A9gv7{Ol|e^LnZX3a0OAcR_6joN6^X9^j$kPMNUA2(VG06N9k3WzcYd43vj_ z!@i6fzE8x{j0|^{DB>Y*{gM<5(AX`cXB^2Ff@9LUwn6Yqhj!GPOV8_0*K`mwCT_l% z1G24liomIW6a8uRbIcY_)GeUKF7<O$C-##lazUv%#>Qt9e(_iWRXKYO3P)$~WD_iT zvEBg&lv_7^lA#_f|4xV$P_`h{q>2@+ZBU4i4PGa}=Dd_Hh)qp;J{w}V4Z*_Hr;Nb< zzJP30yyPv?;P<81mP~fHf`MA?<Y7O-oc9;F_q^_aE!CUjMHTM=*B*oC5Y#gh6YQ<V zi?IN1P1Oc!$3}9s`sM#bYM3RDjMqYtEUGgJ-0QH<7FYYa6-`?@qn%McO6ip5qo*;u zoB^&PgR<r$=Iz@uuSwZRVs3MHSa=m~hs(X8Vw&aJE3u`I8$|#IGEj5o32WN-?kS{^ zbF{`COej)Trl{+Mo-<2N{*pp?=$q0C&^INYZO`$|K5wkrm0>Y@vjyzK1oBv_2OIDC zQsR9{je^?moN`A)#2G~Lvb-!=$D707CGmg#;~`4Zt1~lU|2Y3Y#k)KsPN+CxgpZAq JL1oad{06U$1Kj`s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e76cd955107fbb3a5e66ed566f83ac0fd8c6a19a b/src/libs/libsrtp/fuzzer/corpus/e76cd955107fbb3a5e66ed566f83ac0fd8c6a19a new file mode 100644 index 0000000000000000000000000000000000000000..ea29f3136b3341d7842cca70d437b414e657df15 GIT binary patch literal 469 zcmc(cu}VWh5Jk^CK@&T*6N31#77IHKM2JnmZ+L~I5F|x5VlkkNVr7v=5MLws9Y#OF z4^XhM$Pb91WSreRv9b3SduQ(6-5u^?9kT-HAJn?1&JHu%V>Gn+@mRf`$mq?Yp5^ZZ zSH$b*EGiCdU02xW5e9cdv!~0e<6FOMJ2|$}>c{GHG_VhJqg+hd(gl<?q~V>_D_f$S zlXeARVy)%rUi0^Tq|<g$c9ZQ$MFSeAb$m_<zMA32?q68t;Xm>EGtb`~(?$&yQWX<k qAzO&<^MRfz#d;5q&U4q`(QU%v?2Lvi=C@YjQny#cZ!_sbo__;rXRdSr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e76fbdddd517f74f4c231fb5ac936df72c47ccff b/src/libs/libsrtp/fuzzer/corpus/e76fbdddd517f74f4c231fb5ac936df72c47ccff new file mode 100644 index 0000000000000000000000000000000000000000..55145fe19f8464a2812ae45a7854f1284460eae1 GIT binary patch literal 104 zcmXSpXJlaTW6-Pq%~0RM00o{aS61p&GXP~+8LAl=n3x&<i-4q{D)>NbPoM;shc8eT i!~=tW|Nk>q|7T~Y1{ze&pupe&B-N{RtE(CQ{|5lpTNNn) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e7879d078f5484de76394ba51fac6e5a7fe3aad2 b/src/libs/libsrtp/fuzzer/corpus/e7879d078f5484de76394ba51fac6e5a7fe3aad2 new file mode 100644 index 0000000000000000000000000000000000000000..3903b1ad52a3e107accd81a1f288ba0d81bc30ee GIT binary patch literal 210 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYKs7)F0xT<6uJjKJ`~UyH zb|V9W0VBi9|3yFp<`>6T*K@QpFjh1C{?G9DdrJ$$%9YhEAZ-c^>i$6GK)?zyg5f`y U#%dRa9*9mLiCYiEZOshz0NCF@X#fBK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e7a9bddd61c41a3182fe299dc246a1c129edbcd2 b/src/libs/libsrtp/fuzzer/corpus/e7a9bddd61c41a3182fe299dc246a1c129edbcd2 new file mode 100644 index 0000000000000000000000000000000000000000..c81cb907eb6ca7c5766582160f99d27a2347063a GIT binary patch literal 69 zcmXSpude54XV9x=_+8(^@Za@&%SwioKv1bu%>V>UAOZsZ{r~?T#%6A3V66Vn&fvIz J;{W|zF99m+7J2{x literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e822c7b78743a719c5c6d4e5288dc6b3fcc4651c b/src/libs/libsrtp/fuzzer/corpus/e822c7b78743a719c5c6d4e5288dc6b3fcc4651c new file mode 100644 index 0000000000000000000000000000000000000000..e60c402fa5b320eded9fe98d3a79af5a4bf66402 GIT binary patch literal 180 zcma#o%VUs?XJB9`%H&9`2hu?B|G%OyLp1{fBSSTqQ~--s7ppN;-(mu@8Eime1`G`^ z!CX!T1|uLt7N~=v8i?WMv4W-l|Nrj`lmMHh<pl&_QLuSYF!Mk{20q1egc$w-4FG}e Syb_>^4B1HL6#<167^(rE79E-Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e8666037f5297d357bd557495b64ad02d1551d09 b/src/libs/libsrtp/fuzzer/corpus/e8666037f5297d357bd557495b64ad02d1551d09 new file mode 100644 index 0000000000000000000000000000000000000000..14ad3d90ced740a1dc4c7fc97a1780b0512bcf75 GIT binary patch literal 492 zcmZWlyGjE=6g?Y3N2}mgiUGAqVPT`#*sQQsz;9SYQY^?8yNL<|nkK};#zqKCBYuE? zp!hlYfy64;GdH`-iU(%y`_7pIk)9*~^3?PnX$cXz#Mg^#&1RP2QleeW<8Y3GnZQT9 z>|FpGO-o$k8yF-RaGa-4Z_Qn>)f5M9!6|?IZpC@!Y;K^Vi%;FQ=E6xA&LHS8YE@lo zFCO9&L4#noNw61xc$(Tav_-uVaA@OmzJNL7FGB1!HXmT06g|J{+t$=ikCbxYTZo;1 zvL#0u6<{gNS7MGzG4b;UHo2w3eCCxhT-^-&98u9>mkT-sGY*s09nu&cg1NZW_TG4~ azUFC`c&|k)GF2+_1y%F@#EqY2D)<G3pLLJ` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e86d59d7b45d680cff3132d6ea38341dc73b5364 b/src/libs/libsrtp/fuzzer/corpus/e86d59d7b45d680cff3132d6ea38341dc73b5364 new file mode 100644 index 0000000000000000000000000000000000000000..8e7c5c21d15e723a2816a8c4bfcb134457358825 GIT binary patch literal 40 rcmYd@kI($0TdW!%pW0o|xSD}MnE?z$Q&Zy^4AdAj8A{`eQyCZl>;4I@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e89451aa8f9b3de5f529ca316a0d0f330a86f93b b/src/libs/libsrtp/fuzzer/corpus/e89451aa8f9b3de5f529ca316a0d0f330a86f93b new file mode 100644 index 0000000000000000000000000000000000000000..60f2c9f951db6b0c7d003afd459560ec8b496e81 GIT binary patch literal 1152 zcmcIju}T9$5PhqGTq&kf5fmggVx|2Bw1|+(T22W8g^+~15R3~ZNFYBE+dw|RAXxYl zet@0$11hLl-|SvUPRqo{-ObGI&g{Io8EnEKyzrh{PBq39(AFBm{!ma`aO>6>sue5y zLqMf6vZEs<;xVfCmMJ%o=>l6lswot>t-*+bB_7S%<63V6U*fd~ye^(n`RnV!gF^b5 zL5<;w!$GiHK|P>40aH!!1|HntVqotvCQUk}X*!Yx&j6*MaW?V(rCBdyX3Z`RgF$nL zx5m|z`<W~#al}^_gp<XZd_!S50~@b}uKW(~O5zCBImJ{e45Er<;Y-kUspBOQ6;2q! z@*@EqG-Q#rP;oB+zSuLxk^l}&E_ZzpLt$k6Rkx9SLnMV4OWi%Njm8PYjq?AZJKc%r zrE*OME5`j;5$Q{kZkE~+r(tBwr)w4H6WcdrB9GQS2{}W2<_lL5;6=hFW|`A?%aOF@ xjAx!ke!w=T{C@9rpgS5er0&ORp^*d1rAkn&R&K(o&lWhY?-%RMTE0jp{R0n6dddI* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e89c4cb982aa29baa96b250fe51ed043a942e89d b/src/libs/libsrtp/fuzzer/corpus/e89c4cb982aa29baa96b250fe51ed043a942e89d new file mode 100644 index 0000000000000000000000000000000000000000..7a97bc34f704392931b6908c0f8f30a2ae6f4e66 GIT binary patch literal 51 wcmXSpude54XJD*m`2C;Z@AsA#hLvDYsZ-4W0wAgX><rZ{)s7&*z_29~02i_n$p8QV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e8abc42b656993e3049332d239bc1b6e398a7920 b/src/libs/libsrtp/fuzzer/corpus/e8abc42b656993e3049332d239bc1b6e398a7920 new file mode 100644 index 0000000000000000000000000000000000000000..7e94f254788234ca30d72dccf48546315e2fc44a GIT binary patch literal 69 zcmXSpude54XJD*m`mM(B_j^kVL;Xq+sMM)ufP?=K@C`1&4ASwRouRs=+R<_UJ^+y6 B8CL)R literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e8c54feaec75dc91dd44c7ea1177c83333f475b3 b/src/libs/libsrtp/fuzzer/corpus/e8c54feaec75dc91dd44c7ea1177c83333f475b3 new file mode 100644 index 0000000000000000000000000000000000000000..4e14d10ea0f1eef52cfdc82dccf53d53ea04ca99 GIT binary patch literal 102 zcma#o%VQ{sXJB9`%H&9`2hu?B---!HR#!7HFoO9&b}=Iug9I9i=Lj`0SVLtPIDrh1 c5W~O!mcN1Ql>enbat=egFp%N^VjzeI0IUoWQvd(} literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e8ec0e7be7457ca689de76a45cd47f5344d46888 b/src/libs/libsrtp/fuzzer/corpus/e8ec0e7be7457ca689de76a45cd47f5344d46888 new file mode 100644 index 0000000000000000000000000000000000000000..b9ace5e7f8c21dd0e2d3d7a76eac80f0c5184bf2 GIT binary patch literal 137 zcma!NWMHs}XJB9`%H&9`2hu?B|Nnnq28QZthHaRDNq~VtgMp#7=Rb3GF;FiAEVc&I v0x$sx7bwQbz#z-O$WU5cJVywuM3|wSVGe@;!@h6d890m>7-S#@FjNBoWlSI8 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e90f234d63465e33c341241ca9d2b2570f1f564a b/src/libs/libsrtp/fuzzer/corpus/e90f234d63465e33c341241ca9d2b2570f1f564a new file mode 100644 index 0000000000000000000000000000000000000000..9c6e1189e4d0f643ae4444e1fd386b1d13ac0648 GIT binary patch literal 271 zcma!N6k{lfXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFEzd_5iATQ7#Y|a3OE@UWEmJ& z0R`qTv_nW?AjJVv(e@2U{1*Z-K>%!aXKE%#JwrQKO%=#^khu;lU<E(|&0_m(kj)Ap zo2SeJN`nCl&@E7#<Mr|wctC<kPG;~0nhJI@P#wq~xN5K;u(%U!Do}?ygaIb!FaQ8R C6f2(q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e937e740fce6a4659d70d14580c6dadd3884a566 b/src/libs/libsrtp/fuzzer/corpus/e937e740fce6a4659d70d14580c6dadd3884a566 new file mode 100644 index 0000000000000000000000000000000000000000..31ec3737eaa5ef3288621d8e72918a970b1fe3f3 GIT binary patch literal 2647 zcmds3y=xRv5dUo=dI<=cOA{ex8<Qd=_yHCkeiaf8esvbXtY=&_kX+<833w~yIE+^q z11apT5K`HTMVhPa{3jF+`xH^~{LQ?#cN>Gc0kLp6W@l&T&6_v#n|aqXmwH>R7{Io< za)J+`FDE1N*dy~WA(}Yy5Yvh(%coSJY=2fS@;+x?;w-n3c9y~6sB8=`{)Zu)?*Rto zz~$LoxFP~zjJXBe<l!VCN>1nnMq;eB5Ped$4@8NXWMt17X`#*&Cvh|^q8hEhnW`J7 z9ai0Pac)VpVHiBs^-*y-3}zOV!*cO)7)YTUl`s%cWaLZp^F?oO__lbynsR4gm&Y<D zj*hdgBhJHVprxX2WK2U3(Kw28z+6}gW|pEbSoR`w2ZgE{He61+u8%D+KbLcIBu~!d zXtN+fqYntiOIT!pTYsJK`p>kL#VGBjrX+|?ev%AAQr;Eh)pX0WQI0gqYc!T+4mx}e zIkN7Px1pg8({z29WDf9EOrdC7N>*Wd39~1m>&GEliML?f`XuL;llJA9C-5~UFHze- zX80IIyckTgAQxE>uN<2EtlgHTrxe6Bcm^fn9@kc%OG(v@=|OH#PE>tcS}e1saBcDc zS0O*8Z~c6D>+92x!n)N6EXG9C!z5UrR80~X!>bdE6$!Xumu2GxG2@DQ9=*s>=5p?9 zj9qR6KM=PI$*U2Od(XbAQ@f2rvRB?!`d}Xk7xVA3)Qgzi-%#@nzP>xs8%v<c?DZ+f zcJwN8T&|eEkK&2P$j3XPOp*xA;))RNGk<~#vS*ssDO+<z3fqpeL7WJ+ryJ$F^vX&* zJXP7^MYTDr+{59jojeRe5-l|)&+{SK#>;Io(^mpk*GzXDnF%$NPn(6&U(-YPNemTK zZgA9U@7qXD3F+p{Ca13(CW2AL3~|@ISaUB{<r>4LN{u?2SO4$mudW?%^k3LN`rCz$ z(fllR1bmJUiwl6a!p2V4TOk-nMec{6uHLM-h3riLWis!8T~~F6lJrP6Y|+YM({-4( zn}8?74Z%%2TWSPkg+$Q7l}97zOSj(^b(i~=?o(fNi63Xc#|=#JULsY%zSQq$+GP@t zLjBli8o6(hA?aJa8SuO5Ls#)&a?e}OW9aEY{Sc#)KMpIM?I;b72mI?12D1&iuXw0) Ge*FMyh~TmS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e93c87eb3e91c5d0fab981d2e26b5ab5d868dbe0 b/src/libs/libsrtp/fuzzer/corpus/e93c87eb3e91c5d0fab981d2e26b5ab5d868dbe0 new file mode 100644 index 0000000000000000000000000000000000000000..fa62de99ef27f566ad1e41ddf8f4f6dcb04e088d GIT binary patch literal 175 zcma#o%VQ{sXJTMrU<G0b`2YXEuPSqOH3I`9P#`tFEHUQ-Cj*Bp2mwVJ3OE@Uz$^xa zISlPUB|uUbNO6F)PXZAjO+ZC3P?XA%Sr1mj!2mRzNdPEuoS_J$6qh;w|LY^E0xIN? J-T$9~5dbS!9%TRk literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e94c4f6c4edf12fbbf58e701099d97ea9a328818 b/src/libs/libsrtp/fuzzer/corpus/e94c4f6c4edf12fbbf58e701099d97ea9a328818 new file mode 100644 index 0000000000000000000000000000000000000000..fc8306e2bfaa99b0affb9feb89c114f883688855 GIT binary patch literal 428 zcmb79F$%&!5S&xcODCpM5v(jMB%p<0qhKZYhQlI-AR@-t1k_4Dk+=A)2o|2Z>jjk9 zIB>grb9+0pMgb!OV7JoYi88_3hvZVul!>7}K@us*NgRQ(E0kA78`PH!)4Fi}6-YHy zn{Fj$Bycf3&Kwk;cG6@H=w^s$tVpT(j2H!Ji<9VcBx<;2cjy6i_Oq7!CD%W&FRW%4 zWYCF(=CEAHq1k%S?7VWO>b(OQ2f63yQ|gFDqcF|%g1@lAm!p7Ov!AE4&MLXCwa|RO I@S8lm05|AoxBvhE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e992e28d6c2ac26bc01507faf7ef6ba10807d5de b/src/libs/libsrtp/fuzzer/corpus/e992e28d6c2ac26bc01507faf7ef6ba10807d5de new file mode 100644 index 0000000000000000000000000000000000000000..fd1b0183cd43fed7d57e1884b03356933464ec7d GIT binary patch literal 170 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MU^NWYU^NU7G8!lbLtsr6U=m1Z zH!?67FfzRS4^lY4IKH}`qn&{<n&J0<hQHriS{PQYtZo76RA5l||Bnj5Mmz*+#AY)9 Dr?4!s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e996fb9b53c28053deb15b5dd1edea0d1bd0c5da b/src/libs/libsrtp/fuzzer/corpus/e996fb9b53c28053deb15b5dd1edea0d1bd0c5da new file mode 100644 index 0000000000000000000000000000000000000000..7df4b97dd558032ef19c035bc01d235d36e5b0c7 GIT binary patch literal 801 zcma)4Jxc>Y5Pd6x7Yh*s5rseuK`b<gA5{!Q(87Q=))K;TU?6D7orNrz6hdqiEX6c7 zqOC=+iufOFwf7I4f|B*^=JKVD@3`BW+1YtB`vxlepmG4p1<R>$C6rRzc)C=h@9&ak zOJ$~we<<$5rAN?u9WpLJX08I*cm}-O0gx;g&Tg1&&BUbi_m0OxBZxwMLN3-P%ucul z)Gdf8Efq4Z;In?R5kU0#k?!$BWH%TqHci-(bh{~ccD<G2p`9-}tIMo(+1J?#(}T3o zDZEObMDH9+!T4O$|A1hRd-{l2FdX>9VPetzm5m%@14s^7|1vJdTD*RZ!Ejy903G%5 zBau@E`UvzvOiQN_(gN`n(uLFt5?}2F_)fdms`-YQz(L(#jPB=uG23+oLs4bA#%)8R z)V{|AjMWfRX1#5Yb~w!3yWXnp9haOfd(%i0gH}6H=hiSRK4LPcAn(OI{`L)^*BwZ9 zbALR~9>_+G&FC@IDOjkWMxOQ{ErFB8j-{(x>C2?nQ^@H{Aw<7l?K{Pi?k2!v=SQy@ KQ==#Y@%RswPQr@- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e9c3016cb8e841d277b7acda4b101aacb5ca66fe b/src/libs/libsrtp/fuzzer/corpus/e9c3016cb8e841d277b7acda4b101aacb5ca66fe new file mode 100644 index 0000000000000000000000000000000000000000..5a1a028a89ea6ff321a2a3deec30d61061e8a5ba GIT binary patch literal 104 zcma#o%VVgCXJB9`%H&8@1JXe7Ul2kANp>JsVMxp=O${vIWZ;lxU}Ruu0J0cBECGfe ja~RrzDuARggEvHz!8c|GhI%l&>i_@$zCe~fM?3=nSn3hn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e9cf294779ba84c956e4d86f71dd75625d0762f9 b/src/libs/libsrtp/fuzzer/corpus/e9cf294779ba84c956e4d86f71dd75625d0762f9 new file mode 100644 index 0000000000000000000000000000000000000000..11db4de153637eabcc90df824b75395c9b3730c0 GIT binary patch literal 1555 zcmd5+y>7xV5dJQ;)TC1dQwJ0j6)_;9?&TG#K0+o21{i3kdSF5<JOW!EqVLd$Ks-jL znsXfD)Fz=4mC8l2eLp&VclX&@inrGcz<d&p7re75rJevO0Wt>27cxKFbigwnjc14` z!b%`HU$S%tjfCc7)t;F27D=y!6ywe~y|wRI&M|lpr~)Cl<<xG(u#AXe<PoryI1Oq* zCK`M-E+=_awX-}0A4DJd*ai9UYt!6s7?VKAAK`k(%2&Y~IbhPr!%#F~zImQ11Ufmf z%5D(?#NduD*Xl}6bJCd-{)-b^27650iNn@Vw9Jk8BTgIxbHY|7fpe}Mrbp?E;)E{v zeIz<9-n&721u*$GT6;jDX)5yDW$V2FD*qNXgT_`_=#8f|Nj|**zAom$xv4(lhoS!L Lp3eb&g|+Mf_Cnrz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e9df0bb499dcd3c192868387b60387520f28cc08 b/src/libs/libsrtp/fuzzer/corpus/e9df0bb499dcd3c192868387b60387520f28cc08 new file mode 100644 index 0000000000000000000000000000000000000000..87a72a3452d798136258585579f01993b65fc47b GIT binary patch literal 237 zcmdn5$H4XSWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*N gaxgtmrKnu&#=-1>YXLHzVhG~W3lWFwMbcOe0DYPvyZ`_I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/e9ff11b3eb0c7ee2fbca38b7405d083b6736ecfe b/src/libs/libsrtp/fuzzer/corpus/e9ff11b3eb0c7ee2fbca38b7405d083b6736ecfe new file mode 100644 index 0000000000000000000000000000000000000000..38d61cc7b076f6dc94b204575db179e605ca2950 GIT binary patch literal 181 zcmX|*u?oUa3`I|&V%((8f|H}aU}wQ^csRVFAR<K<E7Z-O=!ZI)-l%won-daplQt*r z31}P3YgNhJ_tae{oU)Q1j@O*dGi*r#4-r9gUIS0f<qIa5P^v!;JGNiyja)RXcAOjL d{#%Ih{x@X=>!uGV+7zVV60ZV67rm+1q!Hk(B&+}c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ea06e03d06e62bbee4909e1f8938e03a57370afa b/src/libs/libsrtp/fuzzer/corpus/ea06e03d06e62bbee4909e1f8938e03a57370afa new file mode 100644 index 0000000000000000000000000000000000000000..d00645464b1f75ba36c9ba735ee84e64f607bc05 GIT binary patch literal 106 zcmX@8m&Z^N&%nS?l*y4=52S&B@$i3N28QZtAd7(^03=df%m~3iu|Et7KoRSI|Nl<} uNpZ3>$TIZI5o4GO<OsJjFwEg#$SEx@D@}|~O^q)o%1_J8Nwqa#ssjKCH5yX@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ea14569f45a4153b18c1caa48b698835d67d831a b/src/libs/libsrtp/fuzzer/corpus/ea14569f45a4153b18c1caa48b698835d67d831a new file mode 100644 index 0000000000000000000000000000000000000000..96a8edf0bcdd160f38ff8a15b01b4b65215c4e0a GIT binary patch literal 150 zcmazqC`wIBEs8JBP0Y!uX8?o$|Nr|kC|6fAY{LU|w=pm>Fi3+mR2MTcR5Jj%)#@Ow zGJ~x(hz0>phK$sl0tQ*2WNEeL9H0&cVFsag28NXX@Bcgg11X6G5eRSr$gBncJ9I2J literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ea155a9c3398ca9a8adb38a8e80ca22a7ffab7a4 b/src/libs/libsrtp/fuzzer/corpus/ea155a9c3398ca9a8adb38a8e80ca22a7ffab7a4 new file mode 100644 index 0000000000000000000000000000000000000000..4361d12ab3f4e6408464782eafc26a65f3644082 GIT binary patch literal 543 zcma!L00G7gj76!L9Q9xh!~g&PeHj?5s~H)%|A0mIK>$P+FZur;0}}&7L-8CThH!|& zISj{vj5!SL!VDZh2m=RE)wF|@Ak_Q^s%HSY1FZTSn8aZYF?OM;L9>ei=w={5bq`iI zGb}*y7n(UxHv^pwG>wp(=MoAZh87vHw;2k6;Ryzq;lm^Vl4vdd&s<&12vNkqu-F<H coj?w8;RW<VQ6@(!G~yY6dLe)l903dr07HXPO8@`> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ea48b945cbc74956549e731a90991474b8bd102a b/src/libs/libsrtp/fuzzer/corpus/ea48b945cbc74956549e731a90991474b8bd102a new file mode 100644 index 0000000000000000000000000000000000000000..d414e6c7531f8499f9fd6d5b2841337b4b0f65b6 GIT binary patch literal 742 zcmd5)y-EW?5dQWEdPx<$LJ$LDVQCXPn+T}_KEok;#Wi}|MVkdprM8xVG`_@@ijR{Q zIKjfrH**`k!#sdf%<TNnd^>QaGl>D@X_!1vlALqrcz<!d<<e69cB4JD<FG<OixG{? z76x`S_jHL5U>aWo$9ekv>T5Cbv`z-P+Zbrx$zn%s(G#!;VFuKKb(G4p`>`j}=zrAg zKN&O9K*Mfr(JYBR-l|W8Lk<~Xzg78wbIaiCt!((ydM4o-9a}z00aBHl*?jZL3Ll$z zpqQ&b<pfLMRQij_u(`m0#6%ED;=2pK0foWVEbBr(HKH1d=dmJl_4o2MmD6gGbF}#^ vI$X=iBELuYrLG|3F$!{}kbX-UlsC1iwo)e9MZbrv5TwybaD~L5G?QUhtIK^Q literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ea9342e01ca8641af66988b4ba4c60619932a0a5 b/src/libs/libsrtp/fuzzer/corpus/ea9342e01ca8641af66988b4ba4c60619932a0a5 new file mode 100644 index 0000000000000000000000000000000000000000..994542e3f833e948e6b416e925a251c4b6c9fa33 GIT binary patch literal 69 zcmZ?tU|<knU|^7_t_G5~^r~UN1t{Ra#G>Z~6lT!X&C8Dm(t04E0V32u1VeSTF;IOb E04ReHH~;_u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ea946153f6ef41b7f5c97ef5024d82ec0e26403a b/src/libs/libsrtp/fuzzer/corpus/ea946153f6ef41b7f5c97ef5024d82ec0e26403a new file mode 100644 index 0000000000000000000000000000000000000000..4837f9023fee7e63959ba0ac2f8276a311d80827 GIT binary patch literal 135 zcma$54*~2&nH;J03}65h@nvABu4Z6h1oBhk%Mu~t3>@_g?ZQAdM->B54M@^~1uDhB wkqTrnGO#ria5B`%f^{;?VQ6On5+F^i9AJfQ-+<Krcp%Z4nh7<oy0VxN0MQ#C5dZ)H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eac6f88668703168aa31b255e7e58142da0a9136 b/src/libs/libsrtp/fuzzer/corpus/eac6f88668703168aa31b255e7e58142da0a9136 new file mode 100644 index 0000000000000000000000000000000000000000..b32ca2888346e47f0c1057da5eb5969c0cb95500 GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7A0S3ilM#Ji2Mz9#e*RNk8!hsA7 ujtu|ufE=#xJO0Z8RU5ST%n<_8K(%bG|670t{b%^bWDQgSQUwG+Ep-6QDISIZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eb4666946169dad175a572771d2d1592308b2ff0 b/src/libs/libsrtp/fuzzer/corpus/eb4666946169dad175a572771d2d1592308b2ff0 new file mode 100644 index 0000000000000000000000000000000000000000..3ff882cb2ecc3125670a9ca1b39c4bfa53447ad8 GIT binary patch literal 102 tcmbREe?Qkt22@a8%*aq#jS#CYeu=~bi-VL@BME}|YA9krNf@fG1^^lI4!!^Y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eb5a3da6e5351d9fbb8a67c81cb59532c5f200c8 b/src/libs/libsrtp/fuzzer/corpus/eb5a3da6e5351d9fbb8a67c81cb59532c5f200c8 new file mode 100644 index 0000000000000000000000000000000000000000..4be55ff09025fc42427824977fee61ccb4f43fa4 GIT binary patch literal 106 zcmX@0m-n+I-hqLkD3c?#o&gO0|Nrm7z))Syz`zLPYXGrgF(X4Y2m{5yfXNz2<$;)- Z><qF%bq4J{bA*62k}6H83a|#pIsmLu5)=Rc literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eb7fbf41c750f2592692482d7a0683f55a9c2c80 b/src/libs/libsrtp/fuzzer/corpus/eb7fbf41c750f2592692482d7a0683f55a9c2c80 new file mode 100644 index 0000000000000000000000000000000000000000..2eb45148e7abe7d98b75b0ef695c263d12a71368 GIT binary patch literal 331 zcmZQjWPpI8OpYt{5a$2?|9u%6s;e2cE!(zb+qP{5Ob~G(69JZOV_;xp5C+Lq7c+vW z{lz7TB?=`#7SOCzh*@Bx7=T6r)hd7#0Tru(HB?utgZT^$CJYQO84^Goj!i&<lYwEI z?KWMo@j3C;^&IUCdescS>svr7K)`clyj~tdNj#7Vw&?$VhLsgMKr5imtgiO`4^{{y eq(KZEUIY1sc&|a+2sKz5=p8VCQq{$R3=9CM169)i literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eb86052af19123140592f4b21ff095395e5c8578 b/src/libs/libsrtp/fuzzer/corpus/eb86052af19123140592f4b21ff095395e5c8578 new file mode 100644 index 0000000000000000000000000000000000000000..e47926673315c1c2e4495af84f1e8a928c656093 GIT binary patch literal 103 zcmXSpXJlYF$DmjJo1wmi0SY`<uB_ClW&p~tGE_4#FflOv7hzy#V5tB9|GzI-4O9gK klP?1oOc%qy|Nj}Q|Fbhx0}ZNXP+)KXlIqpE)zu9D0oQLC5dZ)H literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eb88e0ff6771ec04dfae3a964ff6399958e3cb70 b/src/libs/libsrtp/fuzzer/corpus/eb88e0ff6771ec04dfae3a964ff6399958e3cb70 new file mode 100644 index 0000000000000000000000000000000000000000..f0b7d8b5a67941d89f58351c6a112cfd8c63ff28 GIT binary patch literal 153 zcmZQ%5@29pc*zDNprE*#!NHNC0nGak1gZ59iU0pIQgaHb8I-;;6jxU=FoHyZgkmux sL$$+9Ah-!4prE=Krs=;g0|O9MS3?BAB*+M$LWmhakzWi@`;gQC0ICin;Q#;t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eba7da018882ad9b2e31df6fcf493d15de3fbf7e b/src/libs/libsrtp/fuzzer/corpus/eba7da018882ad9b2e31df6fcf493d15de3fbf7e new file mode 100644 index 0000000000000000000000000000000000000000..1071f78d649f569b59c83ecf97ffa4eb03efc856 GIT binary patch literal 102 zcma#o%VQ{sXJB9`$`k{VVDSI{e_sZM>S_iCMg|42NOdtI0~lA!3P99YLMR3XP6h^9 ehT=IwV7_oW1H&8@28Pn&__D;D($oSjh;{&$LlIQ~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ebf9ae2db9db98e7973100483990f9f7eb6252f7 b/src/libs/libsrtp/fuzzer/corpus/ebf9ae2db9db98e7973100483990f9f7eb6252f7 new file mode 100644 index 0000000000000000000000000000000000000000..bea4c8ec7fb3a4d51e101eea51310cc3ad77d02a GIT binary patch literal 143 zcma!NfB?CoOperg2>bv4|Go?i)zu8!ytm;5y4x5S85pENI;x9-ED&9-4yG9xtf4dm pCqqVRP62}~P;F_o<{Xd~A)wqG0fv3wzB6zb00o2@WMHZpssW*JB^m$# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ec2445c037618464c2202c67ef6a98a7943e2bc8 b/src/libs/libsrtp/fuzzer/corpus/ec2445c037618464c2202c67ef6a98a7943e2bc8 new file mode 100644 index 0000000000000000000000000000000000000000..4148f7716e38e1ebc12b0af250791ebea5d278c3 GIT binary patch literal 74 zcmYe!kFP3;FJj1KVBkotX8?o$|Nr|!SPY^J27MsFRUB`SX;57qAD{V0w>ULEKDE0( Pb~QxNF-C@C*2k&=BqbJ{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ec3370b62ad722d3f5df2d3e1f14cdc6676ffaf6 b/src/libs/libsrtp/fuzzer/corpus/ec3370b62ad722d3f5df2d3e1f14cdc6676ffaf6 new file mode 100644 index 0000000000000000000000000000000000000000..9903b1d7f92391a9edf7f5013261fb8bb6a8f951 GIT binary patch literal 69 zcmZQzV5lx;WME)WX;)(?W{78~ZmDKq*pm65p;`ba%D~{j0OTW3_5bQ>pbnrGu<~OJ I#f*$|0RB}E`~Uy| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ecc6ac62b9ee137f2dbdacfa17a3fe691c214c30 b/src/libs/libsrtp/fuzzer/corpus/ecc6ac62b9ee137f2dbdacfa17a3fe691c214c30 new file mode 100644 index 0000000000000000000000000000000000000000..c0fb493891493dff76a6bd7b45046f0a88316e3d GIT binary patch literal 156 zcma#o%VVgCXJB9`%H&8@1JXe7|Nnnq28QZtAd?*|keE}N8d$)|z#+@P$RNi6WHEqP z0t`RqFth_z07+qnAh1#fgKx|X4E11k6~rJsdb|;OIR4Lt00sud;{S|)8R|IzagHJE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ece102d726cea0f485cb30f3b0b68ee13b87a1cf b/src/libs/libsrtp/fuzzer/corpus/ece102d726cea0f485cb30f3b0b68ee13b87a1cf new file mode 100644 index 0000000000000000000000000000000000000000..f690a45a30d84a156962e88fa004237c7fa8e9e9 GIT binary patch literal 108 zcma#m%VQ{sXJB9`O3mb`2hu?B|Nnnq28QZt1_nkTFEzd_F{d;&zJQZ~K^7#^P&`M7 jAsnodVGct(kO3rxffNU_7|;-FAfFvbYcnuN0h!eRC59Lz literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eceabe1a94cd4261d53be1612b7bc91d7c8386cc b/src/libs/libsrtp/fuzzer/corpus/eceabe1a94cd4261d53be1612b7bc91d7c8386cc new file mode 100644 index 0000000000000000000000000000000000000000..29000b3c4cc1112bcbb3aafd40d6fe416a4b4b42 GIT binary patch literal 1528 zcmcgrJ5Iwu5Pj=d!tQ`n6p@h?pg@VB<Z}QT#1UMjNI{A~#Y%(*rQrzaxB(4^2_S9( z1!6M0YkSv=5+NM2mOt~^@!L0VvMz3}GXTSW)En`e7ZIHUQUby_Ag_eE*{2dNaAG1I z#4*Mp(uHffFq#Lm?f?pj81|^yH{~soof1-lEfcIfzd3cc;;Cym5bg{a4uoKx%R3pG zu8t@&;siPa_9Pw!b<tJ#d&OPT_Obvca&SI;2=T1X5f&K^{JCY?6NVBZ;!9xdosG|2 zH*%jvBlp;&mJ*C=5=B5u3#(*HAV30U^!|Yw^0E*e9#6y8CU4sgnqz=}G*Q+8a!dV| zb!rd$udo@_vS5GF6VdC(i$(sYFK=KP%#Aa;)q#0a!5@N!ZGoc+-K8|0rgge>xPmU- i{zhCbDRw}Q+0BBZ5gnBRT77@#D15oxZJepr`)dZFc>T}- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ed1064ddcb3c11b7f3ade049846882ff8cc6de11 b/src/libs/libsrtp/fuzzer/corpus/ed1064ddcb3c11b7f3ade049846882ff8cc6de11 new file mode 100644 index 0000000000000000000000000000000000000000..f127acd43975bb284e9c44025bb4cd3f1c1d0014 GIT binary patch literal 100 zcmXAeu?c`M6a_D0p~I*H*tmc=K}ew~1VxA`#1z`OgtPh$`ZzeaSC{PG0B+3e5gjKY rEld@tKM+<$XcQ_yL^|s8y9#o+Qtpf=K@jWQ?2O$;-!FsJT8ridFya`& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ed2ff0a9923c4ffed9bd3270fb573ee12842f06c b/src/libs/libsrtp/fuzzer/corpus/ed2ff0a9923c4ffed9bd3270fb573ee12842f06c new file mode 100644 index 0000000000000000000000000000000000000000..ba90234eb2d593d3fddad4a27eb9a2f67cade18f GIT binary patch literal 2318 zcmb_d!E2O96#va8)-OsSxQCXeF}t-@+teip($ZkfrC18m=2j3pU2sa4M7!*_vEYDP zp+Q713LY%E<=DFj9%TQF-t2MdJr*jN{@$CJ-K4Q;4*4bf&3yCTn|bfe@4YWfA)?bN z+{ri%AzZ?O_k267E6tTvXWJ7freT1eIfKk5@z**oP-7i;syKuKpNRV0CY5?>2-#|Z zZv`A$9cl&KL=ghYX)F#f@Pg9JEmQrh|7L=gdb(J1PFQbi9LyFP*U`0{il?_Y64ZSP zIy!D<P?^+~Y71|wEIuwl<S>i~U71A1_tz;NmpDh_HSTusxHCMH?$S90kJ)}QotQOr z<W!VmK8;9;PX22ks9=Vf$J+fc=C8#ZQGMfCm_Ej_R;ltthNsFisB2bKxioL3eK+C( zlgWA(zP^v+^Ol<EhiS{~scbn;1{9>s3)wfk)Ld4>EMGp82yf>I8(g7!AAMD+#689s z#LzDhoZ$5yLcgz?4eoh9-@cNoLM~A&Sp(NryGvJI0k?C+m1C&!PxEm+o&ij8LMvvU zL~^a7C)CZPYyzZu>FkZ>idd|=KiZuih3+UD8IiJe;BA!5n*Quu%QE5C^^ABfu-4t{ zncsjDa+F|5-c%b1kGM*+?+nLfTUy`yRup%^;B*U~y5zAE=O;2EYL(uH&tF~1CjQqX zDB2zOgX`Gxx+Lg+cpPHQ@`csPvKm&?LoOM~0`MSQI5HUUAcE;v)by!gQjktfVGC(g zJdF=!9NvYz+-Pp6?|F?hm!Bj^uHk!`Y{O-lV=(m2blkscrW7ZJ#S@G9bgBkkMZ$<k zap8Z<OXAyMyUt=7<%k_8T^jw9%FW7g+?fCS0DwQa8*6f{`^H%EXYl|LUH!saPNao? zpbI(1{bf2Px-&}FL~Vb_<kPE*p6q(2)GEt9`ij`4@gECpoacNgHwG<tA<^F0t10Up zq+Vul_yu<*C!aqEsWi62!aH0e-rI!IQRXj!y0n6Y$HedQ$k2GGQ6p`rF)}|H&F#5m z`35@cTcm$E>#-R8%@78(k%Dq$n=fVW=M5wuHn-@*Q3{FUB_CesYj9B(w$*Ap`?3<2 zbNP=oOZC^t;-aPS)69~cwD)+j2hKbZAEvSooac_u+xVKx^CA+&?^^VLZ8lvVq*t?z zH@nVWb?xqwDXMrkTF6s_<k$iGwu>!Gy2zKn-CshG6bR~N?t=VMeY~SL*i)iUXa$^M Pk7j)RCAZQRLu3B|`?8EY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ed3f24599af798db6367c33c728ca8a298430c90 b/src/libs/libsrtp/fuzzer/corpus/ed3f24599af798db6367c33c728ca8a298430c90 new file mode 100644 index 0000000000000000000000000000000000000000..4f7ffa03b2f914d6e227210f1370fbf121a30d62 GIT binary patch literal 103 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7Fl1nO u31V7uGBC(86weW2FlJ!LNzIE-&P^>!Pfg63_<uiFX=;2yQGVLXm(>7QR2lsM literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ed7e68111214223cf0ac50fb85ded5eb8791c775 b/src/libs/libsrtp/fuzzer/corpus/ed7e68111214223cf0ac50fb85ded5eb8791c775 new file mode 100644 index 0000000000000000000000000000000000000000..d1b95d38b0793e18fbbcde5e8c81f0a027834b37 GIT binary patch literal 79 zcmdl#@jutgm(>g);2;I27!(*7s(~VmARdsYE@njVfn0`S#se@h1}~7JY6qYw7y$rl C?G6b5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ed88758b1713b053d5bbae3906680bc00939cc4c b/src/libs/libsrtp/fuzzer/corpus/ed88758b1713b053d5bbae3906680bc00939cc4c new file mode 100644 index 0000000000000000000000000000000000000000..4717ae6877fd76507dd237344ea761c0818ecec9 GIT binary patch literal 102 zcma#|Wnd_YXJB9`%H%Mr2hu?B|NnoWXmvFM10#b1Sfsj`k)gil-~X1D8~?!q4Au}z ff#Lh1Z?X&wbA&*AVFrOY91sa62n8bdPh<c9rDha4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eda2b4c3485fcf5fc8e42bd6cd713ec9137bb99f b/src/libs/libsrtp/fuzzer/corpus/eda2b4c3485fcf5fc8e42bd6cd713ec9137bb99f new file mode 100644 index 0000000000000000000000000000000000000000..bfe27d14fa1a3a295b7f74cf4c1bfc0311bf8547 GIT binary patch literal 36 ncmey*{4YM9;SYlVi`xI>;?(%~KgIC|)eul@keOM^z)%VR9(4|< literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/edc13238e8ebab8da3ef26e599993aacddc70bfa b/src/libs/libsrtp/fuzzer/corpus/edc13238e8ebab8da3ef26e599993aacddc70bfa new file mode 100644 index 0000000000000000000000000000000000000000..9eadd3caee408dd00099b8e88b1f70a8d3bb7d87 GIT binary patch literal 458 zcmYk2ze)o^5XQef0$x&Bm_kknM3JNm*8U?x(gb{lLqs8sMfS8A&~(~bir3iq2v>S9 zVXK|Ry?_W2*Ka2)=Nz|l_nU8Lc0ag@b18t?G(NjwW;o}LQQo^&RS6J9C_jk!we<;0 zVyJnGRN8_JA3~fe;SvpI)4L}&+gGv|xM{AS1NQ~l$=8&%Z-G39>G01rgG|%W^(chF zj~i|*YghGrn8}FHj8%5Iu%YGRugmv=eRMDH*bIR8d;NdExd@8qg5d=|7lldu+9PJ? zM%x#}`rD$knGWc}pLshcY9Qug)_s|Al65nt+D3JeL)1D};$1V>-8s%B9b6zuy`JyV ga2!I^T2CNGY!4hR(pLZ^%xY2v`p9F|U9j4hU(bwb;s5{u literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ede187b22dc3c4dcdefe28b51b2679e8a47ddc0b b/src/libs/libsrtp/fuzzer/corpus/ede187b22dc3c4dcdefe28b51b2679e8a47ddc0b new file mode 100644 index 0000000000000000000000000000000000000000..97bd9d47165d8047c7edf3357bb41f2020ee64f4 GIT binary patch literal 135 zcmZQ%V5lx;WNWQvU|?jBVgQ4O{~3ybjA}+8;SLn821_zT1BGA+qL6`yp;`dU1S(~Q fiZQHQS=|Csr@)}@{~r|qm7p5#2NbD}XJh~XU9TS* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/edf84125f3683938326c73a7acb1c27a87da8a51 b/src/libs/libsrtp/fuzzer/corpus/edf84125f3683938326c73a7acb1c27a87da8a51 new file mode 100644 index 0000000000000000000000000000000000000000..bb49b2c62ceedd10b08bb2507dbb01539711a3e9 GIT binary patch literal 135 zcmZQzU@$1DXJB9`%H&7|(LnIu(Hg>FV31{CWMHT+#--rfe|w06IYJB!4Gau(p!$T{ a5o`{S7$?xE|6l+z8pPlN34dbv4gmmHbs=&9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/edf95e3d9fa56fd280f99e211e13715f9415d708 b/src/libs/libsrtp/fuzzer/corpus/edf95e3d9fa56fd280f99e211e13715f9415d708 new file mode 100644 index 0000000000000000000000000000000000000000..e16f9f4aa6d3b91a957ec3bf525ba6a85c7049bb GIT binary patch literal 108 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFPEV#F{d;&zJQZ~K^7#^P&`M7 iAsnodVGct(kO3rxffNT!EH||%J=Gc^2r`C&VLJffFca|r literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ee23b2e0e0981ba0768c0af7be21256ad1c31ab0 b/src/libs/libsrtp/fuzzer/corpus/ee23b2e0e0981ba0768c0af7be21256ad1c31ab0 new file mode 100644 index 0000000000000000000000000000000000000000..960dca289a35242cc8b093c1c90cfbfd92aa78b6 GIT binary patch literal 27 Xcmey*00E-^VStf=LEwL>R%#poqVEiT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ee4143cba56a62392cfa98fcd0198887fd360b33 b/src/libs/libsrtp/fuzzer/corpus/ee4143cba56a62392cfa98fcd0198887fd360b33 new file mode 100644 index 0000000000000000000000000000000000000000..975d2f9df25258fadfc300e3623507b2c1678439 GIT binary patch literal 877 zcmcIju}T9$5PfTtRU5_1fMR8t4-kZ;va+$gViCL|5JU_j=7h5l1#3(H#b2?pNNXWN z!1c|{?IPg}TDUB;b8p|?%)NITdZ)M!0M3WL+~vv<V>|?^ifKoI!RVq4XUp(gaKH_- z=N?w3Q(?S+_PbbB8n(w=D^f^15U3hEJdj1mVxb9hnNDlWTKCeKh6=nUT1MJmy6_;6 z6js~fzjiQ5m85lc&Ei)EHOc{^=Ndkqa8I!qH@J8a?rxo-mMqyphsvR^l@llMF=7B5 zkBmd3-gLw+&{s^%@H-Bj7aYk;2=3EaSvlOL<o3{NThp=i{b$kWFHdr2+isH@i*1|R z<zue>!(WsQ|Gk-e-}<sP8Rse|Jb!>uiu4(>@0LWRnL<u{3%pI6fr;FvT6D%ERo2^d G0(=4Lw3ST& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ee59b9d2d302cdf3b5768c78d6438da6543eb3ee b/src/libs/libsrtp/fuzzer/corpus/ee59b9d2d302cdf3b5768c78d6438da6543eb3ee new file mode 100644 index 0000000000000000000000000000000000000000..d1f9bebadc3ca50564cfece7ce13379a69a3c31f GIT binary patch literal 114 zcmXSxW`Ka-4D~HgCWGh7m6bZx42%pVnYpR?r6uvH==_SzlH~l9)OrSFMF_!qjw%*w PHK1`YlYl0G6obS8?*<^t literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ee61ff2e7e4c8640e4451e780a264b3171088569 b/src/libs/libsrtp/fuzzer/corpus/ee61ff2e7e4c8640e4451e780a264b3171088569 new file mode 100644 index 0000000000000000000000000000000000000000..d420d4f229f98352bc8cfa12656085a92668762a GIT binary patch literal 81 zcmXSpude54XV9r;_+8)f9|AZTpultG%1WRN0~1UDME?USg7AMbFt;->R{v*bsBWot Mblj)Q$h0LB0Edzp#{d8T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ee629945ac1d7129ea5cb4514c9385ac38a8423d b/src/libs/libsrtp/fuzzer/corpus/ee629945ac1d7129ea5cb4514c9385ac38a8423d new file mode 100644 index 0000000000000000000000000000000000000000..a3f0895fa048b45d2211ed7903047d26fbd223ea GIT binary patch literal 432 zcmb7=F$w}P5Ji71G<KquieP17A%b>-C|C)CHwYG62(pN)HUYKL)&p$mIXu=17RH}! zkhBg=CV4aYlZhGwQ1sneMrTHvF>e<OArTG%IuW^R4>0l@Q7)kc*6Cqdb*y#+QVG%G z>268EVJ_3t%$vZ+Od2`wWJoCMT8a6LP{5TPbP`IUf@k)E9I&#NHS^0(L(5-}3$cdi zsh9)(XW>_v1!erBB6VDC4w2fHA?>8a3wQa<92A@u>El*oXw!ju__0e%j8WYf`;hku UZI6$Cqb>7V%s|@n)#hB{3*Bja(f|Me literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ee7613b93209394eea757ba614a0b9277f792d9b b/src/libs/libsrtp/fuzzer/corpus/ee7613b93209394eea757ba614a0b9277f792d9b new file mode 100644 index 0000000000000000000000000000000000000000..b2b5e04a91b4ffbf6cefd279739584b4986f6901 GIT binary patch literal 134 zcma#o%VUs?XEbCes%HR#|3LKLSD&G}nt_3lK>;Yz%D_-vtgHqk7=fbdAVol6#=!6r n%-{r()x~op2?7R128Nu}Jk{j<ypp_p2L=WvhGagl84T3`W#AS! literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eeb1ad989122ab36a0ae2c3182b9f54e62051927 b/src/libs/libsrtp/fuzzer/corpus/eeb1ad989122ab36a0ae2c3182b9f54e62051927 new file mode 100644 index 0000000000000000000000000000000000000000..9e76bc50cfe51e6ce21a46b928182b2da8277f4a GIT binary patch literal 220 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO vsNIyo4#)wS!vYeez??d;-5@jA96%%(sQo7h7#SRjXEIbXGAPch{>K0SR;*Ll literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eeb2d99d630e9990996b4b4b23c1dbf97fd75747 b/src/libs/libsrtp/fuzzer/corpus/eeb2d99d630e9990996b4b4b23c1dbf97fd75747 new file mode 100644 index 0000000000000000000000000000000000000000..e5ce972590f99c4f998f5d567e51cad8ef6c776f GIT binary patch literal 592 zcmZ3^z+g~P&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vZbO*A6J-d@ zqB%lf%jZCyfN%_rEqdHuTAX48@+=UfGB9Z4_7Sy$1%JQ}bbv5acJ<7J2S{ps0cSM> dFnE-~0aRVA222!;4Atf85Po%a+<%7o^8rcqS*!p6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eef72ee9c4c35ef707acc959c7294d5ced10fe68 b/src/libs/libsrtp/fuzzer/corpus/eef72ee9c4c35ef707acc959c7294d5ced10fe68 new file mode 100644 index 0000000000000000000000000000000000000000..3fcfc4c6df1132fb3e9c2464c17abb90df674366 GIT binary patch literal 109 zcmdl#@h{iQm(>gm4Bylpq<|C<C@?S-1F3389R>zQAYIJJPz_W8V!}uu1CAi#KrX{M MAQJ?ztFNvG0BJ@M!T<mO literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ef45313934c87273348fe3949e49050dbbf213e0 b/src/libs/libsrtp/fuzzer/corpus/ef45313934c87273348fe3949e49050dbbf213e0 new file mode 100644 index 0000000000000000000000000000000000000000..66c32c6c31b106c72434104f629b01d826e37450 GIT binary patch literal 172 zcmZQzU@$1DXJBBc%H&7|(LnIu(Hg>FVBln6kY!+GV5ly}u7(My5TXXGpa`oW-ytT< g5dxb!2WEEVoBux<IAA;mhVS2Dc41M;P|d&q0HMqqVE_OC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ef682b9f5a22ad759caa4b598d67c9320278f488 b/src/libs/libsrtp/fuzzer/corpus/ef682b9f5a22ad759caa4b598d67c9320278f488 new file mode 100644 index 0000000000000000000000000000000000000000..c13e5ece2119bd10ff4c4973f117d56fcddf76cc GIT binary patch literal 145 zcmdl#;Xl{Qm(>gm4FCQ+NC7DjD6VEyU|?WmV2IbtV<?FSiWFsXq}Bsz5coe8NK^y0 z02MG~$Co971Z^4gfckPuQ~TlrIDr!X|Nr*|ssc&<_f>$YP6Vn3s!5H<W-Cy6@f-#K DQQ#!W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ef79e7c334518bfdd1265db7480f0cae019360b1 b/src/libs/libsrtp/fuzzer/corpus/ef79e7c334518bfdd1265db7480f0cae019360b1 new file mode 100644 index 0000000000000000000000000000000000000000..025716c4a5c085a706e64ec9b6249cb223583cbb GIT binary patch literal 779 zcmb7CyH3ME5F7`i*j*GCNI^V>1QH@pP?3%v@de103rh&0m?~GK0t<;xaL13O;S+$4 zWp>ZTghvn~*}hxf?#}F7DuSC72*#NtISe9l1{97_T{vBApwk2PfZGRIaz)@z0*@nG z^_qa&516o9|Mow*iGelfnc!P)1@zP5m9fA$kFu#x_AIP9Q1uzyL{b7fOu)0eO0+EK z&bXlj#!;b6_=))7?u9SWB!eo%eU?Yl`pkq$;yEv(#sUpBmbi{_Nu12#bZ+<SMiU#< zqxhg?ibg|Bj+JIR0<*y#a%d)kP82~%eGvoQ8DkU<gnZ!VPlxLHAGyLt_Qk)}zNbI1 zIvA|$5$$O=fIa0LwV?-UXc?l4@YaE{FkBD|>SBuol|o9bW=X46{b=r*FXlTp-6{5S T_gK4c{||O=S6KX~G*Ws8Q^UJK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ef876ed45ad7c879018480241dd5ba5f7778f462 b/src/libs/libsrtp/fuzzer/corpus/ef876ed45ad7c879018480241dd5ba5f7778f462 new file mode 100644 index 0000000000000000000000000000000000000000..1626e837f696fd87b995b7f28bb37c7098d21bd8 GIT binary patch literal 121 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGD3>0Amv4MnQF(X5@!%QH!2_j$sqCx?rs2ZpO kti2Ab2P6apYCvNc7>pPjz^3@e8)O3ojROCd0I4Dd0E2%Y6aWAK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/efbd22c13892a1ea4752b6cfee6b3159c3d5ac9d b/src/libs/libsrtp/fuzzer/corpus/efbd22c13892a1ea4752b6cfee6b3159c3d5ac9d new file mode 100644 index 0000000000000000000000000000000000000000..a5e0ddb5dd732c3ef364e2879a7ca327225c9b61 GIT binary patch literal 174 zcmZQzV5lppXJB9`%H&7|(LnIu(Hg>FVBln6kY!+GV5lyxZv%=EP%}petZxofw{Sa% o!2#icO!}n(VlzPmfMmNckbugACI0`1%YhjNFz)~V|DOZd08CdDp8x;= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/efda9a2eab8bbb01e62ac01625b8cf4909a1198d b/src/libs/libsrtp/fuzzer/corpus/efda9a2eab8bbb01e62ac01625b8cf4909a1198d new file mode 100644 index 0000000000000000000000000000000000000000..3a304f04e1e909a02a7bcaa3000b9f5c91466660 GIT binary patch literal 69 zcma#k%VV&OXJB9~O8qaK$p8lb|Nl2)U?{EzivIUyV5kN$q#2k5z>)%t5Je2t+EA8j FH2@IC3-AB{ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/eff1b9d15d4bd60e4842fde37d048c90661d6121 b/src/libs/libsrtp/fuzzer/corpus/eff1b9d15d4bd60e4842fde37d048c90661d6121 new file mode 100644 index 0000000000000000000000000000000000000000..7a5ce0b5f98be39b4aa94ac67c2f75d31974d87e GIT binary patch literal 102 zcma#o%VUs?XEbCe%H&9`X8?o$|Nr~yGgMbIFfcMOv@$T%7OOE-7c&Ay)FBEOEEyPH rf|;BQ46-0q)x~p!7>pSha#Hi+lk@XRit-&892l4w7!q^xlld3`Q+*Wv literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f003ebe145288bc911d8840d4780a0d4ddc55373 b/src/libs/libsrtp/fuzzer/corpus/f003ebe145288bc911d8840d4780a0d4ddc55373 new file mode 100644 index 0000000000000000000000000000000000000000..6a902d52f117ccea35a377f138291aa9d8e42071 GIT binary patch literal 115 zcmX?@k(yHw&%nS?l*v(&3Zy~c|9=k#hU#ht21W><L9v+8pt_h5EXMHl>(}^P28I%_ ht~`#^dWfR`x&M7pbODt!R2MG>=~9Q9!w?8$000di7vcZ_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f0052c8d2126b9b7ba5c26369b78b36ef25fe0f7 b/src/libs/libsrtp/fuzzer/corpus/f0052c8d2126b9b7ba5c26369b78b36ef25fe0f7 new file mode 100644 index 0000000000000000000000000000000000000000..0fbf4cebbaa8fa98c50ed2bd616f54cfc8621d98 GIT binary patch literal 193 zcma#o%VQ{sXJB9`O691}1kyn8|Nnnq28QZt1_n-u07GRlBSSR^uU3bOSVL)$5?KaD zhSKWdIhhRhU{QpA#`)L)ND(6^#6Xat)i6WBx;bIS34yu740FIV2LlJlWsE?Qfk6Q* H1R|;dT+Ao? literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f008b22f42c5f61ed903270d859bcff244c389cc b/src/libs/libsrtp/fuzzer/corpus/f008b22f42c5f61ed903270d859bcff244c389cc new file mode 100644 index 0000000000000000000000000000000000000000..23d27ecf244380f6cae67438d89f0eae0a697a1d GIT binary patch literal 230 zcmdnbz`!8P&Q<*%NIOUY2_R5lV5qKcU|<BXfdmr!|9=oi5hekmvq1z5Gyqi>1GNYM zHL}126~IR1rWU2A#wX|Jl@#UY#HVHEq=L->+x!3je@UQfh(ZR&Fb0N`KrYikr~rz6 bKnbh>WbJo;h!l{?z`_s!=2rh_WH<%@mt-Ub literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f06191d918adb094a1463bc1d3203cec72aaa384 b/src/libs/libsrtp/fuzzer/corpus/f06191d918adb094a1463bc1d3203cec72aaa384 new file mode 100644 index 0000000000000000000000000000000000000000..0829912aade1039bbb343e5d7e0ddd35e172736d GIT binary patch literal 105 zcmd1I&CJWp&8$j|PcBL<&WO*<D@kQwU?|?r5crbe<(Fz80CJgsGt{>*fLIKSU;!Y5 osaOvJrs;uHRTnEVFi0>IGcr_zaeO9FVSKz^9z$xq!~dFi0Pw;e<NyEw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f08e173307472c01ab182293fcd7d5bb9c9d305a b/src/libs/libsrtp/fuzzer/corpus/f08e173307472c01ab182293fcd7d5bb9c9d305a new file mode 100644 index 0000000000000000000000000000000000000000..566e36f7ffc6d770fb5bfb2c597852a54947babf GIT binary patch literal 441 zcmZutu}T9$5PcH@?pYmLsRXPNs{`>0!6t!Jg5PkBDFjL6HUVKkOPhScHU5a;=Lps( zSY&-OIWUL=J2U(C&70Y&1h}jK)OTU_%t%Y=+hcDRA<s>tfTyq80l4ZC$@VY+d0I9H zjvc-LO@It|>lxzClF8GwGr=Z}j|~HcEh1&Tm0VAW2%NUkxGRYqZ|xUCNoLWWcr9E* z!?wr$YDP4rbi;8rjAq7bz?ta(Aaa`?KZyn7@VzSLIQm`7zJYu;HN|^jSI&0oQRC1y zBIi27vR=gKXpZcR%^qqNPP{N@$?HGn^b+{+gpOhvx>ef0FV<_{XQZ^!Ekq-J0N{^i Ab^rhX literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f090460188c02c587bdfa1063474c824d9894dcc b/src/libs/libsrtp/fuzzer/corpus/f090460188c02c587bdfa1063474c824d9894dcc new file mode 100644 index 0000000000000000000000000000000000000000..748e236078fcee7dc41213f5f7097b2bf54a5ada GIT binary patch literal 107 zcmdOk&ts5`XJB9`%H)V*0@6V6|Nnnq28QZth6YAP2B0htNS3R*m=P$Z4pG8j4W<Pc k7&sXiWEp_UDh%cbfyIQ|ffNTr1H&8+2B?7yf<Pe;0OU;$(*OVf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f09b1112d054e3b2aae1a7964279716bbeca47b4 b/src/libs/libsrtp/fuzzer/corpus/f09b1112d054e3b2aae1a7964279716bbeca47b4 new file mode 100644 index 0000000000000000000000000000000000000000..e8cc83b1b6ef54592afc8a388eeb48015ada7f09 GIT binary patch literal 210 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)iB^W@KPcEM{h4WT<wS2?RGm1Q?{JrM3M3 z|DTOP0i>|Hm=R(?9Z&-tr~wUPU@&HEm^l+@15ic*B!yEgTpxmgT`fW$&O+D=0K#A? AasU7T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f0a0ffc1468ea117395a807dfebda2452d16c499 b/src/libs/libsrtp/fuzzer/corpus/f0a0ffc1468ea117395a807dfebda2452d16c499 new file mode 100644 index 0000000000000000000000000000000000000000..f5760d56eabf22d44ef4de608dd5fcc58d7f3125 GIT binary patch literal 255 zcmZ9GF$%&!5Jle>N^A`X7Q$9)lSU95K@Xs3uu738fkY5oFm__+0lbTNvh`<UEc`I@ zcW3_&@Ab$TAAmB8(poP0zTbm$V6b80swu8AxYG>Q8YL`MjRss7vWc=d)vkIDx%f^d zxAs`rqTIloQTU=}wA{+SvABx|*OoWj(=4jF#Y#ozCfL&nS8UaF`y*`LTD7b#Dy&F4 LPJWyLG~j*!AF)7m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f0b8ef27c8ee16b81872b1157ee461b96c8b7f45 b/src/libs/libsrtp/fuzzer/corpus/f0b8ef27c8ee16b81872b1157ee461b96c8b7f45 new file mode 100644 index 0000000000000000000000000000000000000000..886d46e96426c4c259a9a2b896968385c1f1d8a2 GIT binary patch literal 284 zcmZ2JM~FdyL4iTIoq<7R4g&)N3j+rbGBU6~0CN8SXJC*8au}+M>w(;&Opa6#4Fvxk ztsx8sBTfPe3^?J204)OnkUb!PFvQRZt_G(?hMWuzK*ylE2FOD-2;H(oFo*||@p^d- alJP**iHU{~Q4ophE0Bj7d_hJ6{R{w3i7$-+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f0ccba58f670dc2fd99df17c149496c0649707fa b/src/libs/libsrtp/fuzzer/corpus/f0ccba58f670dc2fd99df17c149496c0649707fa new file mode 100644 index 0000000000000000000000000000000000000000..774d78651c96c47d266f72bb57d4418613fb81c8 GIT binary patch literal 135 zcmezGdy?y=u5NsM<{#bS)cE++?s~@63=A(BAYlK*{~!jJz{_e7t*1Bf|9-BQ5DrLy zp%kboH#HZC7?^?F<ou!neO(3yMlb>jR2MTsFhey%;7f*=TGdbhR8b5xv$~o=mf`<@ E0G`bzQ~&?~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f0d303aa6beb3c3f4c55158bdaeabdfa635c27f1 b/src/libs/libsrtp/fuzzer/corpus/f0d303aa6beb3c3f4c55158bdaeabdfa635c27f1 new file mode 100644 index 0000000000000000000000000000000000000000..3b731b8540be5b5e530440e0b8f16198c319cd5a GIT binary patch literal 139 zcma#o%VQ{sXJB9`ngk>u;Q#;sz6{LO)eH=bK!Mcwvc#Oy)c68U1`b(}NCS|?0A?{T z%wcE;DglzhK#BvTz3m&2s0U(@UMMI^<;biDtKnd%VgMTN!N8!$$N;ne42r864rUZE F001jP8N&bo literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f12678cf2e168188494f2e7aab6b070eb439d2c2 b/src/libs/libsrtp/fuzzer/corpus/f12678cf2e168188494f2e7aab6b070eb439d2c2 new file mode 100644 index 0000000000000000000000000000000000000000..69a1cb34d246fbb69b3b094013117fc9b7215337 GIT binary patch literal 75 zcmYe!kFP3;uP;jFU|?X#1Y#ig|DVDCKZGgD@YSFX1b|!}un<%N$Yuj#W;R`2ODF&U Dqf!p; literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f12c261d98893669a7215333f8923b0d2ea1a81f b/src/libs/libsrtp/fuzzer/corpus/f12c261d98893669a7215333f8923b0d2ea1a81f new file mode 100644 index 0000000000000000000000000000000000000000..7f3d6db560b322a70fde3aaec24c7b8396f34327 GIT binary patch literal 102 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BLoA*Knnb$tsyeH44e!M c?JNv)I2is(fMnXBTK@kB8lwjU41a-o081ejqyPW_ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f1610db081c181b291201ff4cde6fdc1893952cc b/src/libs/libsrtp/fuzzer/corpus/f1610db081c181b291201ff4cde6fdc1893952cc new file mode 100644 index 0000000000000000000000000000000000000000..fbc5b094f117c00c9ce1591e4e01256ce47466f1 GIT binary patch literal 99 wcmWgiU|>*Vzzx!XQW6Z+47V8cd4No>Y7lU#u4ZsxV9>({fQm({kAYMJ00Ny4F#rGn literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f1a4b29cfff5569fb9b9daa65b0e3440b039615d b/src/libs/libsrtp/fuzzer/corpus/f1a4b29cfff5569fb9b9daa65b0e3440b039615d new file mode 100644 index 0000000000000000000000000000000000000000..e677be7f59bc9460eed18a1b27032774da7718b6 GIT binary patch literal 99 zcmaz~&aWzsXJB9`%H&9`2hxPV|NsAep=v}K4EjKT3#7j|-XPPUy83?nAKl{Ac#sH# J56H}8)c`0X6leed literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f1a631ef4173d800f78500a86921102ff19ec5f4 b/src/libs/libsrtp/fuzzer/corpus/f1a631ef4173d800f78500a86921102ff19ec5f4 new file mode 100644 index 0000000000000000000000000000000000000000..526b967e4d73cc1976bc654e7b876933e163486c GIT binary patch literal 422 zcmazqEl!P(XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YjHh&+c5j-d-+<?F*l85nxh z7^;gIfhMbi3<L8m85$T~f=uURV2}mc2UIXe$S5x-6(q)xq`;KNP!i8j#KOUlTEf8K j$8d=VfTSPj6%b%#!J-X|kEri10zSgxEHoidF#HDq;0Vw6 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f23ca8c2db08c83d86b7aa9a7bc044d0d5368629 b/src/libs/libsrtp/fuzzer/corpus/f23ca8c2db08c83d86b7aa9a7bc044d0d5368629 new file mode 100644 index 0000000000000000000000000000000000000000..8da29b603c573db5a33cfa02dd2cea8e794415a8 GIT binary patch literal 108 zcma!NWMJ@*XJB9`%H&9`2hu?B|Nnnq28QZt1_q!cLu!0kVoqsld;uo|gDj9=%-AqT ah#?%Lkbz+iLpy{N22va#5$s|h@oE5*hY}+I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f24000f05837427008fc2903033e3aa91bd24e4b b/src/libs/libsrtp/fuzzer/corpus/f24000f05837427008fc2903033e3aa91bd24e4b new file mode 100644 index 0000000000000000000000000000000000000000..2c7bd2ec6c673fea972c737bc384ab825c6284e5 GIT binary patch literal 106 zcmX@8m&Z_2&%nS?l*y3_qJiMQ<9}ZUhH3!@21bYgLv=AD1XqIu6oA<J-~ay;fwTiB qJA*7x9eaDv93dc|fkC*Pfng4ZKxuJmVoqsld{KT*L1wBgQyl=Y5Eu&p literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f274eda5fd5ad1ee69b55fbdfbf40dcc532b0842 b/src/libs/libsrtp/fuzzer/corpus/f274eda5fd5ad1ee69b55fbdfbf40dcc532b0842 new file mode 100644 index 0000000000000000000000000000000000000000..0fd098879c3367455ccc98ee2531313e78dc6ae2 GIT binary patch literal 141 zcmZQzU@$1DXJBBc%H&7|(LnIu(Hg>FVBln6kY!*j#;$+~s0v9z5mpnve+QYsz))R0 XM+jyrh^~C||0e?nT%?%cH-jDk!U`4F literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2a8a2e95b355b99543d2c166d3371eb64b65d72 b/src/libs/libsrtp/fuzzer/corpus/f2a8a2e95b355b99543d2c166d3371eb64b65d72 new file mode 100644 index 0000000000000000000000000000000000000000..ee383a51ec208ca0f5142eb3ffd26053d30075e6 GIT binary patch literal 1003 zcmbVLF-yZ>5PiX*UkifNxzM3FNvWeQ#-)ScZwMVS1Vl=sOCmIr#m(-W#b4m+PjT)a z5JB*K_kFR}kZR~bE-zm$ckk|A!rm2bLjdF0L<hXn<WVjVWEtU(Js4izMB%6b(?0Zo zoT$@=hdsQ{F=Yh(K2BgXxc|nG362$uFcF^&BE)0H2vQgkeOFkPcwUxt^2P{oIb{x( zHZu(v`jD1_fY-IsypLit!IY(1sTSD!)O0f=c>c|YEY!9OKK4QRoLN3`i4RYmkq<WD z)6!n$XFf$Q<@xx_`7HSm{4<|wJ`b9q_I#RB-q*VMY|7{Fed!WSTI}lyv!*Ow7Ai2H z8>rt^=j<G(1cO@UBvz$Wp;mpX)it|djU%U3TehB7t9S9;I|Uh7xmIemB-O#dwQK#W c!*?r3^<lBf)en*|&rL7G$AqVSAmnfU1$VK}UjP6A literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2ac90d7e62eac0fa3ac34fc4439f63b01333f4f b/src/libs/libsrtp/fuzzer/corpus/f2ac90d7e62eac0fa3ac34fc4439f63b01333f4f new file mode 100644 index 0000000000000000000000000000000000000000..8748ec7ab7187bcb61c02fda3fb3026baae8edde GIT binary patch literal 108 zcma$5m&YI(&tS_?l*y4=&j1Gh|Nr-8V5qKUU|?iW0E<)?t1(m;PX~&rLzFOFx^&3| r$b8Mf$-tlk1VRkP4F9v^lk=-e;~5x$2n>ocQ*(e~c_l^pISlatmkb)E literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2c1f02048e8ecbfca4799527fcdc2497b8b7aed b/src/libs/libsrtp/fuzzer/corpus/f2c1f02048e8ecbfca4799527fcdc2497b8b7aed new file mode 100644 index 0000000000000000000000000000000000000000..291f4fa18d06853c12c663df8f0770f8ce03a59a GIT binary patch literal 102 zcma#o%VUs?*I{5N%H&9`X8?o$|Nr|kFjQAFFfcMGfJLf{)zqqs8G&Nz5G4!-3=J>A nOil&{6^7zDLJY<X3^}QJ@yYplCAzwK`SHo6#U=T<@nA&&Pb(G* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2c774553dde8a7d49a9ede22e745a3d65d6494a b/src/libs/libsrtp/fuzzer/corpus/f2c774553dde8a7d49a9ede22e745a3d65d6494a new file mode 100644 index 0000000000000000000000000000000000000000..b57019091c57d07ab34651f74e4b62ff01e51829 GIT binary patch literal 80 zcmYe!k1r~zs*g|QU|?X#1Y#ig|Np-~gvB7rVAux&T*dJQnFiI>@$s2fe{_pe<Dv2l VsonMQfB*hvT+Q(P_y7M4b^xgr8kqn9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2e7b8bcdf840a826ecfffb21ed558e67ddb2102 b/src/libs/libsrtp/fuzzer/corpus/f2e7b8bcdf840a826ecfffb21ed558e67ddb2102 new file mode 100644 index 0000000000000000000000000000000000000000..3338ba85f0b50dee908fb9485abbc1a4ebb209d1 GIT binary patch literal 104 zcmY$>%VUs?XJB9`%H&9`2hu?B|NnnqCNPVUK><ux7ppN;7Yi~}SF3~h3=9Sg3@^b< jP8J4PhT=KA48{x$IjMQ^$)$;<IjQk54WAeoszDe4?bH>T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2e810e500e5137a530f663b285ce84db75430f9 b/src/libs/libsrtp/fuzzer/corpus/f2e810e500e5137a530f663b285ce84db75430f9 new file mode 100644 index 0000000000000000000000000000000000000000..d78a7785c14e1b2d432c5f5dc89565087d681835 GIT binary patch literal 348 zcmaJ-F%H5o3_LHWY>3W`6&oMm4e*7CAwva1r~wuaWvlv!?);H~aB+%MF>q>9$7f%B zaho%)4nR{EzU7~YG423WKzQ=*ez3G{g4yFT2Uf;mK*w|vkjBTd&V>_!iPC~(@9UyP zS0?cc2Klq&JM9|8RxZF3*fLD*OdF}|kxPWZMvAcl0_DW672GroOIr9bMqB%A?nrZ| d;MhWNZ1#`QpBI=s)Qi>n1;<9k5r<?+6d#>iMScJP literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2f0737ea6641610a694ddbec3209073963601d8 b/src/libs/libsrtp/fuzzer/corpus/f2f0737ea6641610a694ddbec3209073963601d8 new file mode 100644 index 0000000000000000000000000000000000000000..f75cf9aa8b252f4124fafe49ab167cf75c7bd43c GIT binary patch literal 132 zcma#AW@G?^qD+p|dI<CX|Np)W4As>P+wcJ0Z43;I48kBC)x{ttNQXMa00wI)&A`dP mAj?oZM~ETt|6h=pa61FToNo*a`@T>7zn@X^Wi<l_Lp1=K$0^PL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f2f210d434056dce3861223e3b7024dd6584526a b/src/libs/libsrtp/fuzzer/corpus/f2f210d434056dce3861223e3b7024dd6584526a new file mode 100644 index 0000000000000000000000000000000000000000..8b7558030b88c9af20d1dd83222f6da4fb29b70a GIT binary patch literal 84 zcmdl#@h{iQm(@%H3=9m+)y0gAKpF%VTZ1V9AiuhrfdNFpNFW1_AmTu7F(X190HM_l APyhe` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f3a82e8b38f954c0be2247de3b6eb3910839f63d b/src/libs/libsrtp/fuzzer/corpus/f3a82e8b38f954c0be2247de3b6eb3910839f63d new file mode 100644 index 0000000000000000000000000000000000000000..fb40bea25a26071cb3356854c16ce25728526c7e GIT binary patch literal 162 zcmZQ%V5lx;WNWQvWZ(>tVgQ4O{~3yb44@DLgF6u0g4HloS2HjGg&-tQcqPNimHsSY zVgLXC*KTBBFkoc(|G%1vVLoGVe6?S2iCIp5a$-)Z>Gzfvpu*}FkWK{#b$_68Fwg{% T-2Z_FF)(1Yaix9>P)j=iD%mh| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f3bcae440cb075f0afc3e3b40cd493d7af5a31ca b/src/libs/libsrtp/fuzzer/corpus/f3bcae440cb075f0afc3e3b40cd493d7af5a31ca new file mode 100644 index 0000000000000000000000000000000000000000..0bbb80d28929350e7ae4ddbdd2d584fed4b96c32 GIT binary patch literal 69 zcmaz~&d)0;%H&{RV2Dqx*J5B`WN-wsp+J<upbrEX463W+<1_#07N^EXr*_vfu7)UJ JWH<%{)c`Sy5@-Mb literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f409da789abb07a47457bfd12537acdd27b4d2fb b/src/libs/libsrtp/fuzzer/corpus/f409da789abb07a47457bfd12537acdd27b4d2fb new file mode 100644 index 0000000000000000000000000000000000000000..00121c441ff0a60391e4134f97b1d6f45804e441 GIT binary patch literal 255 zcmdl#A&)^ao`Hd(D3c?#9!LYhf42X=3=GxP3=E763Sg1yVl{^9Vn&AQa&-m<8=#Ob zgDDV$04D>35s;Dvs%5AKVxQtULJW2PVSq7DL7^mHA-~9;fkA^o46Fr6Faix%0Mbxp z!Z77v8feNv28PbmOpbbnc443@jw+BsRv-%oz>djx0CIs6xSh(tV8)<}=}xdi!OjH$ Dx#mEY literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f40e3a584166733e7c1f702690fc18a9b6d8bddf b/src/libs/libsrtp/fuzzer/corpus/f40e3a584166733e7c1f702690fc18a9b6d8bddf new file mode 100644 index 0000000000000000000000000000000000000000..de2f3e9e872fa3560869d7ab43bc4c1b27c4bb7c GIT binary patch literal 144 zcma!NWMHs}XJB9`%H&9`2hu?B|Nk#A%~bH;mw}<WnqeCR6fgl5|F_)6v@IVd1d?E2 zU}O+x5a42{E(Xd2L3On{m}X$GhSCh23=FbBWu?`{bA%We#26U90cGYe34rDQ|9{WI Kz+eb+1tS0$;UcI2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f4108aeafd06233e7a3f4fe63d557368c8ceb528 b/src/libs/libsrtp/fuzzer/corpus/f4108aeafd06233e7a3f4fe63d557368c8ceb528 new file mode 100644 index 0000000000000000000000000000000000000000..454cb1b9dcf34b2cee8dd609b8711bc5df53957c GIT binary patch literal 120 zcma#o%VQ{sXJAlHO8qaK$p8lb|Nr-8sAkA!U|<9?7^15g7%nn0FbIGotE-9`8LF$* z85pV<RNR(WLv%1Oa56B+GB7ffS{Kg|0*d`tU=VI+V3@<;AkV_U0fa#P3Lx?S|Aqhm IXK<|s08URDVE_OC literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f42560134cb6af8dfdfb8a9570c93eead6b7ac31 b/src/libs/libsrtp/fuzzer/corpus/f42560134cb6af8dfdfb8a9570c93eead6b7ac31 new file mode 100644 index 0000000000000000000000000000000000000000..b92c76049dd2074338ac79976a6922f744ce9f49 GIT binary patch literal 72 xcmey*z`#(=P+c9%Foy%kWMKIJzq(qdx|#_n2$I4k2b8QXtOf#*dXNGj1^@z;6}kWb literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f429817dc2960e7da1db52681ccdd784ad1dab1c b/src/libs/libsrtp/fuzzer/corpus/f429817dc2960e7da1db52681ccdd784ad1dab1c new file mode 100644 index 0000000000000000000000000000000000000000..a41fffba58a52ed432b3ce1700a88af7117c7e56 GIT binary patch literal 73 zcmYe!kFP3;FJj1KVBkotX8?o$|Nr|!SPY^J27MsFRUB`SX;57qAD{V0w>ULEKDE0( Lb~Q*5l(QND6rdMF literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f441070d3702c9dfd3745c6b2187104333103504 b/src/libs/libsrtp/fuzzer/corpus/f441070d3702c9dfd3745c6b2187104333103504 new file mode 100644 index 0000000000000000000000000000000000000000..31d0b19b8e570b37f27b7aea1746c585a1b5ec6d GIT binary patch literal 164 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)iB^W@KPcEM{b=c9;nSH$em#q^G5|{Qv)- sjX?pVtQx2Sti2AX91hfg#xO7#F*eMc2{a!lqX3e^sTQse&VZQ)0G6U9sQ>@~ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f444c8a3e366fcbcc5cdbc0511dc3c3d3f3b5089 b/src/libs/libsrtp/fuzzer/corpus/f444c8a3e366fcbcc5cdbc0511dc3c3d3f3b5089 new file mode 100644 index 0000000000000000000000000000000000000000..c35c3001c483b48bcdb5f150ebf6e351103b3c9b GIT binary patch literal 252 zcma#o%VQ{sXJB9`%H&9`2hu?B|35=@weNo*ixG%Z<I56rN>k$tGIA4>6^b(wbvYRr zWEmJafO2yf+99MckOB!Xw0&bBS|I~NJ;(x(H3bMWAtnM%Mm7_u&L652OfeLtW^&X+ m)G&B30No35EJ#wZxOx`I<$C%I3`_zHIv}w*49KQIEd~IZ;wU)) literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f459917db3554315251ee96735392fbf89713064 b/src/libs/libsrtp/fuzzer/corpus/f459917db3554315251ee96735392fbf89713064 new file mode 100644 index 0000000000000000000000000000000000000000..6af8d28dff39de502699f5a678ab535d5384d22c GIT binary patch literal 75 zcmbREfB)x|FRK|C*chPTKLm&{FargW^NR}ffwGJs$^Xg>)y0eu%uvn1#K7?H=l_=f KKqgQNLp1;f#2YC9 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f471537f0f8cf6e4b73e737f3b18ea5fd6eab702 b/src/libs/libsrtp/fuzzer/corpus/f471537f0f8cf6e4b73e737f3b18ea5fd6eab702 new file mode 100644 index 0000000000000000000000000000000000000000..c803e3db7a8b6a0492d31790d3ed8a2a6ef674d3 GIT binary patch literal 1576 zcmd5+J5Iwu5Pf4TVRwKlipUWHA%tS3p$ZZwh&Y0)6e*xcsMvxEx#0-zI0Ux=T5doC z%j_rXcpVdh3s@_$W_Ggk_PsaBGu+<f0A|x@a>s98QpzzP1VAPMF(>okoGQ4)$m|Rd z$0$M^bYFRP4TXee6PZlS@fDII2PwtA*=&3tH!@uk4G6RZA=u%g{fdFBh*Rha*qeMn zdIWVr*8HtG{KD&@!%E9_@ImyXWe>@NU$caF%wfrJLPY!!wqH4Tx4sdlY#Ol;MH%Lk z^^_6N)5daa5dx%OM(-cwmblWUGgtX5Pdqc&Rm)c#)g3Hlenq<{m{d=%RULnw+kk7; z<MBM~?eV)GBn7~tmMS`fjg-V=hKrY<j(X-@&W4*PYE-a{wqhLCFk%VcKd>>QZlSgg vTT#o;w`-(!+i2xJ6u8kuUo{r<U5GXRs%62o3BYQ*Nmes^vY2LI2)yA7d+gtq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f47cb523f7a32f4306a1b9f78486018299f518f5 b/src/libs/libsrtp/fuzzer/corpus/f47cb523f7a32f4306a1b9f78486018299f518f5 new file mode 100644 index 0000000000000000000000000000000000000000..e54786f41d3c278c76e417608e93d79d517395bf GIT binary patch literal 102 zcmY$(NX;pTXJB9`%H&9`|Nq|?$Yf+-sIFE3GJtfk8W0Nt`RWV||Ns973mP#nyaX|1 k!77XA@G=-PFyy4>#V3~*rvjA&1<b$#Ks83G$*v6502iegoB#j- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f48bca386983cd42be106864d164cfcab53aceb7 b/src/libs/libsrtp/fuzzer/corpus/f48bca386983cd42be106864d164cfcab53aceb7 new file mode 100644 index 0000000000000000000000000000000000000000..232fd5822666309a1ce9c9d381fd6fa9f6b6ad00 GIT binary patch literal 3486 zcmZ23%3x4Z&%nS?l*y3_qJiMQqcw!Vz+l9{Aj`nWz))R`Q;i`fg9A_vx*>PqhA@98 z$`F`EbA&*a&w;rB;TS_)jse>AAF3ROV-SWA=NNlb$G}}fsyT3vLp+7W91Kqp71Rzm z;tSzBCIMiG9A{|l`OjQk42(bqP%JVmhDR(oP9d(EhRs==3<n<l|JU8fzyeMgK)s1T z05azvhyaGS0Rbh*2@0fzO6iIYQGg{Q4E=OPJ5Qk{a@@%YULrt}0|NsvR0(D@j0{3M zj}XrF7!F4DY#rERKt<rZa}X)-JfuS2VS@%6u3`|W+@?};1;vg&sPHGg_!`LAL6m+- zwbg$JfTulJ><qDzO$QSBh|&)uDPk+d>6KJ~bpdKdM$H!xw-3>f$7mD{s*pG2BwT7? z%@^P}8KlVxBZP4zCyI+E;zEXS2;+7zB7`YuOCt;+&cSGzk<5|-n5iAGH0()r4B^nj P>Zy@kZpVYNXHg~qf+Qz+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f496134873c83f1aaa70cf1c31759d03bbe9c495 b/src/libs/libsrtp/fuzzer/corpus/f496134873c83f1aaa70cf1c31759d03bbe9c495 new file mode 100644 index 0000000000000000000000000000000000000000..c2ddee7f4dd7f5450d3338da430341580b7f2e22 GIT binary patch literal 356 zcmaKoF$%&!5Jg{N;l?VEIw6&I;uSoAX9yN40wN)3lNAyx?;z%2UPJ_oad(3dj5y8A z{J*n*{$$HNrwphHmCsE!AtD>l+LTiVY<I^zD+5&QT1ZHfz8q1j$K+1q$h!YXah9tT z)g?lxQ6j8;27?~7K?yM)A<vtYRtAJw*ZtV3wbWqVwlEf^QRMs+&W!tmaqoxrr45M+ dmj_4iq-X3^Jgw87|JoolsMd=Q2QLRWA8!_5O+o+w literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f49a32dd866a767b9ca2c06451f49d926d958d95 b/src/libs/libsrtp/fuzzer/corpus/f49a32dd866a767b9ca2c06451f49d926d958d95 new file mode 100644 index 0000000000000000000000000000000000000000..55f9b225e07d9787902015ac2f278b7db1a4d2ff GIT binary patch literal 137 zcma$34*`rtnH;J03}Ep8e@1FfL3K65HZ-su#6Rri38HkjF)%VPNP{#~7Xw)!x>_Af sGcZ^~X$DS423erG((2+lLLl`F!tD$Ua~K2|_I>-#Aj}{GQ^!yZ07&gB^Z)<= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f4a8fb7ec792c5e016d1b1756d9e62cc25c4e1a6 b/src/libs/libsrtp/fuzzer/corpus/f4a8fb7ec792c5e016d1b1756d9e62cc25c4e1a6 new file mode 100644 index 0000000000000000000000000000000000000000..96e34524a0f2156eec0c8945d958b01b65f1b3f0 GIT binary patch literal 138 zcmdOk&ts5Gjn8CYC}QBKX8?o$|Nr|k#Onbi;u#qJ6=rgz)-zOBGcYnXFaU*kfJ!qt zs`VIwV(K9EstgR)V0|CiU@S(4((2+lLJYBDU<romX&{=BfuR~?Yzfd<kQqQ@L7*6D I5(C430MeEki2wiq literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f4c3ae6c1b149fece719a25b64f0ffcfa0ef4f70 b/src/libs/libsrtp/fuzzer/corpus/f4c3ae6c1b149fece719a25b64f0ffcfa0ef4f70 new file mode 100644 index 0000000000000000000000000000000000000000..e221daac04ade625d953420debf838d87d7daaad GIT binary patch literal 146 zcmdl#;Xl{Qm(>gm4FCQ+NC7DzU@TT(0E#d&FvRQSF_gpug^DscQtQEz3=IFL0vXlS z3~@jO4B7EziD0Eb4TcPQ3=G9NrK#}&oItt%|Nr}f6*4fyGQ@&;3P5cjbHUnx3RB|? I(5+?w0B-9fH2?qr literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f4d4b58bdca492a6ed003c2b49a26f3f4ea683fe b/src/libs/libsrtp/fuzzer/corpus/f4d4b58bdca492a6ed003c2b49a26f3f4ea683fe new file mode 100644 index 0000000000000000000000000000000000000000..e8575072750c1326c03e08629e8ce4016646c119 GIT binary patch literal 119 zcmY+)F%CdL6oldbsaB$psMHFbM9mdk!Bz^5Vl|Ri(7A-OdNx$1naP)F{6abT`5@qS w-k8|{svIIvjv0j6=_=9c??U%>4rv@)dsS4}ZD)aji*`8@RiXc>N*!3eJ|JZqLjV8( literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f4d850a491224739a870c57d7ccd32e22f2ecb23 b/src/libs/libsrtp/fuzzer/corpus/f4d850a491224739a870c57d7ccd32e22f2ecb23 new file mode 100644 index 0000000000000000000000000000000000000000..5726d20d68699c563d6d4743780c733e6872828e GIT binary patch literal 4091 zcmcInO=w(I6h3c~G%pn-bc&#@_=2^OCJkx*K^kM4MX?mCc2!W@mm&iW)TGYKRNE^} zki=Lhg@U+{SqS1HJ68okTDlT9g6^dS5gc5&G7(L4{l0VW`^zM4H$6=5yFcfgd+zzq zt*P4CMjVRNq*0#}1#9h55o1IGw;=;baKI#i?#bT@v;Ih?Iq7><o&@&j(v{W@d=*!~ zAja8I4vl(P%h?~#+1KLpXAYfh9*NKONk|?t4|IVHKwA9R$v~vD%~}Bm*tjtsoR-<s z_FrW`<K=D15*T2tl9Ak4S(VRl1OgA6vI?YM{wa|{DI%Y)h*U~~<1Mwi$V;+P8Iy31 z*I0Q=LThDGWCQQ7re_;Y3#umQ14=ROnF&-iqUu}O49uVxcg%l9pBzZjkdjcvOIwip z#)@)mno%B%i|lZQOM>8hMjSz3RIjJ5hEhq-^lKm*+4QOnxi#mwxY0kmMDoxUPOV^H z(7~$S=5>IV&_C2ipOQ+y_pT|L06&HQcFO40tH8NPZz_58;uQl1Ntefbz|Ys-5-?!_ z{t!WA0AjdZYwvYgYjFjyqXRkfV15v)t;%j5Imiv^6}+AM8_AyANJjHg05zVIB#lhZ z$3<Tnt$G>o@*ifvG;(>t+LUA<F<%lTkjN1vd&ve-KiETTDDeK^uT<tFdi&OUwRi*( ziUbfeYPO27A%GKXm+-oh5qY+F#dh&M9=yu?(+xAkBvkMUhu7&9lkkdn`gsbDALShF z8`8=15z&B(q`D+`K;oZTEj<|`+)@xZVkEBgSlisUuq?~Va`3`19+QRBI<EySKLonj zu(LpX9^ooxfGKkGr0DZjmVC%y0Dp%$0UVPFH<=5Ov+E5_KNns4sg%=CG~aiQS(2&E zwiqm->hVmsSeHP+iN=x3wK_wNn<1m6Yu!nI7#o1>PPfFko;|Lce7}=`QHTSYctqs3 znpndVCVtk(>91-KVAwih0ryC5jN!%EZK>sla}(tz02v|Qu=Yf8eW`eo&Xpt`RA^|R zN8%CK&ExEZeZDV%wMVSc=K;azn3RJmYpYroDVA}OBj!VR>C4#KFE8Ma053g=kLGFv zIbLHP&&3X=qi8~+nZ^XH;HsAz!v!fEOvcCsFeJOL*_+$juj>l3>Qi<_x|Fr?q!zCw z@u<jNu?Vvh))=)X%+PPl1%~+t@QF2fvv~4oJZb<SHY`)u9h|GsXW-j2*OmQ-0_W=R z#^M<$Ew64%n@kmw(?|y6aYr(ErZXAj@hE$kPP?Izu*XX89W2tw+9VmA!ZG-Ni*!Se zR!}nr1{&{L(~TPr-03|>tD!tkJDqfhE%^Zx4N^#y6PIz8h(Z%O90VVByx2b}QA@7b ziS6w+&5EO^wd?U73B(Bd8ms)I`CU<&rQrt{`7_G7c$Yj(nIGisC7gR|sGt^loEaK) zFU<Tr?RcmJdz=kQmS?=Gv}TI@Tu3CIhj)$_k!Md9(!1>GCPIsb@e1y}qe^r}W#}<F z6p6W71FgM?AR}ZJYVOnZl$rnW3uHYwbyjvMCjOQraAjg&O+yHq9Zm2ne33-XqFa^9 z7=4>2o(^(NtKiG_7#|OTY@1KR5?dP{hc~gO73=yb%!(C&Eps91U{!*UHi)E)qCOr6 z2TCuRNn$e>!qMgK>cWDU1?mA&Ks^wktI;|X$nqV(J9Du~r4`<!NLvk{LoO~Dz!~Hd z#kck^U8buvLEzA3a;5XRJXqco3K^#`&63YDc)c&#e<3c3&+~Tri)+c_@o7|+&VDDb zxBcC}r3ED|mvSkudSsRtKCU4Cefu4>gN5#g%^|dHr@W(fXAX;rv>j87t`Ot4Ke-5` zP<)9~5(AV$Poeh#|Llhla&z{6rIvGyd;pL2rEwM<A};jhAr;#spYI6S55QHvL0~GN z;N-C0OK+N-JoZZ{gZ1Bea8pNz0!9oY2%wg8o9X@3&M7q!YEYp`BNn<G=SJXn?XJ(p z>-O*y%HsJ5bxGuqg6?z-g-{8k+x1jcrhdCxRD62Nmj42a{+p&ToYVQ+?3|n6z<H4` a%$t7pqeus`ixj@+^-Af3ezJ<_82%5gVxPwV literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f522843f0e11b6c483a57c8e52ec0d97eda68175 b/src/libs/libsrtp/fuzzer/corpus/f522843f0e11b6c483a57c8e52ec0d97eda68175 new file mode 100644 index 0000000000000000000000000000000000000000..e1978f2c97202c555217161bb5da63134646a545 GIT binary patch literal 48 qcmXS}W(a)AAgoml1&j;~#S9G9(Q|+V17kG<0~3(J3?-{yRssM?iwpPw literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f5a854f1bad59930b2e80e5f6f6350989ff442f8 b/src/libs/libsrtp/fuzzer/corpus/f5a854f1bad59930b2e80e5f6f6350989ff442f8 new file mode 100644 index 0000000000000000000000000000000000000000..483fb6cf38d86b79af1238bb6e1fb0e98b511883 GIT binary patch literal 907 zcmcIi-AV#c5dO{@wMv1sS4q+e{Xl>8b18&^7ZLdkCb6JUBrbO0z<QA-flm<o0=-0c zJ&Z4~LQ$tV=j>+IZ4T_roH_H&erIO(VZ>@TZLep1`39n@d=BC}pbTMr5-U4_@qO>W z6QshEyLX9?ao;zAjr2k*4dhkI&+1ZEfpbR2I1mH$M_VcvODJl~O5=a$<rR_+!)2Z2 z41myv$iMQ@N`Q-rQw}Pz2z<&?&crt(_?kfxwc2g{s^isKjqCcQ>o@9qhIQKJ)DT>q z&A?%;0(gj6tre^+8)@Vsw%<mj^aQ$W67FrUX`=^Ir>l^sz+;~?X3?9Yf9egu&y1<- zk}e$PydEmvK*6Uc^FnUN?vPR`6K5Tuz)&8?{ZLwJP%e=4oKNDcqBQhqI^=V4)m=SH z{^v_HhJDPvbFj+ciMTv?wJOOZWjR?DX2zq^%;vC-dBdxTyJ@+ZKF;=(0gXnyX8dxQ Q%b@hPCu$!~Kv@Fe3(msMng9R* literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f5c39076cd888160da91d78058137a409fed02e2 b/src/libs/libsrtp/fuzzer/corpus/f5c39076cd888160da91d78058137a409fed02e2 new file mode 100644 index 0000000000000000000000000000000000000000..558e0efddff97792e0030c7db44cd150df290d51 GIT binary patch literal 106 zcma$5m&YI(&%nS?l*^G?52S(Me;$NpU|?iW05hwL)flRa85ydp)uB=*K>9U^&B?$Z b3seV`o+HFy$jFeB3eyb~1WJIlHUQ-Te&`RJ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f5e91076d0dca3b53d4f85dd565f346ce7dba322 b/src/libs/libsrtp/fuzzer/corpus/f5e91076d0dca3b53d4f85dd565f346ce7dba322 new file mode 100644 index 0000000000000000000000000000000000000000..0c121c6faa104385751f1d0cef1e2d881be9b689 GIT binary patch literal 146 zcma#o;%2CcXJB9`%H&8@1JXe7@Be>a28ZfuAd?*|kO(Fj7<gqF7#SEE3Vtv!fLH<y zKjtvB1Lc6E0K@+|3_vX$6G3VdSs4Bcff%oVxCCT;Cs;j(8c~Fr|IGjX15J<x02$04 A&j0`b literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f5f9014f5d4a8e28d939e313aaee1445720046e0 b/src/libs/libsrtp/fuzzer/corpus/f5f9014f5d4a8e28d939e313aaee1445720046e0 new file mode 100644 index 0000000000000000000000000000000000000000..339109f1850df4e6496ebcde7e07ceda894c2694 GIT binary patch literal 108 zcma#o%VQ|fVPIe=%H&9`2hu?B|Nnnq28QZt1_nk31+YkUF(U&IgVaHRHH5Zj;ACKs iWnd^4VqjoqV0d5g|Nr+n5Gf{*IsgAhgTep*KtTX+gBc3| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f63987ba8506c3fadc251e002eab9bd18aacf83f b/src/libs/libsrtp/fuzzer/corpus/f63987ba8506c3fadc251e002eab9bd18aacf83f new file mode 100644 index 0000000000000000000000000000000000000000..2f3777ba82764f9c63cd43af9a151c2a5a42f0e2 GIT binary patch literal 106 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7FkonS k31)J#FvtScsZ<xw5n}lFe=$%q2#6Qu+e4LtC>4fk0P>6(uK)l5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f65819da779e1a0f50a0349ede6d6a3491c3e2ad b/src/libs/libsrtp/fuzzer/corpus/f65819da779e1a0f50a0349ede6d6a3491c3e2ad new file mode 100644 index 0000000000000000000000000000000000000000..902118fc0e5c5dde5d85abecc3f270088031d554 GIT binary patch literal 3249 zcmeHKO>2`u5Psg6+9(Ra;6d>twPM6#i6WxtAq7uWDLv^$UxMTi`bpD@xX=V?{eX&y zco0HCJoOLssQ5Gd0Ty!d)+$KWXJ+4zBuz>^*pmZ!cXoGnc4y|9*$n_|?Ogy(TR6^! zbY>G319-xFcsfw=U<w~d-{cdLlgNsYp+wUzQaDs0qvxmw$a^(aHRfYBA;Z92IaR7U z*6nS~3fEh^?kJFRo%{sW*MZC9ceuhDW8n`^W8QaqzDIhtXoJx+WmUDDNq;7n)&X4C zCO@xB=BOR2S<O5EoCGpXP?iml<&3G+k6?9mRVFeofO-l@Bd`NFDC1u$^F?QoxJE`o zt3(BPF}BAPXJabFY|ITuY)(1VE*wlW6Ef#Qi!ENsIojw@*rP>27Vl`z**Z#CUa|Yk zl!qZY%;fT>GU5cpUJ8)t*9my1p(|UhTT^NcNM~TxizxYzi{bV%vcEQ~9;b)tQ*a~s ziu>tb;Q1y$R!*Tbf1k}O8tDZxPvs1<)=N4GuIsh23b@@vH_6a5JcwXaDyJeCNh&xP zK~FuoQ1YX*)&vdr+?Lx<-C;>Tw;KW^rwGdwtzJ+x$#R7f+s~U@72g;!I)QO+OsYgt zoGHjKij$K_%}_)Y*^wK{&Z_T#zV>XwZQOC0sZ!NA3$%Y2ZZ$h`0N9DL<p@(2Sv{b{ zK9$T#W(0fD5D!Tgmkc8&VQ3@W<F8^t91A_uueCq4>w3Ej=}}!7e7dQT1GdWi3!Z5Z zWR*s?BY%>K6xO)y6do6er@&*G7F@}hc8?IC*1q69yE{ROsA_|l$(HM=E{PJ7%f3KC zdkO6V#TbYPkO=H^im<gstPJ?f%Q=C@D7ltmf1sVPaZ0deJVfIJJ8{`)G&r(zQ6UZ^ z$eL(<D?@u0aV<o-q@I{YvSa0|s1ngnF4YGy2-~z;d1UIB?PtRxpD;YvO*cjKi1*y; zAZr%P>xU9$NezpfxmY!o_6qdVk*k(p-r9qWhG^(@%Q|!PmX)jG5x#<#-1H|5&y`<p z>?M7y@|YwBu%#Bt$nr|lF1?XkLV7|sT*ILCyDDKWyF0?6iIC>48ef+xJ+gQ!AbB)| z4+eQGP^}gkZ}b)=J*Ze`(M(IxMCuA9GdL0MuWgn=5>$j*33^2oCu{u0;-|M0=hJ#w zYqbz@|3duC=n`5jisp*kS^q122Utpy_+Yh@Z&2>kuk3a!(f=zw9n<YCu-BDd;`N(9 zeTca9F3Tg=licicB`~fF6zox88BpeD&jPD(@te~)rZ<G_8vG^5lC}1HRCuJ%<3w*F F;1AgnIuHN= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f6a64c4d5720bb5c6d1dbbbb2be77a7db7655168 b/src/libs/libsrtp/fuzzer/corpus/f6a64c4d5720bb5c6d1dbbbb2be77a7db7655168 new file mode 100644 index 0000000000000000000000000000000000000000..5c1f0c3c3189e5728335559e274c54d71ae5e03b GIT binary patch literal 626 zcmbtSu}Z^G6g{tkCJsdu3I+-qgl@&bO$#Y>68a4lM4^jA<95MzDCi_OidkIx2^lN? zLsz@!2SP#V?R_^1n9{8W9yjN_lb3hy4fvY52Vl^5?uJqY%-qG-8}BCx30-pFsb29@ zgrXQ>KNXb#3f^<v;v0DEJpj!?|K(E-yHd|(?lkTm>fi<FJUUeE=oyF{n7S}_bDNg- zQ>W9EC$G9KUaL#VV^KcIeuf+rF-A6UTC0u4m?H4*w}%G7iESstwM~;{C<M{2?)_#C z;I9>a@N|yTT##AJ{?B4m7}slY`*pp{56W~SBSJipomgRxwM=5b&gd-K_>PKM6v-e= W{~>0gM#gagBs(|KfiAF6`2Gr&5{1zK literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f6c0228a7564ad9da25b7f8ae4842103391eb320 b/src/libs/libsrtp/fuzzer/corpus/f6c0228a7564ad9da25b7f8ae4842103391eb320 new file mode 100644 index 0000000000000000000000000000000000000000..aa6aee32e7a2c3f5605bd43ae5f96e6608e0eebc GIT binary patch literal 180 zcmZXMI|{-;6h%)I;!7u_jjg4)02>#et>utnia?MMv@yY?%O+f>*gfA2q{?mXhs$w? zJH2D1t;Fw%(v&N7os~@-%KGVDlOa127%dUfmS4eSj}KFBCgFViu3-oXRP|yu2%f67 ckMcrPIj<<|x3QuEGizpMa+}8`%R5dy{(NO20ssI2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f75716a052feb47e47958491f6631cddd7418dce b/src/libs/libsrtp/fuzzer/corpus/f75716a052feb47e47958491f6631cddd7418dce new file mode 100644 index 0000000000000000000000000000000000000000..e5fbd8824a68dd9d438b7fcea4dbcda3268a0c71 GIT binary patch literal 2149 zcmb7F&ud&&6#iZkCo@qbWUTlrIBJ=+VB*9=QKOh(wJHSKmCM%<r*!C;na)gt>6K(E z30WABEC*(ht^Yu9)gbr}h^wv?T*al(L~QN#`_6lJlJp0`!_2$)oqNu?=X~eK+uia* zdwUMR13&!|7t-tdXp$3Y&&O-c2yVJVx}!&+M4})eM+vHzuwpu5W%Nj>NOQo}PuI%d z)MK(5m27!6Ir83rN_B^moN$RZ)S@?&x(_&=*g#(mcxH+LEQpc2h*1hJZftf(xSnZ7 znf2+8U*lCC`+bVk<hWkO%u2^SIPr3ej|lV)>jIyzXhHNoXmZxvN91Q`!7yY#U?4B; zFQ(CyoFF}$8#E{3-lmhH{07j?A{yns&p6>RvvMIN!#GWmFr`_$D*F5ag(H~QqH7*C ziDBH{KS1_8CG&VC7_~KW1+GmO67Pn3SGRfausDTXnrL&vWsiv~Lli;Go8Eae%?VCB zPo(d6#&;CN%QRuAamhM2rdQHbvfzFWL{1?_XH(P!!XQzragzrIfS)Ox0HjL5*OT4# zP4C=N2Oggo!I6(>_k`j<2*tn4qQBGW)YH^-IsyCb#MuC0xEFEhx+7X;0@2&L3M-JI z=xR}j2^JGewwJoLohRvyaFI3lMkpjI+uc@2_*gQTc0GsOAKSld`R}%=$^LRm04ekt zW+|^elRQBRT1geM^uYSFMTc4KQ!*Xy<!o@A;;IEQUWIz%wB84(#sbFR?|k`N!ts3V zCin1-%CEr@y1_~?I)xI3om)mW!VT8xeOzLa3?ka*w5TR>1>6p#v^mFQBl-&?YCpBK zTsv%O%%B;&)$I8A1|swRz~huU@m6NNHwKRA@X|0-B;J4b?guo;nV5!~xeVG&h6^xs z@S`6^n3M(e5519Sgp$pi|LIkf>7`vmfY@7)$ewaxq~w!!o2|K4p~am>D1kj3KPZ3z zGRR^&a>k@UI>%6Og>Kp#!@GyoHN+DOXg$=VCh*zQKP<n=R-Oc&QlYWn{d4Gtl(3q; zIWSd>$OdlEBX?FNiq6HAf_RGDpUe0AYaZ2d9b;~sh>8ibN|7-8J=s7Qp7I{J@;I;j zd+IqQ#vtH+Egh?3v^fddk2I3lw@4%WD7|~n%@>b;Z;s#j7{p3w@5!CemK5Q*A&%AZ zLi|x}q1C8;Xy<yLxA$tqA!<BfcKCC`@5T5x9VH(<YqT@ncw#BVpC@1XMLv0=d^7*Y zK94<jf$Q<oTy?P=v)iq2|55b#f=W>PCOypO@(cJ=c0}oY*r+$kSIf;f;m%dRnr>A8 w1;~Bg9A>kiSSHTrCBZICsds(BG{4;p^_8R~`TT`iE2W9*eH5kB#l&0x0d!L01ONa4 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f760e7458959d1d4e64e12a7fe42552531972bc9 b/src/libs/libsrtp/fuzzer/corpus/f760e7458959d1d4e64e12a7fe42552531972bc9 new file mode 100644 index 0000000000000000000000000000000000000000..47577a18157a765a62ba4f6e6115262f17213c23 GIT binary patch literal 193 zcma!Nuwf{PXJB9~O8qaK$p8lb|Nm!%u=xM`GB8wE1Eu8|m;^v#ttD*C)x}V028PAf z5QU5kU|EK0ZAPGab%-DXR1#>OKZ7g-NE73KTT}yqav+fK|9}1e`*k%SHq>zD{|qmo U=D;YRZLfiB0ftsK#uBJA0LgADQUCw| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f791d55d9d4b2462fa15af44cd00122f7c79de36 b/src/libs/libsrtp/fuzzer/corpus/f791d55d9d4b2462fa15af44cd00122f7c79de36 new file mode 100644 index 0000000000000000000000000000000000000000..c0b4a3f15eaadda921a335a7ee2b9389a7354e31 GIT binary patch literal 1141 zcmbVL&ubGw6#jM#vJr*as8FT4^^kyKtQ0}W!Fuu_BA!Ktf(s4AbjfVMI?x6|)<Z8I zh1~oDyyd$8LGa+EH$gn?KhR^w@6BYlMN!1Z?!1}z-Z%Sxd|Q05XUoz6nA@!@RFoUX zZEXU-r&`wm%+^QBkt~%ELuV{uh7ohS&$C={(Ie41hK6FyeMQT#7bOSYW39zzFn0K- z3Te0iAWUU9#B?gYrZW@&_z6E@X#In{pH6Q(#8p8^GESSe(?EBj(E!$X@yO`OinFcc zcs0tlvqZg2(rm{83r$0u0qHL}`z*fm0v2FZXJ8Lx^Z#=5Z_rj}fYsj{=aXO#u`9sn z77M<>_Eg2*1xn{y6ifHyJT`$oWXfJHVS}3qa;~|-yF(iqeFplDxL*KKQPjME8>%>B zK>Mk?(Mh8@7Utr`oyGQ*=g(rJ(?34opH~4Hi%6(;L{vpN(e(9(c@q|I5Rpg^Lu~g) ziAo!YWVjeN$f7lL6#JK`p71F;A)fEwIAGwaI_GHV>!|wIby+UMk>&LUi8AMynmOl< zOyL`wgA*$AgO3DosuxU<mp^x<vteIE%(D`usf2uACuS+YY&P3T`YBZ{($NXP7=xH? z*sCw2!#}jtdv1P60u>?XDTF$956y6yk>a?fB}E=ir7OR{eoeq&5XaeWygPg#^<9=5 xDZzDw>;$@><iwp^L1k{q<lFZa|B<jL<_o+%Y!U9nlZ&hT#>AN=XJ&ch;3thkLrwqy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f7bbb2eb13e2ed81078bac10f3d05fdc3f05a6dd b/src/libs/libsrtp/fuzzer/corpus/f7bbb2eb13e2ed81078bac10f3d05fdc3f05a6dd new file mode 100644 index 0000000000000000000000000000000000000000..33bd0126cdc4a54282157001a6083d811cafd802 GIT binary patch literal 522 zcmcgpEf2yl5PbtdafE3S5)yErP$=;Hh6YiwWFcf9hLUU!kKXSjxZ_<1f*BONq}RLa zyY~9dE{`ZIaD$ULL4b(t0q=q6?T~>iF>b!=QZNXaLs~j}8p2Evp|7c$5i}a%(csDq zZOqN+>H1Dmr5@0}hswYq$;c6$VMJKVV#4Q9yVz1UvmiHM6RhQbE?>KCEB<MJqR+O6 ik9+k)FVRb%H)DoV)H*j+T4x$2o31dUv;jd{l@(9(v{1+Z literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f80664228f35f70394d0563a1eefaf3ada8bf013 b/src/libs/libsrtp/fuzzer/corpus/f80664228f35f70394d0563a1eefaf3ada8bf013 new file mode 100644 index 0000000000000000000000000000000000000000..537d8286a762be4bc579fc567f6669dc254f1f75 GIT binary patch literal 972 zcmY$J`2U-jSj+$a|GzOfNHKtc0s}*FH3I`DBajEgjMc>q)j&Qf_+wj~3K97Oq^d!H zfx#Nc%w*sK>H!(R$^g~{G}{-X0<7AYfs=tj7ARF(T|5UW_TN8~BefoAQ-$FiWd>!2 z|Ns8C3q#DtVyG<8O~h&b|MNdP$QY;tkX+*oVKbOBaMHumCZu^9x4U7X2y{0n6d@!e zID{C$5lLyt5Viprngo+a0|PP1V^GGV0^a0Hx0t*N1)${n6P|kvpfUanoI4<C0GJNy K)vI;utBV0-)7-uQ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f806c722b19ae6f4fecec4a46b19fdbb14068333 b/src/libs/libsrtp/fuzzer/corpus/f806c722b19ae6f4fecec4a46b19fdbb14068333 new file mode 100644 index 0000000000000000000000000000000000000000..177b795712bcf18011e5808b74b4080477b5d05d GIT binary patch literal 108 zcma#o%VQ{sXJBB+1>$-j27>?p|NAm1R97=FFamkm@nwlQrKzd$1)K~FvOtl4KzR@V uDV@R44kT|dv<oxnF>ruH7^>zlRBmR_n8VOsP?S1rR_}tIiGP2BB&q>o3n1SB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8119ba7ca78c66051715f981c97e0513d9c3827 b/src/libs/libsrtp/fuzzer/corpus/f8119ba7ca78c66051715f981c97e0513d9c3827 new file mode 100644 index 0000000000000000000000000000000000000000..560cce476a0922c04181de22cf4b4f33b1ab7d6e GIT binary patch literal 245 zcmYLDF$%&!5S$ai#8OEkq!F<ZB-pBuK&pUmxFT4j5^{D2T54-4rtu?+AF<B|L@>DS zoq-JO4m0fRE+`?A0P@UP@0l4yw8H&F-LljyzZ4Fv-x|K4*b%HE)3p-N;kibN2e6eh zV47#gD=%Bv*xYuGxt+iVy`h7mXTAObC>#i%6}k18p?0*3Yl!AP#?5_*Bqo}`HP3Jf bt)R`fjL)BdYN;-Cdm356^B@$`jl}2&Aci=P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f82a03f4cfaf60f998c09fc3e65d6849eb15672f b/src/libs/libsrtp/fuzzer/corpus/f82a03f4cfaf60f998c09fc3e65d6849eb15672f new file mode 100644 index 0000000000000000000000000000000000000000..258c1d805e364fe94c962969ea011a6a1ab257c4 GIT binary patch literal 36 jcmYf1i#MnSg5uQp_&>!EHi%zcof*%-z@Wy!P+ANC39$_& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f846135da0396f61035a2ae12d0b71319f5da4f0 b/src/libs/libsrtp/fuzzer/corpus/f846135da0396f61035a2ae12d0b71319f5da4f0 new file mode 100644 index 0000000000000000000000000000000000000000..baf12bfbeb5e389ca658ce727493a9e752834d97 GIT binary patch literal 148 zcmdl#;Xl{Qm(>gm4FCQ+NC7DjD6VEyU|?WmV2IbtV<?FSiWFsXq}Bsz5coe8NK^y0 z02MG~$Co97SwOxCgC0<CPHAdid;lj<^8f$;z7UmAwnB9^NKYbA4^UNVd;uo|!%Lt5 Q0|SsD3o@^|n3sV80Fb#NasU7T literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8551d2355baacbc81a177b68a09257d003a1d63 b/src/libs/libsrtp/fuzzer/corpus/f8551d2355baacbc81a177b68a09257d003a1d63 new file mode 100644 index 0000000000000000000000000000000000000000..09a511bf70707d11355490759c4093dbd98b278a GIT binary patch literal 827 zcmdl#@&7k5v6lb;|9@j}kYWG>1%~2kAcK<;NB}WobumLVNB{-=u`N!82>bz3)gZvY zU=3tuGH?O)fJ|Uz0P6yp?F&)?R&CC}$-p2Blq#(*o&y#8@1Mz$S`W0T!f=i<gEGVa zfB)NsA!h&o`JWxc`VTP_Xq1*L&`l(2hByGpHO>$=1JE@HPlJ6;6HlAq^|S#_Ph+?n zEfgWfLV`nx0UVK(h78OGM4Vta4;UMeIKglp`N3L9Oj<Go+Kil*@CU0AC?PSx6A*@D bVLk;VM~r|3WeBA7@EtW1s8{ROR~G{Syy(O` literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f892a5308895f5d40d0ed79af766e4165589c197 b/src/libs/libsrtp/fuzzer/corpus/f892a5308895f5d40d0ed79af766e4165589c197 new file mode 100644 index 0000000000000000000000000000000000000000..6cdd4df454ee62039133fd48fab6d4a3c8e57801 GIT binary patch literal 165 zcmdl#A&)^ao`Hd(D3c?#9!LYh|NsAe85pXo85kHD6u=_Y#cB-I#f%Kq<?0L!Hb5a= z22&sg0Zs-6BOoOURLf8e#6HDygc$08MnC{#o`OP2zCwPHJp%&=gBVx~BhX|8APb~| T87u-}gZLm@7}=2=05TK+y~r#y literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8b655a75c4437875b27560ba941e232dc793934 b/src/libs/libsrtp/fuzzer/corpus/f8b655a75c4437875b27560ba941e232dc793934 new file mode 100644 index 0000000000000000000000000000000000000000..4ba19b788b42d7b5b0c0d6f90816cfcc9a496024 GIT binary patch literal 1319 zcmeHHJxjzu5Pf@%iItj4@jw(#u@baX@PsYoz~7L{B8`Yq5Ek@0YfB-&MLYk8<$?8` zmFt^HR_~0Tr*;lucW3hEW%71*;l1yq0FJU~|C}?8p*`GO`pI6;(S7voIgMknkDL)B z9tW2jxb{_JS$v;lGQn(>`EY_H5ub9cud6J{6mGG2vz)n_KvRh~iW!Y17r@#IOp{(C zpmg3jvueiLp#odmEO4nRuw#idP}qsfm2%+kPk{ncxb6=St@AGu%#ScHNV%*p{I-jp zKix%F;qg!c;nS6?DviKN#R>?a&DK;-R}UCJPHWoZL98xC5xpgavda)OvG%2Upe393 zB~5n!NRwac6a1u4#?|D%PweMsXN+_Ez5UR}zx~j{eI&OIs{88BBj>qrCW{W^ckDH3 KfK_pExqJegxcU45 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8c0c300df603d18373e8a710c98cfa027910bba b/src/libs/libsrtp/fuzzer/corpus/f8c0c300df603d18373e8a710c98cfa027910bba new file mode 100644 index 0000000000000000000000000000000000000000..8929fc80a79084f40e63409e76c4925f8a489f00 GIT binary patch literal 2490 zcmd5;ziU%b6#iZk=!=syA}Z8YtrjVjRJT^49i$+LIthw>7JWl7rjnOB^bM_`cCZLt z#36&=;OeAXb<)jU1SxL)2NKcH>vzt5KN3l_N)b<!n{)5`dhd6B-sg>1Q1bv(ORm4f zUy3p2JP?Ld9TYfTlL5|4r|Os7c90W>4zewIighch>)=M}-gK!`Gg~rWuJ;GHY@gKe zo=P1n1-Sf6WI3q!r<fIiq!>fIkXG~u9qV`j6l+4Y-LC1$c*m2#0F6T!^u&zkF-1)8 zO|s2xZ4w_u3q;6V#Uy0Le@Esi@XyHXq)~s&I!VCPH~GZJfA2r>_co#(V|pI6lfL-{ zAIAFa7qj)~9&(z!WIsm{E3{x(o<=x+k`+n(fR%cm8mk6y7o~og+LR+rGg6`lndXkx zvt+y!HLj{c-G1!4=$o4y(J)g7WCMzGFyP2C$C`r~Sqa~)nOznKBshD-Yu#N?dM1Bz z)MR>$Um?nkbZDal3|V-*hI0ZEI{JxxB{m-tL*)Cv@lhK|Ix{KEITJg5@9x}0dEu;g zCl6PxSmtV5e~m%q1-}hLG;`4#VP~E--!up2Bgbj0vkg*qT5mL^O>XoSN5XGquB@3o zgaX^;aGin4X_s}-w?PCOs3wqig6E>r**TLNK^Ti@5HzbkN<JFX5W`iXl3fU;X^Y5t zY<tc{?dT61Tx!2WIJNf*k2kmimrSPZrp6?WdseAc0T0nNbsf`?kIMHwC_bjl-t>8t zh)bShqNF@I=}apIDHJ<FCnDdc<zHM`CFv-~2%sE?f<!%qiCccfYn=)FmKS(M-A^6> zmzoxppUFs|lYN-<+)Wah($MUXBZ0EVK_WdG20=&>oYrprRcoK}ey9Fbv`~#dVb?1y zy&-)1(?!X;IK5`1dx<}6P@Z(Vh`KkP$%sMr#=N&!$=F%VTdMjJ&yt-pW*1BZWG*!! z@sKp8XgS2M6wV+rySXU;w<S^LCR!SB5(qLF1VIm0O*Xt8ryQQ2&J9RL4P|TwLrp10 z`OF77@V(`5BJoi$g@k2tMxt0g!*VZo)Wg@P<ib$~CLG~o5phNj+I&KD?3>eAVoW}= aH(~X&qV>jP;LBAPo=4kw?#E}L5XlcMInfvZ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8c50fa227f6b1dde618168d159caebb91cae54d b/src/libs/libsrtp/fuzzer/corpus/f8c50fa227f6b1dde618168d159caebb91cae54d new file mode 100644 index 0000000000000000000000000000000000000000..8692cfe26b5b84f5c7792cfde252c3ff49944ca2 GIT binary patch literal 2431 zcmd^BO-sW-5Pe&}Qcr5UC>DZ(iYKML>7hbTMM3-nJ$dNGgHaF`v^UQlh5Q!%Jq6FL zr><{y6KSlmR!j?a2-(c!?d;2Ab~Z4^)EfY<n%>1dM;b$?czHC7?Y5@dGu3q)$7Tm1 zBT78pbf}=KPlX-vjo*|3>d4K979<n#a?kd4JWFOuZfl3hLvaBSP|+x<6&v#(fc;&l z61_r#vg7exEjHCha9ap&#RTg$A{8v`Mu(B4?3&kGaFHcEce?P({0bi%smy`UCBNje zwfC`f3oQ#T_DvvsId-i|DL7M+0U@-t0hJqjmyBOG2DHbUSjlQ!vAju>QbgWYQrPTr z8>-2?nusQO)QJ<P+$T;_Cr*ylSe2ogU^1Fu40STsGbWZHHRPZP_t6>G2!6hIst*2# zduN6u*lVU~@1#4&KkFy6tPp2Gy2p;UpX71w9I#ZU=-e5-$5J12GEzU0O8HbL**#XD U%bA|_50ZVhd{Ya|_KQD_cfA~o&;S4c literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8d354179c10d219127b53273ff471644e782176 b/src/libs/libsrtp/fuzzer/corpus/f8d354179c10d219127b53273ff471644e782176 new file mode 100644 index 0000000000000000000000000000000000000000..75c2878c02816570d3bd8d034920d1f662428490 GIT binary patch literal 224 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bO*!N}ka5~(g`WT*zJ0t!LMXfOlFh9HPI zlndlc#L#yMXe3YqU0*W8F|ZLO@%tzKhq~k+%q40-n~Q;l0`)<xhPdKC0l@GQs9fMN JgLUy7ApkopMArZS literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8f7a802aa67780f3d70b686b01498462a015329 b/src/libs/libsrtp/fuzzer/corpus/f8f7a802aa67780f3d70b686b01498462a015329 new file mode 100644 index 0000000000000000000000000000000000000000..b15448e6cb9526282c136ad02861da6bde9e7b88 GIT binary patch literal 156 zcma#o%VQ{sXJB9`%H&9`2ht1-|Ns97VP6J@>T0k+bul9Y7=yVAU@<ts$N-Y9R%a-# zW(a)A@Uj{PiW#MVrl0_Z(&E(k+|*nka)27Z$-p4Xz*zj>pTW8TETqf8Ij#CXh{+BB DZHq9K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8fbf0f30aa1f2081c158a5e5d027bb540e344ab b/src/libs/libsrtp/fuzzer/corpus/f8fbf0f30aa1f2081c158a5e5d027bb540e344ab new file mode 100644 index 0000000000000000000000000000000000000000..fa7de347a1b79f3f9e3a3a1155c6bf8b682607a1 GIT binary patch literal 504 zcmdnb#=!ORWi<l>!?%A9QViTc1`x;<1Bq%zAi>Ds4icy?W@M-assai@$Y?MF$Oa*h zoGL@?Z>*9qO;EKA3{PRo;3C*f#j6phB^qKmgoHQ`?gEg}5LYq4#Zc7aH5{ZHrU2a{ um^efYkVN(lx?(g}MI*Zyn?b)Z1mV^|!U)bqwiO}>QGo6O3<E(Lff@j^BuhL1 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f8fc30c4cce63d22fb41139e708b4f98d7f38ece b/src/libs/libsrtp/fuzzer/corpus/f8fc30c4cce63d22fb41139e708b4f98d7f38ece new file mode 100644 index 0000000000000000000000000000000000000000..5f042d5707afe585d64e059f23ac0af87aa04b31 GIT binary patch literal 180 zcmX|*u?oUa3`I|&V%$XMf|H}aU}wQ^csO(@h)C7NSJ2I$=!ZHPZ&bX)%?Sy)Nvi{W z0=m|krK;raTk4#JV;1t={?er51gj|EE+S~kbKs%5e9j0HO7+KK!}?1%qbb@>JI)nz e|1Cs${hKm^b<+nFZ3<FwiO&K;=Xf)pa`gtWXCOEL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f90d5451a12269e8741ca300409625a4777a1154 b/src/libs/libsrtp/fuzzer/corpus/f90d5451a12269e8741ca300409625a4777a1154 new file mode 100644 index 0000000000000000000000000000000000000000..9149d921d00a5c775c58f11c405dc1f1a49a49ee GIT binary patch literal 659 zcmcIiI|{-;5Pcg(V<)B-(<ubR-de0YL$F9;lOhod7gPkX@d$RF#KL=c3(Il#Gbkd0 zf>R{3v+up#H#=!R$2<j8kx?{*4I-KVrRJ(hv`IP$nm`ZO9jKy9<&eN>XtSmibfTEh z_1kWf7Y(2dgHgf_gnMiO;SxkQt5FpIgROXs@5O}+Bc6JTD7-&DFIzK&!&$Wsd6lJ$ zsV&=&LTv+T<>HyfVv;YGJi<GB5dW09)@^@?)kluIu6xLre!c0Fm@`B3%rvbe_fkA4 fehdb>G>V83?Gf4mxYj|!^#9OMiK5H-42<+0W^Z{= literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f947a74b759dd42139105ae61530e963ef820a73 b/src/libs/libsrtp/fuzzer/corpus/f947a74b759dd42139105ae61530e963ef820a73 new file mode 100644 index 0000000000000000000000000000000000000000..0edd39f1bc02ba8c9563d682971fdbef1c9ad021 GIT binary patch literal 1110 zcmb_cL2FY%5dQXI%c~%?6@(syc&T864X6hdAs(bs5cE<{vV^k2qt7H}n@Bo`^iU0g zXHPkJ?H};$DL=x0AfCL$OK_c;eJ_cndU6i?W_NbK`SzRH2N2l20nv5w*zN+~)L8+p z!T{t)4{;mFUDNKjn!Qe|u5lUetM_BM^bGFs_I13t!sk9pPyp=BCJrr6I$7!ldc?bQ zfZ=8Jfp-&j1_np`;R9+N7j_Z%JO$Dtgb*GB?@vM~w_F>K$9e%AbJDNau7(r2QI!E& zNrd4k5onVsY%qoToPq#8(I^t6x|{rFN`7rYjoLYCT*9qFjW1pA?3+e6cb37#+Ap&_ z#S$uS8IXji!H!_Zu#SdUaIr^3)CY@j0YjdWUl3@{?sK&Eyh_E@;<_J}awsM$iX;`C zX&LrnXf}RQZ}0T9FH(Vcj5-DlFv~(16YMV)u5vClzFb95uy9QOOdH|5#5U$_v@ZQp zw9(<~yag5>WhP)%wkygXNPOmBAz;>C!uu6^jlAn@yJ%mL;Rdup@LUoABUO9!_dD9D zw>7R!VVPCIxkVO)VH{_B4F%M}VEMRADho|r&86*Sd5gRkyjXhqT(q?VS#Xvz3loIt z2x)>kaXt!kug~QO6sjCx6XB*0yqj8Px2sFQv!5~1%1$DWwKn{~uaD~>3Klh;B%<Jd Trvu|9f&4hKw0NlcOeenqPtW)K literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f94e071cda73362ae8c284c132b05f4c32b2f12a b/src/libs/libsrtp/fuzzer/corpus/f94e071cda73362ae8c284c132b05f4c32b2f12a new file mode 100644 index 0000000000000000000000000000000000000000..bdb10307566d0e205ef04b9e1c901d0dcb0f4df1 GIT binary patch literal 76 zcmYe!kFP3;uP;jFU|?X#1Y#ig|Np-~gvB7rVAux&T*dJQnFiI>@$s2|bc<8tq0$Vg P-SzQ|t3kYp|Mvp`E)*4s literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f9959c016e9fbfffb053f7e7903e91b1abf6a158 b/src/libs/libsrtp/fuzzer/corpus/f9959c016e9fbfffb053f7e7903e91b1abf6a158 new file mode 100644 index 0000000000000000000000000000000000000000..e876689e2b664d5bad50c44bb781bc31be4dd2da GIT binary patch literal 2407 zcmeHJziSjh6#gcWxLO@v6+w-HULi3tmLgnd6++U81X-Iag2duBLUbjGaN+8d%7KN| zY2#mTDXkQQYwXfk92R!5h-UoWdpDcCWb=a*RzCJ-=Dqo5=9{<gy}kHZQi~UBi+p@} z0V>}6X&_Ajmkq99sDv?_M|YV6$6t4!AR>w~k=si5IsNiJlg$l(zSkoq?E30OIRm)1 zjYLSwn9bG1A+5fqe3K@KA;tuh5~0gi2)DZ-;%$9d8Wn-bKziKZ0l<`7)BR`S$tN^U z&H5#Fb^cOgv<**2RT_ZHTo94X*{#oq3g#Xu)_rvK+CsFdikvzPm!=NGztz&|bV!q& zN7hqN=@<@B7YAjq_q(F6C9Mm1U^6Xz;-H0QnY<#iNjr#X3S<xCi5EX8{EN2x_c14p z>Rf2{V}kw2vtXQg(_)8)O{@>@9kgaz+-`qp=Y$j86=0HnO=o*LF=#^1OMtvh;&e4? z(*M};c=M~#K)anbgwz-+GwjD1$8zVcG=150qrEN6S;Ww`7e;;8Ni=|ORO078Ta7?X z2-#VJc3uZ^bv}$=b~}Z0itghS@IAmXqeRQWO%E)*PMG1I>w<zPRyH~*ryK*`3;9D_ z!7zGZS1V?Cs<1ghh)O1k<ipPx@J8{ir&x;VoO<o}!UyC_V@W-dD~*yo%rdQgd0<fu zC7+`6euj#xm6D+KrIBH&SN4j4g4fMkSk*Z6wP$G`5`R8y_fiL$H@Fp_f-?dvTWH85 z7IJC;{BMH#Bymc2<)qp#)Hzdr_`i~vH?rih7jJDADEtKGvzxONYk_xnRV}fuMH0v& z=}n1;iYYJvm2<!)DTn+j-y?`SI7@_wQfdXwP;P0?Q-3VRAhFZBY$|$!%?UaDpjvX0 zP%ce|!(5+Sg@-QR;pfutdVV5#l%xv3g+^HZQY5dG5Y2ujFdi4i%`<34{6j&4L%{p5 W8-6sNxQ+TkR9n?!lsWI>|NI4VCQ|(X literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/f9f58b28c95cab0f2dacdf70e2f05f64850feeba b/src/libs/libsrtp/fuzzer/corpus/f9f58b28c95cab0f2dacdf70e2f05f64850feeba new file mode 100644 index 0000000000000000000000000000000000000000..641f266e86798a21179ec88ad286e8d9435eba50 GIT binary patch literal 350 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJiozK%0eJ={0iYs~N<9V!RFxWFE%FR^ zK`KDte<p)4nxY>NbHT=dETGgps5_y?kl>Y_=yu;n@ik7rFfc5(2769`QKz+pjk&s* T5yaJji-IK?7~=I-GOPpuBo$0V literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fa62977bddda089217691293964db3bd5ca6bec8 b/src/libs/libsrtp/fuzzer/corpus/fa62977bddda089217691293964db3bd5ca6bec8 new file mode 100644 index 0000000000000000000000000000000000000000..0b40d82a3237399e5208f22d93b8c23df7a652b5 GIT binary patch literal 667 zcmb7C!Ab&A6g^J`pHN`ADwt3R7g4&XotuOfZTf_G4D!eU74c<(51Nf7L0=H_6a7)& z(85K5uk)M{+K74K-FxP~J9q9mcN%Jddj((=NgXrN+&8SfaYTYgtB0^R)@s=8hn=eF zhG)YP5FjsknP8Us3WHDJWlk3hoG|#;X(L2h#+dmUZ>y3CvB-)>I+Dn0<OI&SYv6V2 zT-F0M^Yfn8=E^t)p5I*Fn(Vg59F4i$K4TRXj&*!QSm0C=A1HqE!FMxF0^9;EKrIG1 zP;2;!ZTQ`-=jT614L0+$Tk>PmzC@|OU5G~0J|??3$F!#hsxuD9J*`X~*6hK4AwB6N zC>0TuDV)7XyjWO@l}LzyIJeBu?W{oi=_)gUg}XdV^YuB5_3NXIp!ombw{d@e{=jw% F?iW>6eYgMs literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fa681fedd2c6fa734ce1bd9d7d8fef7138fea1da b/src/libs/libsrtp/fuzzer/corpus/fa681fedd2c6fa734ce1bd9d7d8fef7138fea1da new file mode 100644 index 0000000000000000000000000000000000000000..a3fdfbc7cfecbd589a71eaa3ff22e67b18eee62a GIT binary patch literal 1010 zcmd5*!Ae3w6g?wI>O!PQB9I~>3M_<Z6@h|52)1b*64FAD0-tWWP%VO51uY{t{fN<~ zk7&`}A9w|c)4Ag-Gbw~NoyD8E^Uj<*_nsNpqP1lJ^=jnclp|rSE#dy!#yTBg*t5A= zw;o#X;c>+<%IjA=1IgV4sNex;ln;T`diC<oZ2^+l2xcZaffVd3B-@&FYf~3MD*}^Z zWTOGi4f&Ho05iys#X)|UVu4Jv<!DXuJ|%Z{8`;`XWxsZ?zQ!}I`KnI18YF^HKg1bF z!C)Vcg2YnWe}Q3*d&)8^E(b<(I4;`X)R-gwS6sz=Y`<byNslv>j{f+`<T;5x0)H^C z)>%YZw%TLFgQ$bVTYmt$o8GN$KWo@UI7XIQ8fGih__4IUN{wg<vaK{S<3R7&|F417 zmd2^(Cyv<$5)_$Xi=QAF`9Oi*<oH;ALngg!d*HJ%XsScg@+j`EvvGm<WnOHl@*nN* VTklNo@(sI*nL|kP!%ivd_#G62*f{_I literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fa8c4015a7c03bd2b1af712b148fb6a46976ac30 b/src/libs/libsrtp/fuzzer/corpus/fa8c4015a7c03bd2b1af712b148fb6a46976ac30 new file mode 100644 index 0000000000000000000000000000000000000000..d42e27a0d62b0028c28484d4697b0e3a92740646 GIT binary patch literal 139 zcma#o%VQ{sXJB9`ngk>u;Q#;sz6{LO)eH=bK!Mcwvc#Oy)c68U1`b(}NCS|?0A?{T z%wcE;DglzhK#BvRy^W!s;TuFRM1Y|vl_RqrtcHW3iUDXmlK@cWIKob#5Q8rOG8`Lm literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fabb1d677b8be9d34302f327370d1a069d5cd732 b/src/libs/libsrtp/fuzzer/corpus/fabb1d677b8be9d34302f327370d1a069d5cd732 new file mode 100644 index 0000000000000000000000000000000000000000..bac9c17bc97bb07d36a22e84bd57e7fe6f4a136e GIT binary patch literal 102 zcma#|Wnd_YXJB9`%H&{_1kyn8|NnoWXmvFM10#b1Sfsj`kpYaW)xmrQ25TtIz-h}M h%TPQ=2*?+1XJDAa0c1@4zn=>%&o5eCUCmL-004u25kUX| literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/faf91d41b88e0ebfdbe16c133f8aec4f54643867 b/src/libs/libsrtp/fuzzer/corpus/faf91d41b88e0ebfdbe16c133f8aec4f54643867 new file mode 100644 index 0000000000000000000000000000000000000000..0f413f1a82a974a2e249e3de4fbce90e024b1514 GIT binary patch literal 458 zcmZSh&&c8x&A`A=l*y4=52S(M|NsBK4Erbk=X&|F8p!?k-$4p2&Y<*-p%^H_2;?yX ziRxlThH8hIP>{@Ukb$8jJ`X5aT?CW>X$1po7=x3YK^COB+GLIpSWLK`fng2@1EVaE z#{^RarXA~Cpnws{el>*s42)hbK$VOPU}dG%#mGi72r%sX_ML&l7-*R=12c-r3PAfo z4#xp((Zx~1<ri3%sQ?&0AP;VXfC474aod=-<->%466qv?Z6Lo0GYD{jZ215GJqrVa TK|GKNGT8x$LEsF8!a)K6@Sj|- literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fb05ad8533dbea37b825c735a8f275747d3c3d65 b/src/libs/libsrtp/fuzzer/corpus/fb05ad8533dbea37b825c735a8f275747d3c3d65 new file mode 100644 index 0000000000000000000000000000000000000000..5d194b6d9adb0ba64c0e5ccf1971dd4051419338 GIT binary patch literal 2201 zcmbVN&1+Ow6#u<^=$mdjI3iXQr>UqU5RJAV7I6X=tdNpbclsP;gn{W~e3OKd*P5Zw z55bM##xf|<MgN0#*W#w@x^>fR^A99Z!RzmL?tSwS#!x&A=iRyY-1GT6=O*y9Kdr~L zb-#AbEdW^tMBJz)t53M&+{6}8jIgiMDgejq3|;(85%Lm0v9A9_DYye#ik1_yd%PV5 znKjrS?nao91W<?zA}zN+6erE0479xq5k)2NF8}PpYLzZ?B~MAV_k(f2A>NMgkG{5j zomv%(VgwEu4=iRxMf|n3jrcr|OE@}s%5{-W<21u=rM26&=>6#9{92l{n`5$25wpyG zd$#-IefLP74izSuZu*oC?Xp~pz|Ih5$*QUdm}V`E=I>qszGCR#Um>kz?Jn1%v{sL? zZbkCNE2*-<OqolcHMsfD`N!y7a5ihN^M6`@`K!L9zRX+!6$Z5I1^Ni<DH-41r6kBC zvrT-IP*+;dShg(tool8Yp8}iwr~p1y4B-II1C3fUxwX_>PM0bcbU#Dc2E}&_9XULN z0>|Axz0rnS$b34ona8wwDja`_StFe2g2sTeDEXbhnJONEfL@rIg8imOlj2(L_gD0% z5^LV<!Df?QGWsce8k)4D`h`@*ma9*`3x4}b8CV0Xl&j<wAx)2UQTNgyt;iLA5jz8I zJ?YyzfRm!vaM@p|p`Nnu9o7&tck^SYHdbm0r$a0Zmpg@)FHsS$t8o$=(y9}1Dx{Gg z4}>0(r^Ln@596$bPAg(PgJX7yT`{g814WCr;8@xteeSNarrL(P6z1A-n7VN3=7`HV zzSJV}tc*@tM`opKobjVkwmmw{3r(w_7(;$O2Yw5+$UV<y1nN^4vNmpbOqH!DCu}Bm zV`g2V6=46yKs7XEBiu1_no&5+lD(i|5id;Uc{qsiT|QbDc|>>Mz2Tj_i#m#ud4Fx1 z$f}Kp_nZc>sNYM{zkt6VxDPfrb@;|rj+h9hw(@yxhAl6ZM}cnPncjjXFq_tYc}mpb zs@QJDf{6vrSEqWhvGPR^PUy&tSsxM_gdG0Q(}b<ATJ@bY^tz3D+x{I*ruVwq+XC~L zwrA0vysL)1xHpbFbU@u!Hb?UQ?LTp&C%p-uv`qVVVlKQB|M6t3<-VrUwG4lFYB85# zN(h+&$Ljqstvt;3Z2*_@ahT0a3*|;AhiXtc;VJ|TDI93YZwNk5J)|oQB%62%KI`?- QuzeZdV1osdC4F`6EkfoJDF6Tf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fb265cb36d03f402dd09a1d8743bfcfb52948b1b b/src/libs/libsrtp/fuzzer/corpus/fb265cb36d03f402dd09a1d8743bfcfb52948b1b new file mode 100644 index 0000000000000000000000000000000000000000..8a16d3240bc4b863ffc5fb161c40b35dbd261d0e GIT binary patch literal 117 zcmX?@k(yHw&%nS?l*y4=52S(M|Ns9U3=GxP3=E7Qt|9|NF@qYTL3J@BSdiiC*RLRP z28KWe21kZ}c|aD|_Z|Obfyxcqd*)aJX`ouR*8eR)lm0V&W3mRS0I323kd`_C1&$vT literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fb3e9f119af88a194e4cc46a07d0980e0d08472d b/src/libs/libsrtp/fuzzer/corpus/fb3e9f119af88a194e4cc46a07d0980e0d08472d new file mode 100644 index 0000000000000000000000000000000000000000..5327452539e0efc9943fb34c10943246a2cf40d4 GIT binary patch literal 1119 zcmb_bv1%JZ5Pd6)<kH1bm6(79#%UbmBAo~*a4u3Pzi>_=upkJbwL|PBoDec9EPsIE zYJ=K9jzEh1gg?NY@ejmB60hIPo<OmjLLm?CW_D(FcJ}QIY6$4Hqw_SV-uou{&LKa` z1>I7x>moN#RG#I4DObhg0BeBnb}y@Fq_gXAG&%Pi_$8*7z}1qS!O2*0JY!l!-I1ix zXXLN)7g7k`CoYXf*mU@r4#g?ho+O(c>?Krry;kZyCI=fVx44jVO|OCfDGhV2NWLB* z9F`u-!dKfOf{A4DcyryP!h+@;G_;Zr?}8msijgoJ9ZEh@j7GU|A!<=Gc+l@Y0-jML zGK_#FD%E>E;@5O`nOhe`Z5rQ8Y)AQP$dP*T$F1yW>`#SD<r#?MSiE<@OU&a=%s(v$ z{lQ-#H7Pf<d0AZ?8{GKD(_miz0W0q!EA!<W`@{sQWQ{}MEyX9<weM^e;?QfgBZL<U zZC@q(Qvz0@v#<&=u4P3DWo~_V;Ssv7;EJ2zU)PZo+?ZLr-_>dR8fGv28$qz~nN}N4 zhE1RYr&^tVZNH*Br0$9qE(K-uNuLB<P}KO%zs(;O;8NmwB@sN(*{T1{gmXpX@9W_Z JZb&Kx6t~sBAte9+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fb70ffd57de084a797500e21986f07f185aa56a2 b/src/libs/libsrtp/fuzzer/corpus/fb70ffd57de084a797500e21986f07f185aa56a2 new file mode 100644 index 0000000000000000000000000000000000000000..d95aae21bc9828798c9e2aa778fbb72dcdaa8c7c GIT binary patch literal 69 rcmbREe?QmDm(>hVzyzZ8^c6sq7Xt$$hz5e{VnzstD+DqiY!CwgujmRf literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fba421b338b3eb9f7752d8cc1eeda8c7b28f8eb8 b/src/libs/libsrtp/fuzzer/corpus/fba421b338b3eb9f7752d8cc1eeda8c7b28f8eb8 new file mode 100644 index 0000000000000000000000000000000000000000..93c3f4ce33b06f49b3c651fe1aa2fdf5234a3897 GIT binary patch literal 266 zcmbQ3jsOfmQ2ni#k--m$p#UoTl7WE*Dgso&3|GLxfY6S{!ZZM^03?iR305l@@mnDZ jHw$PSZUeYra!@5m)XW*$GiE5xm{DC_J?;O0RfbXkU|~tH literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fbb77700114cb0c0bb6584fdb3c6b90525fb3c69 b/src/libs/libsrtp/fuzzer/corpus/fbb77700114cb0c0bb6584fdb3c6b90525fb3c69 new file mode 100644 index 0000000000000000000000000000000000000000..541632dc8b33ece9e023a612d3dd077157fb6d33 GIT binary patch literal 228 zcma#o%VVgCXJ9DGWZ+0uV*rEy|Nr|kI8;{yIqYD8#GKO9_=4a6zdvGNWMF70;ACKs z1+oMfe#~KL2dV&)!VIho93aI8-<TN~>cQF=zy<+%91N)pnMFV~{~4+nIR5`<aAaeE wn90e&0WwLUfwKT+=KnbiK&v?}1C2mY2vUb(Hx?nNbC?)74xY*ZT3VV402A~ykpKVy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fbbb4a8e282ecccbb507e979c4d5b25a1474a432 b/src/libs/libsrtp/fuzzer/corpus/fbbb4a8e282ecccbb507e979c4d5b25a1474a432 new file mode 100644 index 0000000000000000000000000000000000000000..ef23de11ebf3846e6a14e7d995e1672cabae0bee GIT binary patch literal 139 zcmXYpF%H5&5CbROQB%`W@&_Kk8y18%DAJKbCuj%-RMhnRCEuc3tiTptTN>L|JvRet zmwc(Oi---)F#M8qmoILo8EHWScR41<=gpHV(z&qoF9?UD*Mr->^ygZ#wOw{G!6Q-x PYYN&=TH8*g@fG72NI@b3 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fbc0ed074c7a4e9701c7dd5fb3f22faae83b72dc b/src/libs/libsrtp/fuzzer/corpus/fbc0ed074c7a4e9701c7dd5fb3f22faae83b72dc new file mode 100644 index 0000000000000000000000000000000000000000..330a61ddd59c7ef7f01d64e29ef4ef571bccad2f GIT binary patch literal 152 zcmdlt;Xl{Qm(>gm41fMRNC7DjD6VEyU|?WmV2IbtV<?FSiWFsXq}Bsz5coe8NK^y0 z02MG~$Co97SwOx8gC0<CPHAd<0EFZOs`&r^zb^wLNKAqtc=7!C^KbwDI|DTV0KCv9 ATmS$7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fbd727f72b075dfd8b65a063d25616d88bc55a58 b/src/libs/libsrtp/fuzzer/corpus/fbd727f72b075dfd8b65a063d25616d88bc55a58 new file mode 100644 index 0000000000000000000000000000000000000000..5621f8f71b03c47e3b4b866d4820a9bb9a267de4 GIT binary patch literal 1439 zcmcgsu};G<5Pg?MBH0jKU?`yxhyk^*!!IB{AybDAbSNy~feCft6T0yc{0sp;qZ8(A zhd8}psul@Hk#m>x`Q5!|7en0N767K>Wc0u@53ThjpcFvP0d+&}Ri`%K3g_<60BMR@ zjQsDT7*1f2&~&7`W0&3|IjSLL*sD;<=~z12cGPx-JS_;+fDmo-G8r+bBhm~u0=^Q_ zpwO<H`9<=k>A745A4D&f_L$o6O&Zn!KO)WHoFT_Z_#te4u(7CgqfU5%`X<E)=9Br< z3DC2`s=Gyqun+F&<CE^FYb!ce!oO&OfywbE9hEH^hp(Y(nT!Z)VxdtsiOTc9rpE09 zU(0fN88bs2b;nH?%(V2ml3;h{MVd7U=G!CriQr5SY^r*`h<iIcA4J_5z#Gktb%x3^ py5ft-*G}(R9;=|d*MuF?<)*M1bkx_&Oy&8muf=@*TClwczW@_S*f9VA literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fbd744c74addd2446bc3421ee255782745944912 b/src/libs/libsrtp/fuzzer/corpus/fbd744c74addd2446bc3421ee255782745944912 new file mode 100644 index 0000000000000000000000000000000000000000..86897785cc75131b2b9139d21495558a3d626c7f GIT binary patch literal 309 zcmX?@k(yH!&%wZu%21S9&j1Gh|Nr-3V5qK!@ECwxUnmnwF~Yfw)zyp)+<)NweGmZW zGcd3tv4PBJ7`Of(0}}&7L-8CThH!}39NptU#++5{!VDZh2m=RE)G)LIl`t^C)%>3W z68Zn1fdS~Kb6`Dl7{KNr)Id!_Hs=mRjRV{qOf?EXYk&@P1O^4rkpe)rMD>5i|Npse G=>P!vXf{m% literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fbe7d2fe74ec76c7315b1436a8eb1ef2bd71790d b/src/libs/libsrtp/fuzzer/corpus/fbe7d2fe74ec76c7315b1436a8eb1ef2bd71790d new file mode 100644 index 0000000000000000000000000000000000000000..ddc6b254989dce852be8d4bef7b7c179c4e5a645 GIT binary patch literal 122 zcmdl#@jutgm(>gm4FCQ+NC7DzQ2NGDT)iB^W@KPcEM{h4WT<wS2?RGm1Q?{JrM3M3 e|DTOP0i>|Hm=R(?9Z&-tKn!ujFd`jj0s{bA+a;3# literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fc0784659f2f2db14675c08091a72748e8bf0653 b/src/libs/libsrtp/fuzzer/corpus/fc0784659f2f2db14675c08091a72748e8bf0653 new file mode 100644 index 0000000000000000000000000000000000000000..a8b30833401b9c9b3b6c23a752160a8885258db8 GIT binary patch literal 108 zcma#oD_|&zXJB9`%H&9`2hu?B|Nnnq28QZt1_nkTFFU?0F{d;&HNJq8fk751^baTx h0wASx7}_DEFp%N^iGao0fm|R@9Kz4Z`3quH0{}+a8#@31 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fc72627e1e118b27d857ecc821d7230a4a3e19ea b/src/libs/libsrtp/fuzzer/corpus/fc72627e1e118b27d857ecc821d7230a4a3e19ea new file mode 100644 index 0000000000000000000000000000000000000000..a376192f50f0bd3a567edbabfaf2cd21800cfdbc GIT binary patch literal 142 zcma#o%VQ{sXJB9~O8qaK$p8lb|Nr-8V5qJJih>!8@(fG@Aeri7MlgmbV_0krW(Y7s y`C#d4btn%a3FL4xFvv0#&k+JL6&Qs7w=*!z0Ww(_IDinW_5WX>jsF=KT&n>q-Wk~d literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fcbaa80ef465b04a9b23aed5fdeeb9bbae8a2be3 b/src/libs/libsrtp/fuzzer/corpus/fcbaa80ef465b04a9b23aed5fdeeb9bbae8a2be3 new file mode 100644 index 0000000000000000000000000000000000000000..f48314865fa8b25321f98d15996d5beb50f0f4ea GIT binary patch literal 2082 zcmb_d&udgy6#m|{=wy%*oK2Ee`XriwabjYz&`gyHR0KiPRTrgPR9<1|IF@-vs27rK z(jeG{``LBnKVWy2DRj|Am)*E>C&87Q1U2OL`_6qYajK$)o|*UVJ@?1C=X~e8=egM~ zZaN_8Wue}NNeJODAom;%7XYu$r>Kl-a_w&Tz~>3VMO*qy)0)x58m^s5xPBUrX2)GJ zkKT%A0{`K{iD)V=jT_k?0S-a?%fr&*u#{tKG?`CM@fGcIi1InG!KU=Z#(*JT=&YX! zXSB<vd5TQ+$KNS940N*Y(Q7xlH@i1lm_EgA2e~^%eI5AjNT2-=QROc|1=l{Jx}OjH zV**#_69t38AA`XFIBOmd0t%-}M1$KAMl{=NS2KfYXr2=ipZ`1hFF5*CQ{x44<{$B- z*DlYNSG@Om=G=DfzG1hJMkBiAT$}lcq8wOO4c;M$H3dtf*kOKO$E_=!rOf?MWK75& z16GC3*R~ve5Fzy69;2L^D_!!w?JC+>9S$7G+^s9oqTUJiJ-mmf_xIPlP;5<Lwe*2% zaVFO5RA|X0C2({vk-}G`k9GglP#DEen`*bDNi51cS-ZMY7`m;PZ9gWr!gRX`S{yov z&m!2{r}J#vF{1O)2rh4-tM16Tia0&DewT~MK|#x(WV0e@Z529#R-w%JJQpflM^RIA z^WSSAa|DT3L(%k6t)S%znGb&9M`96tI3CR+$#sD4Ub~7(gq>i3&|G*PjGw$Ohwbj_ z3`%)l3LXNz>w7$m4sun3REz0U<Y8}@Jxd%l9vU=xe*$w6ubAJj?B<c%XlcJiC7O?5 z>RYNO1#j=yd!e?mLB|;s^C~%;#@aI?V|-r8ou;EMKwnZhk5!J8|2ynR;VxDr|Fdn6 zM#?2|t<3WOpp?b~t@^k$Z|!cJ($K`EsiG!IO=KENOi%3@JH}$RH9jVb%XaoFTv0jc zv7AUM6VNTHTHSlo)hGAr{zYU1W2DesN?2@~%dh*Zc_lwevuHI)-l%$+P$3U@y&B_S z*G11xvfn8p`JIuZDi?8AU`e!O(gEPfP`!#~m5%&N_SrTX^2IhJf2)_RltphfA!_69 z08)*IMb(MQGP`4D{?T!Auw9Mx;rqQ9WLH+^tVSV`r9-AWzhj??-7ky+pYL`uo4uMo zoIMe_w~5eNut7PNv-dwUs2Pp#y@%QKTGonMvt*glE`50VEY-hlZmGm2sN<9Wz$RLF MJ9FMln?2V21Myg;l>h($ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fcbfcc14b7ce95f3d4c79d3f0d013e26fbb3f90e b/src/libs/libsrtp/fuzzer/corpus/fcbfcc14b7ce95f3d4c79d3f0d013e26fbb3f90e new file mode 100644 index 0000000000000000000000000000000000000000..6aec9c17c162151fd354fb2d76d0adfe616f1ea6 GIT binary patch literal 69 zcmbREe?QmDm(@UERb6deTwTq`z`(!(#BeZ22*^}m5N>B+P?-Z{vM{V>;9&jF!2STp L`TxJVnxPs1nHUi+ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fcdec31a3bcb5e05058749746edf9ec860b54a85 b/src/libs/libsrtp/fuzzer/corpus/fcdec31a3bcb5e05058749746edf9ec860b54a85 new file mode 100644 index 0000000000000000000000000000000000000000..7ce214c7101de109266eb501e0f8fc252cc47f77 GIT binary patch literal 187 zcmZSNWT-A?WNWQvU|?jBVgQ4O{~3ybjA}+8;SR*MKz1=BLp4wh2(YYNxzax@?En8C z+Kmhh28;|Z{{v-O7*?*VZUL%fP+(B^{|^SN5Dg6f!8BH5G4y~m`hf_r9;lU2bHFaD I&WC_@0K^70qW}N^ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fcf94887dc792d14601a0b1edf7bf2bc29ef8725 b/src/libs/libsrtp/fuzzer/corpus/fcf94887dc792d14601a0b1edf7bf2bc29ef8725 new file mode 100644 index 0000000000000000000000000000000000000000..7babf74e66d2bbbf018dc5b9504e9003a5efb130 GIT binary patch literal 144 zcmW+vu?>Vk3^UN=YHC(s4jN`SeUSnQA%uVegpLZ9_&LALJ7+1jVp~aUC#(^`GKgMO z!pwT$Jb{9n#{Dw}*|eDv-MQxgG&#c;FDvAl5=zqZBP9;+^sw7_8iPv89gzc-S?6&s L75>fP4mAA%-7F%7 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fd567783b8f89ff8fff4b368e827cbc1ce4718db b/src/libs/libsrtp/fuzzer/corpus/fd567783b8f89ff8fff4b368e827cbc1ce4718db new file mode 100644 index 0000000000000000000000000000000000000000..278c71232b01f0dfa15546dd958c277464e31bd5 GIT binary patch literal 283 zcmb>XZ^w22Wi<l>!?*tqQa}m>p2-yh$!bO*0mRkCj11L46(A;<j0Q7+YzTsggV-<7 z4Pt~FG?9_P9b`1vFpz;XF%;+stggfqWMFs+at=ehULHe9JdjZ|{rjvcu+abi|9|{1 Hu4VuLCsQ^2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fd59c04966e702e69c1d1590444fc12cf512dac1 b/src/libs/libsrtp/fuzzer/corpus/fd59c04966e702e69c1d1590444fc12cf512dac1 new file mode 100644 index 0000000000000000000000000000000000000000..0d8d9007da54ef7e985f5bd3b4575733695a82c5 GIT binary patch literal 965 zcmbu8zfQw25XQd?kw`irIx$2+h^hl>ff-(*;t?`+=m0`36COHMU6`1=@en);D=Ql# zESS%K5=X8IL!3y?+2_mezB^ZAJU&za=Cf?N<jkS9o&ZV#;ufG50>zh03*&HuE4MR3 zo@1Tjr2DAGcQ7O}pX&b1g%2cy2C2l6r;4XxywJ(sLXZ|ha=_TJ$EfkhOIQztOd^3g zp=}+Gg1603%m45p@@mVTipLM~H<|gZ(+wF?WPAks?=-%Ax2QAICv_=IoBS}0&Va(U zlc+c7iS4ZfC8*=-N$;uKy4CP<ofd~YcAWIr0DrVG)+M}Ue#`C*Db}zpt#{_!0lQHT t2K)2-5A5fFeX$ceB;dZ>g=3~4Vceguq@XZP8(zYmy@)XC`C9R?!Y}1{l-U3P literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fd657ccaaca06d0a4ac30d7965c41cc2bee6978e b/src/libs/libsrtp/fuzzer/corpus/fd657ccaaca06d0a4ac30d7965c41cc2bee6978e new file mode 100644 index 0000000000000000000000000000000000000000..096d2b88fe78d09de65bf495e6b7d81f1bc5f51f GIT binary patch literal 493 zcmZSh|Np;NJOcwmQ6@)fJ&*<hppY-a{)zv&UcRgba{v8zkOGS{D1Bon28u9(ctE1M zn318{VJ4FRi2q+W6GSmE+CcO(RD)Ck4FVzv8!Qdg1=0yJ8w{*r3{G|iS+Kz-bA-TR z!tD$Ub2u0nWq~{<m?|*sSmy!-j7SbtLw2B-3s5B^16WyUbuqG$3<3=MzI|utFb4WU zm_Y``WCf6Of$oEOyP5-Tbpuc#iOQ>iE&!Sc1d<q`9IutfP=X-}3a=j^K#iaPn^9pn Lr?uz*%>N7kg%@2> literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fd7695c4e2aed317cb86e9c1074aeb8a989fda29 b/src/libs/libsrtp/fuzzer/corpus/fd7695c4e2aed317cb86e9c1074aeb8a989fda29 new file mode 100644 index 0000000000000000000000000000000000000000..fa1a57cd9e5d8bbe45159a55d2614e7aa03b9c92 GIT binary patch literal 110 zcma#o%VQ{sXJB9`%H&9`2hu?B|Nnnq28QZt1_nlmKwfn*BLf&$t3yN>tf4dmCj)~l cNL_XD93ilna61FTG!UzfgMkUA3PM){07NDaaR2}S literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fd95d937d82debbb85ad308e34c0b1756cab756b b/src/libs/libsrtp/fuzzer/corpus/fd95d937d82debbb85ad308e34c0b1756cab756b new file mode 100644 index 0000000000000000000000000000000000000000..a6a7cad1db3c2d86932dd4eb5f7c3ea012b91af6 GIT binary patch literal 501 zcmZXQy-EW?6otP5i;Y+WgT)p?D(!-hGPR9hVP!d346<l~WQ_<@xJ4i@vG3y32zdli z;`PjCqv)Q2*||S^&b_DnWaMY$!51(md!d1uT|$gh&Oz=ER4lSsI^|BcEliqkA9^^R z$MqrhWvc<k)ta}sjAa!3XvU*g>pa*%8VNt_xK>6Ch)I%3q9fBO9i`rO0zG<gEQ&=e zH3bYAtf1Cwk4#78Lj{uULNz##pvh4${7zhC;lCe=iz!bx_lw{kT3xE7d##F4BkgqW z_?l=M=C@(Os_{ho332Jz_h)x9sSG|AUT(;7{hF;CeAw%9V>ZSll%)l!c9MPG>+RZ! Wiqf2I{<wG2q<3a2xCoY~obU}|mVNL5 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fdd6a808066a675e9984542ba69ed74a95f478eb b/src/libs/libsrtp/fuzzer/corpus/fdd6a808066a675e9984542ba69ed74a95f478eb new file mode 100644 index 0000000000000000000000000000000000000000..df195226f94adf3315ad9e3e8d96f40ea0f7996d GIT binary patch literal 96 zcmcE4W2h>LXJB9`%H&9`2hu?B|Nnnq28QZt1_nlm07G>#BSUpR5Cg?P3j7(YAu_rQ YoD2-@EDUov82&La{0C}<h{MQg0KNSZ6#xJL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fe15945925e89be8249db3b968ef6b8bcfd762f4 b/src/libs/libsrtp/fuzzer/corpus/fe15945925e89be8249db3b968ef6b8bcfd762f4 new file mode 100644 index 0000000000000000000000000000000000000000..7160e14404fa286a6119ff21075f9cc5f1ef900a GIT binary patch literal 75 zcmbREfB)x|FRK|C*chPTKLm&{FargW^NR}ffwGJs$^Xg>)x~8%%*ap;giH(!|9<{& N`440=%w?#q1^@~i8My!e literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fe1f98b8e9556ab3ed1d1a43c981b52f6dfa6bb4 b/src/libs/libsrtp/fuzzer/corpus/fe1f98b8e9556ab3ed1d1a43c981b52f6dfa6bb4 new file mode 100644 index 0000000000000000000000000000000000000000..cc287afd8d51d93bca8b4dfb4567b0981e5ff32f GIT binary patch literal 112 zcma#o%VUs?XJB9`%H&9`2hu?B|Nnnq28QZt1_nk31+YkUu^K~lF(Xh+9n5E7Fl1nO g31qe~a56B+0@VSf=Lj(vgSBa)=>rQ^0|8J20I7=<bpQYW literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fe63f261780d7277153370152ead17700d939b68 b/src/libs/libsrtp/fuzzer/corpus/fe63f261780d7277153370152ead17700d939b68 new file mode 100644 index 0000000000000000000000000000000000000000..2e0fec9fda04220e31b6497e979b884439913c9d GIT binary patch literal 97 zcma#o%VUs?XJB9`%H&9`2hu?B|9>?@weNo*i;+PAB*0KztOmr44As@@U_Jwb0RzKJ jFq0E3J%^XUkbxm5H7`E7I5oa3u{0+&zMv>SEwdT`!AKSL literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fe73188af7332dbd41e13f0d6eb68813cfe666dd b/src/libs/libsrtp/fuzzer/corpus/fe73188af7332dbd41e13f0d6eb68813cfe666dd new file mode 100644 index 0000000000000000000000000000000000000000..c1ceb98d3e91eb3b7630fa945af280f43747359b GIT binary patch literal 775 zcmdr~J5Iwu5PfS!;G~LhhlqqyP|`q06Qop;ID>`2g&VN!K(i900$R#QX}E+-5XZ>{ zj6}imX5z)RloRlZncexkot+st)0@Qr@-$2ysR`%Y1wLNgV7<1y{<z7$+A*$B&|>69 zVG9F0S=PA1Coqq1fa5%Ud24gQ`Ya}DR?bY}R-E}me-|SqK3(mpEqVr4A<T%kz(=V* zf0))VtpbnQ1<t07G|;d+TeK-L#C!FH@PxmJaL{2sWQkIv|F#YPo?b|}M#q*%B0#Eo zyIB6yp7>ET{g7@X@%?4f2ZNnO)`tu<qBRuHQ$^u6qvdHXd)I+;wAER3xQ>$~&4zxf oE6BL1vPtCzS)gMngYwp!#35@CVK_im$Yjw=aE+wic@n_>0tSVJkpKVy literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fe9fb4a8ee8df6455e2f58dd5e0fa18d258c8767 b/src/libs/libsrtp/fuzzer/corpus/fe9fb4a8ee8df6455e2f58dd5e0fa18d258c8767 new file mode 100644 index 0000000000000000000000000000000000000000..edd6624e6e2ddf8a61f61e757199824a2b20e3e9 GIT binary patch literal 402 zcma)2Jr4mv5Pf@BSkVZbM4=NQ5x;;$p;4<83K5;$b+-u$ACdS4a=%5Z^K&%Bc(=QB z#M@*xJM-qfnH>vJ7tzslu2-;NW(Z}BLg8T(X9rjP8RdxpSjTAzqpM}6xbRM~FGKTm zefy-f$OBb`+Ew2ikVEWl3@Zge8!Afx5$01)NF9eaCE-(fQnmy<M<?JS1K_X`@fxVb z_ln~NMKpo!Q9={5O0R|$vf}ibefM(ye|VYG$E$NR;WidOCu&7xA4U71M7dnVFzPM) GK>r2tDojEE literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fef53990a9dfa6829c236f68a51dd273054184fd b/src/libs/libsrtp/fuzzer/corpus/fef53990a9dfa6829c236f68a51dd273054184fd new file mode 100644 index 0000000000000000000000000000000000000000..ee4fa08622759131f478bcddb6da993e172cbbb8 GIT binary patch literal 173 zcmdnb5Ww~FWi<l>!?*tqQa}m>p2-yh$!bOg1_nk3cOa8tUNIv>HBc2JP#8=`gBd_J z1VO|>YzS*2P!EvB!0`Y7|5#t3Fi?u|zne8k2n0A87-YeQ70(d@3kbI}FwEg#V9?dg Z%m2lY4-}gdpIjQB3ewlW09I7Z008k*AJ_l@ literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ff2df20321ac2b49b512ef4736fffd5e3d68ac1c b/src/libs/libsrtp/fuzzer/corpus/ff2df20321ac2b49b512ef4736fffd5e3d68ac1c new file mode 100644 index 0000000000000000000000000000000000000000..3b3c5a477204f80a88420e4c8ca3d223ec64c18b GIT binary patch literal 458 zcmZ8du}T9$5PfTtJuAso3IQt>i-6jx#RaYk<QtYCR|F);U1E`eXd{BySO(6*FA;lx zB%PI}x^Z^)B4-}lz1g>KX6_!Cx$gj+k8E})ED&jc_ZQw?f|5nR>lHqLi5mmmeDw6z zw1NmQ+A2k1K>m?3;G$*|wb1cCIxE|%#g9N~VLEc!s$DDP-aM^gP;s&sE)Tv@tXG+S zDx!hfrc^XX;){Ec<)2Sk7UQy>tTf!0{r>ybQ_23VzPG2+U?3J$*!8L8%~ag+L=xCk zB`d7{f!wVZb<J#eJ<X&=GX+(`9-^Rx{Jww3bHI8<PbnRSI^?zkL^u-HO`c`BE5;gB P;w>8H?4*2n<^|&yW}S1m literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ff58579901a8a58274becfa93bc44365a321d22b b/src/libs/libsrtp/fuzzer/corpus/ff58579901a8a58274becfa93bc44365a321d22b new file mode 100644 index 0000000000000000000000000000000000000000..95d9df4fe7745625fdc14b3071d75cc387980432 GIT binary patch literal 180 zcmZ{eF$%&!5Jlgb!iiPDI)aU*<O(@}XIKQc2#AD;O%m92xrAO*?8b3zY@FuL{6D-I zzrQegplc-TOs!P)0K;JIG8xD7E%-J^$~3~}e^fm)h-t6?f`~$(>E<;`kEl{F_+dJj b@)k-Q1+V+(w3rDG*k0A?%HBDJIZ=@}eupFU literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ffd4a31dc7415d314324661df7153aa31640af99 b/src/libs/libsrtp/fuzzer/corpus/ffd4a31dc7415d314324661df7153aa31640af99 new file mode 100644 index 0000000000000000000000000000000000000000..a24770f875507a7300cc16d3afd9552c034c61fe GIT binary patch literal 178 zcmZ2=(dfTqyuKkrQ6@)fJp&m0|NGxppP{;%fq{`h0VvX1tj17X%m@@whbUmMWMFs+ zW^w{ad!XbTA%+VKEIFxpPzA_J;VKhkfd<YgW~dfoFlJzYDF$i=OF&G4NU%eU0XYE) LloaLXF=PS&uyi0W literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ffedcc07b024a76f6e6b859d61c87cc035012201 b/src/libs/libsrtp/fuzzer/corpus/ffedcc07b024a76f6e6b859d61c87cc035012201 new file mode 100644 index 0000000000000000000000000000000000000000..4322932a70694b7c6eee3115d08748bb99f29dc8 GIT binary patch literal 144 zcma!NWMHs}XJB9`%H&AR2hu?B|Nk#A%~bH;mw};r8^gA3)!TrefC;D=2$=FgJUC!r zU}O+x5a42{E{4cgSF3~7F)&y|X$DRP23er8((2+lLJSOI5aBsY0$|2}hWGy&Sj>U0 HU}OLQf$t!2 literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/ffef8bebf9bb707a5cb7d9bb55eb1b3d8f54d702 b/src/libs/libsrtp/fuzzer/corpus/ffef8bebf9bb707a5cb7d9bb55eb1b3d8f54d702 new file mode 100644 index 0000000000000000000000000000000000000000..abf585743f0c6ad5c5537844db6df3157323f6e0 GIT binary patch literal 122 zcmdm=TUwG>k{X|qT2PW9#Q+1vKt?qqkYHqR2Z>b|Gcr_HgSZS3G8)VPvLOf}4(C1v b=>dXjhW$^!fmsTS48;tLAR|CvKTrVxJw_DN literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fff73fea62e77e16da2a1773de25945f4860a991 b/src/libs/libsrtp/fuzzer/corpus/fff73fea62e77e16da2a1773de25945f4860a991 new file mode 100644 index 0000000000000000000000000000000000000000..fcfe4e480b07c3a032a273be72bfa9f07a762bc2 GIT binary patch literal 931 zcmbtTF>b;@5S%rZVs|L6q6is9K`A2WQo$Ecp5Tgt0t%8USENETJb^Bc;5$5nh8%M~ zpSk#ofV?OBbi3=_*_&}O!q;a3U^P!>-`r_h>nWfVAl3o(A@-rqB)ns6BSWMqHZh*s zTQOR~Ad%HfXLDQrf@Dxb%JE=>!TTlfv~dIw#DfrZS-P1qtTWOaWd__N1KqfwHps$n z8^!(Oh0FioLu7Ah&n5l~-<L$A%=3<LVkBIGy8{o$N;m42qEU{NN-&H&D<fq1<Q!M* zVa;Dw&<W5h#ac5Uh>(LUt+%?P7EZ|cnZ!La+bytfYEgB11o~07DI4wXIoTUB4qUaJ Sk|A*U=FhR-@&`0mYU~WivwegB literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/corpus/fffa69b8781b3df9711059a17d365670c037b419 b/src/libs/libsrtp/fuzzer/corpus/fffa69b8781b3df9711059a17d365670c037b419 new file mode 100644 index 0000000000000000000000000000000000000000..50d95bdf4a41187354a4fa51cbc2648a805c387f GIT binary patch literal 291 zcmYjMF%H5o47{RBgbmSw35fxTjfEHV0lXnXC<7vDtG2LYVC>Q-<R8ra2_K=xaXQqI z<IDMcNr3vU%o`Gv(*<yAAd$1*aM>g4fJ4tP#Sw~o%P(>eVHa@M`yh7>tIvQwv9Lm` zxy-FetX;Hz=-1UgjnUN#;xbYU9)bto7xv7Wf@ys#i?%K;un27l6$^{HY|d;a-opME iI$jb!8Zw?H`N@=o?~R<UNhE``P8Cesc;Vde8Sn@9ZatO& literal 0 HcmV?d00001 diff --git a/src/libs/libsrtp/fuzzer/fuzzer.c b/src/libs/libsrtp/fuzzer/fuzzer.c new file mode 100644 index 00000000..afa080a2 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/fuzzer.c @@ -0,0 +1,835 @@ +/* By Guido Vranken <guidovranken@gmail.com> -- + * https://guidovranken.wordpress.com/ */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <stdbool.h> +#include <limits.h> +#include "srtp.h" +#include "srtp_priv.h" +#include "fuzzer.h" +#include "mt19937.h" +#include "testmem.h" + +/* Global variables */ +static bool g_no_align = false; /* Can be enabled with --no_align */ +static bool g_post_init = + false; /* Set to true once past initialization phase */ +static bool g_write_input = false; + +#ifdef FUZZ_32BIT +#include <sys/mman.h> +static bool g_no_mmap = false; /* Can be enabled with --no_mmap */ +static void *g_mmap_allocation = + NULL; /* Keeps current mmap() allocation address */ +static size_t g_mmap_allocation_size = + 0; /* Keeps current mmap() allocation size */ +#endif + +/* Custom allocator functions */ + +static void *fuzz_alloc(const size_t size, const bool do_zero) +{ + void *ret = NULL; +#ifdef FUZZ_32BIT + bool do_malloc = true; +#endif + bool do_mmap, mmap_high = true; + + if (size == 0) { + size_t ret; + /* Allocations of size 0 are not illegal, but are a bad practice, since + * writing just a single byte to this region constitutes undefined + * behavior per the C spec. glibc will return a small, valid memory + * region + * whereas OpenBSD will crash upon writing to it. + * Intentionally return a pointer to an invalid page to detect + * unsound code efficiently. + * fuzz_free is aware of this pointer range and will not attempt + * to free()/munmap() it. + */ + ret = 0x01 + (fuzz_mt19937_get() % 1024); + return (void *)ret; + } + + /* Don't do mmap()-based allocations during initialization */ + if (g_post_init == true) { + /* Even extract these values if --no_mmap is specified. + * This keeps the PRNG output stream consistent across + * fuzzer configurations. + */ + do_mmap = (fuzz_mt19937_get() % 64) == 0 ? true : false; + if (do_mmap == true) { + mmap_high = (fuzz_mt19937_get() % 2) == 0 ? true : false; + } + } else { + do_mmap = false; + } + +#ifdef FUZZ_32BIT + /* g_mmap_allocation must be NULL because we only support a single + * concurrent mmap allocation at a time + */ + if (g_mmap_allocation == NULL && g_no_mmap == false && do_mmap == true) { + void *mmap_address; + if (mmap_high == true) { + mmap_address = (void *)0xFFFF0000; + } else { + mmap_address = (void *)0x00010000; + } + g_mmap_allocation_size = size; + + ret = mmap(mmap_address, g_mmap_allocation_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + if (ret == MAP_FAILED) { + /* That's okay -- just return NULL to the caller */ + + ret = NULL; + + /* Reset this for the sake of cleanliness */ + g_mmap_allocation_size = 0; + } + /* ret not being MAP_FAILED does not mean that ret is the requested + * address (mmap_address). That's okay. We're not going to perform + * a munmap() on it and call malloc() instead. It won't gain us + * anything. + */ + + g_mmap_allocation = ret; + do_malloc = false; + } + + if (do_malloc == true) +#endif + { + ret = malloc(size); + } + + /* Mimic calloc() if so requested */ + if (ret != NULL && do_zero) { + memset(ret, 0, size); + } + + return ret; +} + +/* Internal allocations by this fuzzer must on one hand (sometimes) + * receive memory from mmap(), but on the other hand these requests for + * memory may not fail. By calling this function, the allocation is + * guaranteed to succeed; it first tries with fuzz_alloc(), which may + * fail if it uses mmap(), and if that is the case, memory is allocated + * via the libc allocator (malloc, calloc) which should always succeed */ +static void *fuzz_alloc_succeed(const size_t size, const bool do_zero) +{ + void *ret = fuzz_alloc(size, do_zero); + if (ret == NULL) { + if (do_zero == false) { + ret = malloc(size); + } else { + ret = calloc(1, size); + } + } + + return ret; +} + +void *fuzz_calloc(const size_t nmemb, const size_t size) +{ + /* We must be past srtp_init() to prevent that that function fails */ + if (g_post_init == true) { + /* Fail 1 in 64 allocations on average to test whether the library + * can deal with this properly. + */ + if ((fuzz_mt19937_get() % 64) == 0) { + return NULL; + } + } + + return fuzz_alloc(nmemb * size, true); +} + +static bool fuzz_is_special_pointer(void *ptr) +{ + /* Special, invalid pointers introduced when code attempted + * to do size = 0 allocations. + */ + if ((size_t)ptr >= 0x01 && (size_t)ptr < (0x01 + 1024)) { + return true; + } else { + return false; + } +} + +void fuzz_free(void *ptr) +{ + if (fuzz_is_special_pointer(ptr) == true) { + return; + } + +#ifdef FUZZ_32BIT + if (g_post_init == true && ptr != NULL && ptr == g_mmap_allocation) { + if (munmap(g_mmap_allocation, g_mmap_allocation_size) == -1) { + /* Shouldn't happen */ + abort(); + } + g_mmap_allocation = NULL; + } else +#endif + { + free(ptr); + } +} + +static srtp_err_status_t fuzz_srtp_protect(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki) +{ + size_t out_len = *len + SRTP_MAX_TRAILER_LEN; + srtp_err_status_t s = + srtp_protect(srtp_sender, hdr, *len, hdr, &out_len, mki); + *len = out_len; + return s; +} + +static srtp_err_status_t fuzz_srtp_unprotect(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki) +{ + return srtp_unprotect(srtp_sender, hdr, *len, hdr, len); +} + +static srtp_err_status_t fuzz_srtp_protect_rtcp(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki) +{ + size_t out_len = *len + SRTP_MAX_SRTCP_TRAILER_LEN; + srtp_err_status_t s = + srtp_protect_rtcp(srtp_sender, hdr, *len, hdr, &out_len, mki); + *len = out_len; + return s; +} + +static srtp_err_status_t fuzz_srtp_unprotect_rtcp(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki) +{ + return srtp_unprotect_rtcp(srtp_sender, hdr, *len, hdr, len); +} + +/* Get protect length functions */ + +static srtp_err_status_t fuzz_srtp_get_protect_length(const srtp_t srtp_ctx, + size_t mki, + size_t *length) +{ + return srtp_get_protect_trailer_length(srtp_ctx, mki, length); +} + +static srtp_err_status_t fuzz_srtp_get_protect_rtcp_length( + const srtp_t srtp_ctx, + size_t mki, + size_t *length) +{ + return srtp_get_protect_rtcp_trailer_length(srtp_ctx, mki, length); +} + +static uint8_t *extract_key(const uint8_t **data, + size_t *size, + const size_t key_size) +{ + uint8_t *ret; + if (*size < key_size) { + return NULL; + } + + ret = fuzz_alloc_succeed(key_size, false); + EXTRACT(ret, *data, *size, key_size); + + return ret; +} + +static srtp_master_key_t *extract_master_key(const uint8_t **data, + size_t *size, + const size_t key_size, + bool simulate, + bool *success) +{ + srtp_master_key_t *ret = NULL; + uint16_t mki_id_size; + + if (simulate == true) { + *success = false; + } + + EXTRACT_IF(&mki_id_size, *data, *size, sizeof(mki_id_size)); + + if (*size < key_size + mki_id_size) { + goto end; + } + + if (simulate == true) { + *data += key_size + mki_id_size; + *size -= key_size + mki_id_size; + *success = true; + goto end; + } + + ret = fuzz_alloc_succeed(sizeof(srtp_master_key_t), false); + ret->key = fuzz_alloc_succeed(key_size, false); + + ret->mki_id = fuzz_alloc_succeed(mki_id_size, false); + + EXTRACT(ret->key, *data, *size, key_size); + EXTRACT(ret->mki_id, *data, *size, mki_id_size); +end: + return ret; +} + +static srtp_master_key_t **extract_master_keys(const uint8_t **data, + size_t *size, + const size_t key_size, + size_t *num_master_keys) +{ + const uint8_t *data_orig = *data; + size_t size_orig = *size; + size_t i = 0; + + srtp_master_key_t **ret = NULL; + + *num_master_keys = 0; + + /* First pass -- dry run, determine how many keys we want and can extract */ + while (1) { + uint8_t do_extract_master_key; + bool success; + if (*size < sizeof(do_extract_master_key)) { + goto next; + } + EXTRACT(&do_extract_master_key, *data, *size, + sizeof(do_extract_master_key)); + + /* Decide whether to extract another key */ + if ((do_extract_master_key % 2) == 0) { + break; + } + + extract_master_key(data, size, key_size, true, &success); + + if (success == false) { + break; + } + + (*num_master_keys)++; + } + +next: + *data = data_orig; + *size = size_orig; + + /* Allocate array of pointers */ + ret = fuzz_alloc_succeed(*num_master_keys * sizeof(srtp_master_key_t *), + false); + + /* Second pass -- perform the actual extractions */ + for (i = 0; i < *num_master_keys; i++) { + uint8_t do_extract_master_key; + EXTRACT_IF(&do_extract_master_key, *data, *size, + sizeof(do_extract_master_key)); + + if ((do_extract_master_key % 2) == 0) { + break; + } + + ret[i] = extract_master_key(data, size, key_size, false, NULL); + + if (ret[i] == NULL) { + /* Shouldn't happen */ + abort(); + } + } + +end: + return ret; +} + +static srtp_policy_t *extract_policy(const uint8_t **data, size_t *size) +{ + srtp_policy_t *policy = NULL; + struct { + uint8_t srtp_crypto_policy_func; + size_t window_size; + uint8_t allow_repeat_tx; + uint8_t ssrc_type; + uint32_t ssrc_value; + uint8_t num_xtn_hdr; + uint8_t do_extract_key; + uint8_t do_extract_master_keys; + } params; + + EXTRACT_IF(&params, *data, *size, sizeof(params)); + + params.srtp_crypto_policy_func %= sizeof(fuzz_srtp_crypto_policies) / + sizeof(fuzz_srtp_crypto_policies[0]); + params.allow_repeat_tx %= 2; + params.ssrc_type %= + sizeof(fuzz_ssrc_type_map) / sizeof(fuzz_ssrc_type_map[0]); + + policy = fuzz_alloc_succeed(sizeof(*policy), true); + + fuzz_srtp_crypto_policies[params.srtp_crypto_policy_func] + .crypto_policy_func(&policy->rtp); + fuzz_srtp_crypto_policies[params.srtp_crypto_policy_func] + .crypto_policy_func(&policy->rtcp); + + if (policy->rtp.cipher_key_len > MAX_KEY_LEN) { + /* Shouldn't happen */ + abort(); + } + + policy->ssrc.type = fuzz_ssrc_type_map[params.ssrc_type].srtp_ssrc_type; + policy->ssrc.value = params.ssrc_value; + + if ((params.do_extract_key % 2) == 0) { + policy->key = extract_key(data, size, policy->rtp.cipher_key_len); + + if (policy->key == NULL) { + fuzz_free(policy); + return NULL; + } + } + + if (params.num_xtn_hdr != 0) { + const size_t xtn_hdr_size = params.num_xtn_hdr * sizeof(int); + if (*size < xtn_hdr_size) { + fuzz_free(policy->key); + fuzz_free(policy); + return NULL; + } + policy->enc_xtn_hdr = fuzz_alloc_succeed(xtn_hdr_size, false); + EXTRACT(policy->enc_xtn_hdr, *data, *size, xtn_hdr_size); + policy->enc_xtn_hdr_count = params.num_xtn_hdr; + } + + if ((params.do_extract_master_keys % 2) == 0) { + policy->keys = extract_master_keys( + data, size, policy->rtp.cipher_key_len, &policy->num_master_keys); + if (policy->keys == NULL) { + fuzz_free(policy->key); + fuzz_free(policy->enc_xtn_hdr); + fuzz_free(policy); + return NULL; + } + } + + policy->window_size = params.window_size; + policy->allow_repeat_tx = params.allow_repeat_tx; + policy->next = NULL; + +end: + return policy; +} + +static srtp_policy_t *extract_policies(const uint8_t **data, size_t *size) +{ + srtp_policy_t *curpolicy = NULL, *policy_chain = NULL; + + curpolicy = extract_policy(data, size); + if (curpolicy == NULL) { + return NULL; + } + + policy_chain = curpolicy; + + while (1) { + uint8_t do_extract_policy; + EXTRACT_IF(&do_extract_policy, *data, *size, sizeof(do_extract_policy)); + + /* Decide whether to extract another policy */ + if ((do_extract_policy % 2) == 0) { + break; + } + + curpolicy->next = extract_policy(data, size); + if (curpolicy->next == NULL) { + break; + } + curpolicy = curpolicy->next; + } + +end: + return policy_chain; +} + +static uint32_t *extract_remove_stream_ssrc(const uint8_t **data, + size_t *size, + uint8_t *num_remove_stream) +{ + uint32_t *ret = NULL; + uint8_t _num_remove_stream; + size_t total_size; + + *num_remove_stream = 0; + + EXTRACT_IF(&_num_remove_stream, *data, *size, sizeof(_num_remove_stream)); + + if (_num_remove_stream == 0) { + goto end; + } + + total_size = _num_remove_stream * sizeof(uint32_t); + + if (*size < total_size) { + goto end; + } + + ret = fuzz_alloc_succeed(total_size, false); + EXTRACT(ret, *data, *size, total_size); + + *num_remove_stream = _num_remove_stream; + +end: + return ret; +} + +static uint32_t *extract_set_roc(const uint8_t **data, + size_t *size, + uint8_t *num_set_roc) +{ + uint32_t *ret = NULL; + uint8_t _num_set_roc; + size_t total_size; + + *num_set_roc = 0; + EXTRACT_IF(&_num_set_roc, *data, *size, sizeof(_num_set_roc)); + if (_num_set_roc == 0) { + goto end; + } + + /* Tuples of 2 uint32_t's */ + total_size = _num_set_roc * sizeof(uint32_t) * 2; + + if (*size < total_size) { + goto end; + } + + ret = fuzz_alloc_succeed(total_size, false); + EXTRACT(ret, *data, *size, total_size); + + *num_set_roc = _num_set_roc; + +end: + return ret; +} + +static void free_policies(srtp_policy_t *curpolicy) +{ + size_t i; + while (curpolicy) { + srtp_policy_t *next = curpolicy->next; + + fuzz_free(curpolicy->key); + + for (i = 0; i < curpolicy->num_master_keys; i++) { + fuzz_free(curpolicy->keys[i]->key); + fuzz_free(curpolicy->keys[i]->mki_id); + fuzz_free(curpolicy->keys[i]); + } + + fuzz_free(curpolicy->keys); + fuzz_free(curpolicy->enc_xtn_hdr); + fuzz_free(curpolicy); + + curpolicy = next; + } +} + +static uint8_t *run_srtp_func(const srtp_t srtp_ctx, + const uint8_t **data, + size_t *size) +{ + uint8_t *ret = NULL; + uint8_t *copy = NULL, *copy_2 = NULL; + + struct { + uint16_t size; + uint8_t srtp_func; + uint32_t mki; + uint8_t stretch; + } params_1; + + struct { + uint8_t srtp_func; + uint32_t mki; + } params_2; + size_t ret_size; + + EXTRACT_IF(&params_1, *data, *size, sizeof(params_1)); + params_1.srtp_func %= sizeof(srtp_funcs) / sizeof(srtp_funcs[0]); + + if (*size < params_1.size) { + goto end; + } + + /* Enforce 4 byte alignment */ + if (g_no_align == false) { + params_1.size -= params_1.size % 4; + } + + if (params_1.size == 0) { + goto end; + } + + ret_size = params_1.size; + if (srtp_funcs[params_1.srtp_func].protect == true) { + /* Intentionally not initialized to trigger MemorySanitizer, if + * applicable */ + size_t alloc_size; + + if (srtp_funcs[params_1.srtp_func].get_length( + srtp_ctx, params_1.mki, &alloc_size) != srtp_err_status_ok) { + goto end; + } + + copy = fuzz_alloc_succeed(ret_size + alloc_size, false); + } else { + copy = fuzz_alloc_succeed(ret_size, false); + } + + EXTRACT(copy, *data, *size, params_1.size); + + if (srtp_funcs[params_1.srtp_func].srtp_func( + srtp_ctx, copy, &ret_size, params_1.mki) != srtp_err_status_ok) { + fuzz_free(copy); + goto end; + } + // fuzz_free(copy); + + fuzz_testmem(copy, ret_size); + + ret = copy; + + EXTRACT_IF(&params_2, *data, *size, sizeof(params_2)); + params_2.srtp_func %= sizeof(srtp_funcs) / sizeof(srtp_funcs[0]); + + if (ret_size == 0) { + goto end; + } + + if (srtp_funcs[params_2.srtp_func].protect == true) { + /* Intentionally not initialized to trigger MemorySanitizer, if + * applicable */ + size_t alloc_size; + + if (srtp_funcs[params_2.srtp_func].get_length( + srtp_ctx, params_2.mki, &alloc_size) != srtp_err_status_ok) { + goto end; + } + + copy_2 = fuzz_alloc_succeed(ret_size + alloc_size, false); + } else { + copy_2 = fuzz_alloc_succeed(ret_size, false); + } + + memcpy(copy_2, copy, ret_size); + fuzz_free(copy); + copy = copy_2; + + if (srtp_funcs[params_2.srtp_func].srtp_func( + srtp_ctx, copy, &ret_size, params_2.mki) != srtp_err_status_ok) { + fuzz_free(copy); + ret = NULL; + goto end; + } + + fuzz_testmem(copy, ret_size); + + ret = copy; + +end: + return ret; +} + +void fuzz_srtp_event_handler(srtp_event_data_t *data) +{ + fuzz_testmem(data, sizeof(srtp_event_data_t)); + if (data->session != NULL) { + fuzz_testmem(data->session, sizeof(*data->session)); + } +} + +static void fuzz_write_input(const uint8_t *data, size_t size) +{ + FILE *fp = fopen("input.bin", "wb"); + + if (fp == NULL) { + /* Shouldn't happen */ + abort(); + } + + if (size != 0 && fwrite(data, size, 1, fp) != 1) { + printf("Cannot write\n"); + /* Shouldn't happen */ + abort(); + } + + fclose(fp); +} + +int LLVMFuzzerInitialize(int *argc, char ***argv) +{ + char **_argv = *argv; + int i; + bool no_custom_event_handler = false; + + if (srtp_init() != srtp_err_status_ok) { + /* Shouldn't happen */ + abort(); + } + + for (i = 0; i < *argc; i++) { + if (strcmp("--no_align", _argv[i]) == 0) { + g_no_align = true; + } else if (strcmp("--no_custom_event_handler", _argv[i]) == 0) { + no_custom_event_handler = true; + } else if (strcmp("--write_input", _argv[i]) == 0) { + g_write_input = true; + } +#ifdef FUZZ_32BIT + else if (strcmp("--no_mmap", _argv[i]) == 0) { + g_no_mmap = true; + } +#endif + else if (strncmp("--", _argv[i], 2) == 0) { + printf("Invalid argument: %s\n", _argv[i]); + exit(0); + } + } + + if (no_custom_event_handler == false) { + if (srtp_install_event_handler(fuzz_srtp_event_handler) != + srtp_err_status_ok) { + /* Shouldn't happen */ + abort(); + } + } + + /* Fully initialized -- past this point, simulated allocation failures + * are allowed to occur */ + g_post_init = true; + + return 0; +} + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + uint8_t num_remove_stream; + uint32_t *remove_stream_ssrc = NULL; + uint8_t num_set_roc; + uint32_t *set_roc = NULL; + srtp_t srtp_ctx = NULL; + srtp_policy_t *policy_chain = NULL, *policy_chain_2 = NULL; + uint32_t randseed; + static bool firstrun = true; + + if (firstrun == true) { + /* TODO version check etc and send it to MSAN */ + } + +#ifdef FUZZ_32BIT + /* Free the mmap allocation made during the previous iteration, if + * applicable */ + fuzz_free(g_mmap_allocation); +#endif + + if (g_write_input == true) { + fuzz_write_input(data, size); + } + + EXTRACT_IF(&randseed, data, size, sizeof(randseed)); + fuzz_mt19937_init(randseed); + srand(randseed); + + /* policy_chain is used to initialize the srtp context with */ + if ((policy_chain = extract_policies(&data, &size)) == NULL) { + goto end; + } + /* policy_chain_2 is used as an argument to srtp_update later on */ + if ((policy_chain_2 = extract_policies(&data, &size)) == NULL) { + goto end; + } + + /* Create context */ + if (srtp_create(&srtp_ctx, policy_chain) != srtp_err_status_ok) { + goto end; + } + + // free_policies(policy_chain); + // policy_chain = NULL; + + /* Don't check for NULL result -- no extractions is fine */ + remove_stream_ssrc = + extract_remove_stream_ssrc(&data, &size, &num_remove_stream); + + /* Don't check for NULL result -- no extractions is fine */ + set_roc = extract_set_roc(&data, &size, &num_set_roc); + + { + uint8_t *ret; + int i = 0, j = 0; + + while ((ret = run_srtp_func(srtp_ctx, &data, &size)) != NULL) { + fuzz_free(ret); + + /* Keep removing streams until the set of SSRCs extracted from the + * fuzzer input is exhausted */ + if (i < num_remove_stream) { + if (srtp_stream_remove(srtp_ctx, remove_stream_ssrc[i]) != + srtp_err_status_ok) { + goto end; + } + i++; + } + + /* Keep setting and getting ROCs until the set of SSRC/ROC tuples + * extracted from the fuzzer input is exhausted */ + if (j < num_set_roc * 2) { + uint32_t roc; + if (srtp_stream_set_roc(srtp_ctx, set_roc[j], set_roc[j + 1]) != + srtp_err_status_ok) { + goto end; + } + if (srtp_stream_get_roc(srtp_ctx, set_roc[j + 1], &roc) != + srtp_err_status_ok) { + goto end; + } + j += 2; + } + + if (policy_chain_2 != NULL) { + /* TODO srtp_update(srtp_ctx, policy_chain_2); */ + + /* Discard after using once */ + free_policies(policy_chain_2); + policy_chain_2 = NULL; + } + } + } + +end: + free_policies(policy_chain); + free_policies(policy_chain_2); + fuzz_free(remove_stream_ssrc); + fuzz_free(set_roc); + if (srtp_ctx != NULL) { + srtp_dealloc(srtp_ctx); + } + fuzz_mt19937_destroy(); + + return 0; +} diff --git a/src/libs/libsrtp/fuzzer/fuzzer.h b/src/libs/libsrtp/fuzzer/fuzzer.h new file mode 100644 index 00000000..c8858b27 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/fuzzer.h @@ -0,0 +1,127 @@ +#define MAX_KEY_LEN 46 +#define EXTRACT(dest, src, srcsize, copysize) \ + { \ + memcpy((dest), (src), (copysize)); \ + (src) += (copysize); \ + (srcsize) -= (copysize); \ + } + +/* Extract data if src contains sufficient bytes, otherwise go to end */ +#define EXTRACT_IF(dest, src, srcsize, copysize) \ + { \ + if ((srcsize) < (copysize)) { \ + goto end; \ + } else { \ + EXTRACT((dest), (src), (srcsize), (copysize)); \ + } \ + } +#include <stdint.h> +#if UINTPTR_MAX == 0xffffffff +#define FUZZ_32BIT +#elif UINTPTR_MAX == 0xffffffffffffffff +#else +#error "Cannot detect word size" +#endif + +typedef srtp_err_status_t (*fuzz_srtp_func)(srtp_t, void *, size_t *, size_t); +typedef void (*fuzz_srtp_crypto_policy_func)(srtp_crypto_policy_t *); +typedef srtp_err_status_t (*fuzz_srtp_get_length_func)(const srtp_t, + size_t, + size_t *); + +struct fuzz_srtp_params { + uint8_t srtp_func; + uint8_t srtp_crypto_policy_func; + size_t window_size; + uint8_t allow_repeat_tx; + uint8_t ssrc_type; + uint32_t ssrc_value; + uint8_t key[MAX_KEY_LEN]; + uint8_t mki; +}; + +static srtp_err_status_t fuzz_srtp_protect(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki); +static srtp_err_status_t fuzz_srtp_unprotect(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki); +static srtp_err_status_t fuzz_srtp_protect_rtcp(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki); +static srtp_err_status_t fuzz_srtp_unprotect_rtcp(srtp_t srtp_sender, + void *hdr, + size_t *len, + size_t mki); + +static srtp_err_status_t fuzz_srtp_get_protect_length(const srtp_t srtp_ctx, + size_t mki, + size_t *length); +static srtp_err_status_t fuzz_srtp_get_protect_rtcp_length( + const srtp_t srtp_ctx, + size_t mki, + size_t *length); + +struct fuzz_srtp_func_ext { + fuzz_srtp_func srtp_func; + bool protect; + fuzz_srtp_get_length_func get_length; +}; + +const struct fuzz_srtp_func_ext srtp_funcs[] = { + { fuzz_srtp_protect, true, fuzz_srtp_get_protect_length }, + { fuzz_srtp_unprotect, false, NULL }, + { fuzz_srtp_protect_rtcp, true, fuzz_srtp_get_protect_rtcp_length }, + { fuzz_srtp_unprotect_rtcp, false, NULL } +}; + +struct fuzz_srtp_crypto_policy_func_ext { + fuzz_srtp_crypto_policy_func crypto_policy_func; + const char *name; +}; + +const struct fuzz_srtp_crypto_policy_func_ext fuzz_srtp_crypto_policies[] = { + { srtp_crypto_policy_set_rtp_default, "" }, + { srtp_crypto_policy_set_rtcp_default, "" }, + { srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32, + "srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32" }, + { srtp_crypto_policy_set_aes_cm_128_null_auth, + "srtp_crypto_policy_set_aes_cm_128_null_auth" }, + { srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32, + "srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32" }, + { srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80, + "srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80" }, + { srtp_crypto_policy_set_aes_cm_256_null_auth, + "srtp_crypto_policy_set_aes_cm_256_null_auth" }, + { srtp_crypto_policy_set_null_cipher_hmac_null, + "srtp_crypto_policy_set_null_cipher_hmac_null" }, + { srtp_crypto_policy_set_null_cipher_hmac_sha1_80, + "srtp_crypto_policy_set_null_cipher_hmac_sha1_80" }, +#ifdef OPENSSL + { srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32, + "srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32" }, + { srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80, + "srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80" }, + { srtp_crypto_policy_set_aes_cm_192_null_auth, + "srtp_crypto_policy_set_aes_cm_192_null_auth" }, + { srtp_crypto_policy_set_aes_gcm_128_16_auth, + "srtp_crypto_policy_set_aes_gcm_128_16_auth" }, + { srtp_crypto_policy_set_aes_gcm_256_16_auth, + "srtp_crypto_policy_set_aes_gcm_256_16_auth" }, +#endif +}; + +struct fuzz_srtp_ssrc_type_ext { + srtp_ssrc_type_t srtp_ssrc_type; + const char *name; +}; + +const struct fuzz_srtp_ssrc_type_ext fuzz_ssrc_type_map[] = { + { ssrc_undefined, "ssrc_undefined" }, + { ssrc_specific, "ssrc_specific" }, + { ssrc_any_inbound, "ssrc_any_inbound" }, + { ssrc_any_outbound, "ssrc_any_outbound" }, +}; diff --git a/src/libs/libsrtp/fuzzer/meson.build b/src/libs/libsrtp/fuzzer/meson.build new file mode 100644 index 00000000..9f76bcd3 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/meson.build @@ -0,0 +1,31 @@ +# libSRTP fuzzer +if not add_languages('cpp', required: get_option('fuzzer').enabled()) + subdir_done() +endif + +cxx = meson.get_compiler('cpp') +if cxx.get_id() != 'clang' + err_msg = 'libSRTP fuzzer requires compilation with clang, but compiler is ' + cxx.get_id() + if get_option('fuzzer').enabled() + error(err_msg) + else + warning(err_msg) + subdir_done() + endif +endif + +libfuzzer = cxx.find_library('libFuzzer', required: get_option('fuzzer')) + +# libFuzzer.a seems to need pthread, at least on Linux +threads = dependency('threads') + +if libfuzzer.found() + executable('srtp-fuzzer', + 'fuzzer.c', 'testmem.c', 'mt19937.cpp', + include_directories: [config_incs, crypto_incs, srtp3_incs], + cpp_args: ['-fsanitize=fuzzer'], + override_options : ['cpp_std=c++11'], + dependencies: [libfuzzer, threads], + link_with: libsrtp3, + install: false) +endif diff --git a/src/libs/libsrtp/fuzzer/mt19937.cpp b/src/libs/libsrtp/fuzzer/mt19937.cpp new file mode 100644 index 00000000..984f1fb5 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/mt19937.cpp @@ -0,0 +1,17 @@ +#include <random> +#include <cstdint> + +std::mt19937* mt_rand = NULL; + +extern "C" void fuzz_mt19937_init(uint32_t seed) { + mt_rand = new std::mt19937(seed); +} + +extern "C" uint32_t fuzz_mt19937_get(void) { + return (*mt_rand)(); +} + +extern "C" void fuzz_mt19937_destroy(void) { + delete mt_rand; + mt_rand = NULL; +} diff --git a/src/libs/libsrtp/fuzzer/mt19937.h b/src/libs/libsrtp/fuzzer/mt19937.h new file mode 100644 index 00000000..cda11819 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/mt19937.h @@ -0,0 +1,4 @@ +#include <stdint.h> +void fuzz_mt19937_init(uint32_t seed); +uint32_t fuzz_mt19937_get(void); +void fuzz_mt19937_destroy(void); diff --git a/src/libs/libsrtp/fuzzer/testmem.c b/src/libs/libsrtp/fuzzer/testmem.c new file mode 100644 index 00000000..52370a42 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/testmem.c @@ -0,0 +1,25 @@ +#include <stdint.h> +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#ifdef FUZZ_MSAN +#include <stdio.h> +static void fuzz_testmem_msan(void *data, size_t size) +{ + /* This is a trick to force MemorySanitizer to evaluate the data at hand */ + FILE *fp = fopen("/dev/null", "wb"); + fwrite(data, size, 1, fp); + fclose(fp); +} +#endif + +void fuzz_testmem(void *data, size_t size) +{ +#ifdef FUZZ_MSAN + fuzz_testmem_msan(data, size); +#endif + uint8_t *copy = malloc(size); + memcpy(copy, data, size); + free(copy); +} diff --git a/src/libs/libsrtp/fuzzer/testmem.h b/src/libs/libsrtp/fuzzer/testmem.h new file mode 100644 index 00000000..b00f3095 --- /dev/null +++ b/src/libs/libsrtp/fuzzer/testmem.h @@ -0,0 +1,3 @@ +#include <stdint.h> +#include <stddef.h> +void fuzz_testmem(void *data, size_t size); diff --git a/src/libs/libsrtp/include/srtp.h b/src/libs/libsrtp/include/srtp.h new file mode 100644 index 00000000..c7c2e552 --- /dev/null +++ b/src/libs/libsrtp/include/srtp.h @@ -0,0 +1,1499 @@ +/* + * srtp.h + * + * interface to libsrtp + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_SRTP_H +#define SRTP_SRTP_H + +#include <stdint.h> +#include <stddef.h> +#include <stdbool.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup SRTP Secure RTP + * + * @brief libSRTP provides functions for protecting RTP and RTCP. See + * Section @ref Overview for an introduction to the use of the library. + * + * @{ + */ + +/* + * SRTP_MASTER_KEY_LEN is the nominal master key length supported by libSRTP + */ + +#define SRTP_MASTER_KEY_LEN 30 + +/* + * SRTP_MAX_KEY_LEN is the maximum key length supported by libSRTP + */ +#define SRTP_MAX_KEY_LEN 64 + +/* + * SRTP_MAX_TAG_LEN is the maximum tag length supported by libSRTP + */ + +#define SRTP_MAX_TAG_LEN 16 + +/** + * SRTP_MAX_MKI_LEN is the maximum size the MKI could be which is + * 128 bytes + */ +#define SRTP_MAX_MKI_LEN 128 + +/** + * SRTP_MAX_TRAILER_LEN is the maximum length of the SRTP trailer + * (authentication tag and MKI) supported by libSRTP. This value is + * the maximum number of octets that will be added to an RTP packet by + * srtp_protect(). + * + * @brief the maximum number of octets added by srtp_protect(). + */ +#define SRTP_MAX_TRAILER_LEN (SRTP_MAX_TAG_LEN + SRTP_MAX_MKI_LEN) + +/** + * SRTP_SRCTP_INDEX_LEN is the size the SRTCP index which is + * 4 bytes + */ +#define SRTP_SRCTP_INDEX_LEN 4 + +/** + * SRTP_MAX_SRTCP_TRAILER_LEN is the maximum length of the SRTCP trailer + * (index, authentication tag and MKI) supported by libSRTP. This value is + * the maximum number of octets that will be added to an RTCP packet by + * srtp_protect_rtcp(). + * + * @brief the maximum number of octets added by srtp_protect(). + */ +#define SRTP_MAX_SRTCP_TRAILER_LEN \ + (SRTP_SRCTP_INDEX_LEN + SRTP_MAX_TAG_LEN + SRTP_MAX_MKI_LEN) + +/** + * SRTP_MAX_NUM_MASTER_KEYS is the maximum number of Master keys for + * MKI supported by libSRTP. + * + */ +#define SRTP_MAX_NUM_MASTER_KEYS 16 + +#define SRTP_SALT_LEN 14 + +/* + * SRTP_AEAD_SALT_LEN is the length of the SALT values used with + * GCM mode. GCM mode requires an IV. The SALT value is used + * as part of the IV formation logic applied to each RTP packet. + */ +#define SRTP_AEAD_SALT_LEN 12 + +#define SRTP_AES_128_KEY_LEN 16 +#define SRTP_AES_192_KEY_LEN 24 +#define SRTP_AES_256_KEY_LEN 32 + +#define SRTP_AES_ICM_128_KEY_LEN_WSALT (SRTP_SALT_LEN + SRTP_AES_128_KEY_LEN) +#define SRTP_AES_ICM_192_KEY_LEN_WSALT (SRTP_SALT_LEN + SRTP_AES_192_KEY_LEN) +#define SRTP_AES_ICM_256_KEY_LEN_WSALT (SRTP_SALT_LEN + SRTP_AES_256_KEY_LEN) + +#define SRTP_AES_GCM_128_KEY_LEN_WSALT \ + (SRTP_AEAD_SALT_LEN + SRTP_AES_128_KEY_LEN) +#define SRTP_AES_GCM_192_KEY_LEN_WSALT \ + (SRTP_AEAD_SALT_LEN + SRTP_AES_192_KEY_LEN) +#define SRTP_AES_GCM_256_KEY_LEN_WSALT \ + (SRTP_AEAD_SALT_LEN + SRTP_AES_256_KEY_LEN) + +/** + * @brief A srtp_cipher_type_id_t is an identifier for a particular cipher + * type. + * + * A srtp_cipher_type_id_t is an integer that represents a particular + * cipher type, e.g. the Advanced Encryption Standard (AES). A + * SRTP_NULL_CIPHER is available; this cipher leaves the data unchanged, + * and can be selected to indicate that no encryption is to take + * place. + * + * @ingroup Ciphers + */ +typedef uint32_t srtp_cipher_type_id_t; + +/** + * @brief An srtp_auth_type_id_t is an identifier for a particular + * authentication + * function. + * + * An srtp_auth_type_id_t is an integer that represents a particular + * authentication function type, e.g. HMAC-SHA1. A SRTP_NULL_AUTH is + * available; this authentication function performs no computation, + * and can be selected to indicate that no authentication is to take + * place. + * + * @ingroup Authentication + */ +typedef uint32_t srtp_auth_type_id_t; + +/** + * @brief srtp_err_status_t defines error codes. + * + * The enumeration srtp_err_status_t defines error codes. Note that the + * value of srtp_err_status_ok is equal to zero, which can simplify error + * checking somewhat. + * + */ +typedef enum { + srtp_err_status_ok = 0, /**< nothing to report */ + srtp_err_status_fail = 1, /**< unspecified failure */ + srtp_err_status_bad_param = 2, /**< unsupported parameter */ + srtp_err_status_alloc_fail = 3, /**< couldn't allocate memory */ + srtp_err_status_dealloc_fail = 4, /**< couldn't deallocate properly */ + srtp_err_status_init_fail = 5, /**< couldn't initialize */ + srtp_err_status_terminus = 6, /**< can't process as much data as */ + /**< requested */ + srtp_err_status_auth_fail = 7, /**< authentication failure */ + srtp_err_status_cipher_fail = 8, /**< cipher failure */ + srtp_err_status_replay_fail = 9, /**< replay check failed (bad index) */ + srtp_err_status_replay_old = 10, /**< replay check failed (index too */ + /**< old) */ + srtp_err_status_algo_fail = 11, /**< algorithm failed test routine */ + srtp_err_status_no_such_op = 12, /**< unsupported operation */ + srtp_err_status_no_ctx = 13, /**< no appropriate context found */ + srtp_err_status_cant_check = 14, /**< unable to perform desired */ + /**< validation */ + srtp_err_status_key_expired = 15, /**< can't use key any more */ + srtp_err_status_socket_err = 16, /**< error in use of socket */ + srtp_err_status_signal_err = 17, /**< error in use POSIX signals */ + srtp_err_status_nonce_bad = 18, /**< nonce check failed */ + srtp_err_status_read_fail = 19, /**< couldn't read data */ + srtp_err_status_write_fail = 20, /**< couldn't write data */ + srtp_err_status_parse_err = 21, /**< error parsing data */ + srtp_err_status_encode_err = 22, /**< error encoding data */ + srtp_err_status_semaphore_err = 23, /**< error while using semaphores */ + srtp_err_status_pfkey_err = 24, /**< error while using pfkey */ + srtp_err_status_bad_mki = 25, /**< error MKI present in packet is */ + /**< invalid */ + srtp_err_status_pkt_idx_old = 26, /**< packet index is too old to */ + /**< consider */ + srtp_err_status_pkt_idx_adv = 27, /**< packet index advanced, reset */ + /**< needed */ + srtp_err_status_buffer_small = 28, /**< out buffer is too small */ + srtp_err_status_cryptex_err = 29, /**< unsupported cryptex operation */ +} srtp_err_status_t; + +typedef struct srtp_ctx_t_ srtp_ctx_t; + +/** + * @brief srtp_sec_serv_t describes a set of security services. + * + * A srtp_sec_serv_t enumeration is used to describe the particular + * security services that will be applied by a particular crypto + * policy (or other mechanism). + */ +typedef enum { + sec_serv_none = 0, /**< no services */ + sec_serv_conf = 1, /**< confidentiality */ + sec_serv_auth = 2, /**< authentication */ + sec_serv_conf_and_auth = 3 /**< confidentiality and authentication */ +} srtp_sec_serv_t; + +/** + * @brief srtp_crypto_policy_t describes a particular crypto policy that + * can be applied to an SRTP stream. + * + * A srtp_crypto_policy_t describes a particular cryptographic policy that + * can be applied to an SRTP or SRTCP stream. An SRTP session policy + * consists of a list of these policies, one for each SRTP stream + * in the session. + */ +typedef struct srtp_crypto_policy_t { + srtp_cipher_type_id_t cipher_type; /**< An integer representing */ + /**< the type of cipher. */ + size_t cipher_key_len; /**< The length of the cipher key */ + /**< in octets. */ + srtp_auth_type_id_t auth_type; /**< An integer representing the */ + /**< authentication function. */ + size_t auth_key_len; /**< The length of the authentication */ + /**< function key in octets. */ + size_t auth_tag_len; /**< The length of the authentication */ + /**< tag in octets. */ + srtp_sec_serv_t sec_serv; /**< The flag indicating the security */ + /**< services to be applied. */ +} srtp_crypto_policy_t; + +/** + * @brief srtp_ssrc_type_t describes the type of an SSRC. + * + * An srtp_ssrc_type_t enumeration is used to indicate a type of SSRC. See + * @ref srtp_policy_t for more information. + */ +typedef enum { + ssrc_undefined = 0, /**< Indicates an undefined SSRC type. */ + ssrc_specific = 1, /**< Indicates a specific SSRC value */ + ssrc_any_inbound = 2, /**< Indicates any inbound SSRC value */ + /**< (i.e. a value that is used in the */ + /**< function srtp_unprotect()) */ + ssrc_any_outbound = 3 /**< Indicates any outbound SSRC value */ + /**< (i.e. a value that is used in the */ + /**< function srtp_protect()) */ +} srtp_ssrc_type_t; + +/** + * @brief An srtp_ssrc_t represents a particular SSRC value, or a `wildcard' + * SSRC. + * + * An srtp_ssrc_t represents a particular SSRC value (if its type is + * ssrc_specific), or a wildcard SSRC value that will match all + * outbound SSRCs (if its type is ssrc_any_outbound) or all inbound + * SSRCs (if its type is ssrc_any_inbound). + */ +typedef struct { + srtp_ssrc_type_t type; /**< The type of this particular SSRC */ + uint32_t value; /**< The value of this SSRC, if it is not a */ + /**< wildcard */ +} srtp_ssrc_t; + +/** + * @brief srtp_master_key_t represents a master key. There will + * be a Master Key Index and the Master Key associated with the + * Master Key Index. + */ +typedef struct srtp_master_key_t { + uint8_t *key; + uint8_t *mki_id; +} srtp_master_key_t; + +/** + * @brief represents the policy for an SRTP session. + * + * A single srtp_policy_t struct represents the policy for a single + * SRTP stream, and a linked list of these elements represents the + * policy for an entire SRTP session. Each element contains the SRTP + * and SRTCP crypto policies for that stream, a pointer to the SRTP + * master key for that stream, the SSRC describing that stream, or a + * flag indicating a `wildcard' SSRC value, and a `next' field that + * holds a pointer to the next element in the list of policy elements, + * or NULL if it is the last element. + * + * The wildcard value SSRC_ANY_INBOUND matches any SSRC from an + * inbound stream that for which there is no explicit SSRC entry in + * another policy element. Similarly, the value SSRC_ANY_OUTBOUND + * will matches any SSRC from an outbound stream that does not appear + * in another policy element. Note that wildcard SSRCs &b cannot be + * used to match both inbound and outbound traffic. This restriction + * is intentional, and it allows libSRTP to ensure that no security + * lapses result from accidental re-use of SSRC values during key + * sharing. + * + * @warning The final element of the list @b must have its `next' pointer + * set to NULL. + */ + +typedef struct srtp_policy_t { + srtp_ssrc_t ssrc; /**< The SSRC value of stream, or the */ + /**< flags SSRC_ANY_INBOUND or */ + /**< SSRC_ANY_OUTBOUND if key sharing */ + /**< is used for this policy element. */ + srtp_crypto_policy_t rtp; /**< SRTP crypto policy. */ + srtp_crypto_policy_t rtcp; /**< SRTCP crypto policy. */ + uint8_t *key; /**< Pointer to the SRTP master key for */ + /**< this stream. */ + srtp_master_key_t **keys; /** Array of Master Key structures */ + size_t num_master_keys; /** Number of master keys */ + bool use_mki; /** Whether MKI is in use */ + size_t mki_size; /** Size of MKI when in use */ + size_t window_size; /**< The window size to use for replay */ + /**< protection. */ + bool allow_repeat_tx; /**< Whether retransmissions of */ + /**< packets with the same sequence */ + /**< number are allowed. */ + /**< (Note that such repeated */ + /**< transmissions must have the same */ + /**< RTP payload, or a severe security */ + /**< weakness is introduced!) */ + uint8_t *enc_xtn_hdr; /**< List of header ids to encrypt. */ + size_t enc_xtn_hdr_count; /**< Number of entries in list of header */ + /**< ids. */ + bool use_cryptex; /**< Encrypt header block and CSRCs with */ + /**< cryptex. */ + struct srtp_policy_t *next; /**< Pointer to next stream policy. */ +} srtp_policy_t; + +/** + * @brief An srtp_t points to an SRTP session structure. + * + * The typedef srtp_t is a pointer to a structure that represents + * an SRTP session. This datatype is intentionally opaque in + * order to separate the interface from the implementation. + * + * An SRTP session consists of all of the traffic sent to the RTP and + * RTCP destination transport addresses, using the RTP/SAVP (Secure + * Audio/Video Profile). A session can be viewed as a set of SRTP + * streams, each of which originates with a different participant. + */ +typedef srtp_ctx_t *srtp_t; + +/** + * @brief srtp_init() initializes the srtp library. + * + * @warning This function @b must be called before any other srtp + * functions. + */ +srtp_err_status_t srtp_init(void); + +/** + * @brief srtp_shutdown() de-initializes the srtp library. + * + * @warning No srtp functions may be called after calling this function. + */ +srtp_err_status_t srtp_shutdown(void); + +/** + * @brief srtp_protect() is the Secure RTP sender-side packet processing + * function. + * + * The function call srtp_protect(ctx, rtp, rtp_len, srtp, srtp_len, mki_index) + * applies SRTP protection to the RTP packet rtp (which has length rtp_len) + * using the SRTP context ctx. If srtp_err_status_ok is returned, then srtp + * points to the resulting SRTP packet and *srtp_len is the number of + * octets in that packet; otherwise, no assumptions should be made + * about the value of either data elements. + * + * The sequence numbers of the RTP packets presented to this function + * need not be consecutive, but they @b must be out of order by less + * than 2^15 = 32,768 packets. + * + * @warning This function assumes that the RTP packet is aligned on a 32-bit + * boundary. + * + * @param ctx is the SRTP context to use in processing the packet. + * + * @param rtp is a pointer to the RTP packet. + * + * @param rtp_len is the length in octets of the complete RTP + * packet (header and body). + * + * @param srtp is a pointer to a buffer that after the function returns will + * contain the complete SRTP packet. The value of srtp can be the same as rtp to + * support in-place io. + * + * @param srtp_len is a pointer to the length in octets of the srtp buffer + * before the function call, and of the complete SRTP packet after the call, if + * srtp_err_status_ok was returned. Otherwise, the value of the data to which it + * points is undefined. + * + * @param mki_index integer value specifying which set of session keys should be + * used if use_mki in the policy was set to true. Otherwise ignored. + * + * @return + * - srtp_err_status_ok no problems + * - srtp_err_status_replay_fail rtp sequence number was non-increasing + * - srtp_err_status_buffer_small the srtp buffer is too small for the SRTP + * packet + * - @e other failure in cryptographic mechanisms + */ +srtp_err_status_t srtp_protect(srtp_t ctx, + const uint8_t *rtp, + size_t rtp_len, + uint8_t *srtp, + size_t *srtp_len, + size_t mki_index); + +/** + * @brief srtp_unprotect() is the Secure RTP receiver-side packet + * processing function. + * + * The function call srtp_unprotect(ctx, srtp, srtp_len, rtp, rtp_len) verifies + * the Secure RTP protection of the SRTP packet pointed to by srtp + * (which has length srtp_len), using the SRTP context ctx. If + * srtp_err_status_ok is returned, then rtp points to the resulting + * RTP packet and *rtp_len is the number of octets in that packet; + * otherwise, no assumptions should be made about the value of either + * data elements. + * + * The sequence numbers of the RTP packets presented to this function + * need not be consecutive, but they @b must be out of order by less + * than 2^15 = 32,768 packets. + * + * @warning This function assumes that the SRTP packet is aligned on a + * 32-bit boundary. + * + * @param ctx is the SRTP session which applies to the particular packet. + * + * @param srtp is a pointer to the header of the SRTP packet. + * + * @param srtp_len is the length in octets of the complete + * srtp packet (header and body). + * + * @param rtp is a pointer to a buffer that after the function returns will + * contain the complete RTP packet. The value of rtp can be the same as srtp + * to support in-place io. + * + * @param srtp_len is a pointer to the length of the rtp buffer before the + * function call, and of the complete RTP packet after the call, if + * srtp_err_status_ok was returned. Otherwise, the value of the data to which + * it points is undefined. + * + * @return + * - srtp_err_status_ok if the RTP packet is valid. + * - srtp_err_status_auth_fail if the SRTP packet failed the message + * authentication check. + * - srtp_err_status_replay_fail if the SRTP packet is a replay (e.g. packet + * has already been processed and accepted). + * - srtp_err_status_bad_mki if the MKI in the packet is not a known MKI id + * - [other] if there has been an error in the cryptographic mechanisms. + * + */ +srtp_err_status_t srtp_unprotect(srtp_t ctx, + const uint8_t *srtp, + size_t srtp_len, + uint8_t *rtp, + size_t *rtp_len); + +/** + * @brief srtp_create() allocates and initializes an SRTP session. + * + * The function call srtp_create(session, policy) allocates and + * initializes an SRTP session context, applying the given policy. + * + * @param session is a pointer to the SRTP session to which the policy is + * to be added. + * + * @param policy is the srtp_policy_t struct that describes the policy + * for the session. The struct may be a single element, or it may be + * the head of a list, in which case each element of the list is + * processed. It may also be NULL, in which case streams should be added + * later using srtp_stream_add(). The final element of the list @b must + * have its `next' field set to NULL. + * + * @return + * - srtp_err_status_ok if creation succeeded. + * - srtp_err_status_alloc_fail if allocation failed. + * - srtp_err_status_init_fail if initialization failed. + */ +srtp_err_status_t srtp_create(srtp_t *session, const srtp_policy_t *policy); + +/** + * @brief srtp_stream_add() allocates and initializes an SRTP stream + * within a given SRTP session. + * + * The function call srtp_stream_add(session, policy) allocates and + * initializes a new SRTP stream within a given, previously created + * session, applying the policy given as the other argument to that + * stream. + * + * @return values: + * - srtp_err_status_ok if stream creation succeeded. + * - srtp_err_status_alloc_fail if stream allocation failed + * - srtp_err_status_init_fail if stream initialization failed. + */ +srtp_err_status_t srtp_stream_add(srtp_t session, const srtp_policy_t *policy); + +/** + * @brief srtp_stream_remove() deallocates an SRTP stream. + * + * The function call srtp_stream_remove(session, ssrc) removes + * the SRTP stream with the SSRC value ssrc from the SRTP session + * context given by the argument session. + * + * @param session is the SRTP session from which the stream + * will be removed. + * + * @param ssrc is the SSRC value of the stream to be removed + * in host byte order. + * + * @attention In libSRTP version before 3.0.0 the SSRC param was in network + * byte order, this was changed in 3.0.0 to host byte order to be + * consistant with the rest of the api. + * + * @warning Wildcard SSRC values cannot be removed from a + * session. + * + * @return + * - srtp_err_status_ok if the stream deallocation succeeded. + * - [other] otherwise. + * + */ +srtp_err_status_t srtp_stream_remove(srtp_t session, uint32_t ssrc); + +/** + * @brief srtp_update() updates all streams in the session. + * + * The function call srtp_update(session, policy) updates + * all the streams in the session applying the given policy + * and key. The existing ROC value of all streams will be + * preserved. + * + * @param session is the SRTP session that contains the streams + * to be updated. + * + * @param policy is the srtp_policy_t struct that describes the policy + * for the session. The struct may be a single element, or it may be + * the head of a list, in which case each element of the list is + * processed. The final element of the list @b must + * have its `next' field set to NULL. + * + * @return + * - srtp_err_status_ok if stream creation succeed. + * - srtp_err_status_alloc_fail if stream allocation failed + * - srtp_err_status_init_fail if stream initialization failed. + * - [other] otherwise. + * + */ +srtp_err_status_t srtp_update(srtp_t session, const srtp_policy_t *policy); + +/** + * @brief srtp_stream_update() updates a SRTP stream. + * + * The function call srtp_stream_update(session, policy) updates + * the stream(s) in the session that match applying the given + * policy and key. The existing ROC value of all stream(s) will + * be preserved. + * + * @param session is the SRTP session that contains the streams + * to be updated. + * + * @param policy is the srtp_policy_t struct that describes the policy + * for the session. + * + * @return + * - srtp_err_status_ok if stream creation succeeded. + * - srtp_err_status_alloc_fail if stream allocation failed + * - srtp_err_status_init_fail if stream initialization failed. + * - [other] otherwise. + * + */ +srtp_err_status_t srtp_stream_update(srtp_t session, + const srtp_policy_t *policy); + +/** + * @brief srtp_crypto_policy_set_rtp_default() sets a crypto policy + * structure to the SRTP default policy for RTP protection. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_rtp_default(&p) sets the + * srtp_crypto_policy_t at location p to the SRTP default policy for RTP + * protection, as defined in the specification. This function is a + * convenience that helps to avoid dealing directly with the policy + * data structure. You are encouraged to initialize policy elements + * with this function call. Doing so may allow your code to be + * forward compatible with later versions of libSRTP that include more + * elements in the srtp_crypto_policy_t datatype. + * + * @return void. + * + */ +void srtp_crypto_policy_set_rtp_default(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_rtcp_default() sets a crypto policy + * structure to the SRTP default policy for RTCP protection. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_rtcp_default(&p) sets the + * srtp_crypto_policy_t at location p to the SRTP default policy for RTCP + * protection, as defined in the specification. This function is a + * convenience that helps to avoid dealing directly with the policy + * data structure. You are encouraged to initialize policy elements + * with this function call. Doing so may allow your code to be + * forward compatible with later versions of libSRTP that include more + * elements in the srtp_crypto_policy_t datatype. + * + * @return void. + * + */ +void srtp_crypto_policy_set_rtcp_default(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80() sets a crypto + * policy structure to the SRTP default policy for RTP protection. + * + * @param p is a pointer to the policy structure to be set + * + * The function srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80() is a + * synonym for srtp_crypto_policy_set_rtp_default(). It conforms to the + * naming convention used in RFC 4568 (SDP Security Descriptions for + * Media Streams). + * + * @return void. + * + */ +#define srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(p) \ + srtp_crypto_policy_set_rtp_default(p) + +/** + * @brief srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32() sets a crypto + * policy structure to a short-authentication tag policy + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(&p) + * sets the srtp_crypto_policy_t at location p to use policy + * AES_CM_128_HMAC_SHA1_32 as defined in RFC 4568. + * This policy uses AES-128 + * Counter Mode encryption and HMAC-SHA1 authentication, with an + * authentication tag that is only 32 bits long. This length is + * considered adequate only for protecting audio and video media that + * use a stateless playback function. See Section 7.5 of RFC 3711 + * (http://www.ietf.org/rfc/rfc3711.txt). + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This crypto policy is intended for use in SRTP, but not in + * SRTCP. It is recommended that a policy that uses longer + * authentication tags be used for SRTCP. See Section 7.5 of RFC 3711 + * (http://www.ietf.org/rfc/rfc3711.txt). + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_128_null_auth() sets a crypto + * policy structure to an encryption-only policy + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_128_null_auth(&p) sets + * the srtp_crypto_policy_t at location p to use the SRTP default cipher + * (AES-128 Counter Mode), but to use no authentication method. This + * policy is NOT RECOMMENDED unless it is unavoidable; see Section 7.5 + * of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt). + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This policy is NOT RECOMMENDED for SRTP unless it is + * unavoidable, and it is NOT RECOMMENDED at all for SRTCP; see + * Section 7.5 of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt). + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_128_null_auth(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_null_cipher_hmac_sha1_80() sets a crypto + * policy structure to an authentication-only policy + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_null_cipher_hmac_sha1_80(&p) + * sets the srtp_crypto_policy_t at location p to use HMAC-SHA1 with an 80 + * bit authentication tag to provide message authentication, but to + * use no encryption. This policy is NOT RECOMMENDED for SRTP unless + * there is a requirement to forgo encryption. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This policy is NOT RECOMMENDED for SRTP unless there is a + * requirement to forgo encryption. + * + * @return void. + * + */ +void srtp_crypto_policy_set_null_cipher_hmac_sha1_80(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_null_cipher_hmac_null() sets a crypto + * policy structure to use no encryption or authentication. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_null_cipher_hmac_null(&p) + * sets the srtp_crypto_policy_t at location p to use no encryption and + * no authentication. This policy should only be used for testing and + * troubleshooting. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This policy is NOT RECOMMENDED for SRTP unless there is a + * requirement to forgo encryption and authentication. + * + * @return void. + * + */ +void srtp_crypto_policy_set_null_cipher_hmac_null(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80() sets a crypto + * policy structure to a encryption and authentication policy using AES-256 + * for RTP protection. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(&p) + * sets the srtp_crypto_policy_t at location p to use policy + * AES_CM_256_HMAC_SHA1_80 as defined in RFC 6188. This policy uses AES-256 + * Counter Mode encryption and HMAC-SHA1 authentication, with an 80 bit + * authentication tag. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32() sets a crypto + * policy structure to a short-authentication tag policy using AES-256 + * encryption. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32(&p) + * sets the srtp_crypto_policy_t at location p to use policy + * AES_CM_256_HMAC_SHA1_32 as defined in RFC 6188. This policy uses AES-256 + * Counter Mode encryption and HMAC-SHA1 authentication, with an + * authentication tag that is only 32 bits long. This length is + * considered adequate only for protecting audio and video media that + * use a stateless playback function. See Section 7.5 of RFC 3711 + * (http://www.ietf.org/rfc/rfc3711.txt). + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This crypto policy is intended for use in SRTP, but not in + * SRTCP. It is recommended that a policy that uses longer + * authentication tags be used for SRTCP. See Section 7.5 of RFC 3711 + * (http://www.ietf.org/rfc/rfc3711.txt). + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_256_null_auth() sets a crypto + * policy structure to an encryption-only policy + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_256_null_auth(&p) sets + * the srtp_crypto_policy_t at location p to use the SRTP default cipher + * (AES-256 Counter Mode), but to use no authentication method. This + * policy is NOT RECOMMENDED unless it is unavoidable; see Section 7.5 + * of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt). + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This policy is NOT RECOMMENDED for SRTP unless it is + * unavoidable, and it is NOT RECOMMENDED at all for SRTCP; see + * Section 7.5 of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt). + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_256_null_auth(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80() sets a crypto + * policy structure to a encryption and authentication policy using AES-192 + * for RTP protection. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80(&p) + * sets the srtp_crypto_policy_t at location p to use policy + * AES_CM_192_HMAC_SHA1_80 as defined in RFC 6188. This policy uses AES-192 + * Counter Mode encryption and HMAC-SHA1 authentication, with an 80 bit + * authentication tag. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32() sets a crypto + * policy structure to a short-authentication tag policy using AES-192 + * encryption. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32(&p) + * sets the srtp_crypto_policy_t at location p to use policy + * AES_CM_192_HMAC_SHA1_32 as defined in RFC 6188. This policy uses AES-192 + * Counter Mode encryption and HMAC-SHA1 authentication, with an + * authentication tag that is only 32 bits long. This length is + * considered adequate only for protecting audio and video media that + * use a stateless playback function. See Section 7.5 of RFC 3711 + * (http://www.ietf.org/rfc/rfc3711.txt). + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This crypto policy is intended for use in SRTP, but not in + * SRTCP. It is recommended that a policy that uses longer + * authentication tags be used for SRTCP. See Section 7.5 of RFC 3711 + * (http://www.ietf.org/rfc/rfc3711.txt). + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_cm_192_null_auth() sets a crypto + * policy structure to an encryption-only policy + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_cm_192_null_auth(&p) sets + * the srtp_crypto_policy_t at location p to use the SRTP default cipher + * (AES-192 Counter Mode), but to use no authentication method. This + * policy is NOT RECOMMENDED unless it is unavoidable; see Section 7.5 + * of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt). + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @warning This policy is NOT RECOMMENDED for SRTP unless it is + * unavoidable, and it is NOT RECOMMENDED at all for SRTCP; see + * Section 7.5 of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt). + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_cm_192_null_auth(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_gcm_128_16_auth() sets a crypto + * policy structure to an AEAD encryption policy. + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_gcm_128_16_auth(&p) sets + * the srtp_crypto_policy_t at location p to use the SRTP default cipher + * (AES-128 Galois Counter Mode) with 16 octet auth tag. This + * policy applies confidentiality and authentication to both the + * RTP and RTCP packets. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_gcm_128_16_auth(srtp_crypto_policy_t *p); + +/** + * @brief srtp_crypto_policy_set_aes_gcm_256_16_auth() sets a crypto + * policy structure to an AEAD encryption policy + * + * @param p is a pointer to the policy structure to be set + * + * The function call srtp_crypto_policy_set_aes_gcm_256_16_auth(&p) sets + * the srtp_crypto_policy_t at location p to use the SRTP default cipher + * (AES-256 Galois Counter Mode) with 16 octet auth tag. This + * policy applies confidentiality and authentication to both the + * RTP and RTCP packets. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @return void. + * + */ +void srtp_crypto_policy_set_aes_gcm_256_16_auth(srtp_crypto_policy_t *p); + +/** + * @brief srtp_dealloc() deallocates storage for an SRTP session + * context. + * + * The function call srtp_dealloc(s) deallocates storage for the + * SRTP session context s. This function should be called no more + * than one time for each of the contexts allocated by the function + * srtp_create(). + * + * @param s is the srtp_t for the session to be deallocated. + * + * @return + * - srtp_err_status_ok if there no problems. + * - srtp_err_status_dealloc_fail a memory deallocation failure occurred. + */ +srtp_err_status_t srtp_dealloc(srtp_t s); + +/* + * @brief identifies a particular SRTP profile + * + * An srtp_profile_t enumeration is used to identify a particular SRTP + * profile (that is, a set of algorithms and parameters). + */ +typedef enum { + srtp_profile_reserved = 0, + srtp_profile_aes128_cm_sha1_80 = 1, + srtp_profile_aes128_cm_sha1_32 = 2, + srtp_profile_null_sha1_80 = 5, + srtp_profile_null_sha1_32 = 6, + srtp_profile_aead_aes_128_gcm = 7, + srtp_profile_aead_aes_256_gcm = 8 +} srtp_profile_t; + +/** + * @brief srtp_crypto_policy_set_from_profile_for_rtp() sets a crypto policy + * structure to the appropriate value for RTP based on an srtp_profile_t + * + * @param policy is a pointer to the policy structure to be set + * + * @param profile is an enumeration for the policy to be set + * + * The function call srtp_crypto_policy_set_rtp_default(&policy, profile) + * sets the srtp_crypto_policy_t at location policy to the policy for RTP + * protection, as defined by the srtp_profile_t profile. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @return values + * - srtp_err_status_ok no problems were encountered + * - srtp_err_status_bad_param the profile is not supported + * + */ +srtp_err_status_t srtp_crypto_policy_set_from_profile_for_rtp( + srtp_crypto_policy_t *policy, + srtp_profile_t profile); + +/** + * @brief srtp_crypto_policy_set_from_profile_for_rtcp() sets a crypto policy + * structure to the appropriate value for RTCP based on an srtp_profile_t + * + * @param policy is a pointer to the policy structure to be set + * + * @param profile is an enumeration for the policy to be set + * + * The function call srtp_crypto_policy_set_rtcp_default(&policy, profile) + * sets the srtp_crypto_policy_t at location policy to the policy for RTCP + * protection, as defined by the srtp_profile_t profile. + * + * This function is a convenience that helps to avoid dealing directly + * with the policy data structure. You are encouraged to initialize + * policy elements with this function call. Doing so may allow your + * code to be forward compatible with later versions of libSRTP that + * include more elements in the srtp_crypto_policy_t datatype. + * + * @return values + * - srtp_err_status_ok no problems were encountered + * - srtp_err_status_bad_param the profile is not supported + * + */ +srtp_err_status_t srtp_crypto_policy_set_from_profile_for_rtcp( + srtp_crypto_policy_t *policy, + srtp_profile_t profile); + +/** + * @brief returns the master key length for a given SRTP profile + */ +size_t srtp_profile_get_master_key_length(srtp_profile_t profile); + +/** + * @brief returns the master salt length for a given SRTP profile + */ +size_t srtp_profile_get_master_salt_length(srtp_profile_t profile); + +/** + * @brief appends the salt to the key + * + * The function call srtp_append_salt_to_key(k, klen, s, slen) + * copies the string s to the location at klen bytes following + * the location k. + * + * @warning There must be at least bytes_in_salt + bytes_in_key bytes + * available at the location pointed to by key. + * + */ +void srtp_append_salt_to_key(uint8_t *key, + size_t bytes_in_key, + uint8_t *salt, + size_t bytes_in_salt); + +/** + * @} + */ + +/** + * @defgroup SRTCP Secure RTCP + * @ingroup SRTP + * + * @brief Secure RTCP functions are used to protect RTCP traffic. + * + * RTCP is the control protocol for RTP. libSRTP protects RTCP + * traffic in much the same way as it does RTP traffic. The function + * srtp_protect_rtcp() applies cryptographic protections to outbound + * RTCP packets, and srtp_unprotect_rtcp() verifies the protections on + * inbound RTCP packets. + * + * A note on the naming convention: srtp_protect_rtcp() has an srtp_t + * as its first argument, and thus has `srtp_' as its prefix. The + * trailing `_rtcp' indicates the protocol on which it acts. + * + * @{ + */ + +/** + * @brief srtp_protect_rtcp() is the Secure RTCP sender-side packet + * processing function. + * + * The function call srtp_protect_rtcp(ctx, rtcp, rtcp_len, srtcp, srtcp_len, + * mki_index) applies SRTCP protection to the RTCP packet rtcp (which has length + * rtcp_len) using the SRTP session context ctx. If srtp_err_status_ok is + * returned, then srtcp points to the resulting SRTCP packet and + * *srtcp_len is the number of octets in that packet; otherwise, no + * assumptions should be made about the value of either data elements. + * + * @warning This function assumes that the RTCP packet is aligned on a 32-bit + * boundary. + * + * @param ctx is the SRTP context to use in processing the packet. + * + * @param rtcp is a pointer to the RTCP packet (before the call). + * + * @param rtcp_len is the length in octets of the complete RTCP packet (header + * and body). + * + * @param srtcp is a pointer to a buffer that after the function returns will + * contain the complete SRTCP packet. The value of srtcp can be the same as rtcp + * to support in-place io. + * + * @param srtcp_len is a pointer to the length in octets of the srtcp buffer + * before the function call, and of the complete SRTCP packet after the call, if + * srtp_err_status_ok was returned. Otherwise, the value of the data to which it + * points is undefined. + * + * @param mki_index integer value specifying which set of session keys should be + * used if use_mki was set to true. Otherwise ignored. + * + * @return + * - srtp_err_status_ok if there were no problems. + * - srtp_err_status_buffer_small the srtcp buffer is too small for the + * SRTCP packet + * - [other] if there was a failure in + * the cryptographic mechanisms. + */ +srtp_err_status_t srtp_protect_rtcp(srtp_t ctx, + const uint8_t *rtcp, + size_t rtcp_len, + uint8_t *srtcp, + size_t *srtcp_len, + size_t mki_index); + +/** + * @brief srtp_unprotect_rtcp() is the Secure RTCP receiver-side packet + * processing function. + * + * The function call srtp_unprotect_rtcp(ctx, srtcp, srtcp_len, rtcp, rtcp_len) + * verifies the Secure RTCP protection of the SRTCP packet pointed to + * by srtcp (which has length srtcp_len), using the SRTP session + * context ctx. If srtp_err_status_ok is returned, then rtcp points + * to the resulting RTCP packet and *rtcp_len is the number of octets + * in that packet; otherwise, no assumptions should be made about the + * value of either data elements. + * + * @warning This function assumes that the SRTCP packet is aligned on a + * 32-bit boundary. + * + * @param ctx is a pointer to the srtp_t which applies to the + * particular packet. + * + * @param srtcp is a pointer to the header of the SRTCP packet. + * + * @param srtcp_len is the length in octets of the complete SRTCP packet (header + * and body). + * + * @param rtcp is a pointer to a buffer that after the function returns will + * contain the complete RTCP packet. The value of rtcp can be the same as srtcp + * to support in-place io. + * + * @param rtcp_len is a pointer to the length of the rtcp buffer before the + * function call, and of the complete RTCP packet after the call, if + * srtp_err_status_ok was returned. Otherwise, the value of the data to which + * it points is undefined. + * + * @return + * - srtp_err_status_ok if the RTCP packet is valid. + * - srtp_err_status_auth_fail if the SRTCP packet failed the message + * authentication check. + * - srtp_err_status_replay_fail if the SRTCP packet is a replay (e.g. has + * already been processed and accepted). + * - srtp_err_status_bad_mki if the MKI in the packet is not a known MKI + * id + * - [other] if there has been an error in the cryptographic mechanisms. + * + */ +srtp_err_status_t srtp_unprotect_rtcp(srtp_t ctx, + const uint8_t *srtcp, + size_t srtcp_len, + uint8_t *rtcp, + size_t *rtcp_len); + +/** + * @defgroup User data associated to a SRTP session. + * @ingroup SRTP + * + * @brief Store custom user data within a SRTP session. + * + * @{ + */ + +/** + * @brief srtp_set_user_data() stores the given pointer into the SRTP + * session for later retrieval. + * + * @param ctx is the srtp_t context in which the given data pointer is + * stored. + * + * @param data is a pointer to the custom information (struct, function, + * etc) associated with the SRTP session. + * + * @return void. + * + */ +void srtp_set_user_data(srtp_t ctx, void *data); + +/** + * @brief srtp_get_user_data() retrieves the pointer to the custom data + * previously stored with srtp_set_user_data(). + * + * This function is mostly useful for retrieving data associated to a + * SRTP session when an event fires. The user can then get such a custom + * data by calling this function with the session field of the + * srtp_event_data_t struct as argument. + * + * @param ctx is the srtp_t context in which the given data pointer was + * stored. + * + * @return void* pointer to the user data. + * + */ +void *srtp_get_user_data(srtp_t ctx); + +/** + * @} + */ + +/** + * @defgroup SRTPevents SRTP events and callbacks + * @ingroup SRTP + * + * @brief libSRTP can use a user-provided callback function to + * handle events. + * + * + * libSRTP allows a user to provide a callback function to handle + * events that need to be dealt with outside of the data plane (see + * the enum srtp_event_t for a description of these events). Dealing + * with these events is not a strict necessity; they are not + * security-critical, but the application may suffer if they are not + * handled. The function srtp_set_event_handler() is used to provide + * the callback function. + * + * A default event handler that merely reports on the events as they + * happen is included. It is also possible to set the event handler + * function to NULL, in which case all events will just be silently + * ignored. + * + * @{ + */ + +/** + * @brief srtp_event_t defines events that need to be handled + * + * The enum srtp_event_t defines events that need to be handled + * outside the `data plane', such as SSRC collisions and + * key expirations. + * + * When a key expires or the maximum number of packets has been + * reached, an SRTP stream will enter an `expired' state in which no + * more packets can be protected or unprotected. When this happens, + * it is likely that you will want to either deallocate the stream + * (using srtp_stream_remove()), and possibly allocate a new one. + * + * When an SRTP stream expires, the other streams in the same session + * are unaffected, unless key sharing is used by that stream. In the + * latter case, all of the streams in the session will expire. + */ +typedef enum { + event_ssrc_collision, /**< An SSRC collision occurred. */ + event_key_soft_limit, /**< An SRTP stream reached the soft key */ + /**< usage limit and will expire soon. */ + event_key_hard_limit, /**< An SRTP stream reached the hard */ + /**< key usage limit and has expired. */ + event_packet_index_limit /**< An SRTP stream reached the hard */ + /**< packet limit (2^48 packets). */ +} srtp_event_t; + +/** + * @brief srtp_event_data_t is the structure passed as a callback to + * the event handler function + * + * The struct srtp_event_data_t holds the data passed to the event + * handler function. + */ +typedef struct srtp_event_data_t { + srtp_t session; /**< The session in which the event happened. */ + uint32_t ssrc; /**< The ssrc in host order of the stream in which */ + /**< the event happened */ + srtp_event_t event; /**< An enum indicating the type of event. */ +} srtp_event_data_t; + +/** + * @brief srtp_event_handler_func_t is the function prototype for + * the event handler. + * + * The typedef srtp_event_handler_func_t is the prototype for the + * event handler function. It has as its only argument an + * srtp_event_data_t which describes the event that needs to be handled. + * There can only be a single, global handler for all events in + * libSRTP. + */ +typedef void(srtp_event_handler_func_t)(srtp_event_data_t *data); + +/** + * @brief sets the event handler to the function supplied by the caller. + * + * The function call srtp_install_event_handler(func) sets the event + * handler function to the value func. The value NULL is acceptable + * as an argument; in this case, events will be ignored rather than + * handled. + * + * @param func is a pointer to a function that takes an srtp_event_data_t + * pointer as an argument and returns void. This function + * will be used by libSRTP to handle events. + */ +srtp_err_status_t srtp_install_event_handler(srtp_event_handler_func_t func); + +/** + * @brief Returns the version string of the library. + * + */ +const char *srtp_get_version_string(void); + +/** + * @brief Returns the numeric representation of the library version. + * + */ +unsigned int srtp_get_version(void); + +/** + * @brief srtp_set_debug_module(mod_name, v) + * + * sets dynamic debugging to the value v (false for off, true for on) for the + * debug module with the name mod_name + * + * returns err_status_ok on success, err_status_fail otherwise + */ +srtp_err_status_t srtp_set_debug_module(const char *mod_name, bool v); + +/** + * @brief srtp_list_debug_modules() outputs a list of debugging modules + * + */ +srtp_err_status_t srtp_list_debug_modules(void); + +/** + * @brief srtp_log_level_t defines log levels. + * + * The enumeration srtp_log_level_t defines log levels reported + * in the srtp_log_handler_func_t. + * + */ +typedef enum { + srtp_log_level_error, /**< log level is reporting an error message */ + srtp_log_level_warning, /**< log level is reporting a warning message */ + srtp_log_level_info, /**< log level is reporting an info message */ + srtp_log_level_debug /**< log level is reporting a debug message */ +} srtp_log_level_t; + +/** + * @brief srtp_log_handler_func_t is the function prototype for + * the log handler. + * + * The typedef srtp_event_handler_func_t is the prototype for the + * event handler function. It has as srtp_log_level_t, log + * message and data as arguments. + * There can only be a single, global handler for all log messages in + * libSRTP. + */ +typedef void(srtp_log_handler_func_t)(srtp_log_level_t level, + const char *msg, + void *data); + +/** + * @brief sets the log handler to the function supplied by the caller. + * + * The function call srtp_install_log_handler(func) sets the log + * handler function to the value func. The value NULL is acceptable + * as an argument; in this case, log messages will be ignored. + * This function can be called before srtp_init() in order to capture + * any logging during start up. + * + * @param func is a pointer to a function of type srtp_log_handler_func_t. + * This function will be used by libSRTP to output log messages. + * @param data is a user pointer that will be returned as the data argument in + * func. + */ +srtp_err_status_t srtp_install_log_handler(srtp_log_handler_func_t func, + void *data); + +/** + * @brief srtp_get_protect_trailer_length(session, use_mki, mki_index, length) + * + * Determines the length of the amount of data Lib SRTP will add to the + * packet during the protect process. The length is returned in the length + * parameter + * + * returns err_status_ok on success, err_status_bad_mki if the MKI index is + * invalid + * + */ +srtp_err_status_t srtp_get_protect_trailer_length(srtp_t session, + size_t mki_index, + size_t *length); + +/** + * @brief srtp_get_protect_rtcp_trailer_length(session, use_mki, mki_index, + * length) + * + * Determines the length of the amount of data Lib SRTP will add to the + * packet during the protect process. The length is returned in the length + * parameter + * + * returns err_status_ok on success, err_status_bad_mki if the MKI index is + * invalid + * + */ +srtp_err_status_t srtp_get_protect_rtcp_trailer_length(srtp_t session, + size_t mki_index, + size_t *length); + +/** + * @brief srtp_stream_set_roc(session, ssrc, roc) + * + * Set the roll-over-counter on a session for a given SSRC + * + * returns err_status_ok on success, srtp_err_status_bad_param if there is no + * stream found + * + */ +srtp_err_status_t srtp_stream_set_roc(srtp_t session, + uint32_t ssrc, + uint32_t roc); + +/** + * @brief srtp_stream_get_roc(session, ssrc, roc) + * + * Get the roll-over-counter on a session for a given SSRC + * + * returns err_status_ok on success, srtp_err_status_bad_param if there is no + * stream found + * + */ +srtp_err_status_t srtp_stream_get_roc(srtp_t session, + uint32_t ssrc, + uint32_t *roc); + +/** + * @} + */ + +/* in host order, so outside the #if */ +#define SRTCP_E_BIT 0x80000000 + +/* for byte-access */ +#define SRTCP_E_BYTE_BIT 0x80 +#define SRTCP_INDEX_MASK 0x7fffffff + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_SRTP_H */ diff --git a/src/libs/libsrtp/include/srtp3/meson.build b/src/libs/libsrtp/include/srtp3/meson.build new file mode 100644 index 00000000..9b8390e0 --- /dev/null +++ b/src/libs/libsrtp/include/srtp3/meson.build @@ -0,0 +1,7 @@ +# Copy public headers scattered across the source tree into a single directory +# so that we can use it in declare_dependency() +foreach h : public_headers + configure_file(input: h, + output: '@BASENAME@.h', + copy: true) +endforeach diff --git a/src/libs/libsrtp/include/srtp_priv.h b/src/libs/libsrtp/include/srtp_priv.h new file mode 100644 index 00000000..72e87cd9 --- /dev/null +++ b/src/libs/libsrtp/include/srtp_priv.h @@ -0,0 +1,254 @@ +/* + * srtp_priv.h + * + * private internal data structures and functions for libSRTP + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_PRIV_H +#define SRTP_PRIV_H + +// Leave this as the top level import. Ensures the existence of defines +#include "config.h" + +#include "srtp.h" +#include "rdbx.h" +#include "rdb.h" +#include "cipher.h" +#include "auth.h" +#include "aes.h" +#include "crypto_kernel.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SRTP_VER_STRING PACKAGE_STRING +#define SRTP_VERSION PACKAGE_VERSION + +typedef struct srtp_stream_ctx_t_ srtp_stream_ctx_t; +typedef srtp_stream_ctx_t *srtp_stream_t; +typedef struct srtp_stream_list_ctx_t_ *srtp_stream_list_t; + +/* + * the following declarations are libSRTP internal functions + */ + +/* + * srtp_get_stream(ssrc) returns a pointer to the stream corresponding + * to ssrc, or NULL if no stream exists for that ssrc + */ +srtp_stream_t srtp_get_stream(srtp_t srtp, uint32_t ssrc); + +/* + * libsrtp internal datatypes + */ +typedef enum direction_t { + dir_unknown = 0, + dir_srtp_sender = 1, + dir_srtp_receiver = 2 +} direction_t; + +/* + * srtp_session_keys_t will contain the encryption, hmac, salt keys + * for both SRTP and SRTCP. The session keys will also contain the + * MKI ID which is used to identify the session keys. + */ +typedef struct srtp_session_keys_t { + srtp_cipher_t *rtp_cipher; + srtp_cipher_t *rtp_xtn_hdr_cipher; + srtp_auth_t *rtp_auth; + srtp_cipher_t *rtcp_cipher; + srtp_auth_t *rtcp_auth; + uint8_t salt[SRTP_AEAD_SALT_LEN]; + uint8_t c_salt[SRTP_AEAD_SALT_LEN]; + uint8_t *mki_id; + srtp_key_limit_ctx_t *limit; +} srtp_session_keys_t; + +/* + * an srtp_stream_t has its own SSRC, encryption key, authentication + * key, sequence number, and replay database + * + * note that the keys might not actually be unique, in which case the + * srtp_cipher_t and srtp_auth_t pointers will point to the same structures + */ +typedef struct srtp_stream_ctx_t_ { + uint32_t ssrc; + srtp_session_keys_t *session_keys; + size_t num_master_keys; + bool use_mki; + size_t mki_size; + srtp_rdbx_t rtp_rdbx; + srtp_sec_serv_t rtp_services; + srtp_rdb_t rtcp_rdb; + srtp_sec_serv_t rtcp_services; + direction_t direction; + bool allow_repeat_tx; + uint8_t *enc_xtn_hdr; + size_t enc_xtn_hdr_count; + uint32_t pending_roc; + bool use_cryptex; +} strp_stream_ctx_t_; + +/* + * an srtp_ctx_t holds a stream list and a service description + */ +typedef struct srtp_ctx_t_ { + srtp_stream_list_t stream_list; /* linked list of streams */ + struct srtp_stream_ctx_t_ *stream_template; /* act as template for other */ + /* streams */ + void *user_data; /* user custom data */ +} srtp_ctx_t_; + +/* + * srtp_hdr_t represents an RTP or SRTP header. The bit-fields in + * this structure should be declared "unsigned int" instead of + * "unsigned char", but doing so causes the MS compiler to not + * fully pack the bit fields. + * + * In this implementation, an srtp_hdr_t is assumed to be 32-bit aligned + * + * (note that this definition follows that of RFC 1889 Appendix A, but + * is not identical) + */ + +#ifndef WORDS_BIGENDIAN + +typedef struct { + unsigned char cc : 4; /* CSRC count */ + unsigned char x : 1; /* header extension flag */ + unsigned char p : 1; /* padding flag */ + unsigned char version : 2; /* protocol version */ + unsigned char pt : 7; /* payload type */ + unsigned char m : 1; /* marker bit */ + uint16_t seq; /* sequence number */ + uint32_t ts; /* timestamp */ + uint32_t ssrc; /* synchronization source */ +} srtp_hdr_t; + +#else /* BIG_ENDIAN */ + +typedef struct { + unsigned char version : 2; /* protocol version */ + unsigned char p : 1; /* padding flag */ + unsigned char x : 1; /* header extension flag */ + unsigned char cc : 4; /* CSRC count */ + unsigned char m : 1; /* marker bit */ + unsigned char pt : 7; /* payload type */ + uint16_t seq; /* sequence number */ + uint32_t ts; /* timestamp */ + uint32_t ssrc; /* synchronization source */ +} srtp_hdr_t; + +#endif + +typedef struct { + uint16_t profile_specific; /* profile-specific info */ + uint16_t length; /* number of 32-bit words in extension */ +} srtp_hdr_xtnd_t; + +/* + * srtcp_hdr_t represents a secure rtcp header + * + * in this implementation, an srtcp header is assumed to be 32-bit + * aligned + */ + +#ifndef WORDS_BIGENDIAN + +typedef struct { + unsigned char rc : 5; /* reception report count */ + unsigned char p : 1; /* padding flag */ + unsigned char version : 2; /* protocol version */ + unsigned char pt : 8; /* payload type */ + uint16_t len; /* length */ + uint32_t ssrc; /* synchronization source */ +} srtcp_hdr_t; + +typedef struct { + unsigned int index : 31; /* srtcp packet index in network order! */ + unsigned int e : 1; /* encrypted? 1=yes */ + /* optional mikey/etc go here */ + /* and then the variable-length auth tag */ +} srtcp_trailer_t; + +#else /* BIG_ENDIAN */ + +typedef struct { + unsigned char version : 2; /* protocol version */ + unsigned char p : 1; /* padding flag */ + unsigned char rc : 5; /* reception report count */ + unsigned char pt : 8; /* payload type */ + uint16_t len; /* length */ + uint32_t ssrc; /* synchronization source */ +} srtcp_hdr_t; + +typedef struct { + unsigned int e : 1; /* encrypted? 1=yes */ + unsigned int index : 31; /* srtcp packet index */ + /* optional mikey/etc go here */ + /* and then the variable-length auth tag */ +} srtcp_trailer_t; + +#endif + +/* + * srtp_handle_event(srtp, srtm, evnt) calls the event handling + * function, if there is one. + * + * This macro is not included in the documentation as it is + * an internal-only function. + */ + +#define srtp_handle_event(srtp, strm, evnt) \ + if (srtp_event_handler) { \ + srtp_event_data_t data; \ + data.session = srtp; \ + data.ssrc = ntohl(strm->ssrc); \ + data.event = evnt; \ + srtp_event_handler(&data); \ + } + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_PRIV_H */ diff --git a/src/libs/libsrtp/include/stream_list_priv.h b/src/libs/libsrtp/include/stream_list_priv.h new file mode 100644 index 00000000..c630c872 --- /dev/null +++ b/src/libs/libsrtp/include/stream_list_priv.h @@ -0,0 +1,121 @@ +/* + * stream_list_priv.h + * + * list of SRTP streams, keyed by SSRC + * + * Alba Mendez + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * Copyright (c) 2022, Dolby Laboratories, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_STREAM_LIST_PRIV_H +#define SRTP_STREAM_LIST_PRIV_H + +#include "srtp_priv.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * srtp_stream_list_t holds a list of srtp_stream_t, each identified + * by their SSRC. + * + * the API was extracted to allow downstreams to override its + * implementation by defining the `SRTP_NO_STREAM_LIST` preprocessor + * directive, which removes the default implementation of these + * functions. + * + * this is still an internal interface; there is no stability + * guarantee--downstreams should watch this file for changes in + * signatures or semantics. + */ + +/** + * allocate and initialize a stream list instance + */ +srtp_err_status_t srtp_stream_list_alloc(srtp_stream_list_t *list_ptr); + +/** + * deallocate a stream list instance + * + * the list must be empty or else an error is returned. + */ +srtp_err_status_t srtp_stream_list_dealloc(srtp_stream_list_t list); + +/** + * insert a stream into the list + * + * returns srtp_err_status_alloc_fail if insertion failed due to unavailable + * capacity in the list. if operation succeeds, srtp_err_status_ok is returned + * + * if another stream with the same SSRC already exists in the list, + * behavior is undefined. if the SSRC field is mutated while the + * stream is inserted, further operations have undefined behavior + */ +srtp_err_status_t srtp_stream_list_insert(srtp_stream_list_t list, + srtp_stream_t stream); + +/* + * look up the stream corresponding to the specified SSRC and return it. + * if no such SSRC is found, NULL is returned. + */ +srtp_stream_t srtp_stream_list_get(srtp_stream_list_t list, uint32_t ssrc); + +/** + * remove the stream from the list. + * + * The stream to be removed is referenced "by value", i.e., by the pointer to be + * removed from the list. This pointer is obtained using `srtp_stream_list_get` + * or as callback parameter in `srtp_stream_list_for_each`. + */ +void srtp_stream_list_remove(srtp_stream_list_t list, srtp_stream_t stream); + +/** + * iterate through all stored streams. while iterating, it is allowed to delete + * the current element; any other mutation to the list is undefined behavior. + * returning non-zero from callback aborts the iteration. + */ +void srtp_stream_list_for_each(srtp_stream_list_t list, + bool (*callback)(srtp_stream_t, void *), + void *data); + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_STREAM_LIST_PRIV_H */ diff --git a/src/libs/libsrtp/install-sh b/src/libs/libsrtp/install-sh new file mode 100755 index 00000000..0b0fdcbb --- /dev/null +++ b/src/libs/libsrtp/install-sh @@ -0,0 +1,501 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2013-12-25.23; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/libs/libsrtp/libsrtp3.pc.in b/src/libs/libsrtp/libsrtp3.pc.in new file mode 100644 index 00000000..b54d9e57 --- /dev/null +++ b/src/libs/libsrtp/libsrtp3.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Version: @PACKAGE_VERSION@ +Description: Library for SRTP (Secure Realtime Transport Protocol) + +Libs: -L${libdir} -lsrtp3 +Libs.private: @LIBS@ +Cflags: -I${includedir} diff --git a/src/libs/libsrtp/meson.build b/src/libs/libsrtp/meson.build new file mode 100644 index 00000000..9e40ae97 --- /dev/null +++ b/src/libs/libsrtp/meson.build @@ -0,0 +1,348 @@ +project('libsrtp3', 'c', version: '3.0.0', + meson_version: '>= 0.52.0', + default_options: ['buildtype=debugoptimized']) + +soversion = 1 + +cc = meson.get_compiler('c') +host_system = host_machine.system() + +srtp3_deps = [] +syslibs = [] + +if host_system == 'windows' + syslibs += [cc.find_library('ws2_32')] # for socket +endif + +cdata = configuration_data() +cdata.set_quoted('PACKAGE_VERSION', meson.project_version()) +cdata.set_quoted('PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), meson.project_version())) + +check_headers = [ + 'arpa/inet.h', + 'byteswap.h', + 'inttypes.h', + 'machine/types.h', + 'netinet/in.h', + 'stdint.h', + 'stdlib.h', + 'sys/int_types.h', + 'sys/socket.h', + 'sys/types.h', + 'sys/uio.h', + 'unistd.h', +] + +if host_system == 'windows' + check_headers += ['windows.h', 'winsock2.h'] +endif + +foreach h : check_headers + if cc.has_header(h) + cdata.set('HAVE_' + h.to_upper().underscorify(), true) + endif +endforeach + +check_functions = [ + 'sigaction', + 'inet_aton', + 'inet_pton', + 'usleep', + 'socket', +] + +foreach f : check_functions + if cc.has_function(f, dependencies: syslibs) + cdata.set('HAVE_' + f.to_upper().underscorify(), true) + endif +endforeach + +if host_machine.endian() == 'big' + cdata.set('WORDS_BIGENDIAN', true) +endif + +# This follows the checks in configure.ac, but is it up-to-date ?! +if host_machine.cpu_family() in ['x86', 'x86_64'] + cdata.set('CPU_CISC', true, description: 'Building for a CISC machine (e.g. Intel)') + cdata.set('HAVE_X86', true, description: 'Use x86 inlined assembly code') +else + cdata.set('CPU_RISC', true, description: 'Building for a RISC machine (assume slow byte access)') +endif + +# Pretty much all supported platforms have stdint.h nowadays +assert(cc.has_header('stdint.h'), 'stdint.h not available!') + +# we'll just assume these types are available via stdint.h +foreach type : ['int8_t', 'uint8_t', 'int16_t', 'uint16_t', 'int32_t', 'uint32_t', 'uint64_t'] + cdata.set('HAVE_' + type.to_upper().underscorify(), true) +endforeach + +size_t_prefix = ''' +#ifdef _WIN32 +#include <crtdefs.h> +#endif +#include <sys/types.h> +''' +if not cc.has_type('size_t', prefix: size_t_prefix) + cdata.set('size_t', 'unsigned int') +endif + +# check type availability and size +foreach type : ['unsigned long', 'unsigned long long'] + if cc.has_type(type) + cdata.set('HAVE_' + type.to_upper().underscorify(), true) + cdata.set('SIZEOF_' + type.to_upper().underscorify(), cc.sizeof(type)) + endif +endforeach + +if not cc.compiles('inline void func(); void func() { } int main() { func(); return 0; }', name: 'inline keyword check') + if cc.compiles('__inline void func(); void func() { } int main() { func(); return 0; }', name: '__inline keyword check') + cdata.set('inline', '__inline') + else + cdata.set('inline', '') + endif +endif + +if get_option('log-stdout') + cdata.set('ERR_REPORTING_STDOUT', true) +endif + +if get_option('log-file') != '' + cdata.set('ERR_REPORTING_FILE', get_option('log-file')) +endif + +if cdata.has('ERR_REPORTING_STDOUT') and cdata.has('ERR_REPORTING_FILE') + error('The log-stdout and log-file options are mutually exclusive!') +endif + +if get_option('debug-logging') + cdata.set('ENABLE_DEBUG_LOGGING', true) +endif + +use_openssl = false +use_wolfssl = false +use_nss = false +use_mbedtls = false + +crypto_library = get_option('crypto-library') +if crypto_library == 'openssl' + openssl_dep = dependency('openssl', required: true) + srtp3_deps += [openssl_dep] + cdata.set('GCM', true) + cdata.set('OPENSSL', true) + cdata.set('USE_EXTERNAL_CRYPTO', true) + use_openssl = true + # NOTE: This is not available in upstream OpenSSL yet. It's only in 'certain' + # forks of OpenSSL: https://github.com/cisco/libsrtp/issues/458 + if ( + openssl_dep.type_name() != 'internal' and + not get_option('crypto-library-kdf').disabled() and + cc.has_function('kdf_srtp', dependencies: openssl_dep) + ) + cdata.set('OPENSSL_KDF', true) + elif get_option('crypto-library-kdf').enabled() + error('KDF support has been enabled, but OpenSSL does not provide it') + endif +elif crypto_library == 'wolfssl' + wolfssl_dep = dependency('wolfssl', version: '>= 5.7.0', required: true) + srtp3_deps += [wolfssl_dep] + cdata.set('GCM', true) + cdata.set('WOLFSSL', true) + cdata.set('USE_EXTERNAL_CRYPTO', true) + use_wolfssl = true + if ( + wolfssl_dep.type_name() != 'internal' and + not get_option('crypto-library-kdf').disabled() and + cc.has_function('wc_SRTCP_KDF', dependencies: wolfssl_dep) + ) + cdata.set('WOLFSSL_KDF', true) + elif get_option('crypto-library-kdf').enabled() + error('KDF support has been enabled, but wolfSSL does not provide it') + endif +elif crypto_library == 'nss' + nss_dep = dependency('nss', version: '>= 1.0.1', required: true) + srtp3_deps += [nss_dep] + cdata.set('GCM', true) + cdata.set('NSS', true) + cdata.set('USE_EXTERNAL_CRYPTO', true) + use_nss = true + # TODO(RLB): Use NSS for KDF + if get_option('crypto-library-kdf').enabled() + error('KDF support has not been implemented for NSS') + endif +elif crypto_library == 'mbedtls' + mbedtls_dep = dependency('mbedcrypto', required: false) + if not mbedtls_dep.found() + mbedtls_dep = cc.find_library('mbedcrypto', has_headers: ['mbedtls/aes.h'], required: true) + endif + srtp3_deps += [mbedtls_dep] + cdata.set('GCM', true) + cdata.set('MBEDTLS', true) + cdata.set('USE_EXTERNAL_CRYPTO', true) + use_mbedtls = true + # TODO(RLB): Use NSS for KDF + if get_option('crypto-library-kdf').enabled() + error('KDF support has not been implemented for mbedtls') + endif +endif + +configure_file(output: 'config.h', configuration: cdata) + +add_project_arguments('-DHAVE_CONFIG_H', language: 'c') + +if get_option('buildtype') != 'plain' + w_args = ['-Wstrict-prototypes'] + add_project_arguments(cc.get_supported_arguments(w_args), language: 'c') +endif + +if get_option('optimization') not in ['0', 'g', 's'] + # -fexpensive-optimizations set already by default for -O2, -O3 + o_args = ['-funroll-loops'] + add_project_arguments(cc.get_supported_arguments(o_args), language: 'c') +endif + +sources = files( + 'srtp/srtp.c', + ) + +ciphers_sources = files( + 'crypto/cipher/cipher.c', + 'crypto/cipher/cipher_test_cases.c', + 'crypto/cipher/null_cipher.c', + ) + +if use_openssl + ciphers_sources += files( + 'crypto/cipher/aes_icm_ossl.c', + 'crypto/cipher/aes_gcm_ossl.c', + ) +elif use_wolfssl + ciphers_sources += files( + 'crypto/cipher/aes_icm_wssl.c', + 'crypto/cipher/aes_gcm_wssl.c', + ) +elif use_nss + ciphers_sources += files( + 'crypto/cipher/aes_icm_nss.c', + 'crypto/cipher/aes_gcm_nss.c', + ) +elif use_mbedtls + ciphers_sources += files( + 'crypto/cipher/aes_icm_mbedtls.c', + 'crypto/cipher/aes_gcm_mbedtls.c', + ) +else + ciphers_sources += files( + 'crypto/cipher/aes.c', + 'crypto/cipher/aes_icm.c', + ) +endif + +hashes_sources = files( + 'crypto/hash/auth.c', + 'crypto/hash/auth_test_cases.c', + 'crypto/hash/null_auth.c', + ) + +if use_openssl + hashes_sources += files( + 'crypto/hash/hmac_ossl.c', + ) +elif use_wolfssl + hashes_sources += files( + 'crypto/hash/hmac_wssl.c', + ) +elif use_nss + hashes_sources += files( + 'crypto/hash/hmac_nss.c', + ) +elif use_mbedtls + hashes_sources += files( + 'crypto/hash/hmac_mbedtls.c', + ) +else + hashes_sources += files( + 'crypto/hash/hmac.c', + 'crypto/hash/sha1.c', + ) +endif + +kernel_sources = files( + 'crypto/kernel/alloc.c', + 'crypto/kernel/crypto_kernel.c', + 'crypto/kernel/err.c', + 'crypto/kernel/key.c', +) + +math_sources = files( + 'crypto/math/datatypes.c', +) + +replay_sources = files( + 'crypto/replay/rdb.c', + 'crypto/replay/rdbx.c', +) + +public_headers = files( + 'include/srtp.h', + 'crypto/include/auth.h', + 'crypto/include/cipher.h', + 'crypto/include/crypto_types.h', +) +install_headers(public_headers, subdir : 'srtp3') + +config_incs = include_directories('.') +crypto_incs = include_directories('crypto/include') +srtp3_incs = include_directories('include') +test_incs = include_directories('test') + +default_library = get_option('default_library') + +libsrtp3_static = static_library('srtp3', sources, ciphers_sources, hashes_sources, + kernel_sources, math_sources, replay_sources, + dependencies: [srtp3_deps, syslibs], + include_directories: [crypto_incs, srtp3_incs], + install: default_library != 'shared') + +if default_library != 'static' + libsrtp3 = shared_library('srtp3', + soversion : soversion, + vs_module_defs: 'srtp.def', + link_whole: libsrtp3_static, + install: true) +else + libsrtp3 = libsrtp3_static +endif + +subdir('include/srtp3') # copies public_headers into the builddir +public_incs = include_directories('include') # sets public_incs + +libsrtp3_dep = declare_dependency(link_with: libsrtp3, + include_directories: public_incs) + +if not get_option('tests').disabled() + # Tests use non-public API, and when building on Windows the only symbols we + # export are those in srtp.def, so link to the static library in that case. + if host_system == 'windows' + libsrtp3_for_tests = libsrtp3_static + else + libsrtp3_for_tests = libsrtp3 + endif + subdir('crypto/test') + subdir('test') +endif + +if not get_option('fuzzer').disabled() + subdir('fuzzer') +endif + +if not get_option('doc').disabled() + subdir('doc') +endif + +pkgconfig = import('pkgconfig') +pkgconfig.generate(libsrtp3, + filebase: meson.project_name(), + name: meson.project_name(), + version: meson.project_version(), + description: 'Library for SRTP (Secure Realtime Transport Protocol)') diff --git a/src/libs/libsrtp/meson_options.txt b/src/libs/libsrtp/meson_options.txt new file mode 100644 index 00000000..2b90375c --- /dev/null +++ b/src/libs/libsrtp/meson_options.txt @@ -0,0 +1,18 @@ +option('debug-logging', type : 'boolean', value : false, + description : 'Enable debug logging in all modules') +option('log-stdout', type : 'boolean', value : false, + description : 'Redirect logging to stdout') +option('log-file', type : 'string', value : '', + description : 'Write logging output into this file') +option('crypto-library', type: 'combo', choices : ['none', 'openssl', 'wolfssl', 'nss', 'mbedtls'], value : 'none', + description : 'What external crypto library to leverage, if any (OpenSSL, wolfSSL, NSS, or mbedtls)') +option('crypto-library-kdf', type : 'feature', value : 'auto', + description : 'Use the external crypto library for Key Derivation Function support') +option('fuzzer', type : 'feature', value : 'disabled', + description : 'Build libsrtp fuzzer (requires build with clang)') +option('tests', type : 'feature', value : 'auto', yield : true, + description : 'Build test applications') +option('pcap-tests', type : 'feature', value : 'auto', + description : 'Build test application that require libpcap') +option('doc', type : 'feature', value : 'auto', yield : true, + description : 'Generate API documentation with doxygen') diff --git a/src/libs/libsrtp/srtp.def b/src/libs/libsrtp/srtp.def new file mode 100644 index 00000000..bf314277 --- /dev/null +++ b/src/libs/libsrtp/srtp.def @@ -0,0 +1,69 @@ +EXPORTS +srtp_init +srtp_shutdown +srtp_protect +srtp_unprotect +srtp_create +srtp_stream_add +srtp_stream_remove +srtp_update +srtp_stream_update +srtp_get_stream +srtp_crypto_policy_set_rtp_default +srtp_crypto_policy_set_rtcp_default +srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32 +srtp_crypto_policy_set_aes_cm_128_null_auth +srtp_crypto_policy_set_null_cipher_hmac_sha1_80 +srtp_crypto_policy_set_null_cipher_hmac_null +srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80 +srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32 +srtp_crypto_policy_set_aes_cm_192_null_auth +srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80 +srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32 +srtp_crypto_policy_set_aes_cm_256_null_auth +srtp_crypto_policy_set_aes_gcm_128_16_auth +srtp_crypto_policy_set_aes_gcm_256_16_auth +srtp_dealloc +srtp_crypto_policy_set_from_profile_for_rtp +srtp_crypto_policy_set_from_profile_for_rtcp +srtp_profile_get_master_key_length +srtp_profile_get_master_salt_length +srtp_append_salt_to_key +srtp_get_protect_trailer_length +srtp_get_protect_rtcp_trailer_length +srtp_protect_rtcp +srtp_unprotect_rtcp +srtp_stream_set_roc +srtp_set_user_data +srtp_stream_get_roc +srtp_get_user_data +srtp_install_event_handler +srtp_get_version_string +srtp_get_version +srtp_set_debug_module +srtp_list_debug_modules +srtp_install_log_handler +srtp_err_report +srtp_crypto_kernel_load_debug_module +srtp_cipher_get_key_length +srtp_cipher_type_self_test +srtp_cipher_type_test +srtp_cipher_bits_per_second +srtp_cipher_type_alloc +srtp_cipher_dealloc +srtp_cipher_init +srtp_cipher_set_iv +srtp_cipher_output +srtp_cipher_encrypt +srtp_cipher_decrypt +srtp_cipher_set_aad +srtp_replace_cipher_type +srtp_auth_get_key_length +srtp_auth_get_tag_length +srtp_auth_get_prefix_length +srtp_auth_type_self_test +srtp_auth_type_test +srtp_replace_auth_type +srtp_octet_string_hex_string +srtp_octet_string_equal +srtp_rdbx_get_window_size diff --git a/src/libs/libsrtp/srtp/srtp.c b/src/libs/libsrtp/srtp/srtp.c new file mode 100644 index 00000000..7356d585 --- /dev/null +++ b/src/libs/libsrtp/srtp/srtp.c @@ -0,0 +1,5330 @@ +/* + * srtp.c + * + * the secure real-time transport protocol + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +// Leave this as the top level import. Ensures the existence of defines +#include "config.h" + +#include "srtp_priv.h" +#include "stream_list_priv.h" +#include "crypto_types.h" +#include "err.h" +#include "alloc.h" /* for srtp_crypto_alloc() */ + +#ifdef GCM +#include "aes_gcm.h" /* for AES GCM mode */ +#endif + +#ifdef OPENSSL_KDF +#include <openssl/kdf.h> +#include "aes_icm_ext.h" +#endif + +#ifdef WOLFSSL +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif +#ifndef WOLFSSL_USER_SETTINGS +#include <wolfssl/options.h> +#endif +#include <wolfssl/wolfcrypt/settings.h> +#ifdef WOLFSSL_KDF +#include <wolfssl/wolfcrypt/kdf.h> +#endif +#endif + +#include <limits.h> +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> +#elif defined(HAVE_WINSOCK2_H) +#include <winsock2.h> +#endif + +/* the debug module for srtp */ +srtp_debug_module_t mod_srtp = { + false, /* debugging is off by default */ + "srtp" /* printable name for module */ +}; + +static const size_t octets_in_rtp_header = 12; +static const size_t octets_in_rtcp_header = 8; +static const size_t octets_in_rtp_xtn_hdr = 4; + +static const uint16_t xtn_hdr_one_byte_profile = 0xbede; +static const uint16_t xtn_hdr_two_byte_profile = 0x1000; + +static const uint16_t cryptex_one_byte_profile = 0xc0de; +static const uint16_t cryptex_two_byte_profile = 0xc2de; + +static size_t srtp_get_rtp_hdr_len(const srtp_hdr_t *hdr) +{ + return octets_in_rtp_header + 4 * hdr->cc; +} + +/* + * Returns the location of the header extention cast to a srtp_hdr_xtnd_t + * struct. Will always return a value and assumes that the caller has already + * verified that a header extension is present by checking the x bit of + * srtp_hdr_t. + */ +static srtp_hdr_xtnd_t *srtp_get_rtp_xtn_hdr(const srtp_hdr_t *hdr, + uint8_t *rtp) +{ + return (srtp_hdr_xtnd_t *)(rtp + srtp_get_rtp_hdr_len(hdr)); +} + +/* + * Returns the length of the extension header including the extension header + * header so will return a minium of 4. Assumes the srtp_hdr_xtnd_t is a valid + * pointer and that the caller has already verified that a header extension is + * valid by checking the x bit of the RTP header. + */ +static size_t srtp_get_rtp_xtn_hdr_len(const srtp_hdr_t *hdr, + const uint8_t *rtp) +{ + const srtp_hdr_xtnd_t *xtn_hdr = + (const srtp_hdr_xtnd_t *)(rtp + srtp_get_rtp_hdr_len(hdr)); + return (ntohs(xtn_hdr->length) + 1u) * 4u; +} + +static uint16_t srtp_get_rtp_xtn_hdr_profile(const srtp_hdr_t *hdr, + const uint8_t *rtp) +{ + const srtp_hdr_xtnd_t *xtn_hdr = + (const srtp_hdr_xtnd_t *)(rtp + srtp_get_rtp_hdr_len(hdr)); + return ntohs(xtn_hdr->profile_specific); +} + +static void srtp_cryptex_adjust_buffer(const srtp_hdr_t *hdr, uint8_t *rtp) +{ + if (hdr->cc) { + uint8_t tmp[4]; + uint8_t *ptr = rtp + srtp_get_rtp_hdr_len(hdr); + size_t cc_list_size = hdr->cc * 4; + memcpy(tmp, ptr, 4); + ptr -= cc_list_size; + memmove(ptr + 4, ptr, cc_list_size); + memcpy(ptr, tmp, 4); + } +} + +static void srtp_cryptex_restore_buffer(const srtp_hdr_t *hdr, uint8_t *rtp) +{ + if (hdr->cc) { + uint8_t tmp[4]; + uint8_t *ptr = rtp + octets_in_rtp_header; + size_t cc_list_size = hdr->cc * 4; + memcpy(tmp, ptr, 4); + memmove(ptr, ptr + 4, cc_list_size); + ptr += cc_list_size; + memcpy(ptr, tmp, 4); + } +} + +static srtp_err_status_t srtp_cryptex_protect_init( + const srtp_stream_ctx_t *stream, + const srtp_hdr_t *hdr, + const uint8_t *rtp, + const uint8_t *srtp, + bool *inuse, + bool *inplace, + size_t *enc_start) +{ + if (stream->use_cryptex && (stream->rtp_services & sec_serv_conf)) { + if (hdr->cc && hdr->x == 0) { + /* Cryptex can only encrypt CSRCs if header extension is present */ + return srtp_err_status_cryptex_err; + } + *inuse = hdr->x == 1; + } else { + *inuse = false; + } + + *inplace = *inuse && rtp == srtp; + + if (*inuse) { + *enc_start -= + (srtp_get_rtp_xtn_hdr_len(hdr, rtp) - octets_in_rtp_xtn_hdr); + if (*inplace) { + *enc_start -= (hdr->cc * 4); + } + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_cryptex_protect(bool inplace, + const srtp_hdr_t *hdr, + uint8_t *srtp, + srtp_cipher_t *rtp_cipher) +{ + srtp_hdr_xtnd_t *xtn_hdr = srtp_get_rtp_xtn_hdr(hdr, srtp); + uint16_t profile = ntohs(xtn_hdr->profile_specific); + if (profile == xtn_hdr_one_byte_profile) { + xtn_hdr->profile_specific = htons(cryptex_one_byte_profile); + } else if (profile == xtn_hdr_two_byte_profile) { + xtn_hdr->profile_specific = htons(cryptex_two_byte_profile); + } else { + return srtp_err_status_parse_err; + } + + if (inplace) { + srtp_cryptex_adjust_buffer(hdr, srtp); + } else { + if (hdr->cc) { + uint8_t *cc_list = srtp + octets_in_rtp_header; + size_t cc_list_size = hdr->cc * 4; + /* CSRCs are in dst header already, enc in place */ + srtp_err_status_t status = srtp_cipher_encrypt( + rtp_cipher, cc_list, cc_list_size, cc_list, &cc_list_size); + if (status) { + return srtp_err_status_cipher_fail; + } + } + } + + return srtp_err_status_ok; +} + +static void srtp_cryptex_protect_cleanup(bool inplace, + const srtp_hdr_t *hdr, + uint8_t *srtp) +{ + if (inplace) { + srtp_cryptex_restore_buffer(hdr, srtp); + } +} + +static srtp_err_status_t srtp_cryptex_unprotect_init( + const srtp_stream_ctx_t *stream, + const srtp_hdr_t *hdr, + const uint8_t *srtp, + const uint8_t *rtp, + bool *inuse, + bool *inplace, + size_t *enc_start) +{ + if (stream->use_cryptex && hdr->x == 1) { + uint16_t profile = srtp_get_rtp_xtn_hdr_profile(hdr, rtp); + *inuse = profile == cryptex_one_byte_profile || + profile == cryptex_two_byte_profile; + } else { + *inuse = false; + } + + *inplace = *inuse && srtp == rtp; + + if (*inuse) { + *enc_start -= + (srtp_get_rtp_xtn_hdr_len(hdr, rtp) - octets_in_rtp_xtn_hdr); + if (*inplace) { + *enc_start -= (hdr->cc * 4); + } + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_cryptex_unprotect(bool inplace, + const srtp_hdr_t *hdr, + uint8_t *rtp, + srtp_cipher_t *rtp_cipher) +{ + if (inplace) { + srtp_cryptex_adjust_buffer(hdr, rtp); + } else { + if (hdr->cc) { + uint8_t *cc_list = rtp + octets_in_rtp_header; + size_t cc_list_size = hdr->cc * 4; + /* CSRCs are in dst header already, enc in place */ + srtp_err_status_t status = srtp_cipher_decrypt( + rtp_cipher, cc_list, cc_list_size, cc_list, &cc_list_size); + if (status) { + return srtp_err_status_cipher_fail; + } + } + } + + return srtp_err_status_ok; +} + +static void srtp_cryptex_unprotect_cleanup(bool inplace, + const srtp_hdr_t *hdr, + uint8_t *rtp) +{ + if (inplace) { + srtp_cryptex_restore_buffer(hdr, rtp); + } + + srtp_hdr_xtnd_t *xtn_hdr = srtp_get_rtp_xtn_hdr(hdr, rtp); + uint16_t profile = ntohs(xtn_hdr->profile_specific); + if (profile == cryptex_one_byte_profile) { + xtn_hdr->profile_specific = htons(xtn_hdr_one_byte_profile); + } else if (profile == cryptex_two_byte_profile) { + xtn_hdr->profile_specific = htons(xtn_hdr_two_byte_profile); + } +} + +static srtp_err_status_t srtp_validate_rtp_header(const uint8_t *rtp, + size_t pkt_octet_len) +{ + const srtp_hdr_t *hdr = (const srtp_hdr_t *)rtp; + size_t rtp_header_len; + + if (pkt_octet_len < octets_in_rtp_header) { + return srtp_err_status_bad_param; + } + + /* Check RTP header length */ + rtp_header_len = srtp_get_rtp_hdr_len(hdr); + if (pkt_octet_len < rtp_header_len) { + return srtp_err_status_bad_param; + } + + /* Verifying profile length. */ + if (hdr->x == 1) { + if (pkt_octet_len < rtp_header_len + octets_in_rtp_xtn_hdr) { + return srtp_err_status_bad_param; + } + + rtp_header_len += srtp_get_rtp_xtn_hdr_len(hdr, rtp); + if (pkt_octet_len < rtp_header_len) { + return srtp_err_status_bad_param; + } + } + + return srtp_err_status_ok; +} + +const char *srtp_get_version_string(void) +{ + /* + * Simply return the autotools generated string + */ + return SRTP_VER_STRING; +} + +unsigned int srtp_get_version(void) +{ + unsigned int major = 0, minor = 0, micro = 0; + unsigned int rv = 0; + int parse_rv; + + /* + * Parse the autotools generated version + */ + parse_rv = sscanf(SRTP_VERSION, "%u.%u.%u", &major, &minor, &micro); + if (parse_rv != 3) { + /* + * We're expected to parse all 3 version levels. + * If not, then this must not be an official release. + * Return all zeros on the version + */ + return (0); + } + + /* + * We allow 8 bits for the major and minor, while + * allowing 16 bits for the micro. 16 bits for the micro + * may be beneficial for a continuous delivery model + * in the future. + */ + rv |= (major & 0xFF) << 24; + rv |= (minor & 0xFF) << 16; + rv |= micro & 0xFF; + return rv; +} + +static srtp_err_status_t srtp_stream_dealloc( + srtp_stream_ctx_t *stream, + const srtp_stream_ctx_t *stream_template) +{ + srtp_err_status_t status; + srtp_session_keys_t *session_keys = NULL; + srtp_session_keys_t *template_session_keys = NULL; + + /* + * we use a conservative deallocation strategy - if any deallocation + * fails, then we report that fact without trying to deallocate + * anything else + */ + if (stream->session_keys) { + for (size_t i = 0; i < stream->num_master_keys; i++) { + session_keys = &stream->session_keys[i]; + + if (stream_template && + stream->num_master_keys == stream_template->num_master_keys) { + template_session_keys = &stream_template->session_keys[i]; + } else { + template_session_keys = NULL; + } + + /* + * deallocate cipher, if it is not the same as that in template + */ + if (template_session_keys && + session_keys->rtp_cipher == template_session_keys->rtp_cipher) { + /* do nothing */ + } else if (session_keys->rtp_cipher) { + status = srtp_cipher_dealloc(session_keys->rtp_cipher); + if (status) { + return status; + } + } + + /* + * deallocate auth function, if it is not the same as that in + * template + */ + if (template_session_keys && + session_keys->rtp_auth == template_session_keys->rtp_auth) { + /* do nothing */ + } else if (session_keys->rtp_auth) { + status = srtp_auth_dealloc(session_keys->rtp_auth); + if (status) { + return status; + } + } + + if (template_session_keys && + session_keys->rtp_xtn_hdr_cipher == + template_session_keys->rtp_xtn_hdr_cipher) { + /* do nothing */ + } else if (session_keys->rtp_xtn_hdr_cipher) { + status = srtp_cipher_dealloc(session_keys->rtp_xtn_hdr_cipher); + if (status) { + return status; + } + } + + /* + * deallocate rtcp cipher, if it is not the same as that in + * template + */ + if (template_session_keys && + session_keys->rtcp_cipher == + template_session_keys->rtcp_cipher) { + /* do nothing */ + } else if (session_keys->rtcp_cipher) { + status = srtp_cipher_dealloc(session_keys->rtcp_cipher); + if (status) { + return status; + } + } + + /* + * deallocate rtcp auth function, if it is not the same as that in + * template + */ + if (template_session_keys && + session_keys->rtcp_auth == template_session_keys->rtcp_auth) { + /* do nothing */ + } else if (session_keys->rtcp_auth) { + status = srtp_auth_dealloc(session_keys->rtcp_auth); + if (status) { + return status; + } + } + + /* + * zeroize the salt value + */ + octet_string_set_to_zero(session_keys->salt, SRTP_AEAD_SALT_LEN); + octet_string_set_to_zero(session_keys->c_salt, SRTP_AEAD_SALT_LEN); + + if (session_keys->mki_id) { + octet_string_set_to_zero(session_keys->mki_id, + stream->mki_size); + srtp_crypto_free(session_keys->mki_id); + session_keys->mki_id = NULL; + } + + /* + * deallocate key usage limit, if it is not the same as that in + * template + */ + if (template_session_keys && + session_keys->limit == template_session_keys->limit) { + /* do nothing */ + } else if (session_keys->limit) { + srtp_crypto_free(session_keys->limit); + } + } + srtp_crypto_free(stream->session_keys); + } + + status = srtp_rdbx_dealloc(&stream->rtp_rdbx); + if (status) { + return status; + } + + if (stream_template && + stream->enc_xtn_hdr == stream_template->enc_xtn_hdr) { + /* do nothing */ + } else if (stream->enc_xtn_hdr) { + srtp_crypto_free(stream->enc_xtn_hdr); + } + + /* deallocate srtp stream context */ + srtp_crypto_free(stream); + + return srtp_err_status_ok; +} + +/* try to insert stream in list or deallocate it */ +static srtp_err_status_t srtp_insert_or_dealloc_stream(srtp_stream_list_t list, + srtp_stream_t stream, + srtp_stream_t template) +{ + srtp_err_status_t status = srtp_stream_list_insert(list, stream); + /* on failure, ownership wasn't transferred and we need to deallocate */ + if (status) { + srtp_stream_dealloc(stream, template); + } + return status; +} + +struct remove_and_dealloc_streams_data { + srtp_err_status_t status; + srtp_stream_list_t list; + srtp_stream_t template; +}; + +static bool remove_and_dealloc_streams_cb(srtp_stream_t stream, void *data) +{ + struct remove_and_dealloc_streams_data *d = + (struct remove_and_dealloc_streams_data *)data; + srtp_stream_list_remove(d->list, stream); + d->status = srtp_stream_dealloc(stream, d->template); + if (d->status) { + return false; + } + return true; +} + +static srtp_err_status_t srtp_remove_and_dealloc_streams( + srtp_stream_list_t list, + srtp_stream_t template) +{ + struct remove_and_dealloc_streams_data data = { srtp_err_status_ok, list, + template }; + srtp_stream_list_for_each(list, remove_and_dealloc_streams_cb, &data); + return data.status; +} + +static srtp_err_status_t srtp_valid_policy(const srtp_policy_t *policy) +{ + if (policy == NULL) { + return srtp_err_status_bad_param; + } + + if (policy->key == NULL) { + if (policy->num_master_keys <= 0) { + return srtp_err_status_bad_param; + } + + if (policy->num_master_keys > SRTP_MAX_NUM_MASTER_KEYS) { + return srtp_err_status_bad_param; + } + + if (policy->use_mki) { + if (policy->mki_size == 0 || policy->mki_size > SRTP_MAX_MKI_LEN) { + return srtp_err_status_bad_param; + } + } else if (policy->mki_size != 0) { + return srtp_err_status_bad_param; + } + + for (size_t i = 0; i < policy->num_master_keys; i++) { + if (policy->keys[i]->key == NULL) { + return srtp_err_status_bad_param; + } + if (policy->use_mki && policy->keys[i]->mki_id == NULL) { + return srtp_err_status_bad_param; + } + } + } else { + if (policy->use_mki || policy->mki_size != 0) { + return srtp_err_status_bad_param; + } + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_stream_alloc(srtp_stream_ctx_t **str_ptr, + const srtp_policy_t *p) +{ + srtp_stream_ctx_t *str; + srtp_err_status_t stat; + size_t i = 0; + srtp_session_keys_t *session_keys = NULL; + + stat = srtp_valid_policy(p); + if (stat != srtp_err_status_ok) { + return stat; + } + + /* + * This function allocates the stream context, rtp and rtcp ciphers + * and auth functions, and key limit structure. If there is a + * failure during allocation, we free all previously allocated + * memory and return a failure code. The code could probably + * be improved, but it works and should be clear. + */ + + /* allocate srtp stream and set str_ptr */ + str = (srtp_stream_ctx_t *)srtp_crypto_alloc(sizeof(srtp_stream_ctx_t)); + if (str == NULL) { + return srtp_err_status_alloc_fail; + } + + *str_ptr = str; + + /* + *To keep backwards API compatible if someone is using multiple master + * keys then key should be set to NULL + */ + if (p->key != NULL) { + str->num_master_keys = 1; + } else { + str->num_master_keys = p->num_master_keys; + } + + str->session_keys = (srtp_session_keys_t *)srtp_crypto_alloc( + sizeof(srtp_session_keys_t) * str->num_master_keys); + + if (str->session_keys == NULL) { + srtp_stream_dealloc(str, NULL); + return srtp_err_status_alloc_fail; + } + + for (i = 0; i < str->num_master_keys; i++) { + session_keys = &str->session_keys[i]; + + /* allocate cipher */ + stat = srtp_crypto_kernel_alloc_cipher( + p->rtp.cipher_type, &session_keys->rtp_cipher, + p->rtp.cipher_key_len, p->rtp.auth_tag_len); + if (stat) { + srtp_stream_dealloc(str, NULL); + return stat; + } + + /* allocate auth function */ + stat = srtp_crypto_kernel_alloc_auth( + p->rtp.auth_type, &session_keys->rtp_auth, p->rtp.auth_key_len, + p->rtp.auth_tag_len); + if (stat) { + srtp_stream_dealloc(str, NULL); + return stat; + } + + /* + * ...and now the RTCP-specific initialization - first, allocate + * the cipher + */ + stat = srtp_crypto_kernel_alloc_cipher( + p->rtcp.cipher_type, &session_keys->rtcp_cipher, + p->rtcp.cipher_key_len, p->rtcp.auth_tag_len); + if (stat) { + srtp_stream_dealloc(str, NULL); + return stat; + } + + /* allocate auth function */ + stat = srtp_crypto_kernel_alloc_auth( + p->rtcp.auth_type, &session_keys->rtcp_auth, p->rtcp.auth_key_len, + p->rtcp.auth_tag_len); + if (stat) { + srtp_stream_dealloc(str, NULL); + return stat; + } + + session_keys->mki_id = NULL; + + /* allocate key limit structure */ + session_keys->limit = (srtp_key_limit_ctx_t *)srtp_crypto_alloc( + sizeof(srtp_key_limit_ctx_t)); + if (session_keys->limit == NULL) { + srtp_stream_dealloc(str, NULL); + return srtp_err_status_alloc_fail; + } + } + + if (p->enc_xtn_hdr && p->enc_xtn_hdr_count > 0) { + srtp_cipher_type_id_t enc_xtn_hdr_cipher_type; + size_t enc_xtn_hdr_cipher_key_len; + + str->enc_xtn_hdr = (uint8_t *)srtp_crypto_alloc( + p->enc_xtn_hdr_count * sizeof(p->enc_xtn_hdr[0])); + if (!str->enc_xtn_hdr) { + srtp_stream_dealloc(str, NULL); + return srtp_err_status_alloc_fail; + } + memcpy(str->enc_xtn_hdr, p->enc_xtn_hdr, + p->enc_xtn_hdr_count * sizeof(p->enc_xtn_hdr[0])); + str->enc_xtn_hdr_count = p->enc_xtn_hdr_count; + + /* + * For GCM ciphers, the corresponding ICM cipher is used for header + * extensions encryption. + */ + switch (p->rtp.cipher_type) { + case SRTP_AES_GCM_128: + enc_xtn_hdr_cipher_type = SRTP_AES_ICM_128; + enc_xtn_hdr_cipher_key_len = SRTP_AES_ICM_128_KEY_LEN_WSALT; + break; + case SRTP_AES_GCM_256: + enc_xtn_hdr_cipher_type = SRTP_AES_ICM_256; + enc_xtn_hdr_cipher_key_len = SRTP_AES_ICM_256_KEY_LEN_WSALT; + break; + default: + enc_xtn_hdr_cipher_type = p->rtp.cipher_type; + enc_xtn_hdr_cipher_key_len = p->rtp.cipher_key_len; + break; + } + + for (i = 0; i < str->num_master_keys; i++) { + session_keys = &str->session_keys[i]; + + /* allocate cipher for extensions header encryption */ + stat = srtp_crypto_kernel_alloc_cipher( + enc_xtn_hdr_cipher_type, &session_keys->rtp_xtn_hdr_cipher, + enc_xtn_hdr_cipher_key_len, 0); + if (stat) { + srtp_stream_dealloc(str, NULL); + return stat; + } + } + } else { + for (i = 0; i < str->num_master_keys; i++) { + session_keys = &str->session_keys[i]; + session_keys->rtp_xtn_hdr_cipher = NULL; + } + + str->enc_xtn_hdr = NULL; + str->enc_xtn_hdr_count = 0; + } + + str->use_cryptex = p->use_cryptex; + + return srtp_err_status_ok; +} + +/* + * srtp_stream_clone(stream_template, new) allocates a new stream and + * initializes it using the cipher and auth of the stream_template + * + * the only unique data in a cloned stream is the replay database and + * the SSRC + */ + +static srtp_err_status_t srtp_stream_clone( + const srtp_stream_ctx_t *stream_template, + uint32_t ssrc, + srtp_stream_ctx_t **str_ptr) +{ + srtp_err_status_t status; + srtp_stream_ctx_t *str; + srtp_session_keys_t *session_keys = NULL; + const srtp_session_keys_t *template_session_keys = NULL; + + debug_print(mod_srtp, "cloning stream (SSRC: 0x%08x)", + (unsigned int)ntohl(ssrc)); + + /* allocate srtp stream and set str_ptr */ + str = (srtp_stream_ctx_t *)srtp_crypto_alloc(sizeof(srtp_stream_ctx_t)); + if (str == NULL) { + return srtp_err_status_alloc_fail; + } + *str_ptr = str; + + str->num_master_keys = stream_template->num_master_keys; + str->session_keys = (srtp_session_keys_t *)srtp_crypto_alloc( + sizeof(srtp_session_keys_t) * str->num_master_keys); + + if (str->session_keys == NULL) { + srtp_stream_dealloc(*str_ptr, stream_template); + *str_ptr = NULL; + return srtp_err_status_alloc_fail; + } + + for (size_t i = 0; i < stream_template->num_master_keys; i++) { + session_keys = &str->session_keys[i]; + template_session_keys = &stream_template->session_keys[i]; + + /* set cipher and auth pointers to those of the template */ + session_keys->rtp_cipher = template_session_keys->rtp_cipher; + session_keys->rtp_auth = template_session_keys->rtp_auth; + session_keys->rtp_xtn_hdr_cipher = + template_session_keys->rtp_xtn_hdr_cipher; + session_keys->rtcp_cipher = template_session_keys->rtcp_cipher; + session_keys->rtcp_auth = template_session_keys->rtcp_auth; + + if (stream_template->mki_size == 0) { + session_keys->mki_id = NULL; + } else { + session_keys->mki_id = srtp_crypto_alloc(stream_template->mki_size); + + if (session_keys->mki_id == NULL) { + srtp_stream_dealloc(*str_ptr, stream_template); + *str_ptr = NULL; + return srtp_err_status_init_fail; + } + memcpy(session_keys->mki_id, template_session_keys->mki_id, + stream_template->mki_size); + } + /* Copy the salt values */ + memcpy(session_keys->salt, template_session_keys->salt, + SRTP_AEAD_SALT_LEN); + memcpy(session_keys->c_salt, template_session_keys->c_salt, + SRTP_AEAD_SALT_LEN); + + /* set key limit to point to that of the template */ + status = srtp_key_limit_clone(template_session_keys->limit, + &session_keys->limit); + if (status) { + srtp_stream_dealloc(*str_ptr, stream_template); + *str_ptr = NULL; + return status; + } + } + + str->use_mki = stream_template->use_mki; + str->mki_size = stream_template->mki_size; + + /* initialize replay databases */ + status = srtp_rdbx_init( + &str->rtp_rdbx, srtp_rdbx_get_window_size(&stream_template->rtp_rdbx)); + if (status) { + srtp_stream_dealloc(*str_ptr, stream_template); + *str_ptr = NULL; + return status; + } + srtp_rdb_init(&str->rtcp_rdb); + str->allow_repeat_tx = stream_template->allow_repeat_tx; + + /* set ssrc to that provided */ + str->ssrc = ssrc; + + /* reset pending ROC */ + str->pending_roc = 0; + + /* set direction and security services */ + str->direction = stream_template->direction; + str->rtp_services = stream_template->rtp_services; + str->rtcp_services = stream_template->rtcp_services; + + /* copy information about extensions header encryption */ + str->enc_xtn_hdr = stream_template->enc_xtn_hdr; + str->enc_xtn_hdr_count = stream_template->enc_xtn_hdr_count; + str->use_cryptex = stream_template->use_cryptex; + return srtp_err_status_ok; +} + +/* + * key derivation functions, internal to libSRTP + * + * srtp_kdf_t is a key derivation context + * + * srtp_kdf_init(&kdf, cipher_id, k, keylen) initializes kdf to use cipher + * described by cipher_id, with the master key k with length in octets keylen. + * + * srtp_kdf_generate(&kdf, l, kl, keylen) derives the key + * corresponding to label l and puts it into kl; the length + * of the key in octets is provided as keylen. this function + * should be called once for each subkey that is derived. + * + * srtp_kdf_clear(&kdf) zeroizes and deallocates the kdf state + */ + +typedef enum { + label_rtp_encryption = 0x00, + label_rtp_msg_auth = 0x01, + label_rtp_salt = 0x02, + label_rtcp_encryption = 0x03, + label_rtcp_msg_auth = 0x04, + label_rtcp_salt = 0x05, + label_rtp_header_encryption = 0x06, + label_rtp_header_salt = 0x07 +} srtp_prf_label; + +#define MAX_SRTP_KEY_LEN 256 + +#if defined(OPENSSL) && defined(OPENSSL_KDF) +#define MAX_SRTP_AESKEY_LEN 32 +#define MAX_SRTP_SALT_LEN 14 + +/* + * srtp_kdf_t represents a key derivation function. The SRTP + * default KDF is the only one implemented at present. + */ +typedef struct { + uint8_t master_key[MAX_SRTP_AESKEY_LEN]; + uint8_t master_salt[MAX_SRTP_SALT_LEN]; + const EVP_CIPHER *evp; +} srtp_kdf_t; + +static srtp_err_status_t srtp_kdf_init(srtp_kdf_t *kdf, + const uint8_t *key, + size_t key_len, + size_t salt_len) +{ + memset(kdf, 0x0, sizeof(srtp_kdf_t)); + + /* The NULL cipher has zero key length */ + if (key_len == 0) { + return srtp_err_status_ok; + } + + if ((key_len > MAX_SRTP_AESKEY_LEN) || (salt_len > MAX_SRTP_SALT_LEN)) { + return srtp_err_status_bad_param; + } + switch (key_len) { + case SRTP_AES_256_KEYSIZE: + kdf->evp = EVP_aes_256_ctr(); + break; + case SRTP_AES_192_KEYSIZE: + kdf->evp = EVP_aes_192_ctr(); + break; + case SRTP_AES_128_KEYSIZE: + kdf->evp = EVP_aes_128_ctr(); + break; + default: + return srtp_err_status_bad_param; + break; + } + memcpy(kdf->master_key, key, key_len); + memcpy(kdf->master_salt, key + key_len, salt_len); + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_kdf_generate(srtp_kdf_t *kdf, + srtp_prf_label label, + uint8_t *key, + size_t length) +{ + int ret; + + /* The NULL cipher will not have an EVP */ + if (!kdf->evp) { + return srtp_err_status_ok; + } + octet_string_set_to_zero(key, length); + + /* + * Invoke the OpenSSL SRTP KDF function + * This is useful if OpenSSL is in FIPS mode and FIP + * compliance is required for SRTP. + */ + ret = kdf_srtp(kdf->evp, (char *)&kdf->master_key, &kdf->master_salt, NULL, + NULL, label, key); + if (ret == -1) { + return (srtp_err_status_algo_fail); + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_kdf_clear(srtp_kdf_t *kdf) +{ + octet_string_set_to_zero(kdf->master_key, MAX_SRTP_AESKEY_LEN); + octet_string_set_to_zero(kdf->master_salt, MAX_SRTP_SALT_LEN); + kdf->evp = NULL; + + return srtp_err_status_ok; +} + +#elif defined(WOLFSSL) && defined(WOLFSSL_KDF) +#define MAX_SRTP_AESKEY_LEN AES_256_KEY_SIZE +#define MAX_SRTP_SALT_LEN WC_SRTP_MAX_SALT + +/* + * srtp_kdf_t represents a key derivation function. The SRTP + * default KDF is the only one implemented at present. + */ +typedef struct { + uint8_t master_key[MAX_SRTP_AESKEY_LEN]; + int master_key_len; + uint8_t master_salt[MAX_SRTP_SALT_LEN]; +} srtp_kdf_t; + +static srtp_err_status_t srtp_kdf_init(srtp_kdf_t *kdf, + const uint8_t *key, + size_t key_len) +{ + size_t salt_len; + + memset(kdf, 0x0, sizeof(srtp_kdf_t)); + + switch (key_len) { + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + kdf->master_key_len = AES_256_KEY_SIZE; + break; + case SRTP_AES_ICM_192_KEY_LEN_WSALT: + kdf->master_key_len = AES_192_KEY_SIZE; + break; + case SRTP_AES_ICM_128_KEY_LEN_WSALT: + kdf->master_key_len = AES_128_KEY_SIZE; + break; + default: + return srtp_err_status_bad_param; + break; + } + + memcpy(kdf->master_key, key, kdf->master_key_len); + salt_len = key_len - kdf->master_key_len; + memcpy(kdf->master_salt, key + kdf->master_key_len, salt_len); + memset(kdf->master_salt + salt_len, 0, MAX_SRTP_SALT_LEN - salt_len); + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_kdf_generate(srtp_kdf_t *kdf, + srtp_prf_label label, + uint8_t *key, + size_t length) +{ + int err; + + if (length == 0) { + return srtp_err_status_ok; + } + if (kdf->master_key_len == 0) { + return srtp_err_status_ok; + } + octet_string_set_to_zero(key, length); + + PRIVATE_KEY_UNLOCK(); + err = wc_SRTP_KDF_label(kdf->master_key, kdf->master_key_len, + kdf->master_salt, MAX_SRTP_SALT_LEN, -1, NULL, + label, key, length); + PRIVATE_KEY_LOCK(); + if (err < 0) { + debug_print(mod_srtp, "wolfSSL SRTP KDF error: %d", err); + return (srtp_err_status_algo_fail); + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_kdf_clear(srtp_kdf_t *kdf) +{ + octet_string_set_to_zero(kdf->master_key, MAX_SRTP_AESKEY_LEN); + kdf->master_key_len = 0; + octet_string_set_to_zero(kdf->master_salt, MAX_SRTP_SALT_LEN); + + return srtp_err_status_ok; +} + +#else /* if OPENSSL_KDF || WOLFSSL_KDF */ + +/* + * srtp_kdf_t represents a key derivation function. The SRTP + * default KDF is the only one implemented at present. + */ +typedef struct { + srtp_cipher_t *cipher; /* cipher used for key derivation */ +} srtp_kdf_t; + +static srtp_err_status_t srtp_kdf_init(srtp_kdf_t *kdf, + const uint8_t *key, + size_t key_len) +{ + srtp_cipher_type_id_t cipher_id; + srtp_err_status_t stat; + + switch (key_len) { + case SRTP_AES_ICM_256_KEY_LEN_WSALT: + cipher_id = SRTP_AES_ICM_256; + break; + case SRTP_AES_ICM_192_KEY_LEN_WSALT: + cipher_id = SRTP_AES_ICM_192; + break; + case SRTP_AES_ICM_128_KEY_LEN_WSALT: + cipher_id = SRTP_AES_ICM_128; + break; + default: + return srtp_err_status_bad_param; + break; + } + + stat = srtp_crypto_kernel_alloc_cipher(cipher_id, &kdf->cipher, key_len, 0); + if (stat) { + return stat; + } + + stat = srtp_cipher_init(kdf->cipher, key); + if (stat) { + srtp_cipher_dealloc(kdf->cipher); + return stat; + } + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_kdf_generate(srtp_kdf_t *kdf, + srtp_prf_label label, + uint8_t *key, + size_t length) +{ + srtp_err_status_t status; + v128_t nonce; + + /* set eigth octet of nonce to <label>, set the rest of it to zero */ + v128_set_to_zero(&nonce); + nonce.v8[7] = label; + + status = srtp_cipher_set_iv(kdf->cipher, (uint8_t *)&nonce, + srtp_direction_encrypt); + if (status) { + return status; + } + + /* generate keystream output */ + octet_string_set_to_zero(key, length); + status = srtp_cipher_encrypt(kdf->cipher, key, length, key, &length); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_kdf_clear(srtp_kdf_t *kdf) +{ + srtp_err_status_t status; + status = srtp_cipher_dealloc(kdf->cipher); + if (status) { + return status; + } + kdf->cipher = NULL; + return srtp_err_status_ok; +} +#endif /* else OPENSSL_KDF || WOLFSSL_KDF */ + +/* + * end of key derivation functions + */ + +/* Get the base key length corresponding to a given combined key+salt + * length for the given cipher. + * TODO: key and salt lengths should be separate fields in the policy. */ +static inline size_t base_key_length(const srtp_cipher_type_t *cipher, + size_t key_length) +{ + switch (cipher->id) { + case SRTP_NULL_CIPHER: + return 0; + case SRTP_AES_ICM_128: + case SRTP_AES_ICM_192: + case SRTP_AES_ICM_256: + /* The legacy modes are derived from + * the configured key length on the policy */ + return key_length - SRTP_SALT_LEN; + case SRTP_AES_GCM_128: + return key_length - SRTP_AEAD_SALT_LEN; + case SRTP_AES_GCM_256: + return key_length - SRTP_AEAD_SALT_LEN; + default: + return key_length; + } +} + +/* Get the key length that the application should supply for the given cipher */ +static inline size_t full_key_length(const srtp_cipher_type_t *cipher) +{ + switch (cipher->id) { + case SRTP_NULL_CIPHER: + return 0; + case SRTP_AES_ICM_128: + return SRTP_AES_ICM_128_KEY_LEN_WSALT; + case SRTP_AES_ICM_192: + return SRTP_AES_ICM_192_KEY_LEN_WSALT; + case SRTP_AES_ICM_256: + return SRTP_AES_ICM_256_KEY_LEN_WSALT; + case SRTP_AES_GCM_128: + return SRTP_AES_GCM_128_KEY_LEN_WSALT; + case SRTP_AES_GCM_256: + return SRTP_AES_GCM_256_KEY_LEN_WSALT; + default: + return 0; + } +} + +/* Get the key length that the application should supply for the given auth */ +static inline size_t full_auth_key_length(const srtp_auth_type_t *auth) +{ + switch (auth->id) { + case SRTP_NULL_AUTH: + return 0; + case SRTP_HMAC_SHA1: + return SRTP_AES_ICM_128_KEY_LEN_WSALT; + default: + return 0; + } +} + +srtp_err_status_t srtp_get_session_keys(srtp_stream_ctx_t *stream, + size_t mki_index, + srtp_session_keys_t **session_keys) +{ + if (stream->use_mki) { + if (mki_index >= stream->num_master_keys) { + return srtp_err_status_bad_mki; + } + *session_keys = &stream->session_keys[mki_index]; + return srtp_err_status_ok; + } + + *session_keys = &stream->session_keys[0]; + return srtp_err_status_ok; +} + +void srtp_inject_mki(uint8_t *mki_tag_location, + const srtp_session_keys_t *session_keys, + size_t mki_size) +{ + if (mki_size > 0) { + // Write MKI into memory + memcpy(mki_tag_location, session_keys->mki_id, mki_size); + } +} + +srtp_err_status_t srtp_stream_init_keys(srtp_session_keys_t *session_keys, + const srtp_master_key_t *master_key, + size_t mki_size) +{ + srtp_err_status_t stat; + srtp_kdf_t kdf; + uint8_t tmp_key[MAX_SRTP_KEY_LEN]; + size_t input_keylen, full_keylen; + size_t kdf_keylen = 30, rtp_keylen, rtcp_keylen; + size_t rtp_base_key_len, rtp_salt_len; + size_t rtcp_base_key_len, rtcp_salt_len; + + /* If RTP or RTCP have a key length > AES-128, assume matching kdf. */ + /* TODO: kdf algorithm, master key length, and master salt length should + * be part of srtp_policy_t. + */ + + /* initialize key limit to maximum value */ + srtp_key_limit_set(session_keys->limit, 0xffffffffffffLL); + + if (mki_size != 0) { + if (master_key->mki_id == NULL) { + return srtp_err_status_bad_param; + } + session_keys->mki_id = srtp_crypto_alloc(mki_size); + + if (session_keys->mki_id == NULL) { + return srtp_err_status_init_fail; + } + memcpy(session_keys->mki_id, master_key->mki_id, mki_size); + } else { + session_keys->mki_id = NULL; + } + + input_keylen = full_key_length(session_keys->rtp_cipher->type); + full_keylen = full_auth_key_length(session_keys->rtp_auth->type); + if (full_keylen > input_keylen) { + input_keylen = full_keylen; + } + full_keylen = full_key_length(session_keys->rtcp_cipher->type); + if (full_keylen > input_keylen) { + input_keylen = full_keylen; + } + full_keylen = full_auth_key_length(session_keys->rtcp_auth->type); + if (full_keylen > input_keylen) { + input_keylen = full_keylen; + } + + rtp_keylen = srtp_cipher_get_key_length(session_keys->rtp_cipher); + rtcp_keylen = srtp_cipher_get_key_length(session_keys->rtcp_cipher); + rtp_base_key_len = + base_key_length(session_keys->rtp_cipher->type, rtp_keylen); + rtp_salt_len = rtp_keylen - rtp_base_key_len; + + /* + * We assume that the `key` buffer provided by the caller has a length + * equal to the greater of `rtp_keylen` and `rtcp_keylen`. Since we are + * about to read `input_keylen` bytes from it, we need to check that we will + * not overrun. + */ + if ((rtp_keylen < input_keylen) && (rtcp_keylen < input_keylen)) { + return srtp_err_status_bad_param; + } + + if (rtp_keylen > kdf_keylen) { + kdf_keylen = 46; /* AES-CTR mode is always used for KDF */ + } + + if (rtcp_keylen > kdf_keylen) { + kdf_keylen = 46; /* AES-CTR mode is always used for KDF */ + } + + if (input_keylen > kdf_keylen) { + kdf_keylen = 46; /* AES-CTR mode is always used for KDF */ + } + + debug_print(mod_srtp, "input key len: %zu", input_keylen); + debug_print(mod_srtp, "srtp key len: %zu", rtp_keylen); + debug_print(mod_srtp, "srtcp key len: %zu", rtcp_keylen); + debug_print(mod_srtp, "base key len: %zu", rtp_base_key_len); + debug_print(mod_srtp, "kdf key len: %zu", kdf_keylen); + debug_print(mod_srtp, "rtp salt len: %zu", rtp_salt_len); + + /* + * Make sure the key given to us is 'zero' appended. GCM + * mode uses a shorter master SALT (96 bits), but still relies on + * the legacy CTR mode KDF, which uses a 112 bit master SALT. + */ + memset(tmp_key, 0x0, MAX_SRTP_KEY_LEN); + memcpy(tmp_key, master_key->key, input_keylen); + +/* initialize KDF state */ +#if defined(OPENSSL) && defined(OPENSSL_KDF) + stat = srtp_kdf_init(&kdf, tmp_key, rtp_base_key_len, rtp_salt_len); +#else + stat = srtp_kdf_init(&kdf, tmp_key, kdf_keylen); +#endif + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + /* generate encryption key */ + stat = srtp_kdf_generate(&kdf, label_rtp_encryption, tmp_key, + rtp_base_key_len); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + debug_print(mod_srtp, "cipher key: %s", + srtp_octet_string_hex_string(tmp_key, rtp_base_key_len)); + + /* + * if the cipher in the srtp context uses a salt, then we need + * to generate the salt value + */ + if (rtp_salt_len > 0) { + debug_print0(mod_srtp, "found rtp_salt_len > 0, generating salt"); + + /* generate encryption salt, put after encryption key */ + stat = srtp_kdf_generate(&kdf, label_rtp_salt, + tmp_key + rtp_base_key_len, rtp_salt_len); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + memcpy(session_keys->salt, tmp_key + rtp_base_key_len, + SRTP_AEAD_SALT_LEN); + } + if (rtp_salt_len > 0) { + debug_print(mod_srtp, "cipher salt: %s", + srtp_octet_string_hex_string(tmp_key + rtp_base_key_len, + rtp_salt_len)); + } + + /* initialize cipher */ + stat = srtp_cipher_init(session_keys->rtp_cipher, tmp_key); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + if (session_keys->rtp_xtn_hdr_cipher) { + /* generate extensions header encryption key */ + size_t rtp_xtn_hdr_keylen; + size_t rtp_xtn_hdr_base_key_len; + size_t rtp_xtn_hdr_salt_len; + srtp_kdf_t tmp_kdf; + srtp_kdf_t *xtn_hdr_kdf; + + if (session_keys->rtp_xtn_hdr_cipher->type != + session_keys->rtp_cipher->type) { + /* + * With GCM ciphers, the header extensions are still encrypted using + * the corresponding ICM cipher. + * See https://tools.ietf.org/html/rfc7714#section-8.3 + */ + uint8_t tmp_xtn_hdr_key[MAX_SRTP_KEY_LEN]; + rtp_xtn_hdr_keylen = + srtp_cipher_get_key_length(session_keys->rtp_xtn_hdr_cipher); + rtp_xtn_hdr_base_key_len = base_key_length( + session_keys->rtp_xtn_hdr_cipher->type, rtp_xtn_hdr_keylen); + rtp_xtn_hdr_salt_len = + rtp_xtn_hdr_keylen - rtp_xtn_hdr_base_key_len; + if (rtp_xtn_hdr_salt_len > rtp_salt_len) { + switch (session_keys->rtp_cipher->type->id) { + case SRTP_AES_GCM_128: + case SRTP_AES_GCM_256: + /* + * The shorter GCM salt is padded to the required ICM salt + * length. + */ + rtp_xtn_hdr_salt_len = rtp_salt_len; + break; + default: + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_bad_param; + } + } + memset(tmp_xtn_hdr_key, 0x0, MAX_SRTP_KEY_LEN); + memcpy(tmp_xtn_hdr_key, master_key->key, + (rtp_xtn_hdr_base_key_len + rtp_xtn_hdr_salt_len)); + xtn_hdr_kdf = &tmp_kdf; + +/* initialize KDF state */ +#if defined(OPENSSL) && defined(OPENSSL_KDF) + stat = + srtp_kdf_init(xtn_hdr_kdf, tmp_xtn_hdr_key, + rtp_xtn_hdr_base_key_len, rtp_xtn_hdr_salt_len); +#else + stat = srtp_kdf_init(xtn_hdr_kdf, tmp_xtn_hdr_key, kdf_keylen); +#endif + octet_string_set_to_zero(tmp_xtn_hdr_key, MAX_SRTP_KEY_LEN); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + } else { + /* Reuse main KDF. */ + rtp_xtn_hdr_keylen = rtp_keylen; + rtp_xtn_hdr_base_key_len = rtp_base_key_len; + rtp_xtn_hdr_salt_len = rtp_salt_len; + xtn_hdr_kdf = &kdf; + } + + stat = srtp_kdf_generate(xtn_hdr_kdf, label_rtp_header_encryption, + tmp_key, rtp_xtn_hdr_base_key_len); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + debug_print( + mod_srtp, "extensions cipher key: %s", + srtp_octet_string_hex_string(tmp_key, rtp_xtn_hdr_base_key_len)); + + /* + * if the cipher in the srtp context uses a salt, then we need + * to generate the salt value + */ + if (rtp_xtn_hdr_salt_len > 0) { + debug_print0(mod_srtp, + "found rtp_xtn_hdr_salt_len > 0, generating salt"); + + /* generate encryption salt, put after encryption key */ + stat = srtp_kdf_generate(xtn_hdr_kdf, label_rtp_header_salt, + tmp_key + rtp_xtn_hdr_base_key_len, + rtp_xtn_hdr_salt_len); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + } + if (rtp_xtn_hdr_salt_len > 0) { + debug_print( + mod_srtp, "extensions cipher salt: %s", + srtp_octet_string_hex_string(tmp_key + rtp_xtn_hdr_base_key_len, + rtp_xtn_hdr_salt_len)); + } + + /* initialize extensions header cipher */ + stat = srtp_cipher_init(session_keys->rtp_xtn_hdr_cipher, tmp_key); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + if (xtn_hdr_kdf != &kdf) { + /* release memory for custom header extension encryption kdf */ + stat = srtp_kdf_clear(xtn_hdr_kdf); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + } + } + + /* generate authentication key */ + stat = srtp_kdf_generate(&kdf, label_rtp_msg_auth, tmp_key, + srtp_auth_get_key_length(session_keys->rtp_auth)); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + debug_print(mod_srtp, "auth key: %s", + srtp_octet_string_hex_string( + tmp_key, srtp_auth_get_key_length(session_keys->rtp_auth))); + + /* initialize auth function */ + stat = srtp_auth_init(session_keys->rtp_auth, tmp_key); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + /* + * ...now initialize SRTCP keys + */ + + rtcp_base_key_len = + base_key_length(session_keys->rtcp_cipher->type, rtcp_keylen); + rtcp_salt_len = rtcp_keylen - rtcp_base_key_len; + debug_print(mod_srtp, "rtcp salt len: %zu", rtcp_salt_len); + + /* generate encryption key */ + stat = srtp_kdf_generate(&kdf, label_rtcp_encryption, tmp_key, + rtcp_base_key_len); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + /* + * if the cipher in the srtp context uses a salt, then we need + * to generate the salt value + */ + if (rtcp_salt_len > 0) { + debug_print0(mod_srtp, "found rtcp_salt_len > 0, generating rtcp salt"); + + /* generate encryption salt, put after encryption key */ + stat = srtp_kdf_generate(&kdf, label_rtcp_salt, + tmp_key + rtcp_base_key_len, rtcp_salt_len); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + memcpy(session_keys->c_salt, tmp_key + rtcp_base_key_len, + SRTP_AEAD_SALT_LEN); + } + debug_print(mod_srtp, "rtcp cipher key: %s", + srtp_octet_string_hex_string(tmp_key, rtcp_base_key_len)); + if (rtcp_salt_len > 0) { + debug_print(mod_srtp, "rtcp cipher salt: %s", + srtp_octet_string_hex_string(tmp_key + rtcp_base_key_len, + rtcp_salt_len)); + } + + /* initialize cipher */ + stat = srtp_cipher_init(session_keys->rtcp_cipher, tmp_key); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + /* generate authentication key */ + stat = srtp_kdf_generate(&kdf, label_rtcp_msg_auth, tmp_key, + srtp_auth_get_key_length(session_keys->rtcp_auth)); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + debug_print( + mod_srtp, "rtcp auth key: %s", + srtp_octet_string_hex_string( + tmp_key, srtp_auth_get_key_length(session_keys->rtcp_auth))); + + /* initialize auth function */ + stat = srtp_auth_init(session_keys->rtcp_auth, tmp_key); + if (stat) { + /* zeroize temp buffer */ + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + return srtp_err_status_init_fail; + } + + /* clear memory then return */ + stat = srtp_kdf_clear(&kdf); + octet_string_set_to_zero(tmp_key, MAX_SRTP_KEY_LEN); + if (stat) { + return srtp_err_status_init_fail; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_init_all_master_keys(srtp_stream_ctx_t *srtp, + const srtp_policy_t *p) +{ + srtp_err_status_t status = srtp_err_status_ok; + if (p->key != NULL) { + if (p->use_mki) { + return srtp_err_status_bad_param; + } + srtp_master_key_t single_master_key; + srtp->num_master_keys = 1; + srtp->use_mki = false; + srtp->mki_size = 0; + single_master_key.key = p->key; + single_master_key.mki_id = NULL; + status = srtp_stream_init_keys(&srtp->session_keys[0], + &single_master_key, 0); + } else { + if (p->num_master_keys > SRTP_MAX_NUM_MASTER_KEYS) { + return srtp_err_status_bad_param; + } + if (p->use_mki && p->mki_size == 0) { + return srtp_err_status_bad_param; + } + + srtp->num_master_keys = p->num_master_keys; + srtp->use_mki = p->use_mki; + srtp->mki_size = p->mki_size; + + for (size_t i = 0; i < srtp->num_master_keys; i++) { + status = srtp_stream_init_keys(&srtp->session_keys[i], p->keys[i], + srtp->mki_size); + if (status) { + return status; + } + } + } + + return status; +} + +static srtp_err_status_t srtp_stream_init(srtp_stream_ctx_t *srtp, + const srtp_policy_t *p) +{ + srtp_err_status_t err; + + err = srtp_valid_policy(p); + if (err != srtp_err_status_ok) { + return err; + } + + debug_print(mod_srtp, "initializing stream (SSRC: 0x%08x)", + (unsigned int)p->ssrc.value); + + /* initialize replay database */ + /* + * window size MUST be at least 64. MAY be larger. Values more than + * 2^15 aren't meaningful due to how extended sequence numbers are + * calculated. + * Let a window size of 0 imply the default value. + */ + + if (p->window_size != 0 && + (p->window_size < 64 || p->window_size >= 0x8000)) + return srtp_err_status_bad_param; + + if (p->window_size != 0) { + err = srtp_rdbx_init(&srtp->rtp_rdbx, p->window_size); + } else { + err = srtp_rdbx_init(&srtp->rtp_rdbx, 128); + } + if (err) { + return err; + } + + /* set the SSRC value */ + srtp->ssrc = htonl(p->ssrc.value); + + /* reset pending ROC */ + srtp->pending_roc = 0; + + /* set the security service flags */ + srtp->rtp_services = p->rtp.sec_serv; + srtp->rtcp_services = p->rtcp.sec_serv; + + /* + * set direction to unknown - this flag gets checked in srtp_protect(), + * srtp_unprotect(), srtp_protect_rtcp(), and srtp_unprotect_rtcp(), and + * gets set appropriately if it is set to unknown. + */ + srtp->direction = dir_unknown; + + /* initialize SRTCP replay database */ + srtp_rdb_init(&srtp->rtcp_rdb); + + /* initialize allow_repeat_tx */ + srtp->allow_repeat_tx = p->allow_repeat_tx; + + /* DAM - no RTCP key limit at present */ + + /* initialize keys */ + err = srtp_stream_init_all_master_keys(srtp, p); + if (err) { + srtp_rdbx_dealloc(&srtp->rtp_rdbx); + return err; + } + + return srtp_err_status_ok; +} + +/* + * srtp_event_reporter is an event handler function that merely + * reports the events that are reported by the callbacks + */ + +void srtp_event_reporter(srtp_event_data_t *data) +{ + srtp_err_report(srtp_err_level_warning, + "srtp: in stream 0x%x: ", (unsigned int)data->ssrc); + + switch (data->event) { + case event_ssrc_collision: + srtp_err_report(srtp_err_level_warning, "\tSSRC collision\n"); + break; + case event_key_soft_limit: + srtp_err_report(srtp_err_level_warning, + "\tkey usage soft limit reached\n"); + break; + case event_key_hard_limit: + srtp_err_report(srtp_err_level_warning, + "\tkey usage hard limit reached\n"); + break; + case event_packet_index_limit: + srtp_err_report(srtp_err_level_warning, + "\tpacket index limit reached\n"); + break; + default: + srtp_err_report(srtp_err_level_warning, + "\tunknown event reported to handler\n"); + } +} + +/* + * srtp_event_handler is a global variable holding a pointer to the + * event handler function; this function is called for any unexpected + * event that needs to be handled out of the SRTP data path. see + * srtp_event_t in srtp.h for more info + * + * it is okay to set srtp_event_handler to NULL, but we set + * it to the srtp_event_reporter. + */ + +static srtp_event_handler_func_t *srtp_event_handler = srtp_event_reporter; + +srtp_err_status_t srtp_install_event_handler(srtp_event_handler_func_t func) +{ + /* + * note that we accept NULL arguments intentionally - calling this + * function with a NULL arguments removes an event handler that's + * been previously installed + */ + + /* set global event handling function */ + srtp_event_handler = func; + return srtp_err_status_ok; +} + +/* + * Check if the given extension header id is / should be encrypted. + * Returns true if yes, otherwise false. + */ +static bool srtp_protect_extension_header(srtp_stream_ctx_t *stream, uint8_t id) +{ + uint8_t *enc_xtn_hdr = stream->enc_xtn_hdr; + size_t count = stream->enc_xtn_hdr_count; + + if (!enc_xtn_hdr || count <= 0) { + return false; + } + + while (count > 0) { + if (*enc_xtn_hdr == id) { + return true; + } + + enc_xtn_hdr++; + count--; + } + return false; +} + +/* + * extensions header encryption RFC 6904 + */ +static srtp_err_status_t srtp_process_header_encryption( + srtp_stream_ctx_t *stream, + srtp_hdr_xtnd_t *xtn_hdr, + srtp_session_keys_t *session_keys) +{ + srtp_err_status_t status; + uint8_t keystream[257]; /* Maximum 2 bytes header + 255 bytes data. */ + size_t keystream_pos; + uint8_t *xtn_hdr_data = ((uint8_t *)xtn_hdr) + octets_in_rtp_xtn_hdr; + uint8_t *xtn_hdr_end = + xtn_hdr_data + (ntohs(xtn_hdr->length) * sizeof(uint32_t)); + + if (ntohs(xtn_hdr->profile_specific) == xtn_hdr_one_byte_profile) { + /* RFC 5285, section 4.2. One-Byte Header */ + while (xtn_hdr_data < xtn_hdr_end) { + uint8_t xid = (*xtn_hdr_data & 0xf0) >> 4; + size_t xlen = (*xtn_hdr_data & 0x0f) + 1; + size_t xlen_with_header = 1 + xlen; + xtn_hdr_data++; + + if (xtn_hdr_data + xlen > xtn_hdr_end) { + return srtp_err_status_parse_err; + } + + if (xid == 15) { + /* found header 15, stop further processing */ + break; + } + + status = srtp_cipher_output(session_keys->rtp_xtn_hdr_cipher, + keystream, &xlen_with_header); + if (status) { + return srtp_err_status_cipher_fail; + } + + if (srtp_protect_extension_header(stream, xid)) { + keystream_pos = 1; + while (xlen > 0) { + *xtn_hdr_data ^= keystream[keystream_pos++]; + xtn_hdr_data++; + xlen--; + } + } else { + xtn_hdr_data += xlen; + } + + /* skip padding bytes */ + while (xtn_hdr_data < xtn_hdr_end && *xtn_hdr_data == 0) { + xtn_hdr_data++; + } + } + } else if ((ntohs(xtn_hdr->profile_specific) & 0xfff0) == + xtn_hdr_two_byte_profile) { + /* RFC 5285, section 4.3. Two-Byte Header */ + while (xtn_hdr_data + 1 < xtn_hdr_end) { + uint8_t xid = *xtn_hdr_data; + size_t xlen = *(xtn_hdr_data + 1); + size_t xlen_with_header = 2 + xlen; + xtn_hdr_data += 2; + + if (xtn_hdr_data + xlen > xtn_hdr_end) { + return srtp_err_status_parse_err; + } + + status = srtp_cipher_output(session_keys->rtp_xtn_hdr_cipher, + keystream, &xlen_with_header); + if (status) { + return srtp_err_status_cipher_fail; + } + + if (xlen > 0 && srtp_protect_extension_header(stream, xid)) { + keystream_pos = 2; + while (xlen > 0) { + *xtn_hdr_data ^= keystream[keystream_pos++]; + xtn_hdr_data++; + xlen--; + } + } else { + xtn_hdr_data += xlen; + } + + /* skip padding bytes. */ + while (xtn_hdr_data < xtn_hdr_end && *xtn_hdr_data == 0) { + xtn_hdr_data++; + } + } + } else { + /* unsupported extension header format. */ + return srtp_err_status_parse_err; + } + + return srtp_err_status_ok; +} + +/* + * AEAD uses a new IV formation method. This function implements + * section 8.1. (SRTP IV Formation for AES-GCM) of RFC7714. + * The calculation is defined as, where (+) is the xor operation: + * + * + * 0 0 0 0 0 0 0 0 0 0 1 1 + * 0 1 2 3 4 5 6 7 8 9 0 1 + * +--+--+--+--+--+--+--+--+--+--+--+--+ + * |00|00| SSRC | ROC | SEQ |---+ + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Encryption Salt |->(+) + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Initialization Vector |<--+ + * +--+--+--+--+--+--+--+--+--+--+--+--+* + * + * Input: *session_keys - pointer to SRTP stream context session keys, + * used to retrieve the SALT + * *iv - Pointer to receive the calculated IV + * *seq - The ROC and SEQ value to use for the + * IV calculation. + * *hdr - The RTP header, used to get the SSRC value + * + */ + +static void srtp_calc_aead_iv(srtp_session_keys_t *session_keys, + v128_t *iv, + srtp_xtd_seq_num_t *seq, + const srtp_hdr_t *hdr) +{ + v128_t in; + v128_t salt; + + uint32_t local_roc = (uint32_t)(*seq >> 16); + uint16_t local_seq = (uint16_t)*seq; + + memset(&in, 0, sizeof(v128_t)); + memset(&salt, 0, sizeof(v128_t)); + + in.v16[5] = htons(local_seq); + local_roc = htonl(local_roc); + memcpy(&in.v16[3], &local_roc, sizeof(local_roc)); + + /* + * Copy in the RTP SSRC value + */ + memcpy(&in.v8[2], &hdr->ssrc, 4); + debug_print(mod_srtp, "Pre-salted RTP IV = %s\n", v128_hex_string(&in)); + + /* + * Get the SALT value from the context + */ + memcpy(salt.v8, session_keys->salt, SRTP_AEAD_SALT_LEN); + debug_print(mod_srtp, "RTP SALT = %s\n", v128_hex_string(&salt)); + + /* + * Finally, apply tyhe SALT to the input + */ + v128_xor(iv, &in, &salt); +} + +static srtp_err_status_t srtp_get_session_keys_for_packet( + srtp_stream_ctx_t *stream, + const uint8_t *hdr, + size_t pkt_octet_len, + size_t tag_len, + srtp_session_keys_t **session_keys) +{ + if (!stream->use_mki) { + *session_keys = &stream->session_keys[0]; + return srtp_err_status_ok; + } + + size_t mki_start_location = pkt_octet_len; + + if (tag_len > mki_start_location) { + return srtp_err_status_bad_mki; + } + + mki_start_location -= tag_len; + + if (stream->mki_size > mki_start_location) { + return srtp_err_status_bad_mki; + } + + mki_start_location -= stream->mki_size; + + for (size_t i = 0; i < stream->num_master_keys; i++) { + if (memcmp(hdr + mki_start_location, stream->session_keys[i].mki_id, + stream->mki_size) == 0) { + *session_keys = &stream->session_keys[i]; + return srtp_err_status_ok; + } + } + + return srtp_err_status_bad_mki; +} + +static srtp_err_status_t srtp_get_session_keys_for_rtp_packet( + srtp_stream_ctx_t *stream, + const uint8_t *hdr, + size_t pkt_octet_len, + srtp_session_keys_t **session_keys) +{ + size_t tag_len = 0; + + // Determine the authentication tag size + if (stream->session_keys[0].rtp_cipher->algorithm == SRTP_AES_GCM_128 || + stream->session_keys[0].rtp_cipher->algorithm == SRTP_AES_GCM_256) { + tag_len = 0; + } else { + tag_len = srtp_auth_get_tag_length(stream->session_keys[0].rtp_auth); + } + + return srtp_get_session_keys_for_packet(stream, hdr, pkt_octet_len, tag_len, + session_keys); +} + +static srtp_err_status_t srtp_get_session_keys_for_rtcp_packet( + srtp_stream_ctx_t *stream, + const uint8_t *hdr, + size_t pkt_octet_len, + srtp_session_keys_t **session_keys) +{ + size_t tag_len = 0; + + // Determine the authentication tag size + if (stream->session_keys[0].rtcp_cipher->algorithm == SRTP_AES_GCM_128 || + stream->session_keys[0].rtcp_cipher->algorithm == SRTP_AES_GCM_256) { + tag_len = 0; + } else { + tag_len = srtp_auth_get_tag_length(stream->session_keys[0].rtcp_auth); + } + + return srtp_get_session_keys_for_packet(stream, hdr, pkt_octet_len, tag_len, + session_keys); +} + +static srtp_err_status_t srtp_estimate_index(srtp_rdbx_t *rdbx, + uint32_t roc, + srtp_xtd_seq_num_t *est, + srtp_sequence_number_t seq, + ssize_t *delta) +{ + *est = (srtp_xtd_seq_num_t)(((uint64_t)roc) << 16) | seq; + *delta = *est - rdbx->index; + + if (*est > rdbx->index) { + if (*est - rdbx->index > seq_num_median) { + *delta = 0; + return srtp_err_status_pkt_idx_adv; + } + } else if (*est < rdbx->index) { + if (rdbx->index - *est > seq_num_median) { + *delta = 0; + return srtp_err_status_pkt_idx_old; + } + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t srtp_get_est_pkt_index(const srtp_hdr_t *hdr, + srtp_stream_ctx_t *stream, + srtp_xtd_seq_num_t *est, + ssize_t *delta) +{ + srtp_err_status_t result = srtp_err_status_ok; + + if (stream->pending_roc) { + result = srtp_estimate_index(&stream->rtp_rdbx, stream->pending_roc, + est, ntohs(hdr->seq), delta); + } else { + /* estimate packet index from seq. num. in header */ + *delta = + srtp_rdbx_estimate_index(&stream->rtp_rdbx, est, ntohs(hdr->seq)); + } + + debug_print(mod_srtp, "estimated u_packet index: %016" PRIx64, *est); + + return result; +} + +/* + * This function handles outgoing SRTP packets while in AEAD mode, + * which currently supports AES-GCM encryption. All packets are + * encrypted and authenticated. + */ +static srtp_err_status_t srtp_protect_aead(srtp_ctx_t *ctx, + srtp_stream_ctx_t *stream, + const uint8_t *rtp, + size_t rtp_len, + uint8_t *srtp, + size_t *srtp_len, + srtp_session_keys_t *session_keys) +{ + const srtp_hdr_t *hdr = (const srtp_hdr_t *)rtp; + size_t enc_start; /* offset to start of encrypted portion */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + srtp_xtd_seq_num_t est; /* estimated xtd_seq_num_t of *hdr */ + ssize_t delta; /* delta of local pkt idx and that in hdr */ + srtp_err_status_t status; + size_t tag_len; + v128_t iv; + size_t aad_len; + + debug_print0(mod_srtp, "function srtp_protect_aead"); + + /* + * update the key usage limit, and check it to make sure that we + * didn't just hit either the soft limit or the hard limit, and call + * the event handler if we hit either. + */ + switch (srtp_key_limit_update(session_keys->limit)) { + case srtp_key_event_normal: + break; + case srtp_key_event_hard_limit: + srtp_handle_event(ctx, stream, event_key_hard_limit); + return srtp_err_status_key_expired; + case srtp_key_event_soft_limit: + default: + srtp_handle_event(ctx, stream, event_key_soft_limit); + break; + } + + /* get tag length from stream */ + tag_len = srtp_auth_get_tag_length(session_keys->rtp_auth); + + /* check output length */ + if (*srtp_len < rtp_len + tag_len + stream->mki_size) { + return srtp_err_status_buffer_small; + } + + /* + * find starting point for encryption and length of data to be + * encrypted - the encrypted portion starts after the rtp header + * extension, if present; otherwise, it starts after the last csrc, + * if any are present + */ + enc_start = srtp_get_rtp_hdr_len(hdr); + if (hdr->x == 1) { + enc_start += srtp_get_rtp_xtn_hdr_len(hdr, rtp); + } + + bool cryptex_inuse, cryptex_inplace; + status = srtp_cryptex_protect_init(stream, hdr, rtp, srtp, &cryptex_inuse, + &cryptex_inplace, &enc_start); + if (status) { + return status; + } + + if (cryptex_inuse && !cryptex_inplace && hdr->cc) { + debug_print0(mod_srtp, + "unsupported cryptex mode, AEAD, CC and not inplace io"); + return srtp_err_status_cryptex_err; + } + + /* note: the passed size is without the auth tag */ + if (enc_start > rtp_len) { + return srtp_err_status_parse_err; + } + enc_octet_len = rtp_len - enc_start; + + /* if not-inplace then need to copy full rtp header */ + if (rtp != srtp) { + memcpy(srtp, rtp, enc_start); + } + + /* + * estimate the packet index using the start of the replay window + * and the sequence number from the header + */ + status = srtp_get_est_pkt_index(hdr, stream, &est, &delta); + + if (status && (status != srtp_err_status_pkt_idx_adv)) { + return status; + } + + if (status == srtp_err_status_pkt_idx_adv) { + srtp_rdbx_set_roc_seq(&stream->rtp_rdbx, (uint32_t)(est >> 16), + (uint16_t)(est & 0xFFFF)); + stream->pending_roc = 0; + srtp_rdbx_add_index(&stream->rtp_rdbx, 0); + } else { + status = srtp_rdbx_check(&stream->rtp_rdbx, delta); + if (status) { + if (status != srtp_err_status_replay_fail || + !stream->allow_repeat_tx) + return status; /* we've been asked to reuse an index */ + } + srtp_rdbx_add_index(&stream->rtp_rdbx, delta); + } + + debug_print(mod_srtp, "estimated packet index: %016" PRIx64, est); + + /* + * AEAD uses a new IV formation method + */ + srtp_calc_aead_iv(session_keys, &iv, &est, hdr); + /* shift est, put into network byte order */ + est = be64_to_cpu(est << 16); + + status = srtp_cipher_set_iv(session_keys->rtp_cipher, (uint8_t *)&iv, + srtp_direction_encrypt); + if (!status && session_keys->rtp_xtn_hdr_cipher) { + iv.v32[0] = 0; + iv.v32[1] = hdr->ssrc; + iv.v64[1] = est; + status = srtp_cipher_set_iv(session_keys->rtp_xtn_hdr_cipher, + (uint8_t *)&iv, srtp_direction_encrypt); + } + if (status) { + return srtp_err_status_cipher_fail; + } + + if (hdr->x == 1 && session_keys->rtp_xtn_hdr_cipher) { + /* + * extensions header encryption RFC 6904 + */ + status = srtp_process_header_encryption( + stream, srtp_get_rtp_xtn_hdr(hdr, srtp), session_keys); + if (status) { + return status; + } + } + + if (cryptex_inuse) { + status = srtp_cryptex_protect(cryptex_inplace, hdr, srtp, + session_keys->rtp_cipher); + if (status) { + return status; + } + } + + /* + * Set the AAD over the RTP header + */ + aad_len = enc_start; + status = srtp_cipher_set_aad(session_keys->rtp_cipher, srtp, aad_len); + if (status) { + return (srtp_err_status_cipher_fail); + } + + /* Encrypt the payload */ + size_t outlen = *srtp_len - enc_start; + status = srtp_cipher_encrypt(session_keys->rtp_cipher, rtp + enc_start, + enc_octet_len, srtp + enc_start, &outlen); + enc_octet_len = outlen; + if (status) { + return srtp_err_status_cipher_fail; + } + + if (stream->use_mki) { + srtp_inject_mki(srtp + enc_start + enc_octet_len, session_keys, + stream->mki_size); + } + + if (cryptex_inuse) { + srtp_cryptex_protect_cleanup(cryptex_inplace, hdr, srtp); + } + + *srtp_len = enc_start + enc_octet_len; + + /* increase the packet length by the length of the mki_size */ + *srtp_len += stream->mki_size; + + return srtp_err_status_ok; +} + +/* + * This function handles incoming SRTP packets while in AEAD mode, + * which currently supports AES-GCM encryption. All packets are + * encrypted and authenticated. Note, the auth tag is at the end + * of the packet stream and is automatically checked by GCM + * when decrypting the payload. + */ +static srtp_err_status_t srtp_unprotect_aead(srtp_ctx_t *ctx, + srtp_stream_ctx_t *stream, + ssize_t delta, + srtp_xtd_seq_num_t est, + const uint8_t *srtp, + size_t srtp_len, + uint8_t *rtp, + size_t *rtp_len, + srtp_session_keys_t *session_keys, + bool advance_packet_index) +{ + const srtp_hdr_t *hdr = (const srtp_hdr_t *)srtp; + size_t enc_start; /* offset to start of encrypted portion */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + v128_t iv; + srtp_err_status_t status; + size_t tag_len; + size_t aad_len; + + debug_print0(mod_srtp, "function srtp_unprotect_aead"); + + debug_print(mod_srtp, "estimated u_packet index: %016" PRIx64, est); + + /* get tag length from stream */ + tag_len = srtp_auth_get_tag_length(session_keys->rtp_auth); + + /* + * AEAD uses a new IV formation method + */ + srtp_calc_aead_iv(session_keys, &iv, &est, hdr); + status = srtp_cipher_set_iv(session_keys->rtp_cipher, (uint8_t *)&iv, + srtp_direction_decrypt); + if (!status && session_keys->rtp_xtn_hdr_cipher) { + iv.v32[0] = 0; + iv.v32[1] = hdr->ssrc; + iv.v64[1] = be64_to_cpu(est << 16); + status = srtp_cipher_set_iv(session_keys->rtp_xtn_hdr_cipher, + (uint8_t *)&iv, srtp_direction_encrypt); + } + if (status) { + return srtp_err_status_cipher_fail; + } + + enc_start = srtp_get_rtp_hdr_len(hdr); + if (hdr->x == 1) { + enc_start += srtp_get_rtp_xtn_hdr_len(hdr, srtp); + } + + bool cryptex_inuse, cryptex_inplace; + status = srtp_cryptex_unprotect_init(stream, hdr, srtp, rtp, &cryptex_inuse, + &cryptex_inplace, &enc_start); + if (status) { + return status; + } + + if (cryptex_inuse && !cryptex_inplace && hdr->cc) { + debug_print0(mod_srtp, + "unsupported cryptex mode, AEAD, CC and not inplace io"); + return srtp_err_status_cryptex_err; + } + + if (enc_start > srtp_len - tag_len - stream->mki_size) { + return srtp_err_status_parse_err; + } + + /* + * We pass the tag down to the cipher when doing GCM mode + */ + enc_octet_len = srtp_len - enc_start - stream->mki_size; + + /* + * Sanity check the encrypted payload length against + * the tag size. It must always be at least as large + * as the tag length. + */ + if (enc_octet_len < tag_len) { + return srtp_err_status_cipher_fail; + } + + /* check output length */ + if (*rtp_len < srtp_len - stream->mki_size - tag_len) { + return srtp_err_status_buffer_small; + } + + /* if not-inplace then need to copy full rtp header */ + if (srtp != rtp) { + memcpy(rtp, srtp, enc_start); + } + + /* + * update the key usage limit, and check it to make sure that we + * didn't just hit either the soft limit or the hard limit, and call + * the event handler if we hit either. + */ + switch (srtp_key_limit_update(session_keys->limit)) { + case srtp_key_event_normal: + break; + case srtp_key_event_soft_limit: + srtp_handle_event(ctx, stream, event_key_soft_limit); + break; + case srtp_key_event_hard_limit: + srtp_handle_event(ctx, stream, event_key_hard_limit); + return srtp_err_status_key_expired; + default: + break; + } + + if (cryptex_inuse) { + status = srtp_cryptex_unprotect(cryptex_inplace, hdr, rtp, + session_keys->rtp_cipher); + if (status) { + return status; + } + } + + /* + * Set the AAD for AES-GCM, which is the RTP header + */ + aad_len = enc_start; + status = srtp_cipher_set_aad(session_keys->rtp_cipher, srtp, aad_len); + if (status) { + return srtp_err_status_cipher_fail; + } + + /* Decrypt the ciphertext. This also checks the auth tag based + * on the AAD we just specified above */ + status = + srtp_cipher_decrypt(session_keys->rtp_cipher, srtp + enc_start, + enc_octet_len, rtp + enc_start, &enc_octet_len); + if (status) { + return status; + } + + if (hdr->x == 1 && session_keys->rtp_xtn_hdr_cipher) { + /* + * extensions header encryption RFC 6904 + */ + status = srtp_process_header_encryption( + stream, srtp_get_rtp_xtn_hdr(hdr, rtp), session_keys); + if (status) { + return status; + } + } + + if (cryptex_inuse) { + srtp_cryptex_unprotect_cleanup(cryptex_inplace, hdr, rtp); + } + + /* + * verify that stream is for received traffic - this check will + * detect SSRC collisions, since a stream that appears in both + * srtp_protect() and srtp_unprotect() will fail this test in one of + * those functions. + * + * we do this check *after* the authentication check, so that the + * latter check will catch any attempts to fool us into thinking + * that we've got a collision + */ + if (stream->direction != dir_srtp_receiver) { + if (stream->direction == dir_unknown) { + stream->direction = dir_srtp_receiver; + } else { + srtp_handle_event(ctx, stream, event_ssrc_collision); + } + } + + /* + * if the stream is a 'provisional' one, in which the template context + * is used, then we need to allocate a new stream at this point, since + * the authentication passed + */ + if (stream == ctx->stream_template) { + srtp_stream_ctx_t *new_stream; + + /* + * allocate and initialize a new stream + * + * note that we indicate failure if we can't allocate the new + * stream, and some implementations will want to not return + * failure here + */ + status = + srtp_stream_clone(ctx->stream_template, hdr->ssrc, &new_stream); + if (status) { + return status; + } + + /* add new stream to the list */ + status = srtp_insert_or_dealloc_stream(ctx->stream_list, new_stream, + ctx->stream_template); + if (status) { + return status; + } + + /* set stream (the pointer used in this function) */ + stream = new_stream; + } + + /* + * the message authentication function passed, so add the packet + * index into the replay database + */ + if (advance_packet_index) { + uint32_t roc_to_set = (uint32_t)(est >> 16); + uint16_t seq_to_set = (uint16_t)(est & 0xFFFF); + srtp_rdbx_set_roc_seq(&stream->rtp_rdbx, roc_to_set, seq_to_set); + stream->pending_roc = 0; + srtp_rdbx_add_index(&stream->rtp_rdbx, 0); + } else { + srtp_rdbx_add_index(&stream->rtp_rdbx, delta); + } + + *rtp_len = enc_start + enc_octet_len; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_protect(srtp_t ctx, + const uint8_t *rtp, + size_t rtp_len, + uint8_t *srtp, + size_t *srtp_len, + size_t mki_index) +{ + const srtp_hdr_t *hdr = (const srtp_hdr_t *)rtp; + size_t enc_start; /* offset to start of encrypted portion */ + uint8_t *auth_start; /* pointer to start of auth. portion */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + srtp_xtd_seq_num_t est; /* estimated xtd_seq_num_t of *hdr */ + ssize_t delta; /* delta of local pkt idx and that in hdr */ + uint8_t *auth_tag = NULL; /* location of auth_tag within packet */ + srtp_err_status_t status; + size_t tag_len; + srtp_stream_ctx_t *stream; + size_t prefix_len; + srtp_session_keys_t *session_keys = NULL; + + debug_print0(mod_srtp, "function srtp_protect"); + + /* Verify RTP header */ + status = srtp_validate_rtp_header(rtp, rtp_len); + if (status) { + return status; + } + + /* check the packet length - it must at least contain a full header */ + if (rtp_len < octets_in_rtp_header) { + return srtp_err_status_bad_param; + } + + /* + * look up ssrc in srtp_stream list, and process the packet with + * the appropriate stream. if we haven't seen this stream before, + * there's a template key for this srtp_session, and the cipher + * supports key-sharing, then we assume that a new stream using + * that key has just started up + */ + stream = srtp_get_stream(ctx, hdr->ssrc); + if (stream == NULL) { + if (ctx->stream_template != NULL) { + srtp_stream_ctx_t *new_stream; + + /* allocate and initialize a new stream */ + status = + srtp_stream_clone(ctx->stream_template, hdr->ssrc, &new_stream); + if (status) { + return status; + } + + /* add new stream to the list */ + status = srtp_insert_or_dealloc_stream(ctx->stream_list, new_stream, + ctx->stream_template); + if (status) { + return status; + } + + /* set direction to outbound */ + new_stream->direction = dir_srtp_sender; + + /* set stream (the pointer used in this function) */ + stream = new_stream; + } else { + /* no template stream, so we return an error */ + return srtp_err_status_no_ctx; + } + } + + /* + * verify that stream is for sending traffic - this check will + * detect SSRC collisions, since a stream that appears in both + * srtp_protect() and srtp_unprotect() will fail this test in one of + * those functions. + */ + + if (stream->direction != dir_srtp_sender) { + if (stream->direction == dir_unknown) { + stream->direction = dir_srtp_sender; + } else { + srtp_handle_event(ctx, stream, event_ssrc_collision); + } + } + + status = srtp_get_session_keys(stream, mki_index, &session_keys); + if (status) { + return status; + } + + /* + * Check if this is an AEAD stream (GCM mode). If so, then dispatch + * the request to our AEAD handler. + */ + if (session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_128 || + session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_256) { + return srtp_protect_aead(ctx, stream, rtp, rtp_len, srtp, srtp_len, + session_keys); + } + + /* + * update the key usage limit, and check it to make sure that we + * didn't just hit either the soft limit or the hard limit, and call + * the event handler if we hit either. + */ + switch (srtp_key_limit_update(session_keys->limit)) { + case srtp_key_event_normal: + break; + case srtp_key_event_soft_limit: + srtp_handle_event(ctx, stream, event_key_soft_limit); + break; + case srtp_key_event_hard_limit: + srtp_handle_event(ctx, stream, event_key_hard_limit); + return srtp_err_status_key_expired; + default: + break; + } + + /* get tag length from stream */ + tag_len = srtp_auth_get_tag_length(session_keys->rtp_auth); + + /* check output length */ + if (*srtp_len < rtp_len + stream->mki_size + tag_len) { + return srtp_err_status_buffer_small; + } + + /* + * find starting point for encryption and length of data to be + * encrypted - the encrypted portion starts after the rtp header + * extension, if present; otherwise, it starts after the last csrc, + * if any are present + */ + enc_start = srtp_get_rtp_hdr_len(hdr); + if (hdr->x == 1) { + enc_start += srtp_get_rtp_xtn_hdr_len(hdr, rtp); + } + + bool cryptex_inuse, cryptex_inplace; + status = srtp_cryptex_protect_init(stream, hdr, rtp, srtp, &cryptex_inuse, + &cryptex_inplace, &enc_start); + if (status) { + return status; + } + + if (enc_start > rtp_len) { + return srtp_err_status_parse_err; + } + enc_octet_len = rtp_len - enc_start; + + /* if not-inplace then need to copy full rtp header */ + if (rtp != srtp) { + memcpy(srtp, rtp, enc_start); + } + + if (stream->use_mki) { + srtp_inject_mki(srtp + rtp_len, session_keys, stream->mki_size); + } + + /* + * if we're providing authentication, set the auth_start and auth_tag + * pointers to the proper locations; otherwise, set auth_start to NULL + * to indicate that no authentication is needed + */ + if (stream->rtp_services & sec_serv_auth) { + auth_start = srtp; + auth_tag = srtp + rtp_len + stream->mki_size; + } else { + auth_start = NULL; + auth_tag = NULL; + } + + /* + * estimate the packet index using the start of the replay window + * and the sequence number from the header + */ + status = srtp_get_est_pkt_index(hdr, stream, &est, &delta); + + if (status && (status != srtp_err_status_pkt_idx_adv)) { + return status; + } + + if (status == srtp_err_status_pkt_idx_adv) { + srtp_rdbx_set_roc_seq(&stream->rtp_rdbx, (uint32_t)(est >> 16), + (uint16_t)(est & 0xFFFF)); + stream->pending_roc = 0; + srtp_rdbx_add_index(&stream->rtp_rdbx, 0); + } else { + status = srtp_rdbx_check(&stream->rtp_rdbx, delta); + if (status) { + if (status != srtp_err_status_replay_fail || + !stream->allow_repeat_tx) + return status; /* we've been asked to reuse an index */ + } + srtp_rdbx_add_index(&stream->rtp_rdbx, delta); + } + + debug_print(mod_srtp, "estimated packet index: %016" PRIx64, est); + + /* + * if we're using rindael counter mode, set nonce and seq + */ + if (session_keys->rtp_cipher->type->id == SRTP_AES_ICM_128 || + session_keys->rtp_cipher->type->id == SRTP_AES_ICM_192 || + session_keys->rtp_cipher->type->id == SRTP_AES_ICM_256) { + v128_t iv; + + iv.v32[0] = 0; + iv.v32[1] = hdr->ssrc; + iv.v64[1] = be64_to_cpu(est << 16); + status = srtp_cipher_set_iv(session_keys->rtp_cipher, (uint8_t *)&iv, + srtp_direction_encrypt); + if (!status && session_keys->rtp_xtn_hdr_cipher) { + status = srtp_cipher_set_iv(session_keys->rtp_xtn_hdr_cipher, + (uint8_t *)&iv, srtp_direction_encrypt); + } + } else { + v128_t iv; + + /* otherwise, set the index to est */ + iv.v64[0] = 0; + iv.v64[1] = be64_to_cpu(est); + status = srtp_cipher_set_iv(session_keys->rtp_cipher, (uint8_t *)&iv, + srtp_direction_encrypt); + if (!status && session_keys->rtp_xtn_hdr_cipher) { + status = srtp_cipher_set_iv(session_keys->rtp_xtn_hdr_cipher, + (uint8_t *)&iv, srtp_direction_encrypt); + } + } + if (status) { + return srtp_err_status_cipher_fail; + } + + /* shift est, put into network byte order */ + est = be64_to_cpu(est << 16); + + /* + * if we're authenticating using a universal hash, put the keystream + * prefix into the authentication tag + */ + if (auth_start) { + prefix_len = srtp_auth_get_prefix_length(session_keys->rtp_auth); + if (prefix_len) { + status = srtp_cipher_output(session_keys->rtp_cipher, auth_tag, + &prefix_len); + if (status) { + return srtp_err_status_cipher_fail; + } + debug_print(mod_srtp, "keystream prefix: %s", + srtp_octet_string_hex_string(auth_tag, prefix_len)); + } + } + + if (hdr->x == 1 && session_keys->rtp_xtn_hdr_cipher) { + /* + * extensions header encryption RFC 6904 + */ + status = srtp_process_header_encryption( + stream, srtp_get_rtp_xtn_hdr(hdr, srtp), session_keys); + if (status) { + return status; + } + } + + if (cryptex_inuse) { + status = srtp_cryptex_protect(cryptex_inplace, hdr, srtp, + session_keys->rtp_cipher); + if (status) { + return status; + } + } + + /* if we're encrypting, exor keystream into the message */ + if (stream->rtp_services & sec_serv_conf) { + status = srtp_cipher_encrypt(session_keys->rtp_cipher, rtp + enc_start, + enc_octet_len, srtp + enc_start, + &enc_octet_len); + if (status) { + return srtp_err_status_cipher_fail; + } + } else if (rtp != srtp) { + /* if no encryption and not-inplace then need to copy rest of packet */ + memcpy(srtp + enc_start, rtp + enc_start, enc_octet_len); + } + + if (cryptex_inuse) { + srtp_cryptex_protect_cleanup(cryptex_inplace, hdr, srtp); + } + + /* + * if we're authenticating, run authentication function and put result + * into the auth_tag + */ + if (auth_start) { + /* initialize auth func context */ + status = srtp_auth_start(session_keys->rtp_auth); + if (status) { + return status; + } + + /* run auth func over packet */ + status = srtp_auth_update(session_keys->rtp_auth, auth_start, rtp_len); + if (status) { + return status; + } + + /* run auth func over ROC, put result into auth_tag */ + debug_print(mod_srtp, "estimated packet index: %016" PRIx64, est); + status = srtp_auth_compute(session_keys->rtp_auth, (uint8_t *)&est, 4, + auth_tag); + debug_print(mod_srtp, "srtp auth tag: %s", + srtp_octet_string_hex_string(auth_tag, tag_len)); + if (status) { + return status; + } + } + + *srtp_len = enc_start + enc_octet_len; + + /* increase the packet length by the length of the auth tag */ + *srtp_len += tag_len; + + /* increate the packet length by the mki size if used */ + *srtp_len += stream->mki_size; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_unprotect(srtp_t ctx, + const uint8_t *srtp, + size_t srtp_len, + uint8_t *rtp, + size_t *rtp_len) +{ + const srtp_hdr_t *hdr = (const srtp_hdr_t *)srtp; + size_t enc_start; /* pointer to start of encrypted portion */ + const uint8_t *auth_start; /* pointer to start of auth. portion */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + const uint8_t *auth_tag = NULL; /* location of auth_tag within packet */ + srtp_xtd_seq_num_t est; /* estimated xtd_seq_num_t of *hdr */ + ssize_t delta; /* delta of local pkt idx and that in hdr */ + v128_t iv; + srtp_err_status_t status; + srtp_stream_ctx_t *stream; + uint8_t tmp_tag[SRTP_MAX_TAG_LEN]; + size_t tag_len, prefix_len; + srtp_session_keys_t *session_keys = NULL; + bool advance_packet_index = false; + uint32_t roc_to_set = 0; + uint16_t seq_to_set = 0; + + debug_print0(mod_srtp, "function srtp_unprotect"); + + /* Verify RTP header */ + status = srtp_validate_rtp_header(srtp, srtp_len); + if (status) { + return status; + } + + /* check the packet length - it must at least contain a full header */ + if (srtp_len < octets_in_rtp_header) { + return srtp_err_status_bad_param; + } + + /* + * look up ssrc in srtp_stream list, and process the packet with + * the appropriate stream. if we haven't seen this stream before, + * there's only one key for this srtp_session, and the cipher + * supports key-sharing, then we assume that a new stream using + * that key has just started up + */ + stream = srtp_get_stream(ctx, hdr->ssrc); + if (stream == NULL) { + if (ctx->stream_template != NULL) { + stream = ctx->stream_template; + debug_print(mod_srtp, "using provisional stream (SSRC: 0x%08x)", + (unsigned int)ntohl(hdr->ssrc)); + + /* + * set estimated packet index to sequence number from header, + * and set delta equal to the same value + */ + est = (srtp_xtd_seq_num_t)ntohs(hdr->seq); + delta = (int)est; + } else { + /* + * no stream corresponding to SSRC found, and we don't do + * key-sharing, so return an error + */ + return srtp_err_status_no_ctx; + } + } else { + status = srtp_get_est_pkt_index(hdr, stream, &est, &delta); + + if (status && (status != srtp_err_status_pkt_idx_adv)) { + return status; + } + + if (status == srtp_err_status_pkt_idx_adv) { + advance_packet_index = true; + roc_to_set = (uint32_t)(est >> 16); + seq_to_set = (uint16_t)(est & 0xFFFF); + } + + /* check replay database */ + if (!advance_packet_index) { + status = srtp_rdbx_check(&stream->rtp_rdbx, delta); + if (status) { + return status; + } + } + } + + debug_print(mod_srtp, "estimated u_packet index: %016" PRIx64, est); + + /* Determine if MKI is being used and what session keys should be used */ + status = srtp_get_session_keys_for_rtp_packet(stream, srtp, srtp_len, + &session_keys); + if (status) { + return status; + } + + /* + * Check if this is an AEAD stream (GCM mode). If so, then dispatch + * the request to our AEAD handler. + */ + if (session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_128 || + session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_256) { + return srtp_unprotect_aead(ctx, stream, delta, est, srtp, srtp_len, rtp, + rtp_len, session_keys, advance_packet_index); + } + + /* get tag length from stream */ + tag_len = srtp_auth_get_tag_length(session_keys->rtp_auth); + + /* + * set the cipher's IV properly, depending on whatever cipher we + * happen to be using + */ + if (session_keys->rtp_cipher->type->id == SRTP_AES_ICM_128 || + session_keys->rtp_cipher->type->id == SRTP_AES_ICM_192 || + session_keys->rtp_cipher->type->id == SRTP_AES_ICM_256) { + /* aes counter mode */ + iv.v32[0] = 0; + iv.v32[1] = hdr->ssrc; /* still in network order */ + iv.v64[1] = be64_to_cpu(est << 16); + status = srtp_cipher_set_iv(session_keys->rtp_cipher, (uint8_t *)&iv, + srtp_direction_decrypt); + if (!status && session_keys->rtp_xtn_hdr_cipher) { + status = srtp_cipher_set_iv(session_keys->rtp_xtn_hdr_cipher, + (uint8_t *)&iv, srtp_direction_decrypt); + } + } else { + /* no particular format - set the iv to the packet index */ + iv.v64[0] = 0; + iv.v64[1] = be64_to_cpu(est); + status = srtp_cipher_set_iv(session_keys->rtp_cipher, (uint8_t *)&iv, + srtp_direction_decrypt); + if (!status && session_keys->rtp_xtn_hdr_cipher) { + status = srtp_cipher_set_iv(session_keys->rtp_xtn_hdr_cipher, + (uint8_t *)&iv, srtp_direction_decrypt); + } + } + if (status) { + return srtp_err_status_cipher_fail; + } + + /* shift est, put into network byte order */ + est = be64_to_cpu(est << 16); + + enc_start = srtp_get_rtp_hdr_len(hdr); + if (hdr->x == 1) { + enc_start += srtp_get_rtp_xtn_hdr_len(hdr, srtp); + } + + bool cryptex_inuse, cryptex_inplace; + status = srtp_cryptex_unprotect_init(stream, hdr, srtp, rtp, &cryptex_inuse, + &cryptex_inplace, &enc_start); + if (status) { + return status; + } + + if (enc_start > srtp_len - tag_len - stream->mki_size) { + return srtp_err_status_parse_err; + } + enc_octet_len = srtp_len - enc_start - stream->mki_size - tag_len; + + /* check output length */ + if (*rtp_len < srtp_len - stream->mki_size - tag_len) { + return srtp_err_status_buffer_small; + } + + /* if not-inplace then need to copy full rtp header */ + if (srtp != rtp) { + memcpy(rtp, srtp, enc_start); + } + + /* + * if we're providing authentication, set the auth_start and auth_tag + * pointers to the proper locations; otherwise, set auth_start to NULL + * to indicate that no authentication is needed + */ + if (stream->rtp_services & sec_serv_auth) { + auth_start = srtp; + auth_tag = srtp + srtp_len - tag_len; + } else { + auth_start = NULL; + auth_tag = NULL; + } + + /* + * if we expect message authentication, run the authentication + * function and compare the result with the value of the auth_tag + */ + if (auth_start) { + /* + * if we're using a universal hash, then we need to compute the + * keystream prefix for encrypting the universal hash output + * + * if the keystream prefix length is zero, then we know that + * the authenticator isn't using a universal hash function + */ + if (session_keys->rtp_auth->prefix_len != 0) { + prefix_len = srtp_auth_get_prefix_length(session_keys->rtp_auth); + status = srtp_cipher_output(session_keys->rtp_cipher, tmp_tag, + &prefix_len); + debug_print(mod_srtp, "keystream prefix: %s", + srtp_octet_string_hex_string(tmp_tag, prefix_len)); + if (status) { + return srtp_err_status_cipher_fail; + } + } + + /* initialize auth func context */ + status = srtp_auth_start(session_keys->rtp_auth); + if (status) { + return status; + } + + /* now compute auth function over packet */ + status = srtp_auth_update(session_keys->rtp_auth, auth_start, + srtp_len - tag_len - stream->mki_size); + if (status) { + return status; + } + + /* run auth func over ROC, then write tmp tag */ + status = srtp_auth_compute(session_keys->rtp_auth, (uint8_t *)&est, 4, + tmp_tag); + + debug_print(mod_srtp, "computed auth tag: %s", + srtp_octet_string_hex_string(tmp_tag, tag_len)); + debug_print(mod_srtp, "packet auth tag: %s", + srtp_octet_string_hex_string(auth_tag, tag_len)); + if (status) { + return srtp_err_status_auth_fail; + } + + if (!srtp_octet_string_equal(tmp_tag, auth_tag, tag_len)) { + return srtp_err_status_auth_fail; + } + } + + /* + * update the key usage limit, and check it to make sure that we + * didn't just hit either the soft limit or the hard limit, and call + * the event handler if we hit either. + */ + switch (srtp_key_limit_update(session_keys->limit)) { + case srtp_key_event_normal: + break; + case srtp_key_event_soft_limit: + srtp_handle_event(ctx, stream, event_key_soft_limit); + break; + case srtp_key_event_hard_limit: + srtp_handle_event(ctx, stream, event_key_hard_limit); + return srtp_err_status_key_expired; + default: + break; + } + + if (hdr->x == 1 && session_keys->rtp_xtn_hdr_cipher) { + /* extensions header encryption RFC 6904 */ + status = srtp_process_header_encryption( + stream, srtp_get_rtp_xtn_hdr(hdr, rtp), session_keys); + if (status) { + return status; + } + } + + if (cryptex_inuse) { + status = srtp_cryptex_unprotect(cryptex_inplace, hdr, rtp, + session_keys->rtp_cipher); + if (status) { + return status; + } + } + + /* if we're decrypting, add keystream into ciphertext */ + if (stream->rtp_services & sec_serv_conf) { + status = + srtp_cipher_decrypt(session_keys->rtp_cipher, srtp + enc_start, + enc_octet_len, rtp + enc_start, &enc_octet_len); + if (status) { + return srtp_err_status_cipher_fail; + } + } else if (rtp != srtp) { + /* if no encryption and not-inplace then need to copy rest of packet */ + memcpy(rtp + enc_start, srtp + enc_start, enc_octet_len); + } + + if (cryptex_inuse) { + srtp_cryptex_unprotect_cleanup(cryptex_inplace, hdr, rtp); + } + + /* + * verify that stream is for received traffic - this check will + * detect SSRC collisions, since a stream that appears in both + * srtp_protect() and srtp_unprotect() will fail this test in one of + * those functions. + * + * we do this check *after* the authentication check, so that the + * latter check will catch any attempts to fool us into thinking + * that we've got a collision + */ + if (stream->direction != dir_srtp_receiver) { + if (stream->direction == dir_unknown) { + stream->direction = dir_srtp_receiver; + } else { + srtp_handle_event(ctx, stream, event_ssrc_collision); + } + } + + /* + * if the stream is a 'provisional' one, in which the template context + * is used, then we need to allocate a new stream at this point, since + * the authentication passed + */ + if (stream == ctx->stream_template) { + srtp_stream_ctx_t *new_stream; + + /* + * allocate and initialize a new stream + * + * note that we indicate failure if we can't allocate the new + * stream, and some implementations will want to not return + * failure here + */ + status = + srtp_stream_clone(ctx->stream_template, hdr->ssrc, &new_stream); + if (status) { + return status; + } + + /* add new stream to the list */ + status = srtp_insert_or_dealloc_stream(ctx->stream_list, new_stream, + ctx->stream_template); + if (status) { + return status; + } + + /* set stream (the pointer used in this function) */ + stream = new_stream; + } + + /* + * the message authentication function passed, so add the packet + * index into the replay database + */ + if (advance_packet_index) { + srtp_rdbx_set_roc_seq(&stream->rtp_rdbx, roc_to_set, seq_to_set); + stream->pending_roc = 0; + srtp_rdbx_add_index(&stream->rtp_rdbx, 0); + } else { + srtp_rdbx_add_index(&stream->rtp_rdbx, delta); + } + + *rtp_len = enc_start + enc_octet_len; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_init(void) +{ + srtp_err_status_t status; + + /* initialize crypto kernel */ + status = srtp_crypto_kernel_init(); + if (status) { + return status; + } + + /* load srtp debug module into the kernel */ + status = srtp_crypto_kernel_load_debug_module(&mod_srtp); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_shutdown(void) +{ + srtp_err_status_t status; + + /* shut down crypto kernel */ + status = srtp_crypto_kernel_shutdown(); + if (status) { + return status; + } + + /* shutting down crypto kernel frees the srtp debug module as well */ + + return srtp_err_status_ok; +} + +srtp_stream_ctx_t *srtp_get_stream(srtp_t srtp, uint32_t ssrc) +{ + return srtp_stream_list_get(srtp->stream_list, ssrc); +} + +srtp_err_status_t srtp_dealloc(srtp_t session) +{ + srtp_err_status_t status; + + /* + * we take a conservative deallocation strategy - if we encounter an + * error deallocating a stream, then we stop trying to deallocate + * memory and just return an error + */ + + /* deallocate streams */ + status = srtp_remove_and_dealloc_streams(session->stream_list, + session->stream_template); + if (status) { + return status; + } + + /* deallocate stream template, if there is one */ + if (session->stream_template != NULL) { + status = srtp_stream_dealloc(session->stream_template, NULL); + if (status) { + return status; + } + } + + /* deallocate stream list */ + status = srtp_stream_list_dealloc(session->stream_list); + if (status) { + return status; + } + + /* deallocate session context */ + srtp_crypto_free(session); + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_add(srtp_t session, const srtp_policy_t *policy) +{ + srtp_err_status_t status; + srtp_stream_t tmp; + + /* sanity check arguments */ + if (session == NULL) { + return srtp_err_status_bad_param; + } + + status = srtp_valid_policy(policy); + if (status != srtp_err_status_ok) { + return status; + } + + /* allocate stream */ + status = srtp_stream_alloc(&tmp, policy); + if (status) { + return status; + } + + /* initialize stream */ + status = srtp_stream_init(tmp, policy); + if (status) { + srtp_stream_dealloc(tmp, NULL); + return status; + } + + /* + * set the head of the stream list or the template to point to the + * stream that we've just alloced and init'ed, depending on whether + * or not it has a wildcard SSRC value or not + * + * if the template stream has already been set, then the policy is + * inconsistent, so we return a bad_param error code + */ + switch (policy->ssrc.type) { + case (ssrc_any_outbound): + if (session->stream_template) { + srtp_stream_dealloc(tmp, NULL); + return srtp_err_status_bad_param; + } + session->stream_template = tmp; + session->stream_template->direction = dir_srtp_sender; + break; + case (ssrc_any_inbound): + if (session->stream_template) { + srtp_stream_dealloc(tmp, NULL); + return srtp_err_status_bad_param; + } + session->stream_template = tmp; + session->stream_template->direction = dir_srtp_receiver; + break; + case (ssrc_specific): + status = srtp_insert_or_dealloc_stream(session->stream_list, tmp, + session->stream_template); + if (status) { + return status; + } + break; + case (ssrc_undefined): + default: + srtp_stream_dealloc(tmp, NULL); + return srtp_err_status_bad_param; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_create(srtp_t *session, /* handle for session */ + const srtp_policy_t *policy) +{ /* SRTP policy (list) */ + srtp_err_status_t stat; + srtp_ctx_t *ctx; + + /* sanity check arguments */ + if (session == NULL) { + return srtp_err_status_bad_param; + } + + if (policy) { + stat = srtp_valid_policy(policy); + if (stat != srtp_err_status_ok) { + return stat; + } + } + + /* allocate srtp context and set ctx_ptr */ + ctx = (srtp_ctx_t *)srtp_crypto_alloc(sizeof(srtp_ctx_t)); + if (ctx == NULL) { + return srtp_err_status_alloc_fail; + } + *session = ctx; + + ctx->stream_template = NULL; + ctx->stream_list = NULL; + ctx->user_data = NULL; + + /* allocate stream list */ + stat = srtp_stream_list_alloc(&ctx->stream_list); + if (stat) { + /* clean up everything */ + srtp_dealloc(*session); + *session = NULL; + return stat; + } + + /* + * loop over elements in the policy list, allocating and + * initializing a stream for each element + */ + while (policy != NULL) { + stat = srtp_stream_add(ctx, policy); + if (stat) { + /* clean up everything */ + srtp_dealloc(*session); + *session = NULL; + return stat; + } + + /* set policy to next item in list */ + policy = policy->next; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_remove(srtp_t session, uint32_t ssrc) +{ + srtp_stream_ctx_t *stream; + srtp_err_status_t status; + + /* sanity check arguments */ + if (session == NULL) { + return srtp_err_status_bad_param; + } + + /* find and remove stream from the list */ + stream = srtp_stream_list_get(session->stream_list, htonl(ssrc)); + if (stream == NULL) { + return srtp_err_status_no_ctx; + } + + srtp_stream_list_remove(session->stream_list, stream); + + /* deallocate the stream */ + status = srtp_stream_dealloc(stream, session->stream_template); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_update(srtp_t session, const srtp_policy_t *policy) +{ + srtp_err_status_t stat; + + /* sanity check arguments */ + if (session == NULL) { + return srtp_err_status_bad_param; + } + + stat = srtp_valid_policy(policy); + if (stat != srtp_err_status_ok) { + return stat; + } + + while (policy != NULL) { + stat = srtp_stream_update(session, policy); + if (stat) { + return stat; + } + + /* set policy to next item in list */ + policy = policy->next; + } + return srtp_err_status_ok; +} + +struct update_template_stream_data { + srtp_err_status_t status; + srtp_t session; + srtp_stream_t new_stream_template; + srtp_stream_list_t new_stream_list; +}; + +static bool update_template_stream_cb(srtp_stream_t stream, void *raw_data) +{ + struct update_template_stream_data *data = + (struct update_template_stream_data *)raw_data; + srtp_t session = data->session; + uint32_t ssrc = stream->ssrc; + srtp_xtd_seq_num_t old_index; + srtp_rdb_t old_rtcp_rdb; + + /* old / non-template streams are copied unchanged */ + if (stream->session_keys[0].rtp_auth != + session->stream_template->session_keys[0].rtp_auth) { + srtp_stream_list_remove(session->stream_list, stream); + data->status = srtp_insert_or_dealloc_stream( + data->new_stream_list, stream, session->stream_template); + if (data->status) { + return false; + } + return true; + } + + /* save old extended seq */ + old_index = stream->rtp_rdbx.index; + old_rtcp_rdb = stream->rtcp_rdb; + + /* remove stream */ + data->status = srtp_stream_remove(session, ntohl(ssrc)); + if (data->status) { + return false; + } + + /* allocate and initialize a new stream */ + data->status = srtp_stream_clone(data->new_stream_template, ssrc, &stream); + if (data->status) { + return false; + } + + /* add new stream to the head of the new_stream_list */ + data->status = srtp_insert_or_dealloc_stream(data->new_stream_list, stream, + data->new_stream_template); + if (data->status) { + return false; + } + + /* restore old extended seq */ + stream->rtp_rdbx.index = old_index; + stream->rtcp_rdb = old_rtcp_rdb; + + return true; +} + +static srtp_err_status_t is_update_policy_compatable( + srtp_stream_t stream, + const srtp_policy_t *policy) +{ + if (stream->use_mki != policy->use_mki) { + return srtp_err_status_bad_param; + } + + if (stream->use_mki && stream->mki_size != policy->mki_size) { + return srtp_err_status_bad_param; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t update_template_streams(srtp_t session, + const srtp_policy_t *policy) +{ + srtp_err_status_t status; + srtp_stream_t new_stream_template; + srtp_stream_list_t new_stream_list; + + status = srtp_valid_policy(policy); + if (status != srtp_err_status_ok) { + return status; + } + + if (session->stream_template == NULL) { + return srtp_err_status_bad_param; + } + + status = is_update_policy_compatable(session->stream_template, policy); + if (status != srtp_err_status_ok) { + return status; + } + + /* allocate new template stream */ + status = srtp_stream_alloc(&new_stream_template, policy); + if (status) { + return status; + } + + /* initialize new template stream */ + status = srtp_stream_init(new_stream_template, policy); + if (status) { + srtp_crypto_free(new_stream_template); + return status; + } + + /* allocate new stream list */ + status = srtp_stream_list_alloc(&new_stream_list); + if (status) { + srtp_crypto_free(new_stream_template); + return status; + } + + /* process streams */ + struct update_template_stream_data data = { srtp_err_status_ok, session, + new_stream_template, + new_stream_list }; + srtp_stream_list_for_each(session->stream_list, update_template_stream_cb, + &data); + if (data.status) { + /* free new allocations */ + srtp_remove_and_dealloc_streams(new_stream_list, new_stream_template); + srtp_stream_list_dealloc(new_stream_list); + srtp_stream_dealloc(new_stream_template, NULL); + return data.status; + } + + /* dealloc old list / template */ + srtp_remove_and_dealloc_streams(session->stream_list, + session->stream_template); + srtp_stream_list_dealloc(session->stream_list); + srtp_stream_dealloc(session->stream_template, NULL); + + /* set new list / template */ + session->stream_template = new_stream_template; + session->stream_list = new_stream_list; + return srtp_err_status_ok; +} + +static srtp_err_status_t stream_update(srtp_t session, + const srtp_policy_t *policy) +{ + srtp_err_status_t status; + srtp_xtd_seq_num_t old_index; + srtp_rdb_t old_rtcp_rdb; + srtp_stream_t stream; + + status = srtp_valid_policy(policy); + if (status != srtp_err_status_ok) { + return status; + } + + stream = srtp_get_stream(session, htonl(policy->ssrc.value)); + if (stream == NULL) { + return srtp_err_status_bad_param; + } + + status = is_update_policy_compatable(stream, policy); + if (status != srtp_err_status_ok) { + return status; + } + + /* save old extendard seq */ + old_index = stream->rtp_rdbx.index; + old_rtcp_rdb = stream->rtcp_rdb; + + status = srtp_stream_remove(session, policy->ssrc.value); + if (status) { + return status; + } + + status = srtp_stream_add(session, policy); + if (status) { + return status; + } + + stream = srtp_get_stream(session, htonl(policy->ssrc.value)); + if (stream == NULL) { + return srtp_err_status_fail; + } + + /* restore old extended seq */ + stream->rtp_rdbx.index = old_index; + stream->rtcp_rdb = old_rtcp_rdb; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_update(srtp_t session, + const srtp_policy_t *policy) +{ + srtp_err_status_t status; + + /* sanity check arguments */ + if (session == NULL) { + return srtp_err_status_bad_param; + } + + status = srtp_valid_policy(policy); + if (status != srtp_err_status_ok) { + return status; + } + + switch (policy->ssrc.type) { + case (ssrc_any_outbound): + case (ssrc_any_inbound): + status = update_template_streams(session, policy); + break; + case (ssrc_specific): + status = stream_update(session, policy); + break; + case (ssrc_undefined): + default: + return srtp_err_status_bad_param; + } + + return status; +} + +/* + * The default policy - provides a convenient way for callers to use + * the default security policy + * + * The default policy is defined in RFC 3711 + * (Section 5. Default and mandatory-to-implement Transforms) + * + */ + +/* + * NOTE: cipher_key_len is really key len (128 bits) plus salt len + * (112 bits) + */ +/* There are hard-coded 16's for base_key_len in the key generation code */ + +void srtp_crypto_policy_set_rtp_default(srtp_crypto_policy_t *p) +{ + p->cipher_type = SRTP_AES_ICM_128; + p->cipher_key_len = + SRTP_AES_ICM_128_KEY_LEN_WSALT; /* default 128 bits per RFC 3711 */ + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* default 160 bits per RFC 3711 */ + p->auth_tag_len = 10; /* default 80 bits per RFC 3711 */ + p->sec_serv = sec_serv_conf_and_auth; +} + +void srtp_crypto_policy_set_rtcp_default(srtp_crypto_policy_t *p) +{ + p->cipher_type = SRTP_AES_ICM_128; + p->cipher_key_len = + SRTP_AES_ICM_128_KEY_LEN_WSALT; /* default 128 bits per RFC 3711 */ + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* default 160 bits per RFC 3711 */ + p->auth_tag_len = 10; /* default 80 bits per RFC 3711 */ + p->sec_serv = sec_serv_conf_and_auth; +} + +void srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 4568 + * + * note that this crypto policy is intended for SRTP, but not SRTCP + */ + + p->cipher_type = SRTP_AES_ICM_128; + p->cipher_key_len = + SRTP_AES_ICM_128_KEY_LEN_WSALT; /* 128 bit key, 112 bit salt */ + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* 160 bit key */ + p->auth_tag_len = 4; /* 32 bit tag */ + p->sec_serv = sec_serv_conf_and_auth; +} + +void srtp_crypto_policy_set_aes_cm_128_null_auth(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 4568 + * + * note that this crypto policy is intended for SRTP, but not SRTCP + */ + + p->cipher_type = SRTP_AES_ICM_128; + p->cipher_key_len = + SRTP_AES_ICM_128_KEY_LEN_WSALT; /* 128 bit key, 112 bit salt */ + p->auth_type = SRTP_NULL_AUTH; + p->auth_key_len = 0; + p->auth_tag_len = 0; + p->sec_serv = sec_serv_conf; +} + +void srtp_crypto_policy_set_null_cipher_hmac_sha1_80(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 4568 + */ + + p->cipher_type = SRTP_NULL_CIPHER; + p->cipher_key_len = + SRTP_AES_ICM_128_KEY_LEN_WSALT; /* 128 bit key, 112 bit salt */ + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; + p->auth_tag_len = 10; + p->sec_serv = sec_serv_auth; +} + +void srtp_crypto_policy_set_null_cipher_hmac_null(srtp_crypto_policy_t *p) +{ + /* + * Should only be used for testing + */ + + p->cipher_type = SRTP_NULL_CIPHER; + p->cipher_key_len = 0; + p->auth_type = SRTP_NULL_AUTH; + p->auth_key_len = 0; + p->auth_tag_len = 0; + p->sec_serv = sec_serv_none; +} + +void srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 6188 + */ + + p->cipher_type = SRTP_AES_ICM_256; + p->cipher_key_len = SRTP_AES_ICM_256_KEY_LEN_WSALT; + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* default 160 bits per RFC 3711 */ + p->auth_tag_len = 10; /* default 80 bits per RFC 3711 */ + p->sec_serv = sec_serv_conf_and_auth; +} + +void srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 6188 + * + * note that this crypto policy is intended for SRTP, but not SRTCP + */ + + p->cipher_type = SRTP_AES_ICM_256; + p->cipher_key_len = SRTP_AES_ICM_256_KEY_LEN_WSALT; + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* default 160 bits per RFC 3711 */ + p->auth_tag_len = 4; /* default 80 bits per RFC 3711 */ + p->sec_serv = sec_serv_conf_and_auth; +} + +/* + * AES-256 with no authentication. + */ +void srtp_crypto_policy_set_aes_cm_256_null_auth(srtp_crypto_policy_t *p) +{ + p->cipher_type = SRTP_AES_ICM_256; + p->cipher_key_len = SRTP_AES_ICM_256_KEY_LEN_WSALT; + p->auth_type = SRTP_NULL_AUTH; + p->auth_key_len = 0; + p->auth_tag_len = 0; + p->sec_serv = sec_serv_conf; +} + +void srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 6188 + */ + + p->cipher_type = SRTP_AES_ICM_192; + p->cipher_key_len = SRTP_AES_ICM_192_KEY_LEN_WSALT; + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* default 160 bits per RFC 3711 */ + p->auth_tag_len = 10; /* default 80 bits per RFC 3711 */ + p->sec_serv = sec_serv_conf_and_auth; +} + +void srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32(srtp_crypto_policy_t *p) +{ + /* + * corresponds to RFC 6188 + * + * note that this crypto policy is intended for SRTP, but not SRTCP + */ + + p->cipher_type = SRTP_AES_ICM_192; + p->cipher_key_len = SRTP_AES_ICM_192_KEY_LEN_WSALT; + p->auth_type = SRTP_HMAC_SHA1; + p->auth_key_len = 20; /* default 160 bits per RFC 3711 */ + p->auth_tag_len = 4; /* default 80 bits per RFC 3711 */ + p->sec_serv = sec_serv_conf_and_auth; +} + +/* + * AES-192 with no authentication. + */ +void srtp_crypto_policy_set_aes_cm_192_null_auth(srtp_crypto_policy_t *p) +{ + p->cipher_type = SRTP_AES_ICM_192; + p->cipher_key_len = SRTP_AES_ICM_192_KEY_LEN_WSALT; + p->auth_type = SRTP_NULL_AUTH; + p->auth_key_len = 0; + p->auth_tag_len = 0; + p->sec_serv = sec_serv_conf; +} + +/* + * AES-128 GCM mode with 16 octet auth tag. + */ +void srtp_crypto_policy_set_aes_gcm_128_16_auth(srtp_crypto_policy_t *p) +{ + p->cipher_type = SRTP_AES_GCM_128; + p->cipher_key_len = SRTP_AES_GCM_128_KEY_LEN_WSALT; + p->auth_type = SRTP_NULL_AUTH; /* GCM handles the auth for us */ + p->auth_key_len = 0; + p->auth_tag_len = 16; /* 16 octet tag length */ + p->sec_serv = sec_serv_conf_and_auth; +} + +/* + * AES-256 GCM mode with 16 octet auth tag. + */ +void srtp_crypto_policy_set_aes_gcm_256_16_auth(srtp_crypto_policy_t *p) +{ + p->cipher_type = SRTP_AES_GCM_256; + p->cipher_key_len = SRTP_AES_GCM_256_KEY_LEN_WSALT; + p->auth_type = SRTP_NULL_AUTH; /* GCM handles the auth for us */ + p->auth_key_len = 0; + p->auth_tag_len = 16; /* 16 octet tag length */ + p->sec_serv = sec_serv_conf_and_auth; +} + +/* + * secure rtcp functions + */ + +/* + * AEAD uses a new IV formation method. This function implements + * section 9.1 (SRTCP IV Formation for AES-GCM) from RFC7714. + * The calculation is defined as, where (+) is the xor operation: + * + * 0 1 2 3 4 5 6 7 8 9 10 11 + * +--+--+--+--+--+--+--+--+--+--+--+--+ + * |00|00| SSRC |00|00|0+SRTCP Idx|---+ + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Encryption Salt |->(+) + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | + * +--+--+--+--+--+--+--+--+--+--+--+--+ | + * | Initialization Vector |<--+ + * +--+--+--+--+--+--+--+--+--+--+--+--+* + * + * Input: *session_keys - pointer to SRTP stream context session keys, + * used to retrieve the SALT + * *iv - Pointer to recieve the calculated IV + * seq_num - The SEQ value to use for the IV calculation. + * *hdr - The RTP header, used to get the SSRC value + * + * Returns: srtp_err_status_ok if no error or srtp_err_status_bad_param + * if seq_num is invalid + * + */ +static srtp_err_status_t srtp_calc_aead_iv_srtcp( + srtp_session_keys_t *session_keys, + v128_t *iv, + uint32_t seq_num, + const srtcp_hdr_t *hdr) +{ + v128_t in; + v128_t salt; + + memset(&in, 0, sizeof(v128_t)); + memset(&salt, 0, sizeof(v128_t)); + + in.v16[0] = 0; + memcpy(&in.v16[1], &hdr->ssrc, 4); /* still in network order! */ + in.v16[3] = 0; + + /* + * The SRTCP index (seq_num) spans bits 0 through 30 inclusive. + * The most significant bit should be zero. + */ + if (seq_num & 0x80000000UL) { + return srtp_err_status_bad_param; + } + in.v32[2] = htonl(seq_num); + + debug_print(mod_srtp, "Pre-salted RTCP IV = %s\n", v128_hex_string(&in)); + + /* + * Get the SALT value from the context + */ + memcpy(salt.v8, session_keys->c_salt, 12); + debug_print(mod_srtp, "RTCP SALT = %s\n", v128_hex_string(&salt)); + + /* + * Finally, apply the SALT to the input + */ + v128_xor(iv, &in, &salt); + + return srtp_err_status_ok; +} + +/* + * This code handles AEAD ciphers for outgoing RTCP. We currently support + * AES-GCM mode with 128 or 256 bit keys. + */ +static srtp_err_status_t srtp_protect_rtcp_aead( + srtp_stream_ctx_t *stream, + const uint8_t *rtcp, + size_t rtcp_len, + uint8_t *srtcp, + size_t *srtcp_len, + srtp_session_keys_t *session_keys) +{ + const srtcp_hdr_t *hdr = (const srtcp_hdr_t *)rtcp; + size_t enc_start; /* pointer to start of encrypted portion */ + uint8_t *trailer_p; /* pointer to start of trailer */ + uint32_t trailer; /* trailer value */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + srtp_err_status_t status; + size_t tag_len; + uint32_t seq_num; + v128_t iv; + + /* get tag length from stream context */ + tag_len = srtp_auth_get_tag_length(session_keys->rtcp_auth); + + /* + * set encryption start and encryption length - if we're not + * providing confidentiality, set enc_start to NULL + */ + enc_start = octets_in_rtcp_header; + enc_octet_len = rtcp_len - enc_start; + + /* check output length */ + if (*srtcp_len < + rtcp_len + sizeof(srtcp_trailer_t) + stream->mki_size + tag_len) { + return srtp_err_status_buffer_small; + } + + /* if not-inplace then need to copy full rtcp header */ + if (rtcp != srtcp) { + memcpy(srtcp, rtcp, enc_start); + } + + /* NOTE: hdr->length is not usable - it refers to only the first + * RTCP report in the compound packet! + */ + trailer_p = srtcp + enc_start + enc_octet_len + tag_len; + + if (stream->rtcp_services & sec_serv_conf) { + trailer = htonl(SRTCP_E_BIT); /* set encrypt bit */ + } else { + /* 0 is network-order independent */ + trailer = 0x00000000; /* set encrypt bit */ + } + + if (stream->use_mki) { + srtp_inject_mki(srtcp + rtcp_len + tag_len + sizeof(srtcp_trailer_t), + session_keys, stream->mki_size); + } + + /* + * check sequence number for overruns, and copy it into the packet + * if its value isn't too big + */ + status = srtp_rdb_increment(&stream->rtcp_rdb); + if (status) { + return status; + } + seq_num = srtp_rdb_get_value(&stream->rtcp_rdb); + trailer |= htonl(seq_num); + debug_print(mod_srtp, "srtcp index: %x", (unsigned int)seq_num); + + memcpy(trailer_p, &trailer, sizeof(trailer)); + + /* + * Calculate and set the IV + */ + status = srtp_calc_aead_iv_srtcp(session_keys, &iv, seq_num, hdr); + if (status) { + return srtp_err_status_cipher_fail; + } + status = srtp_cipher_set_iv(session_keys->rtcp_cipher, (uint8_t *)&iv, + srtp_direction_encrypt); + if (status) { + return srtp_err_status_cipher_fail; + } + + /* + * Set the AAD for GCM mode + */ + if (stream->rtcp_services & sec_serv_conf) { + /* + * If payload encryption is enabled, then the AAD consist of + * the RTCP header and the seq# at the end of the packet + */ + status = srtp_cipher_set_aad(session_keys->rtcp_cipher, rtcp, + octets_in_rtcp_header); + if (status) { + return srtp_err_status_cipher_fail; + } + } else { + /* + * Since payload encryption is not enabled, we must authenticate + * the entire packet as described in RFC 7714 (Section 9.3. Data + * Types in Unencrypted SRTCP Compound Packets) + */ + status = srtp_cipher_set_aad(session_keys->rtcp_cipher, rtcp, rtcp_len); + if (status) { + return (srtp_err_status_cipher_fail); + } + } + /* + * Process the sequence# as AAD + */ + status = srtp_cipher_set_aad(session_keys->rtcp_cipher, (uint8_t *)&trailer, + sizeof(trailer)); + if (status) { + return (srtp_err_status_cipher_fail); + } + + /* if we're encrypting, exor keystream into the message */ + if (stream->rtcp_services & sec_serv_conf) { + size_t out_len = *srtcp_len - enc_start; + status = + srtp_cipher_encrypt(session_keys->rtcp_cipher, rtcp + enc_start, + enc_octet_len, srtcp + enc_start, &out_len); + enc_octet_len = out_len; + if (status) { + return srtp_err_status_cipher_fail; + } + } else { + /* if no encryption and not-inplace then need to copy rest of packet */ + if (rtcp != srtcp) { + memcpy(srtcp + enc_start, rtcp + enc_start, enc_octet_len); + } + + /* + * Even though we're not encrypting the payload, we need + * to run the cipher to get the auth tag. + */ + uint8_t *auth_tag = srtcp + enc_start + enc_octet_len; + size_t out_len = *srtcp_len - enc_start - enc_octet_len; + status = srtp_cipher_encrypt(session_keys->rtcp_cipher, NULL, 0, + auth_tag, &out_len); + if (status) { + return srtp_err_status_cipher_fail; + } + enc_octet_len += out_len; + } + + *srtcp_len = octets_in_rtcp_header + enc_octet_len; + + /* increase the packet length by the length of the seq_num*/ + *srtcp_len += sizeof(srtcp_trailer_t); + + /* increase the packet by the mki_size */ + *srtcp_len += stream->mki_size; + + return srtp_err_status_ok; +} + +/* + * This function handles incoming SRTCP packets while in AEAD mode, + * which currently supports AES-GCM encryption. Note, the auth tag is + * at the end of the packet stream and is automatically checked by GCM + * when decrypting the payload. + */ +static srtp_err_status_t srtp_unprotect_rtcp_aead( + srtp_t ctx, + srtp_stream_ctx_t *stream, + const uint8_t *srtcp, + size_t srtcp_len, + uint8_t *rtcp, + size_t *rtcp_len, + srtp_session_keys_t *session_keys) +{ + const srtcp_hdr_t *hdr = (const srtcp_hdr_t *)srtcp; + size_t enc_start; /* pointer to start of encrypted portion */ + const uint8_t *trailer_p; /* pointer to start of trailer */ + uint32_t trailer; /* trailer value */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + const uint8_t *auth_tag = NULL; /* location of auth_tag within packet */ + srtp_err_status_t status; + size_t tag_len; + size_t tmp_len; + uint32_t seq_num; + v128_t iv; + + /* get tag length from stream context */ + tag_len = srtp_auth_get_tag_length(session_keys->rtcp_auth); + + enc_start = octets_in_rtcp_header; + + /* + * set encryption start, encryption length, and trailer + */ + /* index & E (encryption) bit follow normal data. hdr->len is the number of + * words (32-bit) in the normal packet minus 1 + */ + /* This should point trailer to the word past the end of the normal data. */ + /* This would need to be modified for optional mikey data */ + trailer_p = srtcp + srtcp_len - sizeof(srtcp_trailer_t) - stream->mki_size; + memcpy(&trailer, trailer_p, sizeof(trailer)); + + /* + * We pass the tag down to the cipher when doing GCM mode + */ + enc_octet_len = srtcp_len - (octets_in_rtcp_header + + sizeof(srtcp_trailer_t) + stream->mki_size); + auth_tag = srtcp + (srtcp_len - tag_len - stream->mki_size - + sizeof(srtcp_trailer_t)); + + /* + * check the sequence number for replays + */ + /* this is easier than dealing with bitfield access */ + seq_num = ntohl(trailer) & SRTCP_INDEX_MASK; + debug_print(mod_srtp, "srtcp index: %x", (unsigned int)seq_num); + status = srtp_rdb_check(&stream->rtcp_rdb, seq_num); + if (status) { + return status; + } + + /* + * Calculate and set the IV + */ + status = srtp_calc_aead_iv_srtcp(session_keys, &iv, seq_num, hdr); + if (status) { + return srtp_err_status_cipher_fail; + } + status = srtp_cipher_set_iv(session_keys->rtcp_cipher, (uint8_t *)&iv, + srtp_direction_decrypt); + if (status) { + return srtp_err_status_cipher_fail; + } + + /* check output length */ + if (*rtcp_len < + srtcp_len - sizeof(srtcp_trailer_t) - stream->mki_size - tag_len) { + return srtp_err_status_buffer_small; + } + + /* if not inplace need to copy rtcp header */ + if (srtcp != rtcp) { + memcpy(rtcp, srtcp, enc_start); + } + + /* + * Set the AAD for GCM mode + */ + if (*trailer_p & SRTCP_E_BYTE_BIT) { + /* + * If payload encryption is enabled, then the AAD consist of + * the RTCP header and the seq# at the end of the packet + */ + status = srtp_cipher_set_aad(session_keys->rtcp_cipher, srtcp, + octets_in_rtcp_header); + if (status) { + return srtp_err_status_cipher_fail; + } + } else { + /* + * Since payload encryption is not enabled, we must authenticate + * the entire packet as described in RFC 7714 (Section 9.3. Data + * Types in Unencrypted SRTCP Compound Packets) + */ + status = srtp_cipher_set_aad( + session_keys->rtcp_cipher, srtcp, + (srtcp_len - tag_len - sizeof(srtcp_trailer_t) - stream->mki_size)); + if (status) { + return (srtp_err_status_cipher_fail); + } + } + + /* + * Process the sequence# as AAD + */ + status = srtp_cipher_set_aad(session_keys->rtcp_cipher, (uint8_t *)&trailer, + sizeof(trailer)); + if (status) { + return (srtp_err_status_cipher_fail); + } + + /* if we're decrypting, exor keystream into the message */ + if (*trailer_p & SRTCP_E_BYTE_BIT) { + status = srtp_cipher_decrypt(session_keys->rtcp_cipher, + srtcp + enc_start, enc_octet_len, + rtcp + enc_start, &enc_octet_len); + if (status) { + return status; + } + } else { + /* if no encryption and not-inplace then need to copy rest of packet */ + if (rtcp != srtcp) { + memcpy(rtcp + enc_start, srtcp + enc_start, enc_octet_len); + } + + /* + * Still need to run the cipher to check the tag + */ + tmp_len = 0; + status = srtp_cipher_decrypt(session_keys->rtcp_cipher, auth_tag, + tag_len, NULL, &tmp_len); + if (status) { + return status; + } + } + + *rtcp_len = srtcp_len; + + /* decrease the packet length by the length of the auth tag and seq_num*/ + *rtcp_len -= (tag_len + sizeof(srtcp_trailer_t) + stream->mki_size); + + /* + * verify that stream is for received traffic - this check will + * detect SSRC collisions, since a stream that appears in both + * srtp_protect() and srtp_unprotect() will fail this test in one of + * those functions. + * + * we do this check *after* the authentication check, so that the + * latter check will catch any attempts to fool us into thinking + * that we've got a collision + */ + if (stream->direction != dir_srtp_receiver) { + if (stream->direction == dir_unknown) { + stream->direction = dir_srtp_receiver; + } else { + srtp_handle_event(ctx, stream, event_ssrc_collision); + } + } + + /* + * if the stream is a 'provisional' one, in which the template context + * is used, then we need to allocate a new stream at this point, since + * the authentication passed + */ + if (stream == ctx->stream_template) { + srtp_stream_ctx_t *new_stream; + + /* + * allocate and initialize a new stream + * + * note that we indicate failure if we can't allocate the new + * stream, and some implementations will want to not return + * failure here + */ + status = + srtp_stream_clone(ctx->stream_template, hdr->ssrc, &new_stream); + if (status) { + return status; + } + + /* add new stream to the list */ + status = srtp_insert_or_dealloc_stream(ctx->stream_list, new_stream, + ctx->stream_template); + if (status) { + return status; + } + + /* set stream (the pointer used in this function) */ + stream = new_stream; + } + + /* we've passed the authentication check, so add seq_num to the rdb */ + srtp_rdb_add_index(&stream->rtcp_rdb, seq_num); + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_protect_rtcp(srtp_t ctx, + const uint8_t *rtcp, + size_t rtcp_len, + uint8_t *srtcp, + size_t *srtcp_len, + size_t mki_index) +{ + const srtcp_hdr_t *hdr = (const srtcp_hdr_t *)rtcp; + size_t enc_start; /* pointer to start of encrypted portion */ + uint8_t *auth_start; /* pointer to start of auth. portion */ + uint8_t *trailer_p; /* pointer to start of trailer */ + uint32_t trailer; /* trailer value */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + uint8_t *auth_tag = NULL; /* location of auth_tag within packet */ + srtp_err_status_t status; + size_t tag_len; + srtp_stream_ctx_t *stream; + size_t prefix_len; + uint32_t seq_num; + srtp_session_keys_t *session_keys = NULL; + + /* check the packet length - it must at least contain a full header */ + if (rtcp_len < octets_in_rtcp_header) { + return srtp_err_status_bad_param; + } + + /* + * look up ssrc in srtp_stream list, and process the packet with + * the appropriate stream. if we haven't seen this stream before, + * there's only one key for this srtp_session, and the cipher + * supports key-sharing, then we assume that a new stream using + * that key has just started up + */ + stream = srtp_get_stream(ctx, hdr->ssrc); + if (stream == NULL) { + if (ctx->stream_template != NULL) { + srtp_stream_ctx_t *new_stream; + + /* allocate and initialize a new stream */ + status = + srtp_stream_clone(ctx->stream_template, hdr->ssrc, &new_stream); + if (status) { + return status; + } + + /* add new stream to the list */ + status = srtp_insert_or_dealloc_stream(ctx->stream_list, new_stream, + ctx->stream_template); + if (status) { + return status; + } + + /* set stream (the pointer used in this function) */ + stream = new_stream; + } else { + /* no template stream, so we return an error */ + return srtp_err_status_no_ctx; + } + } + + /* + * verify that stream is for sending traffic - this check will + * detect SSRC collisions, since a stream that appears in both + * srtp_protect() and srtp_unprotect() will fail this test in one of + * those functions. + */ + if (stream->direction != dir_srtp_sender) { + if (stream->direction == dir_unknown) { + stream->direction = dir_srtp_sender; + } else { + srtp_handle_event(ctx, stream, event_ssrc_collision); + } + } + + status = srtp_get_session_keys(stream, mki_index, &session_keys); + if (status) { + return status; + } + + /* + * Check if this is an AEAD stream (GCM mode). If so, then dispatch + * the request to our AEAD handler. + */ + if (session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_128 || + session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_256) { + return srtp_protect_rtcp_aead(stream, rtcp, rtcp_len, srtcp, srtcp_len, + session_keys); + } + + /* get tag length from stream context */ + tag_len = srtp_auth_get_tag_length(session_keys->rtcp_auth); + + /* + * set encryption start and encryption length + */ + enc_start = octets_in_rtcp_header; + enc_octet_len = rtcp_len - enc_start; + + /* check output length */ + if (*srtcp_len < + rtcp_len + sizeof(srtcp_trailer_t) + stream->mki_size + tag_len) { + return srtp_err_status_buffer_small; + } + + /* if not in place then need to copy rtcp header */ + if (rtcp != srtcp) { + memcpy(srtcp, rtcp, enc_start); + } + + /* all of the packet, except the header, gets encrypted */ + /* + * NOTE: hdr->length is not usable - it refers to only the first RTCP report + * in the compound packet! + */ + trailer_p = srtcp + enc_start + enc_octet_len; + + if (stream->rtcp_services & sec_serv_conf) { + trailer = htonl(SRTCP_E_BIT); /* set encrypt bit */ + } else { + /* 0 is network-order independant */ + trailer = 0x00000000; /* set encrypt bit */ + } + + if (stream->use_mki) { + srtp_inject_mki(srtcp + rtcp_len + sizeof(srtcp_trailer_t), + session_keys, stream->mki_size); + } + + /* + * set the auth_start and auth_tag pointers to the proper locations + * (note that srtpc *always* provides authentication, unlike srtp) + */ + /* Note: This would need to change for optional mikey data */ + auth_start = srtcp; + auth_tag = srtcp + rtcp_len + sizeof(srtcp_trailer_t) + stream->mki_size; + + /* + * check sequence number for overruns, and copy it into the packet + * if its value isn't too big + */ + status = srtp_rdb_increment(&stream->rtcp_rdb); + if (status) { + return status; + } + seq_num = srtp_rdb_get_value(&stream->rtcp_rdb); + trailer |= htonl(seq_num); + debug_print(mod_srtp, "srtcp index: %x", (unsigned int)seq_num); + + memcpy(trailer_p, &trailer, sizeof(trailer)); + + /* + * if we're using rindael counter mode, set nonce and seq + */ + if (session_keys->rtcp_cipher->type->id == SRTP_AES_ICM_128 || + session_keys->rtcp_cipher->type->id == SRTP_AES_ICM_192 || + session_keys->rtcp_cipher->type->id == SRTP_AES_ICM_256) { + v128_t iv; + + iv.v32[0] = 0; + iv.v32[1] = hdr->ssrc; /* still in network order! */ + iv.v32[2] = htonl(seq_num >> 16); + iv.v32[3] = htonl(seq_num << 16); + status = srtp_cipher_set_iv(session_keys->rtcp_cipher, (uint8_t *)&iv, + srtp_direction_encrypt); + + } else { + v128_t iv; + + /* otherwise, just set the index to seq_num */ + iv.v32[0] = 0; + iv.v32[1] = 0; + iv.v32[2] = 0; + iv.v32[3] = htonl(seq_num); + status = srtp_cipher_set_iv(session_keys->rtcp_cipher, (uint8_t *)&iv, + srtp_direction_encrypt); + } + if (status) { + return srtp_err_status_cipher_fail; + } + + /* + * if we're authenticating using a universal hash, put the keystream + * prefix into the authentication tag + */ + + /* if auth_start is non-null, then put keystream into tag */ + if (auth_start) { + /* put keystream prefix into auth_tag */ + prefix_len = srtp_auth_get_prefix_length(session_keys->rtcp_auth); + status = srtp_cipher_output(session_keys->rtcp_cipher, auth_tag, + &prefix_len); + + debug_print(mod_srtp, "keystream prefix: %s", + srtp_octet_string_hex_string(auth_tag, prefix_len)); + + if (status) { + return srtp_err_status_cipher_fail; + } + } + + /* if we're encrypting, exor keystream into the message */ + if (stream->rtcp_services & sec_serv_conf) { + status = srtp_cipher_encrypt(session_keys->rtcp_cipher, + rtcp + enc_start, enc_octet_len, + srtcp + enc_start, &enc_octet_len); + if (status) { + return srtp_err_status_cipher_fail; + } + } else if (rtcp != srtcp) { + /* if no encryption and not-inplace then need to copy rest of packet */ + memcpy(srtcp + enc_start, rtcp + enc_start, enc_octet_len); + } + + /* initialize auth func context */ + status = srtp_auth_start(session_keys->rtcp_auth); + if (status) { + return status; + } + + /* + * run auth func over packet (including trailer), and write the + * result at auth_tag + */ + status = srtp_auth_compute(session_keys->rtcp_auth, auth_start, + rtcp_len + sizeof(srtcp_trailer_t), auth_tag); + debug_print(mod_srtp, "srtcp auth tag: %s", + srtp_octet_string_hex_string(auth_tag, tag_len)); + if (status) { + return srtp_err_status_auth_fail; + } + + *srtcp_len = enc_start + enc_octet_len; + + /* increase the packet length by the length of the auth tag and seq_num*/ + *srtcp_len += (tag_len + sizeof(srtcp_trailer_t)); + + /* increase the packet by the mki_size */ + *srtcp_len += stream->mki_size; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_unprotect_rtcp(srtp_t ctx, + const uint8_t *srtcp, + size_t srtcp_len, + uint8_t *rtcp, + size_t *rtcp_len) +{ + const srtcp_hdr_t *hdr = (const srtcp_hdr_t *)srtcp; + size_t enc_start; /* pointer to start of encrypted portion */ + const uint8_t *auth_start; /* pointer to start of auth. portion */ + const uint8_t *trailer_p; /* pointer to start of trailer */ + uint32_t trailer; /* trailer value */ + size_t enc_octet_len = 0; /* number of octets in encrypted portion */ + const uint8_t *auth_tag = NULL; /* location of auth_tag within packet */ + uint8_t tmp_tag[SRTP_MAX_TAG_LEN]; + srtp_err_status_t status; + size_t auth_len; + size_t tag_len; + srtp_stream_ctx_t *stream; + size_t prefix_len; + uint32_t seq_num; + bool e_bit_in_packet; /* E-bit was found in the packet */ + bool sec_serv_confidentiality; /* whether confidentiality was requested */ + srtp_session_keys_t *session_keys = NULL; + + /* + * check that the length value is sane; we'll check again once we + * know the tag length, but we at least want to know that it is + * a positive value + */ + if (srtcp_len < octets_in_rtcp_header + sizeof(srtcp_trailer_t)) { + return srtp_err_status_bad_param; + } + + /* + * look up ssrc in srtp_stream list, and process the packet with + * the appropriate stream. if we haven't seen this stream before, + * there's only one key for this srtp_session, and the cipher + * supports key-sharing, then we assume that a new stream using + * that key has just started up + */ + stream = srtp_get_stream(ctx, hdr->ssrc); + if (stream == NULL) { + if (ctx->stream_template != NULL) { + stream = ctx->stream_template; + + debug_print(mod_srtp, + "srtcp using provisional stream (SSRC: 0x%08x)", + (unsigned int)ntohl(hdr->ssrc)); + } else { + /* no template stream, so we return an error */ + return srtp_err_status_no_ctx; + } + } + + /* + * Determine if MKI is being used and what session keys should be used + */ + status = srtp_get_session_keys_for_rtcp_packet(stream, srtcp, srtcp_len, + &session_keys); + if (status) { + return status; + } + + /* get tag length from stream context */ + tag_len = srtp_auth_get_tag_length(session_keys->rtcp_auth); + + /* check the packet length - it must contain at least a full RTCP + header, an auth tag (if applicable), and the SRTCP encrypted flag + and 31-bit index value */ + if (srtcp_len < octets_in_rtcp_header + sizeof(srtcp_trailer_t) + + stream->mki_size + tag_len) { + return srtp_err_status_bad_param; + } + + /* + * Check if this is an AEAD stream (GCM mode). If so, then dispatch + * the request to our AEAD handler. + */ + if (session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_128 || + session_keys->rtp_cipher->algorithm == SRTP_AES_GCM_256) { + return srtp_unprotect_rtcp_aead(ctx, stream, srtcp, srtcp_len, rtcp, + rtcp_len, session_keys); + } + + sec_serv_confidentiality = stream->rtcp_services == sec_serv_conf || + stream->rtcp_services == sec_serv_conf_and_auth; + + /* + * set encryption start, encryption length, and trailer + */ + enc_start = octets_in_rtcp_header; + enc_octet_len = srtcp_len - (octets_in_rtcp_header + tag_len + + stream->mki_size + sizeof(srtcp_trailer_t)); + /* + *index & E (encryption) bit follow normal data. hdr->len is the number of + * words (32-bit) in the normal packet minus 1 + */ + /* This should point trailer to the word past the end of the normal data. */ + /* This would need to be modified for optional mikey data */ + trailer_p = srtcp + srtcp_len - + (tag_len + stream->mki_size + sizeof(srtcp_trailer_t)); + memcpy(&trailer, trailer_p, sizeof(trailer)); + + e_bit_in_packet = (*trailer_p & SRTCP_E_BYTE_BIT) == SRTCP_E_BYTE_BIT; + if (e_bit_in_packet != sec_serv_confidentiality) { + return srtp_err_status_cant_check; + } + + /* + * set the auth_start and auth_tag pointers to the proper locations + * (note that srtcp *always* uses authentication, unlike srtp) + */ + auth_start = srtcp; + + /* + * The location of the auth tag in the packet needs to know MKI + * could be present. The data needed to calculate the Auth tag + * must not include the MKI + */ + auth_len = srtcp_len - tag_len - stream->mki_size; + auth_tag = srtcp + auth_len + stream->mki_size; + + /* + * check the sequence number for replays + */ + /* this is easier than dealing with bitfield access */ + seq_num = ntohl(trailer) & SRTCP_INDEX_MASK; + debug_print(mod_srtp, "srtcp index: %x", (unsigned int)seq_num); + status = srtp_rdb_check(&stream->rtcp_rdb, seq_num); + if (status) { + return status; + } + + /* + * if we're using aes counter mode, set nonce and seq + */ + if (session_keys->rtcp_cipher->type->id == SRTP_AES_ICM_128 || + session_keys->rtcp_cipher->type->id == SRTP_AES_ICM_192 || + session_keys->rtcp_cipher->type->id == SRTP_AES_ICM_256) { + v128_t iv; + + iv.v32[0] = 0; + iv.v32[1] = hdr->ssrc; /* still in network order! */ + iv.v32[2] = htonl(seq_num >> 16); + iv.v32[3] = htonl(seq_num << 16); + status = srtp_cipher_set_iv(session_keys->rtcp_cipher, (uint8_t *)&iv, + srtp_direction_decrypt); + + } else { + v128_t iv; + + /* otherwise, just set the index to seq_num */ + iv.v32[0] = 0; + iv.v32[1] = 0; + iv.v32[2] = 0; + iv.v32[3] = htonl(seq_num); + status = srtp_cipher_set_iv(session_keys->rtcp_cipher, (uint8_t *)&iv, + srtp_direction_decrypt); + } + if (status) { + return srtp_err_status_cipher_fail; + } + + /* + * if we're authenticating using a universal hash, put the keystream + * prefix into the authentication tag + */ + prefix_len = srtp_auth_get_prefix_length(session_keys->rtcp_auth); + if (prefix_len) { + status = + srtp_cipher_output(session_keys->rtcp_cipher, tmp_tag, &prefix_len); + debug_print(mod_srtp, "keystream prefix: %s", + srtp_octet_string_hex_string(tmp_tag, prefix_len)); + if (status) { + return srtp_err_status_cipher_fail; + } + } + + /* initialize auth func context */ + status = srtp_auth_start(session_keys->rtcp_auth); + if (status) { + return status; + } + + /* run auth func over packet, put result into tmp_tag */ + status = srtp_auth_compute(session_keys->rtcp_auth, auth_start, auth_len, + tmp_tag); + debug_print(mod_srtp, "srtcp computed tag: %s", + srtp_octet_string_hex_string(tmp_tag, tag_len)); + if (status) { + return srtp_err_status_auth_fail; + } + + /* compare the tag just computed with the one in the packet */ + debug_print(mod_srtp, "srtcp tag from packet: %s", + srtp_octet_string_hex_string(auth_tag, tag_len)); + if (!srtp_octet_string_equal(tmp_tag, auth_tag, tag_len)) { + return srtp_err_status_auth_fail; + } + + /* check output length */ + if (*rtcp_len < + srtcp_len - sizeof(srtcp_trailer_t) - stream->mki_size - tag_len) { + return srtp_err_status_buffer_small; + } + + /* if not inplace need to copy rtcp header */ + if (srtcp != rtcp) { + memcpy(rtcp, srtcp, enc_start); + } + + /* if we're decrypting, exor keystream into the message */ + if (sec_serv_confidentiality) { + status = srtp_cipher_decrypt(session_keys->rtcp_cipher, + srtcp + enc_start, enc_octet_len, + rtcp + enc_start, &enc_octet_len); + if (status) { + return srtp_err_status_cipher_fail; + } + } else if (srtcp != rtcp) { + /* if no encryption and not-inplace then need to copy rest of packet */ + memcpy(rtcp + enc_start, srtcp + enc_start, enc_octet_len); + } + + *rtcp_len = srtcp_len; + + /* decrease the packet length by the length of the auth tag and seq_num */ + *rtcp_len -= (tag_len + sizeof(srtcp_trailer_t)); + + /* decrease the packet length by the length of the mki_size */ + *rtcp_len -= stream->mki_size; + + /* + * verify that stream is for received traffic - this check will + * detect SSRC collisions, since a stream that appears in both + * srtp_protect() and srtp_unprotect() will fail this test in one of + * those functions. + * + * we do this check *after* the authentication check, so that the + * latter check will catch any attempts to fool us into thinking + * that we've got a collision + */ + if (stream->direction != dir_srtp_receiver) { + if (stream->direction == dir_unknown) { + stream->direction = dir_srtp_receiver; + } else { + srtp_handle_event(ctx, stream, event_ssrc_collision); + } + } + + /* + * if the stream is a 'provisional' one, in which the template context + * is used, then we need to allocate a new stream at this point, since + * the authentication passed + */ + if (stream == ctx->stream_template) { + srtp_stream_ctx_t *new_stream; + + /* + * allocate and initialize a new stream + * + * note that we indicate failure if we can't allocate the new + * stream, and some implementations will want to not return + * failure here + */ + status = + srtp_stream_clone(ctx->stream_template, hdr->ssrc, &new_stream); + if (status) { + return status; + } + + /* add new stream to the list */ + status = srtp_insert_or_dealloc_stream(ctx->stream_list, new_stream, + ctx->stream_template); + if (status) { + return status; + } + + /* set stream (the pointer used in this function) */ + stream = new_stream; + } + + /* we've passed the authentication check, so add seq_num to the rdb */ + srtp_rdb_add_index(&stream->rtcp_rdb, seq_num); + + return srtp_err_status_ok; +} + +/* + * user data within srtp_t context + */ + +void srtp_set_user_data(srtp_t ctx, void *data) +{ + ctx->user_data = data; +} + +void *srtp_get_user_data(srtp_t ctx) +{ + return ctx->user_data; +} + +srtp_err_status_t srtp_crypto_policy_set_from_profile_for_rtp( + srtp_crypto_policy_t *policy, + srtp_profile_t profile) +{ + /* set SRTP policy from the SRTP profile in the key set */ + switch (profile) { + case srtp_profile_aes128_cm_sha1_80: + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_aes128_cm_sha1_32: + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(policy); + break; + case srtp_profile_null_sha1_80: + srtp_crypto_policy_set_null_cipher_hmac_sha1_80(policy); + break; +#ifdef GCM + case srtp_profile_aead_aes_128_gcm: + srtp_crypto_policy_set_aes_gcm_128_16_auth(policy); + break; + case srtp_profile_aead_aes_256_gcm: + srtp_crypto_policy_set_aes_gcm_256_16_auth(policy); + break; +#endif + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: + default: + return srtp_err_status_bad_param; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_crypto_policy_set_from_profile_for_rtcp( + srtp_crypto_policy_t *policy, + srtp_profile_t profile) +{ + /* set SRTP policy from the SRTP profile in the key set */ + switch (profile) { + case srtp_profile_aes128_cm_sha1_80: + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_aes128_cm_sha1_32: + /* We do not honor the 32-bit auth tag request since + * this is not compliant with RFC 3711 */ + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_null_sha1_80: + srtp_crypto_policy_set_null_cipher_hmac_sha1_80(policy); + break; +#ifdef GCM + case srtp_profile_aead_aes_128_gcm: + srtp_crypto_policy_set_aes_gcm_128_16_auth(policy); + break; + case srtp_profile_aead_aes_256_gcm: + srtp_crypto_policy_set_aes_gcm_256_16_auth(policy); + break; +#endif + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: + default: + return srtp_err_status_bad_param; + } + + return srtp_err_status_ok; +} + +void srtp_append_salt_to_key(uint8_t *key, + size_t bytes_in_key, + uint8_t *salt, + size_t bytes_in_salt) +{ + memcpy(key + bytes_in_key, salt, bytes_in_salt); +} + +size_t srtp_profile_get_master_key_length(srtp_profile_t profile) +{ + switch (profile) { + case srtp_profile_aes128_cm_sha1_80: + return SRTP_AES_128_KEY_LEN; + break; + case srtp_profile_aes128_cm_sha1_32: + return SRTP_AES_128_KEY_LEN; + break; + case srtp_profile_null_sha1_80: + return SRTP_AES_128_KEY_LEN; + break; + case srtp_profile_aead_aes_128_gcm: + return SRTP_AES_128_KEY_LEN; + break; + case srtp_profile_aead_aes_256_gcm: + return SRTP_AES_256_KEY_LEN; + break; + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: + default: + return 0; /* indicate error by returning a zero */ + } +} + +size_t srtp_profile_get_master_salt_length(srtp_profile_t profile) +{ + switch (profile) { + case srtp_profile_aes128_cm_sha1_80: + return SRTP_SALT_LEN; + break; + case srtp_profile_aes128_cm_sha1_32: + return SRTP_SALT_LEN; + break; + case srtp_profile_null_sha1_80: + return SRTP_SALT_LEN; + break; + case srtp_profile_aead_aes_128_gcm: + return SRTP_AEAD_SALT_LEN; + break; + case srtp_profile_aead_aes_256_gcm: + return SRTP_AEAD_SALT_LEN; + break; + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: + default: + return 0; /* indicate error by returning a zero */ + } +} + +srtp_err_status_t stream_get_protect_trailer_length(srtp_stream_ctx_t *stream, + bool is_rtp, + size_t mki_index, + size_t *length) +{ + srtp_session_keys_t *session_key; + + *length = 0; + + if (stream->use_mki) { + if (mki_index >= stream->num_master_keys) { + return srtp_err_status_bad_mki; + } + session_key = &stream->session_keys[mki_index]; + + *length += stream->mki_size; + + } else { + session_key = &stream->session_keys[0]; + } + if (is_rtp) { + *length += srtp_auth_get_tag_length(session_key->rtp_auth); + } else { + *length += srtp_auth_get_tag_length(session_key->rtcp_auth); + *length += sizeof(srtcp_trailer_t); + } + + return srtp_err_status_ok; +} + +struct get_protect_trailer_length_data { + bool found_stream; /* whether at least one matching stream was found */ + size_t length; /* maximum trailer length found so far */ + bool is_rtp; + size_t mki_index; +}; + +static bool get_protect_trailer_length_cb(srtp_stream_t stream, void *raw_data) +{ + struct get_protect_trailer_length_data *data = + (struct get_protect_trailer_length_data *)raw_data; + size_t temp_length; + + if (stream_get_protect_trailer_length(stream, data->is_rtp, data->mki_index, + &temp_length) == srtp_err_status_ok) { + data->found_stream = true; + if (temp_length > data->length) { + data->length = temp_length; + } + } + + return true; +} + +srtp_err_status_t get_protect_trailer_length(srtp_t session, + bool is_rtp, + size_t mki_index, + size_t *length) +{ + srtp_stream_ctx_t *stream; + struct get_protect_trailer_length_data data = { false, 0, is_rtp, + mki_index }; + + if (session == NULL) { + return srtp_err_status_bad_param; + } + + stream = session->stream_template; + + if (stream != NULL) { + data.found_stream = true; + stream_get_protect_trailer_length(stream, is_rtp, mki_index, + &data.length); + } + + srtp_stream_list_for_each(session->stream_list, + get_protect_trailer_length_cb, &data); + + if (!data.found_stream) { + return srtp_err_status_bad_param; + } + + *length = data.length; + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_get_protect_trailer_length(srtp_t session, + size_t mki_index, + size_t *length) +{ + return get_protect_trailer_length(session, true, mki_index, length); +} + +srtp_err_status_t srtp_get_protect_rtcp_trailer_length(srtp_t session, + size_t mki_index, + size_t *length) +{ + return get_protect_trailer_length(session, false, mki_index, length); +} + +/* + * SRTP debug interface + */ +srtp_err_status_t srtp_set_debug_module(const char *mod_name, bool v) +{ + return srtp_crypto_kernel_set_debug_module(mod_name, v); +} + +srtp_err_status_t srtp_list_debug_modules(void) +{ + return srtp_crypto_kernel_list_debug_modules(); +} + +/* + * srtp_log_handler is a global variable holding a pointer to the + * log handler function; this function is called for any log + * output. + */ + +static srtp_log_handler_func_t *srtp_log_handler = NULL; +static void *srtp_log_handler_data = NULL; + +static void srtp_err_handler(srtp_err_reporting_level_t level, const char *msg) +{ + if (srtp_log_handler) { + srtp_log_level_t log_level = srtp_log_level_error; + switch (level) { + case srtp_err_level_error: + log_level = srtp_log_level_error; + break; + case srtp_err_level_warning: + log_level = srtp_log_level_warning; + break; + case srtp_err_level_info: + log_level = srtp_log_level_info; + break; + case srtp_err_level_debug: + log_level = srtp_log_level_debug; + break; + } + + srtp_log_handler(log_level, msg, srtp_log_handler_data); + } +} + +srtp_err_status_t srtp_install_log_handler(srtp_log_handler_func_t func, + void *data) +{ + /* + * note that we accept NULL arguments intentionally - calling this + * function with a NULL arguments removes a log handler that's + * been previously installed + */ + + if (srtp_log_handler) { + srtp_install_err_report_handler(NULL); + } + srtp_log_handler = func; + srtp_log_handler_data = data; + if (srtp_log_handler) { + srtp_install_err_report_handler(srtp_err_handler); + } + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_set_roc(srtp_t session, + uint32_t ssrc, + uint32_t roc) +{ + srtp_stream_t stream; + + stream = srtp_get_stream(session, htonl(ssrc)); + if (stream == NULL) { + return srtp_err_status_bad_param; + } + + stream->pending_roc = roc; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_get_roc(srtp_t session, + uint32_t ssrc, + uint32_t *roc) +{ + srtp_stream_t stream; + + stream = srtp_get_stream(session, htonl(ssrc)); + if (stream == NULL) { + return srtp_err_status_bad_param; + } + + *roc = srtp_rdbx_get_roc(&stream->rtp_rdbx); + + return srtp_err_status_ok; +} + +#ifndef SRTP_NO_STREAM_LIST + +#define INITIAL_STREAM_INDEX_SIZE 2 + +typedef struct list_entry { + uint32_t ssrc; + srtp_stream_t stream; +} list_entry; + +typedef struct srtp_stream_list_ctx_t_ { + list_entry *entries; + size_t capacity; + size_t size; +} srtp_stream_list_ctx_t_; + +srtp_err_status_t srtp_stream_list_alloc(srtp_stream_list_t *list_ptr) +{ + srtp_stream_list_t list = + srtp_crypto_alloc(sizeof(srtp_stream_list_ctx_t_)); + if (list == NULL) { + return srtp_err_status_alloc_fail; + } + + list->entries = + srtp_crypto_alloc(sizeof(list_entry) * INITIAL_STREAM_INDEX_SIZE); + if (list->entries == NULL) { + srtp_crypto_free(list); + return srtp_err_status_alloc_fail; + } + + list->capacity = INITIAL_STREAM_INDEX_SIZE; + list->size = 0; + + *list_ptr = list; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_list_dealloc(srtp_stream_list_t list) +{ + /* list must be empty */ + if (list->size != 0) { + return srtp_err_status_fail; + } + + srtp_crypto_free(list->entries); + srtp_crypto_free(list); + + return srtp_err_status_ok; +} + +/* + * inserting a new entry in the list may require reallocating memory in order + * to keep all the items in a contiguous memory block. + */ +srtp_err_status_t srtp_stream_list_insert(srtp_stream_list_t list, + srtp_stream_t stream) +{ + /* + * there is no space to hold the new entry in the entries buffer, + * double the size of the buffer. + */ + if (list->size == list->capacity) { + size_t new_capacity = list->capacity * 2; + + // Check for capacity overflow. + if (new_capacity < list->capacity || + new_capacity > SIZE_MAX / sizeof(list_entry)) { + return srtp_err_status_alloc_fail; + } + + list_entry *new_entries = + srtp_crypto_alloc(sizeof(list_entry) * new_capacity); + if (new_entries == NULL) { + return srtp_err_status_alloc_fail; + } + + // Copy previous entries into the new buffer. + memcpy(new_entries, list->entries, sizeof(list_entry) * list->capacity); + + // Release previous entries. + srtp_crypto_free(list->entries); + + // Assign new entries to the list. + list->entries = new_entries; + + // Update list capacity. + list->capacity = new_capacity; + } + + // fill the first available entry + size_t next_index = list->size; + list->entries[next_index].ssrc = stream->ssrc; + list->entries[next_index].stream = stream; + + // update size value + list->size++; + + return srtp_err_status_ok; +} + +/* + * removing an entry from the list performs a memory move of the following + * entries one position back in order to keep all the entries in the buffer + * contiguous. + */ +void srtp_stream_list_remove(srtp_stream_list_t list, + srtp_stream_t stream_to_remove) +{ + size_t end = list->size; + + for (size_t i = 0; i < end; i++) { + if (list->entries[i].ssrc == stream_to_remove->ssrc) { + size_t entries_to_move = list->size - i - 1; + memmove(&list->entries[i], &list->entries[i + 1], + sizeof(list_entry) * entries_to_move); + list->size--; + + break; + } + } +} + +srtp_stream_t srtp_stream_list_get(srtp_stream_list_t list, uint32_t ssrc) +{ + size_t end = list->size; + + list_entry *entries = list->entries; + + for (size_t i = 0; i < end; i++) { + if (entries[i].ssrc == ssrc) { + return entries[i].stream; + } + } + + return NULL; +} + +void srtp_stream_list_for_each(srtp_stream_list_t list, + bool (*callback)(srtp_stream_t, void *), + void *data) +{ + list_entry *entries = list->entries; + + size_t size = list->size; + + /* + * the second statement of the expression needs to be recalculated on each + * iteration as the available number of entries may change within the given + * callback. + * Ie: in case the callback calls srtp_stream_list_remove(). + */ + for (size_t i = 0; i < list->size;) { + if (!callback(entries[i].stream, data)) { + break; + } + + // the entry was not removed, increase the counter. + if (size == list->size) { + ++i; + } + + size = list->size; + } +} + +#endif diff --git a/src/libs/libsrtp/test/cutest.h b/src/libs/libsrtp/test/cutest.h new file mode 100644 index 00000000..d6ec1b8c --- /dev/null +++ b/src/libs/libsrtp/test/cutest.h @@ -0,0 +1,726 @@ +/* + * CUTest -- C/C++ Unit Test facility + * <http://github.com/mity/cutest> + * + * Copyright (c) 2013-2017 Martin Mitas + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef CUTEST_H__ +#define CUTEST_H__ + +/************************ + *** Public interface *** + ************************/ + +/* By default, <cutest.h> provides the main program entry point (function + * main()). However, if the test suite is composed of multiple source files + * which include <cutest.h>, then this causes a problem of multiple main() + * definitions. To avoid this problem, #define macro TEST_NO_MAIN in all + * compilation units but one. + */ + +/* Macro to specify list of unit tests in the suite. + * The unit test implementation MUST provide list of unit tests it implements + * with this macro: + * + * TEST_LIST = { + * { "test1_name", test1_func_ptr }, + * { "test2_name", test2_func_ptr }, + * ... + * { 0 } + * }; + * + * The list specifies names of each test (must be unique) and pointer to + * a function implementing it. The function does not take any arguments + * and has no return values, i.e. every test function has tp be compatible + * with this prototype: + * + * void test_func(void); + */ +#define TEST_LIST const struct test__ test_list__[] + +/* Macros for testing whether an unit test succeeds or fails. These macros + * can be used arbitrarily in functions implementing the unit tests. + * + * If any condition fails throughout execution of a test, the test fails. + * + * TEST_CHECK takes only one argument (the condition), TEST_CHECK_ allows + * also to specify an error message to print out if the condition fails. + * (It expects printf-like format string and its parameters). The macros + * return non-zero (condition passes) or 0 (condition fails). + * + * That can be useful when more conditions should be checked only if some + * preceding condition passes, as illustrated in this code snippet: + * + * SomeStruct* ptr = allocate_some_struct(); + * if(TEST_CHECK(ptr != NULL)) { + * TEST_CHECK(ptr->member1 < 100); + * TEST_CHECK(ptr->member2 > 200); + * } + */ +#define TEST_CHECK_(cond, ...) \ + test_check__((cond), __FILE__, __LINE__, __VA_ARGS__) +#define TEST_CHECK(cond) test_check__((cond), __FILE__, __LINE__, "%s", #cond) + +/********************** + *** Implementation *** + **********************/ + +/* The unit test files should not rely on anything below. */ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if defined(unix) || defined(__unix__) || defined(__unix) || defined(__APPLE__) +#define CUTEST_UNIX__ 1 +#include <errno.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <signal.h> +#endif + +#if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__) +#define CUTEST_WIN__ 1 +#include <windows.h> +#include <io.h> +#endif + +#ifdef __cplusplus +#include <exception> +#endif + +/* Note our global private identifiers end with '__' to mitigate risk of clash + * with the unit tests implementation. */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct test__ { + const char *name; + void (*func)(void); +}; + +extern const struct test__ test_list__[]; + +int test_check__(int cond, const char *file, int line, const char *fmt, ...); + +#ifndef TEST_NO_MAIN + +static char *test_argv0__ = NULL; +static int test_count__ = 0; +static int test_no_exec__ = 0; +static int test_no_summary__ = 0; +static int test_skip_mode__ = 0; + +static int test_stat_failed_units__ = 0; +static int test_stat_run_units__ = 0; + +static const struct test__ *test_current_unit__ = NULL; +static int test_current_already_logged__ = 0; +static int test_verbose_level__ = 2; +static int test_current_failures__ = 0; +static int test_colorize__ = 0; + +#define CUTEST_COLOR_DEFAULT__ 0 +#define CUTEST_COLOR_GREEN__ 1 +#define CUTEST_COLOR_RED__ 2 +#define CUTEST_COLOR_DEFAULT_INTENSIVE__ 3 +#define CUTEST_COLOR_GREEN_INTENSIVE__ 4 +#define CUTEST_COLOR_RED_INTENSIVE__ 5 + +static size_t test_print_in_color__(int color, const char *fmt, ...) +{ + va_list args; + char buffer[256]; + size_t n; + + va_start(args, fmt); + vsnprintf(buffer, sizeof(buffer), fmt, args); + va_end(args); + buffer[sizeof(buffer) - 1] = '\0'; + + if (!test_colorize__) { + return printf("%s", buffer); + } + +#if defined CUTEST_UNIX__ + { + const char *col_str; + switch (color) { + case CUTEST_COLOR_GREEN__: + col_str = "\033[0;32m"; + break; + case CUTEST_COLOR_RED__: + col_str = "\033[0;31m"; + break; + case CUTEST_COLOR_GREEN_INTENSIVE__: + col_str = "\033[1;32m"; + break; + case CUTEST_COLOR_RED_INTENSIVE__: + col_str = "\033[1;30m"; + break; + case CUTEST_COLOR_DEFAULT_INTENSIVE__: + col_str = "\033[1m"; + break; + default: + col_str = "\033[0m"; + break; + } + printf("%s", col_str); + n = printf("%s", buffer); + printf("\033[0m"); + return n; + } +#elif defined CUTEST_WIN__ + { + HANDLE h; + CONSOLE_SCREEN_BUFFER_INFO info; + WORD attr; + + h = GetStdHandle(STD_OUTPUT_HANDLE); + GetConsoleScreenBufferInfo(h, &info); + + switch (color) { + case CUTEST_COLOR_GREEN__: + attr = FOREGROUND_GREEN; + break; + case CUTEST_COLOR_RED__: + attr = FOREGROUND_RED; + break; + case CUTEST_COLOR_GREEN_INTENSIVE__: + attr = FOREGROUND_GREEN | FOREGROUND_INTENSITY; + break; + case CUTEST_COLOR_RED_INTENSIVE__: + attr = FOREGROUND_RED | FOREGROUND_INTENSITY; + break; + case CUTEST_COLOR_DEFAULT_INTENSIVE__: + attr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | + FOREGROUND_INTENSITY; + break; + default: + attr = 0; + break; + } + if (attr != 0) { + SetConsoleTextAttribute(h, attr); + } + n = printf("%s", buffer); + SetConsoleTextAttribute(h, info.wAttributes); + return n; + } +#else + n = printf("%s", buffer); + return n; +#endif +} + +int test_check__(int cond, const char *file, int line, const char *fmt, ...) +{ + const char *result_str; + int result_color; + int verbose_level; + + if (cond) { + result_str = "ok"; + result_color = CUTEST_COLOR_GREEN__; + verbose_level = 3; + } else { + if (!test_current_already_logged__ && test_current_unit__ != NULL) { + printf("[ "); + test_print_in_color__(CUTEST_COLOR_RED_INTENSIVE__, "FAILED"); + printf(" ]\n"); + } + result_str = "failed"; + result_color = CUTEST_COLOR_RED__; + verbose_level = 2; + test_current_failures__++; + test_current_already_logged__++; + } + + if (test_verbose_level__ >= verbose_level) { + va_list args; + + printf(" "); + + if (file != NULL) { + printf("%s:%d: Check ", file, line); + } + + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); + + printf("... "); + test_print_in_color__(result_color, result_str); + printf("\n"); + test_current_already_logged__++; + } + + return (cond != 0); +} + +static void test_list_names__(void) +{ + const struct test__ *test; + + printf("Unit tests:\n"); + for (test = &test_list__[0]; test->func != NULL; test++) { + printf(" %s\n", test->name); + } +} + +static const struct test__ *test_by_name__(const char *name) +{ + const struct test__ *test; + + for (test = &test_list__[0]; test->func != NULL; test++) { + if (strcmp(test->name, name) == 0) { + return test; + } + } + + return NULL; +} + +/* Call directly the given test unit function. */ +static int test_do_run__(const struct test__ *test) +{ + test_current_unit__ = test; + test_current_failures__ = 0; + test_current_already_logged__ = 0; + + if (test_verbose_level__ >= 3) { + test_print_in_color__(CUTEST_COLOR_DEFAULT_INTENSIVE__, "Test %s:\n", + test->name); + test_current_already_logged__++; + } else if (test_verbose_level__ >= 1) { + size_t n; + char spaces[32]; + + n = test_print_in_color__(CUTEST_COLOR_DEFAULT_INTENSIVE__, + "Test %s... ", test->name); + memset(spaces, ' ', sizeof(spaces)); + if (n < sizeof(spaces)) { + printf("%.*s", (int)(sizeof(spaces) - n), spaces); + } + } else { + test_current_already_logged__ = 1; + } + +#ifdef __cplusplus + try { +#endif + + /* This is good to do for case the test unit e.g. crashes. */ + fflush(stdout); + fflush(stderr); + + test->func(); + +#ifdef __cplusplus + } catch (std::exception &e) { + const char *what = e.what(); + if (what != NULL) { + test_check__(0, NULL, 0, "Threw std::exception: %s", what); + } else { + test_check__(0, NULL, 0, "Threw std::exception"); + } + } catch (...) { + test_check__(0, NULL, 0, "Threw an exception"); + } +#endif + + if (test_verbose_level__ >= 3) { + switch (test_current_failures__) { + case 0: + test_print_in_color__(CUTEST_COLOR_GREEN_INTENSIVE__, + " All conditions have passed.\n\n"); + break; + case 1: + test_print_in_color__(CUTEST_COLOR_RED_INTENSIVE__, + " One condition has FAILED.\n\n"); + break; + default: + test_print_in_color__(CUTEST_COLOR_RED_INTENSIVE__, + " %d conditions have FAILED.\n\n", + test_current_failures__); + break; + } + } else if (test_verbose_level__ >= 1 && test_current_failures__ == 0) { + printf("[ "); + test_print_in_color__(CUTEST_COLOR_GREEN_INTENSIVE__, "OK"); + printf(" ]\n"); + } + + test_current_unit__ = NULL; + return (test_current_failures__ == 0) ? 0 : -1; +} + +#if defined(CUTEST_UNIX__) || defined(CUTEST_WIN__) +/* Called if anything goes bad in cutest, or if the unit test ends in other + * way then by normal returning from its function (e.g. exception or some + * abnormal child process termination). */ +static void test_error__(const char *fmt, ...) +{ + va_list args; + + if (test_verbose_level__ == 0) { + return; + } + + if (test_verbose_level__ <= 2 && !test_current_already_logged__ && + test_current_unit__ != NULL) { + printf("[ "); + test_print_in_color__(CUTEST_COLOR_RED_INTENSIVE__, "FAILED"); + printf(" ]\n"); + } + + if (test_verbose_level__ >= 2) { + test_print_in_color__(CUTEST_COLOR_RED_INTENSIVE__, " Error: "); + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); + printf("\n"); + } +} +#endif + +/* Trigger the unit test. If possible (and not suppressed) it starts a child + * process who calls test_do_run__(), otherwise it calls test_do_run__() + * directly. */ +static void test_run__(const struct test__ *test) +{ + int failed = 1; + + test_current_unit__ = test; + test_current_already_logged__ = 0; + + if (!test_no_exec__) { +#if defined(CUTEST_UNIX__) + + pid_t pid; + int exit_code; + + pid = fork(); + if (pid == (pid_t)-1) { + test_error__("Cannot fork. %s [%d]", strerror(errno), errno); + failed = 1; + } else if (pid == 0) { + /* Child: Do the test. */ + failed = (test_do_run__(test) != 0); + exit(failed ? 1 : 0); + } else { + /* Parent: Wait until child terminates and analyze its exit code. */ + waitpid(pid, &exit_code, 0); + if (WIFEXITED(exit_code)) { + switch (WEXITSTATUS(exit_code)) { + case 0: + failed = 0; + break; /* test has passed. */ + case 1: /* noop */ + break; /* "normal" failure. */ + default: + test_error__("Unexpected exit code [%d]", + WEXITSTATUS(exit_code)); + } + } else if (WIFSIGNALED(exit_code)) { + char tmp[32]; + const char *signame; + switch (WTERMSIG(exit_code)) { + case SIGINT: + signame = "SIGINT"; + break; + case SIGHUP: + signame = "SIGHUP"; + break; + case SIGQUIT: + signame = "SIGQUIT"; + break; + case SIGABRT: + signame = "SIGABRT"; + break; + case SIGKILL: + signame = "SIGKILL"; + break; + case SIGSEGV: + signame = "SIGSEGV"; + break; + case SIGILL: + signame = "SIGILL"; + break; + case SIGTERM: + signame = "SIGTERM"; + break; + default: + snprintf(tmp, sizeof(tmp), "signal %d", + WTERMSIG(exit_code)); + signame = tmp; + break; + } + test_error__("Test interrupted by %s", signame); + } else { + test_error__("Test ended in an unexpected way [%d]", exit_code); + } + } + +#elif defined(CUTEST_WIN__) + + char buffer[512] = { 0 }; + STARTUPINFOA startupInfo = { 0 }; + PROCESS_INFORMATION processInfo; + DWORD exitCode; + + /* Windows has no fork(). So we propagate all info into the child + * through a command line arguments. */ + _snprintf(buffer, sizeof(buffer) - 1, + "%s --no-exec --no-summary --verbose=%d --color=%s -- \"%s\"", + test_argv0__, test_verbose_level__, + test_colorize__ ? "always" : "never", test->name); + startupInfo.cb = sizeof(STARTUPINFO); + if (CreateProcessA(NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, + &startupInfo, &processInfo)) { + WaitForSingleObject(processInfo.hProcess, INFINITE); + GetExitCodeProcess(processInfo.hProcess, &exitCode); + CloseHandle(processInfo.hThread); + CloseHandle(processInfo.hProcess); + failed = (exitCode != 0); + } else { + test_error__("Cannot create unit test subprocess [%ld].", + GetLastError()); + failed = 1; + } + +#else + + /* A platform where we don't know how to run child process. */ + failed = (test_do_run__(test) != 0); + +#endif + + } else { + /* Child processes suppressed through --no-exec. */ + failed = (test_do_run__(test) != 0); + } + + test_current_unit__ = NULL; + + test_stat_run_units__++; + if (failed) { + test_stat_failed_units__++; + } +} + +#if defined(CUTEST_WIN__) +/* Callback for SEH events. */ +static LONG CALLBACK test_exception_filter__(EXCEPTION_POINTERS *ptrs) +{ + test_error__("Unhandled SEH exception %08lx at %p.", + ptrs->ExceptionRecord->ExceptionCode, + ptrs->ExceptionRecord->ExceptionAddress); + fflush(stdout); + fflush(stderr); + return EXCEPTION_EXECUTE_HANDLER; +} +#endif + +static void test_help__(void) +{ + printf("Usage: %s [options] [test...]\n", test_argv0__); + printf("Run the specified unit tests; or if the option '--skip' is used, " + "run all\n"); + printf("tests in the suite but those listed. By default, if no tests are " + "specified\n"); + printf("on the command line, all unit tests in the suite are run.\n"); + printf("\n"); + printf("Options:\n"); + printf( + " -s, --skip Execute all unit tests but the listed ones\n"); + printf(" --no-exec Do not execute unit tests as child " + "processes\n"); + printf( + " --no-summary Suppress printing of test results summary\n"); + printf(" -l, --list List unit tests in the suite and exit\n"); + printf(" -v, --verbose Enable more verbose output\n"); + printf(" --verbose=LEVEL Set verbose level to LEVEL:\n"); + printf(" 0 ... Be silent\n"); + printf(" 1 ... Output one line per test (and " + "summary)\n"); + printf(" 2 ... As 1 and failed conditions (this " + "is default)\n"); + printf(" 3 ... As 1 and all conditions (and " + "extended summary)\n"); + printf(" --color=WHEN Enable colorized output (WHEN is one of " + "'auto', 'always', 'never')\n"); + printf(" -h, --help Display this help and exit\n"); + printf("\n"); + test_list_names__(); +} + +int main(int argc, char **argv) +{ + const struct test__ **tests = NULL; + int i, j, n = 0; + int seen_double_dash = 0; + + test_argv0__ = argv[0]; + +#if defined CUTEST_UNIX__ + test_colorize__ = isatty(STDOUT_FILENO); +#elif defined CUTEST_WIN__ + test_colorize__ = _isatty(_fileno(stdout)); +#else + test_colorize__ = 0; +#endif + + /* Parse options */ + for (i = 1; i < argc; i++) { + if (seen_double_dash || argv[i][0] != '-') { + tests = (const struct test__ **)realloc( + (void *)tests, (n + 1) * sizeof(const struct test__ *)); + if (tests == NULL) { + fprintf(stderr, "Out of memory.\n"); + exit(2); + } + tests[n] = test_by_name__(argv[i]); + if (tests[n] == NULL) { + fprintf(stderr, "%s: Unrecognized unit test '%s'\n", argv[0], + argv[i]); + fprintf(stderr, "Try '%s --list' for list of unit tests.\n", + argv[0]); + exit(2); + } + n++; + } else if (strcmp(argv[i], "--") == 0) { + seen_double_dash = 1; + } else if (strcmp(argv[i], "--help") == 0 || + strcmp(argv[i], "-h") == 0) { + test_help__(); + exit(0); + } else if (strcmp(argv[i], "--verbose") == 0 || + strcmp(argv[i], "-v") == 0) { + test_verbose_level__++; + } else if (strncmp(argv[i], "--verbose=", 10) == 0) { + test_verbose_level__ = atoi(argv[i] + 10); + } else if (strcmp(argv[i], "--color=auto") == 0) { + /* noop (set from above) */ + } else if (strcmp(argv[i], "--color=always") == 0 || + strcmp(argv[i], "--color") == 0) { + test_colorize__ = 1; + } else if (strcmp(argv[i], "--color=never") == 0) { + test_colorize__ = 0; + } else if (strcmp(argv[i], "--skip") == 0 || + strcmp(argv[i], "-s") == 0) { + test_skip_mode__ = 1; + } else if (strcmp(argv[i], "--no-exec") == 0) { + test_no_exec__ = 1; + } else if (strcmp(argv[i], "--no-summary") == 0) { + test_no_summary__ = 1; + } else if (strcmp(argv[i], "--list") == 0 || + strcmp(argv[i], "-l") == 0) { + test_list_names__(); + exit(0); + } else { + fprintf(stderr, "%s: Unrecognized option '%s'\n", argv[0], argv[i]); + fprintf(stderr, "Try '%s --help' for more information.\n", argv[0]); + exit(2); + } + } + +#if defined(CUTEST_WIN__) + SetUnhandledExceptionFilter(test_exception_filter__); +#endif + + /* Count all test units */ + test_count__ = 0; + for (i = 0; test_list__[i].func != NULL; i++) { + test_count__++; + } + + /* Run the tests */ + if (n == 0) { + /* Run all tests */ + for (i = 0; test_list__[i].func != NULL; i++) { + test_run__(&test_list__[i]); + } + } else if (!test_skip_mode__) { + /* Run the listed tests */ + for (i = 0; i < n; i++) { + test_run__(tests[i]); + } + } else { + /* Run all tests except those listed */ + for (i = 0; test_list__[i].func != NULL; i++) { + int want_skip = 0; + for (j = 0; j < n; j++) { + if (tests[j] == &test_list__[i]) { + want_skip = 1; + break; + } + } + if (!want_skip) { + test_run__(&test_list__[i]); + } + } + } + + /* Write a summary */ + if (!test_no_summary__ && test_verbose_level__ >= 1) { + test_print_in_color__(CUTEST_COLOR_DEFAULT_INTENSIVE__, "\nSummary:\n"); + + if (test_verbose_level__ >= 3) { + printf(" Count of all unit tests: %4d\n", test_count__); + printf(" Count of run unit tests: %4d\n", + test_stat_run_units__); + printf(" Count of failed unit tests: %4d\n", + test_stat_failed_units__); + printf(" Count of skipped unit tests: %4d\n", + test_count__ - test_stat_run_units__); + } + + if (test_stat_failed_units__ == 0) { + test_print_in_color__(CUTEST_COLOR_GREEN_INTENSIVE__, + " SUCCESS: All unit tests have passed.\n"); + } else { + test_print_in_color__( + CUTEST_COLOR_RED_INTENSIVE__, + " FAILED: %d of %d unit tests have failed.\n", + test_stat_failed_units__, test_stat_run_units__); + } + } + + if (tests != NULL) { + free((void *)tests); + } + + return (test_stat_failed_units__ == 0) ? 0 : 1; +} + +#endif /* #ifndef TEST_NO_MAIN */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* #ifndef CUTEST_H__ */ diff --git a/src/libs/libsrtp/test/getopt_s.c b/src/libs/libsrtp/test/getopt_s.c new file mode 100644 index 00000000..a5af6a3c --- /dev/null +++ b/src/libs/libsrtp/test/getopt_s.c @@ -0,0 +1,111 @@ +/* + * getopt.c + * + * a minimal implementation of the getopt() function, written so that + * test applications that use that function can run on non-POSIX + * platforms + * + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <stdlib.h> /* for NULL */ + +int optind_s = 0; + +char *optarg_s; + +#define GETOPT_FOUND_WITHOUT_ARGUMENT 2 +#define GETOPT_FOUND_WITH_ARGUMENT 1 +#define GETOPT_NOT_FOUND 0 + +static int getopt_check_character(char c, const char *string) +{ + size_t max_string_len = 128; + + while (*string != 0) { + if (max_string_len == 0) { + return GETOPT_NOT_FOUND; + } + max_string_len--; + if (*string++ == c) { + if (*string == ':') { + return GETOPT_FOUND_WITH_ARGUMENT; + } else { + return GETOPT_FOUND_WITHOUT_ARGUMENT; + } + } + } + return GETOPT_NOT_FOUND; +} + +int getopt_s(int argc, char *const argv[], const char *optstring) +{ + while (optind_s + 1 < argc) { + char *string; + + /* move 'string' on to next argument */ + optind_s++; + string = argv[optind_s]; + + if (string == NULL) { + return '?'; /* NULL argument string */ + } + + if (string[0] != '-') { + return -1; /* found an unexpected character */ + } + + switch (getopt_check_character(string[1], optstring)) { + case GETOPT_FOUND_WITH_ARGUMENT: + if (optind_s + 1 < argc) { + optind_s++; + optarg_s = argv[optind_s]; + return string[1]; + } else { + return '?'; /* argument missing */ + } + case GETOPT_FOUND_WITHOUT_ARGUMENT: + return string[1]; + case GETOPT_NOT_FOUND: + default: + return '?'; /* didn't find expected character */ + break; + } + } + + return -1; +} diff --git a/src/libs/libsrtp/test/getopt_s.h b/src/libs/libsrtp/test/getopt_s.h new file mode 100644 index 00000000..53fb25ba --- /dev/null +++ b/src/libs/libsrtp/test/getopt_s.h @@ -0,0 +1,67 @@ +/* + * getopt.h + * + * interface to a minimal implementation of the getopt() function, + * written so that test applications that use that function can run on + * non-POSIX platforms + * + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef GETOPT_S_H +#define GETOPT_S_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * getopt_s(), optarg_s, and optind_s are small, locally defined + * versions of the POSIX standard getopt() interface. + */ + +int getopt_s(int argc, char *const argv[], const char *optstring); + +extern char *optarg_s; /* defined in getopt.c */ + +extern int optind_s; /* defined in getopt.c */ + +#ifdef __cplusplus +} +#endif + +#endif /* GETOPT_S_H */ diff --git a/src/libs/libsrtp/test/meson.build b/src/libs/libsrtp/test/meson.build new file mode 100644 index 00000000..6f051185 --- /dev/null +++ b/src/libs/libsrtp/test/meson.build @@ -0,0 +1,77 @@ +# test suite + +# XXX: Makefile only runs test_srtp and srtp_driver with valgrind +add_test_setup('valgrind', + exe_wrapper: ['valgrind', '--leak-check=full'], + timeout_multiplier: 10) + +test_apps = [ + ['srtp_driver', {'extra_sources': 'util.c', 'run_args': '-v'}], + ['replay_driver', {'extra_sources': 'ut_sim.c', 'run_args': '-v'}], + ['roc_driver', {'extra_sources': 'ut_sim.c', 'run_args': '-v'}], + ['rdbx_driver', {'extra_sources': 'ut_sim.c', 'run_args': '-v'}], + ['test_srtp', {'run_args': '-v'}], + ['rtpw', {'extra_sources': ['rtp.c', 'util.c', '../crypto/math/datatypes.c'], 'define_test': false}], +] + +foreach t : test_apps + test_name = t.get(0) + test_dict = t.get(1, {}) + test_extra_sources = test_dict.get('extra_sources', []) + test_run_args = test_dict.get('run_args', []) + + test_exe = executable(test_name, + '@0@.c'.format(test_name), 'getopt_s.c', test_extra_sources, + include_directories: [config_incs, crypto_incs, srtp3_incs, test_incs], + dependencies: [srtp3_deps, syslibs], + link_with: libsrtp3_for_tests) + + if test_dict.get('define_test', true) + test(test_name, test_exe, args: test_run_args) + else + set_variable(test_name + '_exe', test_exe) + endif +endforeach + +# rtpw test needs to be run using shell scripts +can_run_rtpw = find_program('sh', 'bash', required: false).found() + +# Meson only passes the exe_wrapper to shell scripts starting 0.55 +if meson.is_cross_build() and meson.version().version_compare('<0.55') + can_run_rtpw = false +endif + +if can_run_rtpw + words_txt = files('words.txt') + + rtpw_test_sh = find_program('rtpw_test.sh', required: false) + if rtpw_test_sh.found() + test('rtpw_test', rtpw_test_sh, + args: ['-w', words_txt], + depends: rtpw_exe, + is_parallel: false, + workdir: meson.current_build_dir()) + endif + + rtpw_test_gcm_sh = find_program('rtpw_test_gcm.sh', required: false) + if (use_openssl or use_wolfssl or use_nss or use_mbedtls) and rtpw_test_gcm_sh.found() + test('rtpw_test_gcm', rtpw_test_gcm_sh, + args: ['-w', words_txt], + depends: rtpw_exe, + is_parallel: false, + workdir: meson.current_build_dir()) + endif +endif + +# rtp_decoder +pcap_dep = dependency('libpcap', required: get_option('pcap-tests')) + +if pcap_dep.found() + executable('rtp_decoder', + 'rtp_decoder.c', 'getopt_s.c', 'rtp.c', 'util.c', 'getopt_s.c', + '../crypto/math/datatypes.c', + include_directories: [config_incs, crypto_incs, srtp3_incs, test_incs], + dependencies: [srtp3_deps, pcap_dep, syslibs], + link_with: libsrtp3, + install: false) +endif diff --git a/src/libs/libsrtp/test/rdbx_driver.c b/src/libs/libsrtp/test/rdbx_driver.c new file mode 100644 index 00000000..f420134a --- /dev/null +++ b/src/libs/libsrtp/test/rdbx_driver.c @@ -0,0 +1,362 @@ +/* + * rdbx_driver.c + * + * driver for the rdbx implementation (replay database with extended range) + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "getopt_s.h" /* for local getopt() */ +#include "rdbx.h" +#include "cipher_priv.h" + +#include <stdio.h> /* for printf() */ +#include <stdlib.h> + +#ifdef ROC_TEST +#error "srtp_rdbx_t won't work with ROC_TEST - bitmask same size as seq_median" +#endif + +#include "ut_sim.h" + +srtp_err_status_t test_replay_dbx(size_t num_trials, size_t ws); + +double rdbx_check_adds_per_second(size_t num_trials, size_t ws); + +void usage(char *prog_name) +{ + printf("usage: %s [ -t | -v ]\n", prog_name); + exit(255); +} + +int main(int argc, char *argv[]) +{ + double rate; + srtp_err_status_t status; + int q; + bool do_timing_test = false; + bool do_validation = false; + + /* process input arguments */ + while (1) { + q = getopt_s(argc, argv, "tv"); + if (q == -1) { + break; + } + switch (q) { + case 't': + do_timing_test = true; + break; + case 'v': + do_validation = true; + break; + default: + usage(argv[0]); + } + } + + printf("rdbx (replay database w/ extended range) test driver\n" + "David A. McGrew\n" + "Cisco Systems, Inc.\n"); + + if (!do_validation && !do_timing_test) { + usage(argv[0]); + } + + if (do_validation) { + printf("testing srtp_rdbx_t (ws=128)...\n"); + + status = test_replay_dbx(1 << 12, 128); + if (status) { + printf("failed\n"); + exit(1); + } + printf("passed\n"); + + printf("testing srtp_rdbx_t (ws=1024)...\n"); + + status = test_replay_dbx(1 << 12, 1024); + if (status) { + printf("failed\n"); + exit(1); + } + printf("passed\n"); + } + + if (do_timing_test) { + rate = rdbx_check_adds_per_second(1 << 18, 128); + printf("rdbx_check/replay_adds per second (ws=128): %e\n", rate); + rate = rdbx_check_adds_per_second(1 << 18, 1024); + printf("rdbx_check/replay_adds per second (ws=1024): %e\n", rate); + } + + return 0; +} + +/* + * rdbx_check_add(rdbx, idx) checks a known-to-be-good idx against + * rdbx, then adds it. if a failure is detected (i.e., the check + * indicates that the value is already in rdbx) then + * srtp_err_status_algo_fail is returned. + * + */ + +srtp_err_status_t rdbx_check_add(srtp_rdbx_t *rdbx, uint32_t idx) +{ + ssize_t delta; + srtp_xtd_seq_num_t est; + + delta = srtp_index_guess(&rdbx->index, &est, (srtp_sequence_number_t)idx); + + if (srtp_rdbx_check(rdbx, delta) != srtp_err_status_ok) { + printf("replay_check failed at index %u\n", idx); + return srtp_err_status_algo_fail; + } + + /* + * in practice, we'd authenticate the packet containing idx, using + * the estimated value est, at this point + */ + + if (srtp_rdbx_add_index(rdbx, delta) != srtp_err_status_ok) { + printf("rdbx_add_index failed at index %u\n", idx); + return srtp_err_status_algo_fail; + } + + return srtp_err_status_ok; +} + +/* + * rdbx_check_expect_failure(srtp_rdbx_t *rdbx, uint32_t idx) + * + * checks that a sequence number idx is in the replay database + * and thus will be rejected + */ + +srtp_err_status_t rdbx_check_expect_failure(srtp_rdbx_t *rdbx, uint32_t idx) +{ + ssize_t delta; + srtp_xtd_seq_num_t est; + srtp_err_status_t status; + + delta = srtp_index_guess(&rdbx->index, &est, (srtp_sequence_number_t)idx); + + status = srtp_rdbx_check(rdbx, delta); + if (status == srtp_err_status_ok) { + printf("delta: %zd ", delta); + printf("replay_check failed at index %u (false positive)\n", idx); + return srtp_err_status_algo_fail; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t rdbx_check_add_unordered(srtp_rdbx_t *rdbx, uint32_t idx) +{ + ssize_t delta; + srtp_xtd_seq_num_t est; + srtp_err_status_t rstat; + + delta = srtp_index_guess(&rdbx->index, &est, (srtp_sequence_number_t)idx); + + rstat = srtp_rdbx_check(rdbx, delta); + if ((rstat != srtp_err_status_ok) && + (rstat != srtp_err_status_replay_old)) { + printf("replay_check_add_unordered failed at index %u\n", idx); + return srtp_err_status_algo_fail; + } + if (rstat == srtp_err_status_replay_old) { + return srtp_err_status_ok; + } + if (srtp_rdbx_add_index(rdbx, delta) != srtp_err_status_ok) { + printf("rdbx_add_index failed at index %u\n", idx); + return srtp_err_status_algo_fail; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t test_replay_dbx(size_t num_trials, size_t ws) +{ + srtp_rdbx_t rdbx; + uint32_t ircvd = 0; + ut_connection utc; + srtp_err_status_t status; + size_t num_fp_trials; + + status = srtp_rdbx_init(&rdbx, ws); + if (status) { + printf("replay_init failed with error code %d\n", status); + exit(1); + } + + /* + * test sequential insertion + */ + printf("\ttesting sequential insertion..."); + for (uint32_t idx = 0; idx < num_trials; idx++) { + status = rdbx_check_add(&rdbx, idx); + if (status) { + return status; + } + } + printf("passed\n"); + + /* + * test for false positives by checking all of the index + * values which we've just added + * + * note that we limit the number of trials here, since allowing the + * rollover counter to roll over would defeat this test + */ + num_fp_trials = num_trials % 0x10000; + if (num_fp_trials == 0) { + printf("warning: no false positive tests performed\n"); + } + printf("\ttesting for false positives..."); + for (uint32_t idx = 0; idx < num_fp_trials; idx++) { + status = rdbx_check_expect_failure(&rdbx, idx); + if (status) { + return status; + } + } + printf("passed\n"); + + /* re-initialize */ + srtp_rdbx_dealloc(&rdbx); + + if (srtp_rdbx_init(&rdbx, ws) != srtp_err_status_ok) { + printf("replay_init failed\n"); + return srtp_err_status_init_fail; + } + + /* + * test non-sequential insertion + * + * this test covers only fase negatives, since the values returned + * by ut_next_index(...) are distinct + */ + ut_init(&utc); + + printf("\ttesting non-sequential insertion..."); + for (size_t idx = 0; idx < num_trials; idx++) { + ircvd = ut_next_index(&utc); + status = rdbx_check_add_unordered(&rdbx, ircvd); + if (status) { + return status; + } + status = rdbx_check_expect_failure(&rdbx, ircvd); + if (status) { + return status; + } + } + printf("passed\n"); + + /* re-initialize */ + srtp_rdbx_dealloc(&rdbx); + + if (srtp_rdbx_init(&rdbx, ws) != srtp_err_status_ok) { + printf("replay_init failed\n"); + return srtp_err_status_init_fail; + } + + /* + * test insertion with large gaps. + * check for false positives for each insertion. + */ + printf("\ttesting insertion with large gaps..."); + ircvd = 0; + for (size_t idx = 0; idx < num_trials; + idx++, ircvd += (1 << (srtp_cipher_rand_u32_for_tests() % 12))) { + status = rdbx_check_add(&rdbx, ircvd); + if (status) { + return status; + } + status = rdbx_check_expect_failure(&rdbx, ircvd); + if (status) { + return status; + } + } + printf("passed\n"); + + srtp_rdbx_dealloc(&rdbx); + + return srtp_err_status_ok; +} + +#include <time.h> /* for clock() */ + +double rdbx_check_adds_per_second(size_t num_trials, size_t ws) +{ + ssize_t delta; + srtp_rdbx_t rdbx; + srtp_xtd_seq_num_t est; + clock_t timer; + size_t failures = 0; /* count number of failures */ + + if (srtp_rdbx_init(&rdbx, ws) != srtp_err_status_ok) { + printf("replay_init failed\n"); + exit(1); + } + + timer = clock(); + for (size_t i = 0; i < num_trials; i++) { + delta = srtp_index_guess(&rdbx.index, &est, (srtp_sequence_number_t)i); + + if (srtp_rdbx_check(&rdbx, delta) != srtp_err_status_ok) { + ++failures; + } else if (srtp_rdbx_add_index(&rdbx, delta) != srtp_err_status_ok) { + ++failures; + } + } + timer = clock() - timer; + if (timer < 1) { + timer = 1; + } + + printf("number of failures: %zd \n", failures); + + srtp_rdbx_dealloc(&rdbx); + + return (double)CLOCKS_PER_SEC * num_trials / timer; +} diff --git a/src/libs/libsrtp/test/replay_driver.c b/src/libs/libsrtp/test/replay_driver.c new file mode 100644 index 00000000..d751e7f9 --- /dev/null +++ b/src/libs/libsrtp/test/replay_driver.c @@ -0,0 +1,280 @@ +/* + * replay_driver.c + * + * A driver for the replay_database implementation + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "rdb.h" +#include "ut_sim.h" +#include "cipher_priv.h" + +#include <stdio.h> +#include <stdlib.h> + +/* + * num_trials defines the number of trials that are used in the + * validation functions below + */ + +size_t num_trials = 1 << 16; + +srtp_err_status_t test_rdb_db(void); + +double rdb_check_adds_per_second(void); + +int main(void) +{ + srtp_err_status_t err; + + printf("testing anti-replay database (srtp_rdb_t)...\n"); + err = test_rdb_db(); + if (err) { + printf("failed\n"); + exit(1); + } + printf("done\n"); + + printf("rdb_check/rdb_adds per second: %e\n", rdb_check_adds_per_second()); + + return 0; +} + +srtp_err_status_t rdb_check_add(srtp_rdb_t *rdb, uint32_t idx) +{ + if (srtp_rdb_check(rdb, idx) != srtp_err_status_ok) { + printf("rdb_check failed at index %u\n", idx); + return srtp_err_status_fail; + } + if (srtp_rdb_add_index(rdb, idx) != srtp_err_status_ok) { + printf("rdb_add_index failed at index %u\n", idx); + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t rdb_check_expect_failure(srtp_rdb_t *rdb, uint32_t idx) +{ + srtp_err_status_t err; + + err = srtp_rdb_check(rdb, idx); + if ((err != srtp_err_status_replay_old) && + (err != srtp_err_status_replay_fail)) { + printf("rdb_check failed at index %u (false positive)\n", idx); + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t rdb_check_add_unordered(srtp_rdb_t *rdb, uint32_t idx) +{ + srtp_err_status_t rstat; + + /* printf("index: %u\n", idx); */ + rstat = srtp_rdb_check(rdb, idx); + if ((rstat != srtp_err_status_ok) && + (rstat != srtp_err_status_replay_old)) { + printf("rdb_check_add_unordered failed at index %u\n", idx); + return rstat; + } + if (rstat == srtp_err_status_replay_old) { + return srtp_err_status_ok; + } + if (srtp_rdb_add_index(rdb, idx) != srtp_err_status_ok) { + printf("rdb_add_index failed at index %u\n", idx); + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t test_rdb_db(void) +{ + srtp_rdb_t rdb; + uint32_t ircvd; + ut_connection utc; + srtp_err_status_t err; + + if (srtp_rdb_init(&rdb) != srtp_err_status_ok) { + printf("rdb_init failed\n"); + return srtp_err_status_init_fail; + } + + /* test sequential insertion */ + for (uint32_t idx = 0; idx < num_trials; idx++) { + err = rdb_check_add(&rdb, idx); + if (err) { + return err; + } + } + + /* test for false positives */ + for (uint32_t idx = 0; idx < num_trials; idx++) { + err = rdb_check_expect_failure(&rdb, idx); + if (err) { + return err; + } + } + + /* re-initialize */ + if (srtp_rdb_init(&rdb) != srtp_err_status_ok) { + printf("rdb_init failed\n"); + return srtp_err_status_fail; + } + + /* test non-sequential insertion */ + ut_init(&utc); + + for (uint32_t idx = 0; idx < num_trials; idx++) { + ircvd = ut_next_index(&utc); + err = rdb_check_add_unordered(&rdb, ircvd); + if (err) { + return err; + } + err = rdb_check_expect_failure(&rdb, ircvd); + if (err) { + return err; + } + } + + /* re-initialize */ + if (srtp_rdb_init(&rdb) != srtp_err_status_ok) { + printf("rdb_init failed\n"); + return srtp_err_status_fail; + } + + /* test insertion with large gaps */ + ircvd = 0; + for (size_t idx = 0; idx < num_trials; + idx++, ircvd += (1 << (srtp_cipher_rand_u32_for_tests() % 10))) { + err = rdb_check_add(&rdb, ircvd); + if (err) { + return err; + } + err = rdb_check_expect_failure(&rdb, ircvd); + if (err) { + return err; + } + } + + /* re-initialize */ + if (srtp_rdb_init(&rdb) != srtp_err_status_ok) { + printf("rdb_init failed\n"); + return srtp_err_status_fail; + } + + /* test loss of first 513 packets */ + for (uint32_t idx = 0; idx < num_trials; idx++) { + err = rdb_check_add(&rdb, idx + 513); + if (err) { + return err; + } + } + + /* test for false positives */ + for (uint32_t idx = 0; idx < num_trials + 513; idx++) { + err = rdb_check_expect_failure(&rdb, idx); + if (err) { + return err; + } + } + + /* test for key expired */ + if (srtp_rdb_init(&rdb) != srtp_err_status_ok) { + printf("rdb_init failed\n"); + return srtp_err_status_fail; + } + rdb.window_start = 0x7ffffffe; + if (srtp_rdb_increment(&rdb) != srtp_err_status_ok) { + printf("srtp_rdb_increment of 0x7ffffffe failed\n"); + return srtp_err_status_fail; + } + if (srtp_rdb_get_value(&rdb) != 0x7fffffff) { + printf("rdb valiue was not 0x7fffffff\n"); + return srtp_err_status_fail; + } + if (srtp_rdb_increment(&rdb) != srtp_err_status_key_expired) { + printf("srtp_rdb_increment of 0x7fffffff did not return " + "srtp_err_status_key_expired\n"); + return srtp_err_status_fail; + } + if (srtp_rdb_get_value(&rdb) != 0x7fffffff) { + printf("rdb valiue was not 0x7fffffff\n"); + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +#include <time.h> /* for clock() */ +#include <stdlib.h> /* for random() */ + +#define REPLAY_NUM_TRIALS 10000000 + +double rdb_check_adds_per_second(void) +{ + srtp_rdb_t rdb; + clock_t timer; + + if (srtp_rdb_init(&rdb) != srtp_err_status_ok) { + printf("rdb_init failed\n"); + exit(1); + } + + timer = clock(); + for (uint32_t i = 0; i < REPLAY_NUM_TRIALS; i += 3) { + srtp_rdb_check(&rdb, i + 2); + srtp_rdb_add_index(&rdb, i + 2); + srtp_rdb_check(&rdb, i + 1); + srtp_rdb_add_index(&rdb, i + 1); + srtp_rdb_check(&rdb, i); + srtp_rdb_add_index(&rdb, i); + } + timer = clock() - timer; + + return (double)CLOCKS_PER_SEC * REPLAY_NUM_TRIALS / timer; +} diff --git a/src/libs/libsrtp/test/roc_driver.c b/src/libs/libsrtp/test/roc_driver.c new file mode 100644 index 00000000..1010fd0e --- /dev/null +++ b/src/libs/libsrtp/test/roc_driver.c @@ -0,0 +1,175 @@ +/* + * roc_driver.c + * + * test driver for rollover counter replay implementation + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> + +/* + * defining ROC_TEST causes small datatypes to be used in + * srtp_xtd_seq_num_t - this allows the functions to be exhaustively tested. + */ +#if ROC_NEEDS_TO_BE_TESTED +#define ROC_TEST +#endif + +#include "rdbx.h" +#include "ut_sim.h" + +#include <stdlib.h> + +srtp_err_status_t roc_test(size_t num_trials); + +int main(void) +{ + srtp_err_status_t status; + + printf("rollover counter test driver\n" + "David A. McGrew\n" + "Cisco Systems, Inc.\n"); + + printf("testing index functions..."); + status = roc_test(1 << 18); + if (status) { + printf("failed\n"); + exit(status); + } + printf("passed\n"); + return 0; +} + +#define ROC_VERBOSE 0 + +srtp_err_status_t roc_test(size_t num_trials) +{ + srtp_xtd_seq_num_t local, est, ref; + ut_connection utc; + size_t num_bad_est = 0; + ssize_t delta; + uint32_t ircvd; + double failure_rate; + + srtp_index_init(&local); + srtp_index_init(&ref); + srtp_index_init(&est); + + printf("\n\ttesting sequential insertion..."); + for (size_t i = 0; i < 2048; i++) { + srtp_index_guess(&local, &est, (uint16_t)ref); +#if ROC_VERBOSE + printf("%lld, %lld, %d\n", ref, est, i); +#endif + if (ref != est) { +#if ROC_VERBOSE + printf(" *bad estimate*\n"); +#endif + ++num_bad_est; + } + srtp_index_advance(&ref, 1); + } + failure_rate = (double)num_bad_est / num_trials; + if (failure_rate > 0.01) { + printf( + "error: failure rate too high (%zd bad estimates in %zd trials)\n", + num_bad_est, num_trials); + return srtp_err_status_algo_fail; + } + printf("done\n"); + + printf("\ttesting non-sequential insertion..."); + srtp_index_init(&local); + srtp_index_init(&ref); + srtp_index_init(&est); + ut_init(&utc); + + for (size_t i = 0; i < num_trials; i++) { + /* get next seq num from unreliable transport simulator */ + ircvd = ut_next_index(&utc); + + /* set ref to value of ircvd */ + ref = ircvd; + + /* estimate index based on low bits of ircvd */ + delta = srtp_index_guess(&local, &est, (uint16_t)ref); +#if ROC_VERBOSE + printf("ref: %lld, local: %lld, est: %lld, ircvd: %d, delta: %d\n", ref, + local, est, ircvd, delta); +#endif + + if (local + delta != est) { + printf(" *bad delta*: local %llu + delta %zd != est %llu\n", + (unsigned long long)local, delta, (unsigned long long)est); + return srtp_err_status_algo_fail; + } + + /* now update local srtp_xtd_seq_num_t as necessary */ + if (delta > 0) { + srtp_index_advance(&local, (srtp_sequence_number_t)delta); + } + + if (ref != est) { +#if ROC_VERBOSE + printf(" *bad estimate*\n"); +#endif + /* record failure event */ + ++num_bad_est; + + /* reset local value to correct value */ + local = ref; + } + } + failure_rate = (double)num_bad_est / num_trials; + if (failure_rate > 0.01) { + printf( + "error: failure rate too high (%zd bad estimates in %zd trials)\n", + num_bad_est, num_trials); + return srtp_err_status_algo_fail; + } + printf("done\n"); + + return srtp_err_status_ok; +} diff --git a/src/libs/libsrtp/test/rtp.c b/src/libs/libsrtp/test/rtp.c new file mode 100644 index 00000000..0c965b0f --- /dev/null +++ b/src/libs/libsrtp/test/rtp.c @@ -0,0 +1,237 @@ +/* + * rtp.c + * + * library functions for the real-time transport protocol + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "rtp.h" + +#include "cipher_priv.h" + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#ifdef HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif + +#define PRINT_DEBUG 0 /* set to 1 to print out debugging data */ +#define VERBOSE_DEBUG 0 /* set to 1 to print out more data */ + +ssize_t rtp_sendto(rtp_sender_t sender, const void *msg, size_t len) +{ + size_t octets_sent; + srtp_err_status_t stat; + size_t msg_len = len + RTP_HEADER_LEN; + size_t pkt_len = RTP_HEADER_LEN + RTP_MAX_BUF_LEN; + + /* marshal data */ + strncpy(sender->message.body, msg, len); + + /* update header */ + sender->message.header.seq = ntohs(sender->message.header.seq) + 1; + sender->message.header.seq = htons(sender->message.header.seq); + sender->message.header.ts = ntohl(sender->message.header.ts) + 1; + sender->message.header.ts = htonl(sender->message.header.ts); + + /* apply srtp */ + stat = + srtp_protect(sender->srtp_ctx, (uint8_t *)&sender->message.header, + msg_len, (uint8_t *)&sender->message.header, &pkt_len, 0); + if (stat) { +#if PRINT_DEBUG + fprintf(stderr, "error: srtp protection failed with code %d\n", stat); +#endif + return -1; + } +#if VERBOSE_DEBUG + srtp_print_packet(&sender->message.header, pkt_len); +#endif + octets_sent = + sendto(sender->socket, (void *)&sender->message, pkt_len, 0, + (struct sockaddr *)&sender->addr, sizeof(struct sockaddr_in)); + + if (octets_sent != pkt_len) { +#if PRINT_DEBUG + fprintf(stderr, "error: couldn't send message %s", (char *)msg); + perror(""); +#endif + } + + return octets_sent; +} + +ssize_t rtp_recvfrom(rtp_receiver_t receiver, void *msg, size_t *len) +{ + ssize_t ret; + size_t octets_recvd; + srtp_err_status_t stat; + + ret = recvfrom(receiver->socket, (void *)&receiver->message, *len, 0, + (struct sockaddr *)NULL, 0); + + if (ret < 0) { + *len = 0; + return -1; + } + + octets_recvd = ret; + + /* verify rtp header */ + if (receiver->message.header.version != 2) { + *len = 0; + return -1; + } + +#if PRINT_DEBUG + fprintf(stderr, "%zu octets received from SSRC %u\n", octets_recvd, + receiver->message.header.ssrc); +#endif +#if VERBOSE_DEBUG + srtp_print_packet(&receiver->message.header, octets_recvd); +#endif + + /* apply srtp */ + stat = srtp_unprotect(receiver->srtp_ctx, + (uint8_t *)&receiver->message.header, octets_recvd, + (uint8_t *)&receiver->message.header, &octets_recvd); + if (stat) { + fprintf(stderr, "error: srtp unprotection failed with code %d%s\n", + stat, + stat == srtp_err_status_replay_fail ? " (replay check failed)" + : stat == srtp_err_status_auth_fail ? " (auth check failed)" + : ""); + return -1; + } + strncpy(msg, receiver->message.body, octets_recvd); + + return octets_recvd; +} + +srtp_err_status_t rtp_sender_init(rtp_sender_t sender, + int sock, + struct sockaddr_in addr, + uint32_t ssrc) +{ + /* set header values */ + sender->message.header.ssrc = htonl(ssrc); + sender->message.header.ts = 0; + sender->message.header.seq = (uint16_t)srtp_cipher_rand_u32_for_tests(); + sender->message.header.m = 0; + sender->message.header.pt = 0x1; + sender->message.header.version = 2; + sender->message.header.p = 0; + sender->message.header.x = 0; + sender->message.header.cc = 0; + + /* set other stuff */ + sender->socket = sock; + sender->addr = addr; + + return srtp_err_status_ok; +} + +srtp_err_status_t rtp_receiver_init(rtp_receiver_t rcvr, + int sock, + struct sockaddr_in addr, + uint32_t ssrc) +{ + /* set header values */ + rcvr->message.header.ssrc = htonl(ssrc); + rcvr->message.header.ts = 0; + rcvr->message.header.seq = 0; + rcvr->message.header.m = 0; + rcvr->message.header.pt = 0x1; + rcvr->message.header.version = 2; + rcvr->message.header.p = 0; + rcvr->message.header.x = 0; + rcvr->message.header.cc = 0; + + /* set other stuff */ + rcvr->socket = sock; + rcvr->addr = addr; + + return srtp_err_status_ok; +} + +srtp_err_status_t rtp_sender_init_srtp(rtp_sender_t sender, + const srtp_policy_t *policy) +{ + return srtp_create(&sender->srtp_ctx, policy); +} + +srtp_err_status_t rtp_sender_deinit_srtp(rtp_sender_t sender) +{ + return srtp_dealloc(sender->srtp_ctx); +} + +srtp_err_status_t rtp_receiver_init_srtp(rtp_receiver_t sender, + const srtp_policy_t *policy) +{ + return srtp_create(&sender->srtp_ctx, policy); +} + +srtp_err_status_t rtp_receiver_deinit_srtp(rtp_receiver_t sender) +{ + return srtp_dealloc(sender->srtp_ctx); +} + +rtp_sender_t rtp_sender_alloc(void) +{ + return (rtp_sender_t)malloc(sizeof(rtp_sender_ctx_t)); +} + +void rtp_sender_dealloc(rtp_sender_t rtp_ctx) +{ + free(rtp_ctx); +} + +rtp_receiver_t rtp_receiver_alloc(void) +{ + return (rtp_receiver_t)malloc(sizeof(rtp_receiver_ctx_t)); +} + +void rtp_receiver_dealloc(rtp_receiver_t rtp_ctx) +{ + free(rtp_ctx); +} diff --git a/src/libs/libsrtp/test/rtp.h b/src/libs/libsrtp/test/rtp.h new file mode 100644 index 00000000..4de87da6 --- /dev/null +++ b/src/libs/libsrtp/test/rtp.h @@ -0,0 +1,139 @@ +/* + * rtp.h + * + * rtp interface for srtp reference implementation + * + * David A. McGrew + * Cisco Systems, Inc. + * + * data types: + * + * rtp_msg_t an rtp message (the data that goes on the wire) + * rtp_sender_t sender side socket and rtp info + * rtp_receiver_t receiver side socket and rtp info + * + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SRTP_RTP_H +#define SRTP_RTP_H + +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> +#elif defined HAVE_WINSOCK2_H +#include <winsock2.h> +#endif + +#include "srtp_priv.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * RTP_HEADER_LEN indicates the size of an RTP header + */ +#define RTP_HEADER_LEN 12 + +/* + * RTP_MAX_BUF_LEN defines the largest RTP packet in the rtp.c implementation + */ +#define RTP_MAX_BUF_LEN 16384 + +typedef srtp_hdr_t rtp_hdr_t; + +typedef struct { + srtp_hdr_t header; + char body[RTP_MAX_BUF_LEN]; +} rtp_msg_t; + +typedef struct rtp_sender_ctx_t { + rtp_msg_t message; + int socket; + srtp_ctx_t *srtp_ctx; + struct sockaddr_in addr; /* reciever's address */ +} rtp_sender_ctx_t; + +typedef struct rtp_receiver_ctx_t { + rtp_msg_t message; + int socket; + srtp_ctx_t *srtp_ctx; + struct sockaddr_in addr; /* receiver's address */ +} rtp_receiver_ctx_t; + +typedef struct rtp_sender_ctx_t *rtp_sender_t; + +typedef struct rtp_receiver_ctx_t *rtp_receiver_t; + +ssize_t rtp_sendto(rtp_sender_t sender, const void *msg, size_t len); + +ssize_t rtp_recvfrom(rtp_receiver_t receiver, void *msg, size_t *len); + +srtp_err_status_t rtp_receiver_init(rtp_receiver_t rcvr, + int sock, + struct sockaddr_in addr, + uint32_t ssrc); + +srtp_err_status_t rtp_sender_init(rtp_sender_t sender, + int sock, + struct sockaddr_in addr, + uint32_t ssrc); + +srtp_err_status_t rtp_sender_init_srtp(rtp_sender_t sender, + const srtp_policy_t *policy); + +srtp_err_status_t rtp_sender_deinit_srtp(rtp_sender_t sender); + +srtp_err_status_t rtp_receiver_init_srtp(rtp_receiver_t sender, + const srtp_policy_t *policy); + +srtp_err_status_t rtp_receiver_deinit_srtp(rtp_receiver_t sender); + +rtp_sender_t rtp_sender_alloc(void); + +void rtp_sender_dealloc(rtp_sender_t rtp_ctx); + +rtp_receiver_t rtp_receiver_alloc(void); + +void rtp_receiver_dealloc(rtp_receiver_t rtp_ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* SRTP_RTP_H */ diff --git a/src/libs/libsrtp/test/rtp_decoder.c b/src/libs/libsrtp/test/rtp_decoder.c new file mode 100644 index 00000000..eb513e7d --- /dev/null +++ b/src/libs/libsrtp/test/rtp_decoder.c @@ -0,0 +1,825 @@ +/* + * rtp_decoder.c + * + * decoder structures and functions for SRTP pcap decoder + * + * Example: + * $ wget --no-check-certificate \ + * https://raw.githubusercontent.com/gteissier/srtp-decrypt/master/marseillaise-srtp.pcap + * $ ./test/rtp_decoder -a -t 10 -e 128 -b \ + * aSBrbm93IGFsbCB5b3VyIGxpdHRsZSBzZWNyZXRz \ + * < ~/marseillaise-srtp.pcap \ + * | text2pcap -t "%M:%S." -u 10000,10000 - - \ + * > ./marseillaise-rtp.pcap + * + * There is also a different way of setting up key size and tag size + * based upon RFC 4568 crypto suite specification, i.e.: + * + * $ ./test/rtp_decoder -s AES_CM_128_HMAC_SHA1_80 -b \ + * aSBrbm93IGFsbCB5b3VyIGxpdHRsZSBzZWNyZXRz ... + * + * Audio can be extracted using extractaudio utility from the RTPproxy + * package: + * + * $ extractaudio -A ./marseillaise-rtp.pcap ./marseillaise-out.wav + * + * Bernardo Torres <bernardo@torresautomacao.com.br> + * + * Some structure and code from https://github.com/gteissier/srtp-decrypt + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +#include "getopt_s.h" /* for local getopt() */ + +#include <pcap.h> +#include "rtp_decoder.h" +#include "util.h" + +#include <assert.h> /* for assert() */ +#include <stdlib.h> + +#ifndef timersub +#define timersub(a, b, result) \ + do { \ + (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ + (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ + if ((result)->tv_usec < 0) { \ + --(result)->tv_sec; \ + (result)->tv_usec += 1000000; \ + } \ + } while (0) +#endif + +#define MAX_KEY_LEN 96 +#define MAX_FILTER 256 +#define MAX_FILE 255 + +struct srtp_crypto_suite { + const char *can_name; + bool gcm_on; + size_t key_size; + size_t tag_size; +}; + +static struct srtp_crypto_suite srtp_crypto_suites[] = { +#if 0 + {.can_name = "F8_128_HMAC_SHA1_32", .gcm_on = false, .key_size = 128, .tag_size = 4}, +#endif + { .can_name = "AES_CM_128_HMAC_SHA1_32", + .gcm_on = false, + .key_size = 128, + .tag_size = 4 }, + { .can_name = "AES_CM_128_HMAC_SHA1_80", + .gcm_on = false, + .key_size = 128, + .tag_size = 10 }, + { .can_name = "AES_192_CM_HMAC_SHA1_32", + .gcm_on = false, + .key_size = 192, + .tag_size = 4 }, + { .can_name = "AES_192_CM_HMAC_SHA1_80", + .gcm_on = false, + .key_size = 192, + .tag_size = 10 }, + { .can_name = "AES_256_CM_HMAC_SHA1_32", + .gcm_on = false, + .key_size = 256, + .tag_size = 4 }, + { .can_name = "AES_256_CM_HMAC_SHA1_80", + .gcm_on = false, + .key_size = 256, + .tag_size = 10 }, + { .can_name = "AEAD_AES_128_GCM", + .gcm_on = true, + .key_size = 128, + .tag_size = 16 }, + { .can_name = "AEAD_AES_256_GCM", + .gcm_on = true, + .key_size = 256, + .tag_size = 16 }, + { .can_name = NULL } +}; + +void rtp_decoder_srtp_log_handler(srtp_log_level_t level, + const char *msg, + void *data) +{ + (void)data; + char level_char = '?'; + switch (level) { + case srtp_log_level_error: + level_char = 'e'; + break; + case srtp_log_level_warning: + level_char = 'w'; + break; + case srtp_log_level_info: + level_char = 'i'; + break; + case srtp_log_level_debug: + level_char = 'd'; + break; + } + fprintf(stderr, "SRTP-LOG [%c]: %s\n", level_char, msg); +} + +int main(int argc, char *argv[]) +{ + char errbuf[PCAP_ERRBUF_SIZE]; + bpf_u_int32 pcap_net = 0; + pcap_t *pcap_handle; +#if BEW + struct sockaddr_in local; +#endif + srtp_sec_serv_t sec_servs = sec_serv_none; + int c; + struct srtp_crypto_suite scs, *i_scsp; + scs.key_size = 128; + scs.tag_size = 0; + bool gcm_on = false; + char *input_key = NULL; + int b64_input = 0; + uint8_t key[MAX_KEY_LEN]; + size_t mki_size = 0; + uint8_t mki[SRTP_MAX_MKI_LEN]; + srtp_master_key_t masterKey; + srtp_master_key_t *masterKeys[1]; + struct bpf_program fp; + char filter_exp[MAX_FILTER] = ""; + char pcap_file[MAX_FILE] = "-"; + size_t rtp_packet_offset = DEFAULT_RTP_OFFSET; + rtp_decoder_t dec; + srtp_policy_t policy = { 0 }; + rtp_decoder_mode_t mode = mode_rtp; + srtp_ssrc_t ssrc = { ssrc_any_inbound, 0 }; + uint32_t roc = 0; + srtp_err_status_t status; + int len; + int expected_len; + int do_list_mods = 0; + + fprintf(stderr, "Using %s [0x%x]\n", srtp_get_version_string(), + srtp_get_version()); + + /* initialize srtp library */ + status = srtp_init(); + if (status) { + fprintf(stderr, + "error: srtp initialization failed with error code %d\n", + status); + exit(1); + } + + status = srtp_install_log_handler(rtp_decoder_srtp_log_handler, NULL); + if (status) { + fprintf(stderr, "error: install log handler failed\n"); + exit(1); + } + + /* check args */ + while (1) { + c = getopt_s(argc, argv, "b:k:i:gt:ae:ld:f:c:m:p:o:s:r:"); + if (c == -1) { + break; + } + switch (c) { + case 'b': + b64_input = 1; + /* fall thru */ + case 'k': + input_key = optarg_s; + break; + case 'i': + mki_size = + hex_string_to_octet_string(mki, optarg_s, strlen(optarg_s)) / 2; + break; + case 'e': + scs.key_size = atoi(optarg_s); + if (scs.key_size != 128 && scs.key_size != 192 && + scs.key_size != 256) { + fprintf(stderr, + "error: encryption key size must be 128, 192 or 256 " + "(%zu)\n", + scs.key_size); + exit(1); + } + input_key = malloc(scs.key_size); + sec_servs |= sec_serv_conf; + break; + case 't': + scs.tag_size = atoi(optarg_s); + break; + case 'a': + sec_servs |= sec_serv_auth; + break; + case 'g': + gcm_on = true; + sec_servs |= sec_serv_auth; + break; + case 'd': + status = srtp_set_debug_module(optarg_s, true); + if (status) { + fprintf(stderr, "error: set debug module (%s) failed\n", + optarg_s); + exit(1); + } + break; + case 'f': + if (strlen(optarg_s) > MAX_FILTER) { + fprintf(stderr, "error: filter bigger than %d characters\n", + MAX_FILTER); + exit(1); + } + fprintf(stderr, "Setting filter as %s\n", optarg_s); + strcpy(filter_exp, optarg_s); + break; + case 'l': + do_list_mods = 1; + break; + case 'c': + for (i_scsp = &srtp_crypto_suites[0]; i_scsp->can_name != NULL; + i_scsp++) { + if (strcasecmp(i_scsp->can_name, optarg_s) == 0) { + break; + } + } + if (i_scsp->can_name == NULL) { + fprintf(stderr, "Unknown/unsupported crypto suite name %s\n", + optarg_s); + exit(1); + } + scs = *i_scsp; + input_key = malloc(scs.key_size); + sec_servs |= sec_serv_conf | sec_serv_auth; + gcm_on = scs.gcm_on; + break; + case 'm': + if (strcasecmp("rtp", optarg_s) == 0) { + mode = mode_rtp; + } else if (strcasecmp("rtcp", optarg_s) == 0) { + mode = mode_rtcp; + } else if (strcasecmp("rtcp-mux", optarg_s) == 0) { + mode = mode_rtcp_mux; + } else { + fprintf(stderr, "Unknown/unsupported mode %s\n", optarg_s); + exit(1); + } + break; + case 'p': + if (strlen(optarg_s) > MAX_FILE) { + fprintf(stderr, + "error: pcap file path bigger than %d characters\n", + MAX_FILE); + exit(1); + } + strcpy(pcap_file, optarg_s); + break; + case 'o': + rtp_packet_offset = atoi(optarg_s); + break; + case 's': + ssrc.type = ssrc_specific; + ssrc.value = strtol(optarg_s, NULL, 0); + break; + case 'r': + roc = atoi(optarg_s); + break; + default: + usage(argv[0]); + } + } + + if (scs.tag_size == 0) { + if (gcm_on) { + scs.tag_size = 16; + } else { + scs.tag_size = 10; + } + } + + if (gcm_on && scs.tag_size != 16) { + fprintf(stderr, "error: GCM tag size must be 16 (%zu)\n", scs.tag_size); + exit(1); + } + + if (!gcm_on && scs.tag_size != 4 && scs.tag_size != 10) { + fprintf(stderr, "error: non GCM tag size must be 4 or 10 (%zu)\n", + scs.tag_size); + exit(1); + } + + if (do_list_mods) { + status = srtp_list_debug_modules(); + if (status) { + fprintf(stderr, "error: list of debug modules failed\n"); + exit(1); + } + return 0; + } + + if ((sec_servs && !input_key) || (!sec_servs && input_key)) { + /* + * a key must be provided if and only if security services have + * been requested + */ + if (input_key == NULL) { + fprintf(stderr, "key not provided\n"); + } + if (!sec_servs) { + fprintf(stderr, "no secservs\n"); + } + fprintf(stderr, "provided\n"); + usage(argv[0]); + } + + /* report security services selected on the command line */ + fprintf(stderr, "security services: "); + if (sec_servs & sec_serv_conf) { + fprintf(stderr, "confidentiality "); + } + if (sec_servs & sec_serv_auth) { + fprintf(stderr, "message authentication"); + } + if (sec_servs == sec_serv_none) { + fprintf(stderr, "none"); + } + fprintf(stderr, "\n"); + + /* set up the srtp policy and master key */ + if (sec_servs) { + /* + * create policy structure, using the default mechanisms but + * with only the security services requested on the command line, + * using the right SSRC value + */ + switch (sec_servs) { + case sec_serv_conf_and_auth: + if (gcm_on) { +#ifdef OPENSSL + switch (scs.key_size) { + case 128: + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + break; + case 256: + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtcp); + break; + } +#else + fprintf(stderr, "error: GCM mode only supported when using the " + "OpenSSL crypto engine.\n"); + return 0; +#endif + } else { + switch (scs.key_size) { + case 128: + if (scs.tag_size == 4) { + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32( + &policy.rtp); + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80( + &policy.rtcp); + } else { + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80( + &policy.rtp); + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80( + &policy.rtcp); + } + break; + case 192: +#ifdef OPENSSL + if (scs.tag_size == 4) { + srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32( + &policy.rtp); + srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80( + &policy.rtcp); + } else { + srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80( + &policy.rtp); + srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80( + &policy.rtcp); + } +#else + fprintf(stderr, + "error: AES 192 mode only supported when using the " + "OpenSSL crypto engine.\n"); + return 0; + +#endif + break; + case 256: + if (scs.tag_size == 4) { + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32( + &policy.rtp); + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80( + &policy.rtcp); + } else { + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80( + &policy.rtp); + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80( + &policy.rtcp); + } + break; + } + } + break; + case sec_serv_conf: + if (gcm_on) { + fprintf( + stderr, + "error: GCM mode must always be used with auth enabled\n"); + return -1; + } else { + switch (scs.key_size) { + case 128: + srtp_crypto_policy_set_aes_cm_128_null_auth(&policy.rtp); + srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80( + &policy.rtcp); + break; + case 192: +#ifdef OPENSSL + srtp_crypto_policy_set_aes_cm_192_null_auth(&policy.rtp); + srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80( + &policy.rtcp); +#else + fprintf(stderr, + "error: AES 192 mode only supported when using the " + "OpenSSL crypto engine.\n"); + return 0; + +#endif + break; + case 256: + srtp_crypto_policy_set_aes_cm_256_null_auth(&policy.rtp); + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80( + &policy.rtcp); + break; + } + } + break; + case sec_serv_auth: + if (gcm_on) { +#ifdef OPENSSL + switch (scs.key_size) { + case 128: + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + policy.rtp.sec_serv = sec_serv_auth; + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + policy.rtcp.sec_serv = sec_serv_auth; + break; + case 256: + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtp); + policy.rtp.sec_serv = sec_serv_auth; + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtcp); + policy.rtcp.sec_serv = sec_serv_auth; + break; + } +#else + printf("error: GCM mode only supported when using the OpenSSL " + "crypto engine.\n"); + return 0; +#endif + } else { + srtp_crypto_policy_set_null_cipher_hmac_sha1_80(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + } + break; + default: + fprintf(stderr, "error: unknown security service requested\n"); + return -1; + } + + masterKey.key = key; + + if (mki_size) { + policy.use_mki = true; + policy.mki_size = mki_size; + masterKey.mki_id = mki; + } + + masterKeys[0] = &masterKey; + policy.keys = masterKeys; + policy.num_master_keys = 1; + + policy.next = NULL; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.rtp.sec_serv = sec_servs; + policy.rtcp.sec_serv = + sec_servs; // sec_serv_none; /* we don't do RTCP anyway */ + fprintf(stderr, "setting tag len %zu\n", scs.tag_size); + policy.rtp.auth_tag_len = scs.tag_size; + + if (gcm_on && scs.tag_size != 8) { + fprintf(stderr, "set tag len %zu\n", scs.tag_size); + policy.rtp.auth_tag_len = scs.tag_size; + } + + /* + * read key from hexadecimal or base64 on command line into an octet + * string + */ + if (b64_input) { + int pad; + expected_len = policy.rtp.cipher_key_len * 4 / 3; + len = base64_string_to_octet_string(key, &pad, input_key, + strlen(input_key)); + } else { + expected_len = policy.rtp.cipher_key_len * 2; + len = hex_string_to_octet_string(key, input_key, expected_len); + } + /* check that hex string is the right length */ + if (len < expected_len) { + fprintf(stderr, + "error: too few digits in key/salt " + "(should be %d digits, found %d)\n", + expected_len, len); + exit(1); + } + if (strlen(input_key) > policy.rtp.cipher_key_len * 2) { + fprintf(stderr, + "error: too many digits in key/salt " + "(should be %zu hexadecimal digits, found %zu)\n", + policy.rtp.cipher_key_len * 2, strlen(input_key)); + exit(1); + } + + size_t key_octets = (scs.key_size / 8); + size_t salt_octets = policy.rtp.cipher_key_len - key_octets; + fprintf(stderr, "set master key/salt to %s/", + octet_string_hex_string(key, key_octets)); + fprintf(stderr, "%s\n", + octet_string_hex_string(key + key_octets, salt_octets)); + + if (mki_size) { + fprintf(stderr, "set mki to %s\n", + octet_string_hex_string(mki, mki_size)); + } + + } else { + fprintf(stderr, + "error: neither encryption or authentication were selected\n"); + exit(1); + } + + policy.ssrc = ssrc; + + if (roc != 0 && policy.ssrc.type != ssrc_specific) { + fprintf(stderr, "error: setting ROC (-r) requires -s <ssrc>\n"); + exit(1); + } + + pcap_handle = pcap_open_offline(pcap_file, errbuf); + + if (!pcap_handle) { + fprintf(stderr, "libpcap failed to open file '%s'\n", errbuf); + exit(1); + } + assert(pcap_handle != NULL); + if ((pcap_compile(pcap_handle, &fp, filter_exp, 1, pcap_net)) == -1) { + fprintf(stderr, "Couldn't parse filter %s: %s\n", filter_exp, + pcap_geterr(pcap_handle)); + return (2); + } + if (pcap_setfilter(pcap_handle, &fp) == -1) { + fprintf(stderr, "couldn't install filter %s: %s\n", filter_exp, + pcap_geterr(pcap_handle)); + return (2); + } + dec = rtp_decoder_alloc(); + if (dec == NULL) { + fprintf(stderr, "error: malloc() failed\n"); + exit(1); + } + fprintf(stderr, "Starting decoder\n"); + if (rtp_decoder_init(dec, policy, mode, rtp_packet_offset, roc)) { + fprintf(stderr, "error: init failed\n"); + exit(1); + } + + pcap_loop(pcap_handle, 0, rtp_decoder_handle_pkt, (u_char *)dec); + + if (dec->mode == mode_rtp || dec->mode == mode_rtcp_mux) { + fprintf(stderr, "RTP packets decoded: %zu\n", dec->rtp_cnt); + } + if (dec->mode == mode_rtcp || dec->mode == mode_rtcp_mux) { + fprintf(stderr, "RTCP packets decoded: %zu\n", dec->rtcp_cnt); + } + fprintf(stderr, "Packet decode errors: %zu\n", dec->error_cnt); + + rtp_decoder_deinit(dec); + rtp_decoder_dealloc(dec); + + status = srtp_shutdown(); + if (status) { + fprintf(stderr, "error: srtp shutdown failed with error code %d\n", + status); + exit(1); + } + + return 0; +} + +void usage(char *string) +{ + fprintf( + stderr, + "usage: %s [-d <debug>]* [[-k][-b] <key>] [-a][-t][-e] [-c " + "<srtp-crypto-suite>] [-m <mode>] [-s <ssrc> [-r <roc>]]\n" + "or %s -l\n" + "where -a use message authentication\n" + " -e <key size> use encryption (use 128 or 256 for key size)\n" + " -g Use AES-GCM mode (must be used with -e)\n" + " -t <tag size> Tag size to use (in GCM mode use 8 or 16)\n" + " -k <key> sets the srtp master key given in hexadecimal\n" + " -b <key> sets the srtp master key given in base64\n" + " -i <mki> sets master key index in hexadecimal\n" + " -l list debug modules\n" + " -f \"<pcap filter>\" to filter only the desired SRTP packets\n" + " -d <debug> turn on debugging for module <debug>\n" + " -c \"<srtp-crypto-suite>\" to set both key and tag size based\n" + " on RFC4568-style crypto suite specification\n" + " -m <mode> set the mode to be one of [rtp]|rtcp|rtcp-mux\n" + " -p <pcap file> path to pcap file (defaults to stdin)\n" + " -o byte offset of RTP packet in capture (defaults to 42)\n" + " -s <ssrc> restrict decrypting to the given SSRC (in host byte " + "order)\n" + " -r <roc> initial rollover counter, requires -s <ssrc> " + "(defaults to 0)\n", + string, string); + exit(1); +} + +rtp_decoder_t rtp_decoder_alloc(void) +{ + return (rtp_decoder_t)malloc(sizeof(rtp_decoder_ctx_t)); +} + +void rtp_decoder_dealloc(rtp_decoder_t rtp_ctx) +{ + free(rtp_ctx); +} + +srtp_err_status_t rtp_decoder_deinit(rtp_decoder_t decoder) +{ + if (decoder->srtp_ctx) { + return srtp_dealloc(decoder->srtp_ctx); + } + return srtp_err_status_ok; +} + +srtp_err_status_t rtp_decoder_init(rtp_decoder_t dcdr, + srtp_policy_t policy, + rtp_decoder_mode_t mode, + size_t rtp_packet_offset, + uint32_t roc) +{ + dcdr->rtp_offset = rtp_packet_offset; + dcdr->srtp_ctx = NULL; + dcdr->start_tv.tv_usec = 0; + dcdr->start_tv.tv_sec = 0; + dcdr->frame_nr = -1; + dcdr->error_cnt = 0; + dcdr->rtp_cnt = 0; + dcdr->rtcp_cnt = 0; + dcdr->mode = mode; + dcdr->policy = policy; + + srtp_err_status_t result = srtp_create(&dcdr->srtp_ctx, &dcdr->policy); + if (result != srtp_err_status_ok) { + return result; + } + + if (policy.ssrc.type == ssrc_specific && roc != 0) { + result = srtp_stream_set_roc(dcdr->srtp_ctx, policy.ssrc.value, roc); + if (result != srtp_err_status_ok) { + return result; + } + } + return srtp_err_status_ok; +} + +/* + * decodes key as base64 + */ + +void hexdump(const void *ptr, size_t size) +{ + size_t i, j; + const unsigned char *cptr = ptr; + + for (i = 0; i < size; i += 16) { + fprintf(stdout, "%04zx ", i); + for (j = 0; j < 16 && i + j < size; j++) { + fprintf(stdout, "%02x ", cptr[i + j]); + } + fprintf(stdout, "\n"); + } +} + +void rtp_decoder_handle_pkt(u_char *arg, + const struct pcap_pkthdr *hdr, + const u_char *bytes) +{ + rtp_decoder_t dcdr = (rtp_decoder_t)arg; + rtp_msg_t message; + bool rtp; + ssize_t pktsize; + struct timeval delta; + size_t octets_recvd; + srtp_err_status_t status; + dcdr->frame_nr++; + + if ((dcdr->start_tv.tv_sec == 0) && (dcdr->start_tv.tv_usec == 0)) { + dcdr->start_tv = hdr->ts; + } + + if (hdr->caplen < dcdr->rtp_offset) { + return; + } + const void *rtp_packet = bytes + dcdr->rtp_offset; + + memcpy((void *)&message, rtp_packet, hdr->caplen - dcdr->rtp_offset); + pktsize = hdr->caplen - dcdr->rtp_offset; + + if (pktsize < 0) { + return; + } + + octets_recvd = pktsize; + + if (dcdr->mode == mode_rtp) { + rtp = true; + } else if (dcdr->mode == mode_rtcp) { + rtp = false; + } else { + rtp = true; + if (octets_recvd >= 2) { + /* rfc5761 */ + u_char payload_type = *(bytes + dcdr->rtp_offset + 1) & 0x7f; + rtp = payload_type < 64 || payload_type > 95; + } + } + + if (rtp) { + /* verify rtp header */ + if (message.header.version != 2) { + return; + } + + status = + srtp_unprotect(dcdr->srtp_ctx, (uint8_t *)&message, octets_recvd, + (uint8_t *)&message, &octets_recvd); + if (status) { + dcdr->error_cnt++; + return; + } + dcdr->rtp_cnt++; + } else { + status = srtp_unprotect_rtcp(dcdr->srtp_ctx, (uint8_t *)&message, + octets_recvd, (uint8_t *)&message, + &octets_recvd); + if (status) { + dcdr->error_cnt++; + return; + } + dcdr->rtcp_cnt++; + } + timersub(&hdr->ts, &dcdr->start_tv, &delta); + fprintf(stdout, "%02ld:%02d.%06ld\n", (long)(delta.tv_sec / 60), + (int)(delta.tv_sec % 60), (long)delta.tv_usec); + hexdump(&message, octets_recvd); +} diff --git a/src/libs/libsrtp/test/rtp_decoder.h b/src/libs/libsrtp/test/rtp_decoder.h new file mode 100644 index 00000000..7c0b6b8e --- /dev/null +++ b/src/libs/libsrtp/test/rtp_decoder.h @@ -0,0 +1,118 @@ +/* + * rtp_decoder.h + * + * decoder structures and functions for SRTP pcap decoder + * + * Bernardo Torres <bernardo@torresautomacao.com.br> + * + * Some structure and code from https://github.com/gteissier/srtp-decrypt + * + */ +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef RTP_DECODER_H +#define RTP_DECODER_H + +#include "srtp_priv.h" +#include "rtp.h" + +#define DEFAULT_RTP_OFFSET 42 + +typedef enum { + mode_rtp = 0, + mode_rtcp, + mode_rtcp_mux, +} rtp_decoder_mode_t; + +typedef struct rtp_decoder_ctx_t { + srtp_policy_t policy; + srtp_ctx_t *srtp_ctx; + rtp_decoder_mode_t mode; + size_t rtp_offset; + struct timeval start_tv; + ssize_t frame_nr; + size_t error_cnt; + size_t rtp_cnt; + size_t rtcp_cnt; +} rtp_decoder_ctx_t; + +typedef struct rtp_decoder_ctx_t *rtp_decoder_t; + +/* + * prints the output of a random buffer in hexadecimal + */ +void hexdump(const void *ptr, size_t size); + +/* + * the function usage() prints an error message describing how this + * program should be called, then calls exit() + */ +void usage(char *prog_name); + +/* + * transforms base64 key into octet + */ +char *decode_sdes(char *in, char *out); + +/* + * pcap handling + */ +void rtp_decoder_handle_pkt(u_char *arg, + const struct pcap_pkthdr *hdr, + const u_char *bytes); + +rtp_decoder_t rtp_decoder_alloc(void); + +void rtp_decoder_dealloc(rtp_decoder_t rtp_ctx); + +srtp_err_status_t rtp_decoder_init(rtp_decoder_t dcdr, + srtp_policy_t policy, + rtp_decoder_mode_t mode, + size_t rtp_packet_offset, + uint32_t roc); + +srtp_err_status_t rtp_decoder_deinit(rtp_decoder_t decoder); + +void rtp_decoder_srtp_log_handler(srtp_log_level_t level, + const char *msg, + void *data); + +void rtp_decoder_srtp_log_handler(srtp_log_level_t level, + const char *msg, + void *data); + +#endif /* RTP_DECODER_H */ diff --git a/src/libs/libsrtp/test/rtpw.c b/src/libs/libsrtp/test/rtpw.c new file mode 100644 index 00000000..646bc457 --- /dev/null +++ b/src/libs/libsrtp/test/rtpw.c @@ -0,0 +1,717 @@ +/* + * rtpw.c + * + * rtp word sender/receiver + * + * David A. McGrew + * Cisco Systems, Inc. + * + * This app is a simple RTP application intended only for testing + * libsrtp. It reads one word at a time from words.txt (or + * whatever file is specified as DICT_FILE or with -w), and sends one word out + * each USEC_RATE microseconds. Secure RTP protections can be + * applied. See the usage() function for more details. + * + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "getopt_s.h" /* for local getopt() */ + +#include <stdio.h> /* for printf, fprintf */ +#include <stdlib.h> /* for atoi() */ +#include <errno.h> +#include <signal.h> /* for signal() */ + +#include <string.h> /* for strncpy() */ +#include <time.h> /* for usleep() */ + +#ifdef HAVE_UNISTD_H +#include <unistd.h> /* for close() */ +#elif defined(_MSC_VER) +#include <io.h> /* for _close() */ +#define close _close +#endif +#ifdef HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> +#elif defined HAVE_WINSOCK2_H +#include <winsock2.h> +#include <ws2tcpip.h> +#define RTPW_USE_WINSOCK2 1 +#endif +#ifdef HAVE_ARPA_INET_H +#include <arpa/inet.h> +#endif + +#include "srtp.h" +#include "rtp.h" +#include "util.h" + +#define DICT_FILE "words.txt" +#define USEC_RATE (5e5) +#define MAX_WORD_LEN 128 +#define ADDR_IS_MULTICAST(a) IN_MULTICAST(htonl(a)) +#define MAX_KEY_LEN 96 + +#ifndef HAVE_USLEEP +#ifdef HAVE_WINDOWS_H +#define usleep(us) Sleep(((DWORD)us) / 1000) +#else +#define usleep(us) sleep((us) / 1000000) +#endif +#endif + +/* + * the function usage() prints an error message describing how this + * program should be called, then calls exit() + */ + +void usage(char *prog_name); + +/* + * leave_group(...) de-registers from a multicast group + */ + +void leave_group(int sock, struct ip_mreq mreq, char *name); + +/* + * setup_signal_handler() sets up a signal handler to trigger + * cleanups after an interrupt + */ +int setup_signal_handler(char *name); + +/* + * handle_signal(...) handles interrupt signal to trigger cleanups + */ + +volatile int interrupted = 0; + +/* + * program_type distinguishes the [s]rtp sender and receiver cases + */ + +typedef enum { sender, receiver, unknown } program_type; + +int main(int argc, char *argv[]) +{ + char *dictfile = DICT_FILE; + FILE *dict; + char word[MAX_WORD_LEN]; + int sock, ret; + struct in_addr rcvr_addr; + struct sockaddr_in name; + struct ip_mreq mreq; +#if BEW + struct sockaddr_in local; +#endif + program_type prog_type = unknown; + srtp_sec_serv_t sec_servs = sec_serv_none; + unsigned char ttl = 5; + int c; + size_t key_size = 128; + size_t tag_size = 8; + bool gcm_on = false; + char *input_key = NULL; + bool b64_input = false; + char *address = NULL; + uint8_t key[MAX_KEY_LEN]; + uint16_t port = 0; + rtp_sender_t snd; + srtp_policy_t policy; + srtp_err_status_t status; + size_t len; + size_t expected_len; + bool do_list_mods = false; + uint32_t ssrc = 0xdeadbeef; /* ssrc value hardcoded for now */ +#ifdef RTPW_USE_WINSOCK2 + WORD wVersionRequested = MAKEWORD(2, 0); + WSADATA wsaData; + + ret = WSAStartup(wVersionRequested, &wsaData); + if (ret != 0) { + fprintf(stderr, "error: WSAStartup() failed: %d\n", ret); + exit(1); + } +#endif + + memset(&policy, 0x0, sizeof(srtp_policy_t)); + + printf("Using %s [0x%x]\n", srtp_get_version_string(), srtp_get_version()); + + if (setup_signal_handler(argv[0]) != 0) { + exit(1); + } + + /* initialize srtp library */ + status = srtp_init(); + if (status) { + printf("error: srtp initialization failed with error code %d\n", + status); + exit(1); + } + + /* check args */ + while (1) { + c = getopt_s(argc, argv, "b:k:rsgt:ae:ld:w:"); + if (c == -1) { + break; + } + switch (c) { + case 'b': + b64_input = true; + /* fall thru */ + case 'k': + input_key = optarg_s; + break; + case 'e': + key_size = atoi(optarg_s); + if (key_size != 128 && key_size != 256) { + printf("error: encryption key size must be 128 or 256 (%zu)\n", + key_size); + exit(1); + } + sec_servs |= sec_serv_conf; + break; + case 't': + tag_size = atoi(optarg_s); + if (tag_size != 8 && tag_size != 16) { + printf("error: GCM tag size must be 8 or 16 (%zu)\n", tag_size); + exit(1); + } + break; + case 'a': + sec_servs |= sec_serv_auth; + break; + case 'g': + gcm_on = true; + sec_servs |= sec_serv_auth; + break; + case 'r': + prog_type = receiver; + break; + case 's': + prog_type = sender; + break; + case 'd': + status = srtp_set_debug_module(optarg_s, true); + if (status) { + printf("error: set debug module (%s) failed\n", optarg_s); + exit(1); + } + break; + case 'l': + do_list_mods = true; + break; + case 'w': + dictfile = optarg_s; + break; + default: + usage(argv[0]); + } + } + + if (prog_type == unknown) { + if (do_list_mods) { + status = srtp_list_debug_modules(); + if (status) { + printf("error: list of debug modules failed\n"); + exit(1); + } + return 0; + } else { + printf("error: neither sender [-s] nor receiver [-r] specified\n"); + usage(argv[0]); + } + } + + if ((sec_servs && !input_key) || (!sec_servs && input_key)) { + /* + * a key must be provided if and only if security services have + * been requested + */ + usage(argv[0]); + } + + if (argc != optind_s + 2) { + /* wrong number of arguments */ + usage(argv[0]); + } + + /* get address from arg */ + address = argv[optind_s++]; + + /* get port from arg */ + port = atoi(argv[optind_s++]); + +/* set address */ +#ifdef HAVE_INET_PTON + if (0 == inet_pton(AF_INET, address, &rcvr_addr)) { + fprintf(stderr, "%s: cannot parse IP v4 address %s\n", argv[0], + address); + exit(1); + } + if (rcvr_addr.s_addr == INADDR_NONE) { + fprintf(stderr, "%s: address error", argv[0]); + exit(1); + } +#elif HAVE_INET_ATON + if (0 == inet_aton(address, &rcvr_addr)) { + fprintf(stderr, "%s: cannot parse IP v4 address %s\n", argv[0], + address); + exit(1); + } + if (rcvr_addr.s_addr == INADDR_NONE) { + fprintf(stderr, "%s: address error", argv[0]); + exit(1); + } +#else + rcvr_addr.s_addr = inet_addr(address); + if (0xffffffff == rcvr_addr.s_addr) { + fprintf(stderr, "%s: cannot parse IP v4 address %s\n", argv[0], + address); + exit(1); + } +#endif + + /* open socket */ + sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (sock < 0) { + int err; +#ifdef RTPW_USE_WINSOCK2 + err = WSAGetLastError(); +#else + err = errno; +#endif + fprintf(stderr, "%s: couldn't open socket: %d\n", argv[0], err); + exit(1); + } + + memset(&name, 0, sizeof(struct sockaddr_in)); + name.sin_addr = rcvr_addr; + name.sin_family = PF_INET; + name.sin_port = htons(port); + + if (ADDR_IS_MULTICAST(rcvr_addr.s_addr)) { + if (prog_type == sender) { + ret = setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, + sizeof(ttl)); + if (ret < 0) { + fprintf(stderr, "%s: Failed to set TTL for multicast group", + argv[0]); + perror(""); + exit(1); + } + } + + mreq.imr_multiaddr.s_addr = rcvr_addr.s_addr; + mreq.imr_interface.s_addr = htonl(INADDR_ANY); + ret = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *)&mreq, + sizeof(mreq)); + if (ret < 0) { + fprintf(stderr, "%s: Failed to join multicast group", argv[0]); + perror(""); + exit(1); + } + } + + /* report security services selected on the command line */ + printf("security services: "); + if (sec_servs & sec_serv_conf) { + printf("confidentiality "); + } + if (sec_servs & sec_serv_auth) { + printf("message authentication"); + } + if (sec_servs == sec_serv_none) { + printf("none"); + } + printf("\n"); + + /* set up the srtp policy and master key */ + if (sec_servs) { + /* + * create policy structure, using the default mechanisms but + * with only the security services requested on the command line, + * using the right SSRC value + */ + switch (sec_servs) { + case sec_serv_conf_and_auth: + if (gcm_on) { +#ifdef GCM + switch (key_size) { + case 128: + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + break; + case 256: + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtcp); + break; + } +#else + printf("error: GCM mode only supported when using the OpenSSL " + "or NSS crypto engine.\n"); + return 0; +#endif + } else { + switch (key_size) { + case 128: + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + break; + case 256: + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + break; + } + } + break; + case sec_serv_conf: + if (gcm_on) { + printf( + "error: GCM mode must always be used with auth enabled\n"); + return -1; + } else { + switch (key_size) { + case 128: + srtp_crypto_policy_set_aes_cm_128_null_auth(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + break; + case 256: + srtp_crypto_policy_set_aes_cm_256_null_auth(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + break; + } + } + break; + case sec_serv_auth: + if (gcm_on) { +#ifdef GCM + switch (key_size) { + case 128: + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + policy.rtp.sec_serv = sec_serv_auth; + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + policy.rtcp.sec_serv = sec_serv_auth; + break; + case 256: + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtp); + policy.rtp.sec_serv = sec_serv_auth; + srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtcp); + policy.rtcp.sec_serv = sec_serv_auth; + break; + } +#else + printf("error: GCM mode only supported when using the OpenSSL " + "crypto engine.\n"); + return 0; +#endif + } else { + srtp_crypto_policy_set_null_cipher_hmac_sha1_80(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + } + break; + default: + printf("error: unknown security service requested\n"); + return -1; + } + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = ssrc; + policy.key = key; + policy.next = NULL; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.rtp.sec_serv = sec_servs; + policy.rtcp.sec_serv = sec_serv_none; /* we don't do RTCP anyway */ + + if (gcm_on && tag_size != 8) { + policy.rtp.auth_tag_len = tag_size; + } + + /* + * read key from hexadecimal or base64 on command line into an octet + * string + */ + if (b64_input) { + int pad; + expected_len = (policy.rtp.cipher_key_len * 4) / 3; + len = base64_string_to_octet_string(key, &pad, input_key, + expected_len); + if (pad != 0) { + fprintf(stderr, "error: padding in base64 unexpected\n"); + exit(1); + } + } else { + expected_len = policy.rtp.cipher_key_len * 2; + len = hex_string_to_octet_string(key, input_key, expected_len); + } + /* check that hex string is the right length */ + if (len < expected_len) { + fprintf(stderr, + "error: too few digits in key/salt " + "(should be %zu digits, found %zu)\n", + expected_len, len); + exit(1); + } + if (strlen(input_key) > policy.rtp.cipher_key_len * 2) { + fprintf(stderr, + "error: too many digits in key/salt " + "(should be %zu hexadecimal digits, found %zu)\n", + policy.rtp.cipher_key_len * 2, strlen(input_key)); + exit(1); + } + + printf("set master key/salt to %s/", octet_string_hex_string(key, 16)); + printf("%s\n", octet_string_hex_string(key + 16, 14)); + + } else { + /* + * we're not providing security services, so set the policy to the + * null policy + * + * Note that this policy does not conform to the SRTP + * specification, since RTCP authentication is required. However, + * the effect of this policy is to turn off SRTP, so that this + * application is now a vanilla-flavored RTP application. + */ + srtp_crypto_policy_set_null_cipher_hmac_null(&policy.rtp); + srtp_crypto_policy_set_null_cipher_hmac_null(&policy.rtcp); + policy.key = (uint8_t *)key; + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = ssrc; + policy.window_size = 0; + policy.allow_repeat_tx = false; + policy.next = NULL; + } + + if (prog_type == sender) { +#if BEW + /* bind to local socket (to match crypto policy, if need be) */ + memset(&local, 0, sizeof(struct sockaddr_in)); + local.sin_addr.s_addr = htonl(INADDR_ANY); + local.sin_port = htons(port); + ret = bind(sock, (struct sockaddr *)&local, sizeof(struct sockaddr_in)); + if (ret < 0) { + fprintf(stderr, "%s: bind failed\n", argv[0]); + perror(""); + exit(1); + } +#endif /* BEW */ + + /* initialize sender's rtp and srtp contexts */ + snd = rtp_sender_alloc(); + if (snd == NULL) { + fprintf(stderr, "error: malloc() failed\n"); + exit(1); + } + rtp_sender_init(snd, sock, name, ssrc); + status = rtp_sender_init_srtp(snd, &policy); + if (status) { + fprintf(stderr, "error: srtp_create() failed with code %d\n", + status); + exit(1); + } + + /* open dictionary */ + dict = fopen(dictfile, "r"); + if (dict == NULL) { + fprintf(stderr, "%s: couldn't open file %s\n", argv[0], dictfile); + if (ADDR_IS_MULTICAST(rcvr_addr.s_addr)) { + leave_group(sock, mreq, argv[0]); + } + exit(1); + } + + /* read words from dictionary, then send them off */ + while (!interrupted && fgets(word, MAX_WORD_LEN, dict) != NULL) { + len = strlen(word) + 1; /* plus one for null */ + + if (len > MAX_WORD_LEN) { + printf("error: word %s too large to send\n", word); + } else { + rtp_sendto(snd, word, len); + printf("sending word: %s", word); + } + usleep(USEC_RATE); + } + + rtp_sender_deinit_srtp(snd); + rtp_sender_dealloc(snd); + + fclose(dict); + } else { /* prog_type == receiver */ + rtp_receiver_t rcvr; + + if (bind(sock, (struct sockaddr *)&name, sizeof(name)) < 0) { + close(sock); + fprintf(stderr, "%s: socket bind error\n", argv[0]); + perror(NULL); + if (ADDR_IS_MULTICAST(rcvr_addr.s_addr)) { + leave_group(sock, mreq, argv[0]); + } + exit(1); + } + + rcvr = rtp_receiver_alloc(); + if (rcvr == NULL) { + fprintf(stderr, "error: malloc() failed\n"); + exit(1); + } + rtp_receiver_init(rcvr, sock, name, ssrc); + status = rtp_receiver_init_srtp(rcvr, &policy); + if (status) { + fprintf(stderr, "error: srtp_create() failed with code %d\n", + status); + exit(1); + } + + /* get next word and loop */ + while (!interrupted) { + len = MAX_WORD_LEN; + if (rtp_recvfrom(rcvr, word, &len) > -1) { + printf("\tword: %s\n", word); + } + } + + rtp_receiver_deinit_srtp(rcvr); + rtp_receiver_dealloc(rcvr); + } + + if (ADDR_IS_MULTICAST(rcvr_addr.s_addr)) { + leave_group(sock, mreq, argv[0]); + } + +#ifdef RTPW_USE_WINSOCK2 + ret = closesocket(sock); +#else + ret = close(sock); +#endif + if (ret < 0) { + fprintf(stderr, "%s: Failed to close socket", argv[0]); + perror(""); + } + + status = srtp_shutdown(); + if (status) { + printf("error: srtp shutdown failed with error code %d\n", status); + exit(1); + } + +#ifdef RTPW_USE_WINSOCK2 + WSACleanup(); +#endif + + return 0; +} + +void usage(char *string) +{ + printf("usage: %s [-d <debug>]* [-k <key> [-a][-e]] " + "[-s | -r] dest_ip dest_port\n" + "or %s -l\n" + "where -a use message authentication\n" + " -e <key size> use encryption (use 128 or 256 for key size)\n" + " -g Use AES-GCM mode (must be used with -e)\n" + " -t <tag size> Tag size to use in GCM mode (use 8 or 16)\n" + " -k <key> sets the srtp master key given in hexadecimal\n" + " -b <key> sets the srtp master key given in base64\n" + " -s act as rtp sender\n" + " -r act as rtp receiver\n" + " -l list debug modules\n" + " -d <debug> turn on debugging for module <debug>\n" + " -w <wordsfile> use <wordsfile> for input, rather than %s\n", + string, string, DICT_FILE); + exit(1); +} + +void leave_group(int sock, struct ip_mreq mreq, char *name) +{ + int ret; + + ret = setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, (void *)&mreq, + sizeof(mreq)); + if (ret < 0) { + fprintf(stderr, "%s: Failed to leave multicast group", name); + perror(""); + } +} + +void handle_signal(int signum) +{ + interrupted = 1; + /* Reset handler explicitly, in case we don't have sigaction() (and signal() + has BSD semantics), or we don't have SA_RESETHAND */ + signal(signum, SIG_DFL); +} + +int setup_signal_handler(char *name) +{ +#ifdef HAVE_SIGACTION + struct sigaction act; + memset(&act, 0, sizeof(act)); + + act.sa_handler = handle_signal; + sigemptyset(&act.sa_mask); +#if defined(SA_RESETHAND) + act.sa_flags = SA_RESETHAND; +#else + act.sa_flags = 0; +#endif + /* Note that we're not setting SA_RESTART; we want recvfrom to return + * EINTR when we signal the receiver. */ + + if (sigaction(SIGTERM, &act, NULL) != 0) { + fprintf(stderr, "%s: error setting up signal handler", name); + perror(""); + return -1; + } +#else + if (signal(SIGTERM, handle_signal) == SIG_ERR) { + fprintf(stderr, "%s: error setting up signal handler", name); + perror(""); + return -1; + } +#endif + return 0; +} diff --git a/src/libs/libsrtp/test/rtpw_test.sh b/src/libs/libsrtp/test/rtpw_test.sh new file mode 100755 index 00000000..d6d04744 --- /dev/null +++ b/src/libs/libsrtp/test/rtpw_test.sh @@ -0,0 +1,183 @@ +#!/bin/sh +# +# usage: rtpw_test <rtpw_commands> +# +# tests the rtpw sender and receiver functions +# +# Copyright (c) 2001-2017, Cisco Systems, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of the Cisco Systems, Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +# OF THE POSSIBILITY OF SUCH DAMAGE. +# + +case $(uname -s) in + *CYGWIN*|*MINGW*) + EXE=".exe" + ;; + *Linux*) + EXE="" + if [ -n "$CRYPTO_LIBDIR" ] + then + export LD_LIBRARY_PATH="$CRYPTO_LIBDIR" + fi + ;; + *Darwin*) + EXE="" + if [ -n "$CRYPTO_LIBDIR" ] + then + export DYLD_LIBRARY_PATH="$CRYPTO_LIBDIR" + fi + ;; +esac + +RTPW=./rtpw$EXE +[ -n "$MESON_EXE_WRAPPER" ] && RTPW="$MESON_EXE_WRAPPER $RTPW" +DEST_PORT=9999 +DURATION=3 + +key=Ky7cUDT2GnI0XKWYbXv9AYmqbcLsqzL9mvdN9t/G + +ARGS="-b $key -a -e 128" + +# First, we run "pkill" to get rid of all existing rtpw processes. +# This step also enables this script to clean up after itself; if this +# script is interrupted after the rtpw processes are started but before +# they are killed, those processes will linger. Re-running the script +# will get rid of them. + +pkill -x rtpw 2>/dev/null + +if test -n $MESON_EXE_WRAPPER || test -x $RTPW; then + +echo $0 ": starting rtpw receiver process... " + +$RTPW $* $ARGS -r 0.0.0.0 $DEST_PORT & + +receiver_pid=$! + +echo $0 ": receiver PID = $receiver_pid" + +sleep 1 + +# verify that the background job is running +ps -e | grep -q $receiver_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 254 +fi + +echo $0 ": starting rtpw sender process..." + +$RTPW $* $ARGS -s 127.0.0.1 $DEST_PORT & + +sender_pid=$! + +echo $0 ": sender PID = $sender_pid" + +# verify that the background job is running +ps -e | grep -q $sender_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 255 +fi + +sleep $DURATION + +kill $receiver_pid +kill $sender_pid + +wait $receiver_pid 2>/dev/null +wait $sender_pid 2>/dev/null + + +key=033490ba9e82994fc21013395739038992b2edc5034f61a72345ca598d7bfd0189aa6dc2ecab32fd9af74df6dfc6 + +ARGS="-k $key -a -e 256" + +echo $0 ": starting rtpw receiver process... " + +$RTPW $* $ARGS -r 0.0.0.0 $DEST_PORT & + +receiver_pid=$! + +echo $0 ": receiver PID = $receiver_pid" + +sleep 1 + +# verify that the background job is running +ps -e | grep -q $receiver_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 254 +fi + +echo $0 ": starting rtpw sender process..." + +$RTPW $* $ARGS -s 127.0.0.1 $DEST_PORT & + +sender_pid=$! + +echo $0 ": sender PID = $sender_pid" + +# verify that the background job is running +ps -e | grep -q $sender_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 255 +fi + +sleep $DURATION + +kill $receiver_pid +kill $sender_pid + +wait $receiver_pid 2>/dev/null +wait $sender_pid 2>/dev/null + +echo $0 ": done (test passed)" + +else + +echo "error: can't find executable" $RTPW +exit 1 + +fi + +# EOF + + diff --git a/src/libs/libsrtp/test/rtpw_test_gcm.sh b/src/libs/libsrtp/test/rtpw_test_gcm.sh new file mode 100755 index 00000000..e0cf9c10 --- /dev/null +++ b/src/libs/libsrtp/test/rtpw_test_gcm.sh @@ -0,0 +1,267 @@ +#!/bin/sh +# +# usage: rtpw_test <rtpw_commands> +# +# tests the rtpw sender and receiver functions +# +# Copyright (c) 2001-2017, Cisco Systems, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of the Cisco Systems, Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +# OF THE POSSIBILITY OF SUCH DAMAGE. +# + +case $(uname -s) in + *CYGWIN*|*MINGW*) + EXE=".exe" + ;; + *Linux*) + EXE="" + if [ -n "$CRYPTO_LIBDIR" ] + then + export LD_LIBRARY_PATH="$CRYPTO_LIBDIR" + fi + ;; + *Darwin*) + EXE="" + if [ -n "$CRYPTO_LIBDIR" ] + then + export DYLD_LIBRARY_PATH="$CRYPTO_LIBDIR" + fi + ;; +esac + +RTPW=./rtpw$EXE +[ -n "$MESON_EXE_WRAPPER" ] && RTPW="$MESON_EXE_WRAPPER $RTPW" +DEST_PORT=9999 +DURATION=3 + +# First, we run "pkill" to get rid of all existing rtpw processes. +# This step also enables this script to clean up after itself; if this +# script is interrupted after the rtpw processes are started but before +# they are killed, those processes will linger. Re-running the script +# will get rid of them. + +pkill -x rtpw 2>/dev/null + +if test -n $MESON_EXE_WRAPPER || test -x $RTPW; then + +GCMARGS128="-k 01234567890123456789012345678901234567890123456789012345 -g -e 128" +echo $0 ": starting GCM mode 128-bit rtpw receiver process... " + +exec $RTPW $* $GCMARGS128 -r 127.0.0.1 $DEST_PORT & + +receiver_pid=$! + +echo $0 ": receiver PID = $receiver_pid" + +sleep 1 + +# verify that the background job is running +ps -e | grep -q $receiver_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 254 +fi + +echo $0 ": starting GCM 128-bit rtpw sender process..." + +exec $RTPW $* $GCMARGS128 -s 127.0.0.1 $DEST_PORT & + +sender_pid=$! + +echo $0 ": sender PID = $sender_pid" + +# verify that the background job is running +ps -e | grep -q $sender_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 255 +fi + +sleep $DURATION + +kill $receiver_pid +kill $sender_pid + +wait $receiver_pid 2>/dev/null +wait $sender_pid 2>/dev/null + +GCMARGS128="-k 01234567890123456789012345678901234567890123456789012345 -g -t 16 -e 128" +echo $0 ": starting GCM mode 128-bit (16 byte tag) rtpw receiver process... " + +exec $RTPW $* $GCMARGS128 -r 127.0.0.1 $DEST_PORT & + +receiver_pid=$! + +echo $0 ": receiver PID = $receiver_pid" + +sleep 1 + +# verify that the background job is running +ps -e | grep -q $receiver_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 254 +fi + +echo $0 ": starting GCM 128-bit (16 byte tag) rtpw sender process..." + +exec $RTPW $* $GCMARGS128 -s 127.0.0.1 $DEST_PORT & + +sender_pid=$! + +echo $0 ": sender PID = $sender_pid" + +# verify that the background job is running +ps -e | grep -q $sender_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 255 +fi + +sleep $DURATION + +kill $receiver_pid +kill $sender_pid + +wait $receiver_pid 2>/dev/null +wait $sender_pid 2>/dev/null + + +GCMARGS256="-k 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 -g -e 256" +echo $0 ": starting GCM mode 256-bit rtpw receiver process... " + +exec $RTPW $* $GCMARGS256 -r 127.0.0.1 $DEST_PORT & + +receiver_pid=$! + +echo $0 ": receiver PID = $receiver_pid" + +sleep 1 + +# verify that the background job is running +ps -e | grep -q $receiver_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 254 +fi + +echo $0 ": starting GCM 256-bit rtpw sender process..." + +exec $RTPW $* $GCMARGS256 -s 127.0.0.1 $DEST_PORT & + +sender_pid=$! + +echo $0 ": sender PID = $sender_pid" + +# verify that the background job is running +ps -e | grep -q $sender_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 255 +fi + +sleep $DURATION + +kill $receiver_pid +kill $sender_pid + +wait $receiver_pid 2>/dev/null +wait $sender_pid 2>/dev/null + +GCMARGS256="-k a123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 -g -t 16 -e 256" +echo $0 ": starting GCM mode 256-bit (16 byte tag) rtpw receiver process... " + +exec $RTPW $* $GCMARGS256 -r 127.0.0.1 $DEST_PORT & + +receiver_pid=$! + +echo $0 ": receiver PID = $receiver_pid" + +sleep 1 + +# verify that the background job is running +ps -e | grep -q $receiver_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 254 +fi + +echo $0 ": starting GCM 256-bit (16 byte tag) rtpw sender process..." + +exec $RTPW $* $GCMARGS256 -s 127.0.0.1 $DEST_PORT & + +sender_pid=$! + +echo $0 ": sender PID = $sender_pid" + +# verify that the background job is running +ps -e | grep -q $sender_pid +retval=$? +echo $retval +if [ $retval != 0 ]; then + echo $0 ": error" + exit 255 +fi + +sleep $DURATION + +kill $receiver_pid +kill $sender_pid + +wait $receiver_pid 2>/dev/null +wait $sender_pid 2>/dev/null + +echo $0 ": done (test passed)" + +else + +echo "error: can't find executable" $RTPW +exit 1 + +fi + +# EOF + + diff --git a/src/libs/libsrtp/test/srtp_driver.c b/src/libs/libsrtp/test/srtp_driver.c new file mode 100644 index 00000000..4669f718 --- /dev/null +++ b/src/libs/libsrtp/test/srtp_driver.c @@ -0,0 +1,6367 @@ +/* + * srtp_driver.c + * + * a test driver for libSRTP + * + * David A. McGrew + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <string.h> /* for memcpy() */ +#include <time.h> /* for clock() */ +#include <stdlib.h> /* for malloc(), free() */ +#include <stdio.h> /* for print(), fflush() */ +#include "getopt_s.h" /* for local getopt() */ + +#include "srtp_priv.h" +#include "stream_list_priv.h" +#include "util.h" + +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> +#elif defined HAVE_WINSOCK2_H +#include <winsock2.h> +#endif + +#define PRINT_REFERENCE_PACKET 1 + +srtp_err_status_t srtp_validate(void); + +srtp_err_status_t srtp_validate_mki(void); + +srtp_err_status_t srtp_validate_null_sha1_80(void); + +srtp_err_status_t srtp_validate_null_null(void); + +srtp_err_status_t srtp_validate_cryptex(void); + +#ifdef GCM +srtp_err_status_t srtp_validate_gcm(void); + +srtp_err_status_t srtp_validate_gcm_cryptex(void); +#endif + +srtp_err_status_t srtp_validate_encrypted_extensions_headers(void); + +#ifdef GCM +srtp_err_status_t srtp_validate_encrypted_extensions_headers_gcm(void); +#endif + +srtp_err_status_t srtp_validate_aes_256(void); + +srtp_err_status_t srtp_create_big_policy(srtp_policy_t **list); + +srtp_err_status_t srtp_dealloc_big_policy(srtp_policy_t *list); + +srtp_err_status_t srtp_test_empty_payload(void); + +#ifdef GCM +srtp_err_status_t srtp_test_empty_payload_gcm(void); +#endif + +srtp_err_status_t srtp_test_remove_stream(void); + +srtp_err_status_t srtp_test_update(void); + +srtp_err_status_t srtp_test_update_mki(void); + +srtp_err_status_t srtp_test_protect_trailer_length(void); + +srtp_err_status_t srtp_test_protect_rtcp_trailer_length(void); + +srtp_err_status_t srtp_test_out_of_order_after_rollover(void); + +srtp_err_status_t srtp_test_get_roc(void); + +srtp_err_status_t srtp_test_set_receiver_roc(void); + +srtp_err_status_t srtp_test_roc_mismatch(void); + +srtp_err_status_t srtp_test_set_sender_roc(void); + +srtp_err_status_t srtp_test_cryptex_csrc_but_no_extension_header(void); + +double srtp_bits_per_second(size_t msg_len_octets, const srtp_policy_t *policy); + +double srtp_rejections_per_second(size_t msg_len_octets, + const srtp_policy_t *policy); + +void srtp_do_timing(const srtp_policy_t *policy); + +void srtp_do_rejection_timing(const srtp_policy_t *policy); + +srtp_err_status_t srtp_test(const srtp_policy_t *policy, + bool test_extension_headers, + bool use_mki, + size_t mki_index); + +srtp_err_status_t srtp_test_io_lengths(const srtp_policy_t *policy, + bool test_extension_headers, + bool use_mki, + size_t mki_index); + +srtp_err_status_t srtcp_test(const srtp_policy_t *policy, + bool use_mki, + size_t mki_index); + +srtp_err_status_t srtcp_test_io_lengths(const srtp_policy_t *policy, + bool use_mki, + size_t mki_index); + +srtp_err_status_t srtp_session_print_policy(srtp_t srtp); + +srtp_err_status_t srtp_print_policy(const srtp_policy_t *policy); + +char *srtp_packet_to_string(uint8_t *packet, size_t packet_len); +char *srtp_rtcp_packet_to_string(uint8_t *packet, size_t pkt_octet_len); + +double mips_estimate(size_t num_trials, size_t *ignore); + +srtp_err_status_t srtp_stream_list_test(void); + +const uint8_t rtp_test_packet_extension_header[12] = { + /* one-byte header */ + 0xbe, 0xde, + /* size */ + 0x00, 0x02, + /* id 1, length 1 (i.e. 2 bytes) */ + 0x11, + /* payload */ + 0xca, 0xfe, + /* padding */ + 0x00, + /* id 2, length 0 (i.e. 1 byte) */ + 0x20, + /* payload */ + 0xba, + /* padding */ + 0x00, 0x00 +}; + +#define TEST_MKI_ID_SIZE 4 + +typedef struct test_vectors_t { + const char *name; + const char *plaintext; + const char *ciphertext; +} test_vectors_t; + +extern uint8_t test_key[46]; +extern uint8_t test_key_2[46]; +extern uint8_t test_mki_id[TEST_MKI_ID_SIZE]; +extern uint8_t test_mki_id_2[TEST_MKI_ID_SIZE]; +extern uint8_t test_key_gcm[28]; + +// clang-format off +srtp_master_key_t master_key_1 = { + test_key, + test_mki_id +}; + +srtp_master_key_t master_key_2 = { + test_key_2, + test_mki_id_2 +}; + +srtp_master_key_t *test_keys[2] = { + &master_key_1, + &master_key_2 +}; +// clang-format on + +bool use_srtp_not_in_place_io_api = false; + +srtp_err_status_t call_srtp_protect2(srtp_ctx_t *ctx, + uint8_t *rtp, + size_t rtp_len, + size_t *srtp_len, + size_t mki_index) +{ + srtp_err_status_t status = srtp_err_status_fail; + if (use_srtp_not_in_place_io_api) { + uint8_t in_buf[4048]; + if (rtp_len > sizeof(in_buf)) { + printf("rtp_len greater than in_buf"); + exit(1); + } + memcpy(in_buf, rtp, rtp_len); + status = srtp_protect(ctx, in_buf, rtp_len, rtp, srtp_len, mki_index); + } else { + status = srtp_protect(ctx, rtp, rtp_len, rtp, srtp_len, mki_index); + } + return status; +} + +srtp_err_status_t call_srtp_protect(srtp_ctx_t *ctx, + uint8_t *rtp, + size_t *rtp_len, + size_t mki_index) +{ + // an assumption + size_t srtp_len = *rtp_len + SRTP_MAX_TRAILER_LEN; + srtp_err_status_t status = + call_srtp_protect2(ctx, rtp, *rtp_len, &srtp_len, mki_index); + *rtp_len = srtp_len; + return status; +} + +srtp_err_status_t call_srtp_unprotect2(srtp_ctx_t *ctx, + uint8_t *srtp, + size_t srtp_len, + size_t *rtp_len) +{ + srtp_err_status_t status = srtp_err_status_fail; + if (use_srtp_not_in_place_io_api) { + uint8_t in_buf[4048]; + if (srtp_len > sizeof(in_buf)) { + printf("srtp_len greater than in_buf"); + exit(1); + } + memcpy(in_buf, srtp, srtp_len); + status = srtp_unprotect(ctx, in_buf, srtp_len, srtp, rtp_len); + } else { + status = srtp_unprotect(ctx, srtp, srtp_len, srtp, rtp_len); + } + return status; +} + +srtp_err_status_t call_srtp_unprotect(srtp_ctx_t *ctx, + uint8_t *srtp, + size_t *srtp_len) +{ + return call_srtp_unprotect2(ctx, srtp, *srtp_len, srtp_len); +} + +srtp_err_status_t call_srtp_protect_rtcp2(srtp_ctx_t *ctx, + uint8_t *rtcp, + size_t rtcp_len, + size_t *srtcp_len, + size_t mki_index) +{ + srtp_err_status_t status = srtp_err_status_fail; + if (use_srtp_not_in_place_io_api) { + uint8_t in_buf[4048]; + if (rtcp_len > sizeof(in_buf)) { + printf("rtcp_len greater than in_buf"); + exit(1); + } + memcpy(in_buf, rtcp, rtcp_len); + status = srtp_protect_rtcp(ctx, in_buf, rtcp_len, rtcp, srtcp_len, + mki_index); + } else { + status = + srtp_protect_rtcp(ctx, rtcp, rtcp_len, rtcp, srtcp_len, mki_index); + } + return status; +} + +srtp_err_status_t call_srtp_protect_rtcp(srtp_ctx_t *ctx, + uint8_t *rtcp, + size_t *rtcp_len, + size_t mki_index) +{ + // an assumption + size_t srtcp_len = *rtcp_len + SRTP_MAX_SRTCP_TRAILER_LEN; + srtp_err_status_t status = + call_srtp_protect_rtcp2(ctx, rtcp, *rtcp_len, &srtcp_len, mki_index); + *rtcp_len = srtcp_len; + return status; +} + +srtp_err_status_t call_srtp_unprotect_rtcp2(srtp_ctx_t *ctx, + uint8_t *srtcp, + size_t srtcp_len, + size_t *rtcp_len) +{ + srtp_err_status_t status = srtp_err_status_fail; + if (use_srtp_not_in_place_io_api) { + uint8_t in_buf[4048]; + if (srtcp_len > sizeof(in_buf)) { + printf("srtcp_len greater than in_buf"); + exit(1); + } + memcpy(in_buf, srtcp, srtcp_len); + status = srtp_unprotect_rtcp(ctx, in_buf, srtcp_len, srtcp, rtcp_len); + } else { + status = srtp_unprotect_rtcp(ctx, srtcp, srtcp_len, srtcp, rtcp_len); + } + return status; +} + +srtp_err_status_t call_srtp_unprotect_rtcp(srtp_ctx_t *ctx, + uint8_t *srtcp, + size_t *srtcp_len) +{ + return call_srtp_unprotect_rtcp2(ctx, srtcp, *srtcp_len, srtcp_len); +} + +void usage(char *prog_name) +{ + printf("usage: %s [ -t ][ -c ][ -v ][ -s ][ -o ][-d <debug_module> ]* [ -l " + "][ -n ]\n" + " -t run timing test\n" + " -r run rejection timing test\n" + " -c run codec timing test\n" + " -v run validation tests\n" + " -s run stream list tests only\n" + " -o output logging to stdout\n" + " -d <mod> turn on debugging module <mod>\n" + " -l list debugging modules\n" + " -n run with not-in-place io api\n", + prog_name); + exit(1); +} + +void log_handler(srtp_log_level_t level, const char *msg, void *data) +{ + char level_char = '?'; + (void)data; + switch (level) { + case srtp_log_level_error: + level_char = 'e'; + break; + case srtp_log_level_warning: + level_char = 'w'; + break; + case srtp_log_level_info: + level_char = 'i'; + break; + case srtp_log_level_debug: + level_char = 'd'; + break; + } + printf("SRTP-LOG [%c]: %s\n", level_char, msg); +} + +/* + * The policy_array and invalid_policy_array are null-terminated arrays of + * policy structs. They is declared at the end of this file. + */ + +extern const srtp_policy_t *policy_array[]; +extern const srtp_policy_t *invalid_policy_array[]; + +/* the wildcard_policy is declared below; it has a wildcard ssrc */ + +extern const srtp_policy_t wildcard_policy; + +/* + * mod_driver debug module - debugging module for this test driver + * + * we use the crypto_kernel debugging system in this driver, which + * makes the interface uniform and increases portability + */ + +srtp_debug_module_t mod_driver = { + false, /* debugging is off by default */ + "driver" /* printable name for module */ +}; + +int main(int argc, char *argv[]) +{ + int q; + bool do_timing_test = false; + bool do_rejection_test = false; + bool do_codec_timing = false; + bool do_validation = false; + bool do_stream_list = false; + bool do_list_mods = false; + bool do_log_stdout = false; + srtp_err_status_t status; + const size_t hdr_size = 12; + + /* + * verify that the compiler has interpreted the header data + * structure srtp_hdr_t correctly + */ + if (sizeof(srtp_hdr_t) != hdr_size) { + printf("error: srtp_hdr_t has incorrect size" + "(size is %ld bytes, expected %ld)\n", + (long)sizeof(srtp_hdr_t), (long)hdr_size); + exit(1); + } + + /* initialize srtp library */ + status = srtp_init(); + if (status) { + printf("error: srtp init failed with error code %d\n", status); + exit(1); + } + + /* load srtp_driver debug module */ + status = srtp_crypto_kernel_load_debug_module(&mod_driver); + if (status) { + printf("error: load of srtp_driver debug module failed " + "with error code %d\n", + status); + exit(1); + } + + /* process input arguments */ + while (1) { + q = getopt_s(argc, argv, "trcvsold:n"); + if (q == -1) { + break; + } + switch (q) { + case 't': + do_timing_test = true; + break; + case 'r': + do_rejection_test = true; + break; + case 'c': + do_codec_timing = true; + break; + case 'v': + do_validation = true; + do_stream_list = true; + break; + case 's': + do_stream_list = true; + break; + case 'o': + do_log_stdout = true; + break; + case 'l': + do_list_mods = true; + break; + case 'd': + status = srtp_set_debug_module(optarg_s, true); + if (status) { + printf("error: set debug module (%s) failed\n", optarg_s); + exit(1); + } + break; + case 'n': + printf("using srtp not-in-place io api\n"); + use_srtp_not_in_place_io_api = true; + break; + default: + usage(argv[0]); + } + } + + if (!do_validation && !do_timing_test && !do_codec_timing && + !do_list_mods && !do_rejection_test && !do_stream_list) { + usage(argv[0]); + } + + if (do_log_stdout) { + status = srtp_install_log_handler(log_handler, NULL); + if (status) { + printf("error: install log handler failed\n"); + exit(1); + } + } + + if (do_list_mods) { + status = srtp_list_debug_modules(); + if (status) { + printf("error: list of debug modules failed\n"); + exit(1); + } + } + + if (do_validation) { + const srtp_policy_t **policy = policy_array; + srtp_policy_t *big_policy; + srtp_t srtp_sender; + + /* loop over policy array, testing srtp and srtcp for each policy */ + while (*policy != NULL) { + printf("testing srtp_protect and srtp_unprotect\n"); + if (srtp_test(*policy, false, false, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect io lengths\n"); + if (srtp_test_io_lengths(*policy, false, false, 0) == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect with encrypted " + "extensions headers\n"); + if (srtp_test(*policy, true, false, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect io lengths with " + "encrypted extension headers\n"); + if (srtp_test_io_lengths(*policy, true, false, 0) == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect_rtcp and srtp_unprotect_rtcp\n"); + if (srtcp_test(*policy, false, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect_rtcp and srtp_unprotect_rtcp io " + "lengths\n"); + if (srtcp_test_io_lengths(*policy, false, 0) == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect_rtp and srtp_unprotect_rtp with MKI " + "index set to 0\n"); + if (srtp_test(*policy, false, true, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + printf("testing srtp_protect_rtp and srtp_unprotect_rtp with MKI " + "index set to 1\n"); + if (srtp_test(*policy, false, true, 1) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect io lengths with " + "MKI\n"); + if (srtp_test_io_lengths(*policy, false, true, 1) == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect_rtcp and srtp_unprotect_rtcp with MKI " + "index set to 0\n"); + if (srtcp_test(*policy, true, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect_rtcp and srtp_unprotect_rtcp with MKI " + "index set to 1\n"); + if (srtcp_test(*policy, true, 1) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect_rtcp and srtp_unprotect_rtcp io " + "lengths with MKI\n"); + if (srtcp_test_io_lengths(*policy, true, 1) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + policy++; + } + + /* loop over invalid policy array, testing that an SRTP context cannot + * be created with the policy */ + policy = invalid_policy_array; + while (*policy != NULL) { + printf("testing srtp_create fails with invalid policy\n"); + if (srtp_create(&srtp_sender, *policy) != srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + policy++; + } + + /* create a big policy list and run tests on it */ + status = srtp_create_big_policy(&big_policy); + if (status) { + printf("unexpected failure with error code %d\n", status); + exit(1); + } + printf("testing srtp_protect and srtp_unprotect with big policy\n"); + if (srtp_test(big_policy, false, false, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + printf("testing srtp_protect and srtp_unprotect with big policy and " + "encrypted extensions headers\n"); + if (srtp_test(big_policy, true, false, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + status = srtp_dealloc_big_policy(big_policy); + if (status) { + printf("unexpected failure with error code %d\n", status); + exit(1); + } + + /* run test on wildcard policy */ + printf("testing srtp_protect and srtp_unprotect on " + "wildcard ssrc policy\n"); + if (srtp_test(&wildcard_policy, false, false, 0) == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + printf("testing srtp_protect and srtp_unprotect on " + "wildcard ssrc policy and encrypted extensions headers\n"); + if (srtp_test(&wildcard_policy, true, false, 0) == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + /* + * run validation test against the reference packets - note + * that this test only covers the default policy + */ + printf("testing srtp_protect and srtp_unprotect against " + "reference packet\n"); + if (srtp_validate() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + /* + * run validation test against the reference packets - note + * that this test only covers the default policy + */ + printf("testing srtp_protect and srtp_unprotect against " + "reference packet using mki\n"); + if (srtp_validate_mki() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect against " + "reference packet using null cipher and SHA1-80 HMAC\n"); + if (srtp_validate_null_sha1_80() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect against " + "reference packet using null cipher and null HMAC\n"); + if (srtp_validate_null_null() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect against " + "reference cryptex packet\n"); + if (srtp_validate_cryptex() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + +#ifdef GCM + printf("testing srtp_protect and srtp_unprotect against " + "reference packet using GCM\n"); + if (srtp_validate_gcm() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_protect and srtp_unprotect against " + "reference cryptex packet using GCM\n"); + if (srtp_validate_gcm_cryptex() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } +#endif + + printf("testing srtp_protect and srtp_unprotect against " + "reference packet with encrypted extensions headers\n"); + if (srtp_validate_encrypted_extensions_headers() == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + +#ifdef GCM + printf("testing srtp_protect and srtp_unprotect against " + "reference packet with encrypted extension headers (GCM)\n"); + if (srtp_validate_encrypted_extensions_headers_gcm() == + srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } +#endif + + /* + * run validation test against the reference packets for + * AES-256 + */ + printf("testing srtp_protect and srtp_unprotect against " + "reference packet (AES-256)\n"); + if (srtp_validate_aes_256() == srtp_err_status_ok) { + printf("passed\n\n"); + } else { + printf("failed\n"); + exit(1); + } + + /* + * test packets with empty payload + */ + printf("testing srtp_protect and srtp_unprotect against " + "packet with empty payload\n"); + if (srtp_test_empty_payload() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } +#ifdef GCM + printf("testing srtp_protect and srtp_unprotect against " + "packet with empty payload (GCM)\n"); + if (srtp_test_empty_payload_gcm() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } +#endif + + /* + * test the function srtp_stream_remove() + */ + printf("testing srtp_stream_remove()..."); + if (srtp_test_remove_stream() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + /* + * test the function srtp_update() + */ + printf("testing srtp_update()..."); + if (srtp_test_update() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + /* + * test the function srtp_update() + */ + printf("testing srtp_update_mki()..."); + if (srtp_test_update_mki() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + /* + * test the functions srtp_get_protect_trailer_length + * and srtp_get_protect_rtcp_trailer_length + */ + printf("testing srtp_get_protect_trailer_length()..."); + if (srtp_test_protect_trailer_length() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_get_protect_rtcp_trailer_length()..."); + if (srtp_test_protect_rtcp_trailer_length() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_test_out_of_order_after_rollover()..."); + if (srtp_test_out_of_order_after_rollover() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_test_get_roc()..."); + if (srtp_test_get_roc() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_test_set_receiver_roc()..."); + if (srtp_test_set_receiver_roc() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_test_roc_mismatch()..."); + if (srtp_test_roc_mismatch() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing srtp_test_set_sender_roc()..."); + if (srtp_test_set_sender_roc() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + + printf("testing cryptex_csrc_but_no_extension_header()..."); + if (srtp_test_cryptex_csrc_but_no_extension_header() == + srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + } + + if (do_stream_list) { + printf("testing srtp_stream_list..."); + if (srtp_stream_list_test() == srtp_err_status_ok) { + printf("passed\n"); + } else { + printf("failed\n"); + exit(1); + } + } + + if (do_timing_test) { + const srtp_policy_t **policy = policy_array; + + /* loop over policies, run timing test for each */ + while (*policy != NULL) { + srtp_print_policy(*policy); + srtp_do_timing(*policy); + policy++; + } + } + + if (do_rejection_test) { + const srtp_policy_t **policy = policy_array; + + /* loop over policies, run rejection timing test for each */ + while (*policy != NULL) { + srtp_print_policy(*policy); + srtp_do_rejection_timing(*policy); + policy++; + } + } + + if (do_codec_timing) { + srtp_policy_t policy; + size_t ignore; + double mips_value = mips_estimate(1000000000, &ignore); + + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xdecafbad; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + printf("mips estimate: %e\n", mips_value); + + printf("testing srtp processing time for voice codecs:\n"); + printf("codec\t\tlength (octets)\t\tsrtp instructions/second\n"); + printf("G.711\t\t%d\t\t\t%e\n", 80, + (double)mips_value * (80 * 8) / + srtp_bits_per_second(80, &policy) / .01); + printf("G.711\t\t%d\t\t\t%e\n", 160, + (double)mips_value * (160 * 8) / + srtp_bits_per_second(160, &policy) / .02); + printf("G.726-32\t%d\t\t\t%e\n", 40, + (double)mips_value * (40 * 8) / + srtp_bits_per_second(40, &policy) / .01); + printf("G.726-32\t%d\t\t\t%e\n", 80, + (double)mips_value * (80 * 8) / + srtp_bits_per_second(80, &policy) / .02); + printf("G.729\t\t%d\t\t\t%e\n", 10, + (double)mips_value * (10 * 8) / + srtp_bits_per_second(10, &policy) / .01); + printf("G.729\t\t%d\t\t\t%e\n", 20, + (double)mips_value * (20 * 8) / + srtp_bits_per_second(20, &policy) / .02); + printf("Wideband\t%d\t\t\t%e\n", 320, + (double)mips_value * (320 * 8) / + srtp_bits_per_second(320, &policy) / .01); + printf("Wideband\t%d\t\t\t%e\n", 640, + (double)mips_value * (640 * 8) / + srtp_bits_per_second(640, &policy) / .02); + } + + status = srtp_shutdown(); + if (status) { + printf("error: srtp shutdown failed with error code %d\n", status); + exit(1); + } + + return 0; +} + +/* + * create_rtp_test_packet returns a pointer to a (malloced) example + * RTP packet whose data field has the length given by payload_len. + * There is room at the end of the packet for the max SRTP trailer. + * The space for the trailer space and the following four bytes + * are filled with overrun marker to enable testing for overwrites. + * + * The size of the packet is returned rtp_len, the complete size of + * the buffer is returned in buffer_len. + * + * note that the location of the test packet must be + * deallocated with the free() call once it is no longer needed. + */ +uint8_t *create_rtp_test_packet(size_t payload_len, + uint32_t ssrc, + uint16_t seq, + uint32_t ts, + bool add_hdr_xtn, + size_t *rtp_len, + size_t *buffer_len) +{ + uint8_t *buffer; + srtp_hdr_t *hdr; + size_t bytes_in_hdr = 12; + size_t len = 0; + + *rtp_len = payload_len + bytes_in_hdr; + + if (add_hdr_xtn) { + *rtp_len += sizeof(rtp_test_packet_extension_header); + } + + // allocate enough for max trailer and 4 byte overrun detection + len = *rtp_len + SRTP_MAX_TRAILER_LEN + 4; + + buffer = (uint8_t *)malloc(len); + if (!buffer) { + printf("rtp test packet allocation failed\n"); + exit(1); + } + + overrun_check_prepare(buffer, 0, len); + + hdr = (srtp_hdr_t *)buffer; + hdr->version = 2; + hdr->p = 0; + hdr->x = add_hdr_xtn ? 1 : 0; + hdr->cc = 0; + hdr->m = 0; + hdr->pt = 0xf; + hdr->seq = htons(seq); + hdr->ts = htonl(ts); + hdr->ssrc = htonl(ssrc); + buffer += bytes_in_hdr; + + if (add_hdr_xtn) { + memcpy(buffer, rtp_test_packet_extension_header, + sizeof(rtp_test_packet_extension_header)); + buffer += sizeof(rtp_test_packet_extension_header); + } + + /* set RTP data to 0xab */ + memset(buffer, 0xab, payload_len); + buffer += payload_len; + + if (buffer_len) { + *buffer_len = len; + } + + return buffer - *rtp_len; +} + +uint8_t *create_rtcp_test_packet(size_t payload_len, + uint32_t ssrc, + size_t *rtcp_len, + size_t *buffer_len) +{ + uint8_t *buffer; + srtcp_hdr_t *hdr; + size_t bytes_in_hdr = 8; + size_t len = 0; + + *rtcp_len = payload_len + bytes_in_hdr; + + // allocate enough for max trailer and 4 byte overrun detection + len = *rtcp_len + SRTP_MAX_SRTCP_TRAILER_LEN + 4; + + buffer = (uint8_t *)malloc(len); + if (!buffer) { + printf("rtcp test packet allocation failed\n"); + exit(1); + } + + overrun_check_prepare(buffer, 0, len); + + hdr = (srtcp_hdr_t *)buffer; + hdr->version = 2; /* RTP version two */ + hdr->p = 0; /* no padding needed */ + hdr->rc = 0; /* no reports */ + hdr->pt = 0xc8; /* sender report (200) */ + hdr->len = ((bytes_in_hdr + payload_len) % 4) - 1; + hdr->ssrc = htonl(ssrc); /* synch. source */ + buffer += bytes_in_hdr; + + /* set data to 0xab */ + memset(buffer, 0xab, payload_len); + buffer += payload_len; + + if (buffer_len) { + *buffer_len = len; + } + + return buffer - *rtcp_len; +} + +void srtp_do_timing(const srtp_policy_t *policy) +{ + int len; + + /* + * note: the output of this function is formatted so that it + * can be used in gnuplot. '#' indicates a comment, and "\r\n" + * terminates a record + */ + + printf("# testing srtp throughput:\r\n"); + printf("# mesg length (octets)\tthroughput (megabits per second)\r\n"); + + for (len = 16; len <= 2048; len *= 2) { + printf("%d\t\t\t%f\r\n", len, + srtp_bits_per_second(len, policy) / 1.0E6); + } + + /* these extra linefeeds let gnuplot know that a dataset is done */ + printf("\r\n\r\n"); +} + +void srtp_do_rejection_timing(const srtp_policy_t *policy) +{ + int len; + + /* + * note: the output of this function is formatted so that it + * can be used in gnuplot. '#' indicates a comment, and "\r\n" + * terminates a record + */ + + printf("# testing srtp rejection throughput:\r\n"); + printf("# mesg length (octets)\trejections per second\r\n"); + + for (len = 8; len <= 2048; len *= 2) { + printf("%d\t\t\t%e\r\n", len, srtp_rejections_per_second(len, policy)); + } + + /* these extra linefeeds let gnuplot know that a dataset is done */ + printf("\r\n\r\n"); +} + +#define MAX_MSG_LEN 1024 + +double srtp_bits_per_second(size_t msg_len_octets, const srtp_policy_t *policy) +{ + srtp_t srtp; + uint8_t *mesg; + clock_t timer; + size_t num_trials = 100000; + size_t input_len, len; + uint32_t ssrc; + srtp_err_status_t status; + + /* + * allocate and initialize an srtp session + */ + status = srtp_create(&srtp, policy); + if (status) { + printf("error: srtp_create() failed with error code %d\n", status); + exit(1); + } + + /* + * if the ssrc is unspecified, use a predetermined one + */ + if (policy->ssrc.type != ssrc_specific) { + ssrc = 0xdeadbeef; + } else { + ssrc = policy->ssrc.value; + } + + /* + * create a test packet + */ + mesg = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, false, &input_len, + NULL); + if (mesg == NULL) { + return 0.0; /* indicate failure by returning zero */ + } + timer = clock(); + for (size_t i = 0; i < num_trials; i++) { + len = input_len; + /* srtp protect message */ + status = call_srtp_protect(srtp, mesg, &len, 0); + if (status) { + printf("error: srtp_protect() failed with error code %d\n", status); + exit(1); + } + + /* increment message number */ + { + /* hack sequence to avoid problems with macros for htons/ntohs on + * some systems */ + srtp_hdr_t *hdr = (srtp_hdr_t *)mesg; + short new_seq = ntohs(hdr->seq) + 1; + hdr->seq = htons(new_seq); + } + } + timer = clock() - timer; + + free(mesg); + + status = srtp_dealloc(srtp); + if (status) { + printf("error: srtp_dealloc() failed with error code %d\n", status); + exit(1); + } + + return msg_len_octets * 8.0 * num_trials * CLOCKS_PER_SEC / timer; +} + +double srtp_rejections_per_second(size_t msg_len_octets, + const srtp_policy_t *policy) +{ + srtp_ctx_t *srtp; + uint8_t *mesg; + size_t len; + clock_t timer; + size_t num_trials = 1000000; + uint32_t ssrc = policy->ssrc.value; + srtp_err_status_t status; + + /* + * allocate and initialize an srtp session + */ + status = srtp_create(&srtp, policy); + if (status) { + printf("error: srtp_create() failed with error code %d\n", status); + exit(1); + } + + mesg = + create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, false, &len, NULL); + if (mesg == NULL) { + return 0.0; /* indicate failure by returning zero */ + } + call_srtp_protect(srtp, mesg, &len, 0); + + timer = clock(); + for (size_t i = 0; i < num_trials; i++) { + len = msg_len_octets; + call_srtp_unprotect(srtp, mesg, &len); + } + timer = clock() - timer; + + free(mesg); + + status = srtp_dealloc(srtp); + if (status) { + printf("error: srtp_dealloc() failed with error code %d\n", status); + exit(1); + } + + return (double)num_trials * CLOCKS_PER_SEC / timer; +} + +srtp_err_status_t srtp_test(const srtp_policy_t *policy, + bool test_extension_headers, + bool use_mki, + size_t mki_index) +{ + size_t i; + srtp_t srtp_sender; + srtp_t srtp_rcvr; + srtp_err_status_t status = srtp_err_status_ok; + uint8_t *hdr, *hdr2; + uint8_t hdr_enc[64]; + size_t msg_len_octets, msg_len_enc, msg_len; + size_t len, len2; + size_t tag_length; + size_t buffer_len; + uint32_t ssrc; + srtp_policy_t send_policy; + srtp_policy_t rcvr_policy; + uint8_t header = 1; + + memcpy(&send_policy, policy, sizeof(srtp_policy_t)); + + send_policy.use_mki = use_mki; + if (!use_mki) { + send_policy.mki_size = 0; + } + + if (test_extension_headers) { + send_policy.enc_xtn_hdr = &header; + send_policy.enc_xtn_hdr_count = 1; + } + + CHECK_OK(srtp_create(&srtp_sender, &send_policy)); + + /* print out policy */ + CHECK_OK(srtp_session_print_policy(srtp_sender)); + + /* + * initialize data buffer, using the ssrc in the policy unless that + * value is a wildcard, in which case we'll just use an arbitrary + * one + */ + if (policy->ssrc.type != ssrc_specific) { + ssrc = 0xdecafbad; + } else { + ssrc = policy->ssrc.value; + } + msg_len_octets = 28; + hdr = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, + test_extension_headers, &len, &buffer_len); + hdr2 = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, + test_extension_headers, &len2, NULL); + + /* save original msg len */ + msg_len = len; + + if (hdr == NULL) { + free(hdr2); + return srtp_err_status_alloc_fail; + } + if (hdr2 == NULL) { + free(hdr); + return srtp_err_status_alloc_fail; + } + + debug_print(mod_driver, "before protection:\n%s", + srtp_packet_to_string(hdr, len)); + +#if PRINT_REFERENCE_PACKET + debug_print(mod_driver, "reference packet before protection:\n%s", + octet_string_hex_string(hdr, len)); +#endif + CHECK_OK(call_srtp_protect(srtp_sender, hdr, &len, mki_index)); + + debug_print(mod_driver, "after protection:\n%s", + srtp_packet_to_string(hdr, len)); +#if PRINT_REFERENCE_PACKET + debug_print(mod_driver, "after protection:\n%s", + octet_string_hex_string(hdr, len)); +#endif + + /* save protected message and length */ + memcpy(hdr_enc, hdr, len); + msg_len_enc = len; + + /* + * check for overrun of the srtp_protect() function + * + * The packet is followed by a value of 0xffffffff; if the value of the + * data following the packet is different, then we know that the + * protect function is overwriting the end of the packet. + */ + CHECK_OK( + srtp_get_protect_trailer_length(srtp_sender, mki_index, &tag_length)); + CHECK_OVERRUN(hdr, msg_len + tag_length, buffer_len); + + /* + * if the policy includes confidentiality, check that ciphertext is + * different than plaintext + * + * Note that this check will give false negatives, with some small + * probability, especially if the packets are short. For that + * reason, we skip this check if the plaintext is less than four + * octets long. + */ + if ((policy->rtp.sec_serv & sec_serv_conf) && (msg_len_octets >= 4)) { + printf("testing that ciphertext is distinct from plaintext..."); + status = srtp_err_status_algo_fail; + for (i = 12; i < msg_len_octets + 12; i++) { + if (hdr[i] != hdr2[i]) { + status = srtp_err_status_ok; + } + } + if (status) { + printf("failed\n"); + free(hdr); + free(hdr2); + return status; + } + printf("passed\n"); + } + + memcpy(&rcvr_policy, &send_policy, sizeof(srtp_policy_t)); + rcvr_policy.ssrc.type = ssrc_any_inbound; + + CHECK_OK(srtp_create(&srtp_rcvr, &rcvr_policy)); + + CHECK_OK(call_srtp_unprotect(srtp_rcvr, hdr, &len)); + + debug_print(mod_driver, "after unprotection:\n%s", + srtp_packet_to_string(hdr, len)); + + /* verify that the unprotected packet matches the original one */ + for (i = 0; i < len; i++) { + if (hdr[i] != hdr2[i]) { + fprintf(stdout, "mismatch at octet %zu\n", i); + status = srtp_err_status_algo_fail; + } + } + if (status) { + free(hdr); + free(hdr2); + return status; + } + + /* + * if the policy includes authentication, then test for false positives + */ + if (policy->rtp.sec_serv & sec_serv_auth) { + uint8_t *data = hdr + (test_extension_headers ? 24 : 12); + + printf("testing for false positives in replay check..."); + + /* unprotect a second time - should fail with a replay error */ + status = call_srtp_unprotect(srtp_rcvr, hdr, &msg_len_enc); + if (status != srtp_err_status_replay_fail) { + printf("failed with error code %d\n", status); + free(hdr); + free(hdr2); + return srtp_err_status_algo_fail; + } else { + printf("passed\n"); + } + + printf("testing for false positives in auth check..."); + + /* increment sequence number in header */ + ((srtp_hdr_t *)hdr)->seq++; + + /* apply protection */ + CHECK_OK(call_srtp_protect(srtp_sender, hdr, &len, mki_index)); + + /* flip bits in packet */ + data[0] ^= 0xff; + + /* unprotect, and check for authentication failure */ + status = call_srtp_unprotect(srtp_rcvr, hdr, &len); + if (status != srtp_err_status_auth_fail) { + printf("failed with error code %d\n", status); + printf("failed\n"); + free(hdr); + free(hdr2); + return srtp_err_status_algo_fail; + } else { + printf("passed\n"); + } + } + + CHECK_OK(srtp_dealloc(srtp_sender)); + CHECK_OK(srtp_dealloc(srtp_rcvr)); + + free(hdr); + free(hdr2); + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_io_lengths(const srtp_policy_t *policy, + bool test_extension_headers, + bool use_mki, + size_t mki_index) +{ + srtp_t srtp_sender; + srtp_policy_t send_policy; + uint32_t ssrc; + uint16_t seq = 1; + uint32_t ts = 1234; + uint8_t *rtp; + size_t rtp_len, buffer_len, srtp_len; + size_t rtp_header_len = 12; + uint8_t xtn_header_id = 1; + + memcpy(&send_policy, policy, sizeof(srtp_policy_t)); + + send_policy.use_mki = use_mki; + if (!use_mki) { + send_policy.mki_size = 0; + } + + if (test_extension_headers) { + send_policy.enc_xtn_hdr = &xtn_header_id; + send_policy.enc_xtn_hdr_count = 1; + rtp_header_len += sizeof(rtp_test_packet_extension_header); + } + + CHECK_OK(srtp_create(&srtp_sender, &send_policy)); + + // get required trailer length + size_t trailer_len; + CHECK_OK( + srtp_get_protect_trailer_length(srtp_sender, mki_index, &trailer_len)); + + CHECK_OK(srtp_session_print_policy(srtp_sender)); + + if (policy->ssrc.type != ssrc_specific) { + ssrc = 0xdecafbad; + } else { + ssrc = policy->ssrc.value; + } + + // 0 byte input + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = buffer_len; + overrun_check_prepare(rtp, 0, buffer_len); + CHECK_RETURN(call_srtp_protect2(srtp_sender, rtp, 0, &srtp_len, mki_index), + srtp_err_status_bad_param); + CHECK_OVERRUN(rtp, 0, buffer_len); + free(rtp); + + // 1 byte input + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = buffer_len; + overrun_check_prepare(rtp, 1, buffer_len); + CHECK_RETURN(call_srtp_protect2(srtp_sender, rtp, 1, &srtp_len, mki_index), + srtp_err_status_bad_param); + CHECK_OVERRUN(rtp, 1, buffer_len); + free(rtp); + + // too short header + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = buffer_len; + overrun_check_prepare(rtp, rtp_header_len - 1, buffer_len); + CHECK_RETURN(call_srtp_protect2(srtp_sender, rtp, rtp_header_len - 1, + &srtp_len, mki_index), + srtp_err_status_bad_param); + CHECK_OVERRUN(rtp, rtp_header_len - 1, buffer_len); + free(rtp); + + // zero payload + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = buffer_len; + overrun_check_prepare(rtp, rtp_header_len, buffer_len); + CHECK_OK(call_srtp_protect2(srtp_sender, rtp, rtp_header_len, &srtp_len, + mki_index)); + CHECK(srtp_len == rtp_header_len + trailer_len); + CHECK_OVERRUN(rtp, srtp_len, buffer_len); + free(rtp); + + // 1 byte payload + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = buffer_len; + overrun_check_prepare(rtp, rtp_header_len + 1, buffer_len); + CHECK_OK(call_srtp_protect2(srtp_sender, rtp, rtp_header_len + 1, &srtp_len, + mki_index)); + CHECK(srtp_len == rtp_header_len + 1 + trailer_len); + CHECK_OVERRUN(rtp, srtp_len, buffer_len); + free(rtp); + + // 0 byte output + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = 0; + overrun_check_prepare(rtp, rtp_len, buffer_len); + CHECK_RETURN( + call_srtp_protect2(srtp_sender, rtp, rtp_len, &srtp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtp, rtp_len, buffer_len); + free(rtp); + + // 1 byte output + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = 1; + overrun_check_prepare(rtp, rtp_len, buffer_len); + CHECK_RETURN( + call_srtp_protect2(srtp_sender, rtp, rtp_len, &srtp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtp, rtp_len, buffer_len); + free(rtp); + + if (trailer_len != 0) { + // no space for trailer output + rtp = create_rtp_test_packet( + 28, ssrc, seq++, ts, test_extension_headers, &rtp_len, &buffer_len); + srtp_len = rtp_len; + overrun_check_prepare(rtp, rtp_len, buffer_len); + CHECK_RETURN( + call_srtp_protect2(srtp_sender, rtp, rtp_len, &srtp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtp, rtp_len, buffer_len); + free(rtp); + } + + // 1 byte too small output + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = rtp_len + trailer_len - 1; + overrun_check_prepare(rtp, rtp_len, buffer_len); + CHECK_RETURN( + call_srtp_protect2(srtp_sender, rtp, rtp_len, &srtp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtp, rtp_len, buffer_len); + free(rtp); + + // full payload + rtp = create_rtp_test_packet(28, ssrc, seq++, ts, test_extension_headers, + &rtp_len, &buffer_len); + srtp_len = buffer_len; + CHECK_OK( + call_srtp_protect2(srtp_sender, rtp, rtp_len, &srtp_len, mki_index)); + CHECK(srtp_len == rtp_len + trailer_len); + CHECK_OVERRUN(rtp, srtp_len, buffer_len); + + CHECK_OK(srtp_dealloc(srtp_sender)); + + // unprotect + srtp_t srtp_receiver; + srtp_policy_t receive_policy; + + memcpy(&receive_policy, &send_policy, sizeof(srtp_policy_t)); + receive_policy.ssrc.type = ssrc_any_inbound; + + CHECK_OK(srtp_create(&srtp_receiver, &receive_policy)); + + // unprotect zero byte input + rtp_len = buffer_len; + CHECK_RETURN(call_srtp_unprotect2(srtp_receiver, rtp, 0, &rtp_len), + srtp_err_status_bad_param); + + // unprotect 1 byte input + rtp_len = buffer_len; + CHECK_RETURN(call_srtp_unprotect2(srtp_receiver, rtp, 1, &rtp_len), + srtp_err_status_bad_param); + + // unprotect short header + rtp_len = buffer_len; + CHECK_RETURN( + call_srtp_unprotect2(srtp_receiver, rtp, rtp_header_len - 1, &rtp_len), + srtp_err_status_bad_param); + + // 0 byte output + rtp_len = 0; + CHECK_RETURN(call_srtp_unprotect2(srtp_receiver, rtp, srtp_len, &rtp_len), + srtp_err_status_buffer_small); + + // 1 byte output + rtp_len = 1; + CHECK_RETURN(call_srtp_unprotect2(srtp_receiver, rtp, srtp_len, &rtp_len), + srtp_err_status_buffer_small); + + // 1 byte too small output + rtp_len = srtp_len - trailer_len - 1; + CHECK_RETURN(call_srtp_unprotect2(srtp_receiver, rtp, srtp_len, &rtp_len), + srtp_err_status_buffer_small); + + // full unprotect + rtp_len = buffer_len; + CHECK_OK(call_srtp_unprotect2(srtp_receiver, rtp, srtp_len, &rtp_len)); + CHECK(rtp_len == srtp_len - trailer_len); + + free(rtp); + + CHECK_OK(srtp_dealloc(srtp_receiver)); + + return srtp_err_status_ok; +} + +srtp_err_status_t srtcp_test(const srtp_policy_t *policy, + bool use_mki, + size_t mki_index) +{ + srtp_t srtcp_sender; + srtp_t srtcp_rcvr; + srtp_err_status_t status = srtp_err_status_ok; + uint8_t *hdr, *hdr2; + uint8_t hdr_enc[64]; + size_t msg_len_octets, msg_len_enc, msg_len; + size_t len, len2; + size_t buffer_len; + size_t tag_length; + uint32_t ssrc; + srtp_policy_t send_policy; + srtp_policy_t rcvr_policy; + + memcpy(&send_policy, policy, sizeof(srtp_policy_t)); + + send_policy.use_mki = use_mki; + if (!use_mki) { + send_policy.mki_size = 0; + } + + CHECK_OK(srtp_create(&srtcp_sender, &send_policy)); + + /* print out policy */ + CHECK_OK(srtp_session_print_policy(srtcp_sender)); + + /* + * initialize data buffer, using the ssrc in the policy unless that + * value is a wildcard, in which case we'll just use an arbitrary + * one + */ + if (policy->ssrc.type != ssrc_specific) { + ssrc = 0xdecafbad; + } else { + ssrc = policy->ssrc.value; + } + msg_len_octets = 28; + hdr = create_rtcp_test_packet(msg_len_octets, ssrc, &len, &buffer_len); + /* save message len */ + msg_len = len; + + if (hdr == NULL) { + return srtp_err_status_alloc_fail; + } + hdr2 = create_rtcp_test_packet(msg_len_octets, ssrc, &len2, NULL); + if (hdr2 == NULL) { + free(hdr); + return srtp_err_status_alloc_fail; + } + + debug_print(mod_driver, "before protection:\n%s", + srtp_rtcp_packet_to_string(hdr, len)); + +#if PRINT_REFERENCE_PACKET + debug_print(mod_driver, "reference packet before protection:\n%s", + octet_string_hex_string(hdr, len)); +#endif + CHECK_OK(call_srtp_protect_rtcp(srtcp_sender, hdr, &len, mki_index)); + + debug_print(mod_driver, "after protection:\n%s", + srtp_rtcp_packet_to_string(hdr, len)); +#if PRINT_REFERENCE_PACKET + debug_print(mod_driver, "after protection:\n%s", + octet_string_hex_string(hdr, len)); +#endif + + /* save protected message and length */ + memcpy(hdr_enc, hdr, len); + msg_len_enc = len; + + /* + * check for overrun of the srtp_protect_rtcp() function + * + * The packet is followed by a value of 0xffffffff; if the value of the + * data following the packet is different, then we know that the + * protect function is overwriting the end of the packet. + */ + srtp_get_protect_rtcp_trailer_length(srtcp_sender, mki_index, &tag_length); + CHECK_OVERRUN(hdr, msg_len + tag_length, buffer_len); + + /* + * if the policy includes confidentiality, check that ciphertext is + * different than plaintext + * + * Note that this check will give false negatives, with some small + * probability, especially if the packets are short. For that + * reason, we skip this check if the plaintext is less than four + * octets long. + */ + if ((policy->rtcp.sec_serv & sec_serv_conf) && (msg_len_octets >= 4)) { + printf("testing that ciphertext is distinct from plaintext..."); + status = srtp_err_status_algo_fail; + for (size_t i = 12; i < msg_len_octets + 12; i++) { + if (hdr[i] != hdr2[i]) { + status = srtp_err_status_ok; + } + } + if (status) { + printf("failed\n"); + free(hdr); + free(hdr2); + return status; + } + printf("passed\n"); + } + + memcpy(&rcvr_policy, &send_policy, sizeof(srtp_policy_t)); + if (send_policy.ssrc.type == ssrc_any_outbound) { + rcvr_policy.ssrc.type = ssrc_any_inbound; + } + + CHECK_OK(srtp_create(&srtcp_rcvr, &rcvr_policy)); + + CHECK_OK(call_srtp_unprotect_rtcp(srtcp_rcvr, hdr, &len)); + + debug_print(mod_driver, "after unprotection:\n%s", + srtp_rtcp_packet_to_string(hdr, len)); + + /* verify that the unprotected packet matches the original one */ + for (size_t i = 0; i < len; i++) { + if (hdr[i] != hdr2[i]) { + fprintf(stdout, "mismatch at octet %zu\n", i); + status = srtp_err_status_algo_fail; + } + } + if (status) { + free(hdr); + free(hdr2); + return status; + } + + /* + * if the policy includes authentication, then test for false positives + */ + if (policy->rtp.sec_serv & sec_serv_auth) { + uint8_t *data = hdr + 12; + + printf("testing for false positives in replay check..."); + + /* unprotect a second time - should fail with a replay error */ + status = call_srtp_unprotect_rtcp(srtcp_rcvr, hdr, &msg_len_enc); + if (status != srtp_err_status_replay_fail) { + printf("failed with error code %d\n", status); + free(hdr); + free(hdr2); + return srtp_err_status_algo_fail; + } else { + printf("passed\n"); + } + + printf("testing for false positives in auth check..."); + + /* apply protection */ + CHECK_OK(call_srtp_protect_rtcp(srtcp_sender, hdr, &len, mki_index)); + + /* flip bits in packet */ + data[0] ^= 0xff; + + /* unprotect, and check for authentication failure */ + status = call_srtp_unprotect_rtcp(srtcp_rcvr, hdr, &len); + if (status != srtp_err_status_auth_fail) { + printf("failed with error code %d\n", status); + printf("failed\n"); + free(hdr); + free(hdr2); + return srtp_err_status_algo_fail; + } else { + printf("passed\n"); + } + } + + CHECK_OK(srtp_dealloc(srtcp_sender)); + CHECK_OK(srtp_dealloc(srtcp_rcvr)); + + free(hdr); + free(hdr2); + return srtp_err_status_ok; +} + +srtp_err_status_t srtcp_test_io_lengths(const srtp_policy_t *policy, + bool use_mki, + size_t mki_index) +{ + srtp_t srtp_sender; + srtp_policy_t send_policy; + uint32_t ssrc; + uint8_t *rtcp; + size_t rtcp_len, buffer_len, srtcp_len; + size_t rtcp_header_len = 8; + + memcpy(&send_policy, policy, sizeof(srtp_policy_t)); + + send_policy.use_mki = use_mki; + if (!use_mki) { + send_policy.mki_size = 0; + } + + CHECK_OK(srtp_create(&srtp_sender, &send_policy)); + + // get required trailer length + size_t trailer_len; + CHECK_OK(srtp_get_protect_rtcp_trailer_length(srtp_sender, mki_index, + &trailer_len)); + + CHECK_OK(srtp_session_print_policy(srtp_sender)); + + if (policy->ssrc.type != ssrc_specific) { + ssrc = 0xdecafbad; + } else { + ssrc = policy->ssrc.value; + } + + // 0 byte input + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = buffer_len; + overrun_check_prepare(rtcp, 0, buffer_len); + CHECK_RETURN( + call_srtp_protect_rtcp2(srtp_sender, rtcp, 0, &srtcp_len, mki_index), + srtp_err_status_bad_param); + CHECK_OVERRUN(rtcp, 0, buffer_len); + free(rtcp); + + // 1 byte input + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = buffer_len; + overrun_check_prepare(rtcp, 1, buffer_len); + CHECK_RETURN( + call_srtp_protect_rtcp2(srtp_sender, rtcp, 1, &srtcp_len, mki_index), + srtp_err_status_bad_param); + CHECK_OVERRUN(rtcp, 1, buffer_len); + free(rtcp); + + // too short header + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = buffer_len; + overrun_check_prepare(rtcp, rtcp_header_len - 1, buffer_len); + CHECK_RETURN(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_header_len - 1, + &srtcp_len, mki_index), + srtp_err_status_bad_param); + CHECK_OVERRUN(rtcp, rtcp_header_len - 1, buffer_len); + free(rtcp); + + // zero payload + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = buffer_len; + overrun_check_prepare(rtcp, rtcp_header_len, buffer_len); + CHECK_OK(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_header_len, + &srtcp_len, mki_index)); + CHECK(srtcp_len == rtcp_header_len + trailer_len); + CHECK_OVERRUN(rtcp, srtcp_len, buffer_len); + free(rtcp); + + // 1 byte payload + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = buffer_len; + overrun_check_prepare(rtcp, rtcp_header_len + 1, buffer_len); + CHECK_OK(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_header_len + 1, + &srtcp_len, mki_index)); + CHECK(srtcp_len == rtcp_header_len + 1 + trailer_len); + CHECK_OVERRUN(rtcp, srtcp_len, buffer_len); + free(rtcp); + + // 0 byte output + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = 0; + overrun_check_prepare(rtcp, rtcp_len, buffer_len); + CHECK_RETURN(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_len, + &srtcp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtcp, rtcp_len, buffer_len); + free(rtcp); + + // 1 byte output + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = 1; + overrun_check_prepare(rtcp, rtcp_len, buffer_len); + CHECK_RETURN(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_len, + &srtcp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtcp, rtcp_len, buffer_len); + free(rtcp); + + if (trailer_len != 0) { + // no space for trailer output + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = rtcp_len; + overrun_check_prepare(rtcp, rtcp_len, buffer_len); + CHECK_RETURN(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_len, + &srtcp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtcp, rtcp_len, buffer_len); + free(rtcp); + } + + // 1 byte too small output + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = rtcp_len + trailer_len - 1; + overrun_check_prepare(rtcp, rtcp_len, buffer_len); + CHECK_RETURN(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_len, + &srtcp_len, mki_index), + srtp_err_status_buffer_small); + CHECK_OVERRUN(rtcp, rtcp_len, buffer_len); + free(rtcp); + + // full payload + rtcp = create_rtcp_test_packet(28, ssrc, &rtcp_len, &buffer_len); + srtcp_len = buffer_len; + CHECK_OK(call_srtp_protect_rtcp2(srtp_sender, rtcp, rtcp_len, &srtcp_len, + mki_index)); + CHECK(srtcp_len == rtcp_len + trailer_len); + CHECK_OVERRUN(rtcp, srtcp_len, buffer_len); + + CHECK_OK(srtp_dealloc(srtp_sender)); + + // unprotect + srtp_t srtp_receiver; + srtp_policy_t receive_policy; + + memcpy(&receive_policy, &send_policy, sizeof(srtp_policy_t)); + receive_policy.ssrc.type = ssrc_any_inbound; + + CHECK_OK(srtp_create(&srtp_receiver, &receive_policy)); + + // unprotect zero byte input + rtcp_len = buffer_len; + CHECK_RETURN(call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, 0, &rtcp_len), + srtp_err_status_bad_param); + + // unprotect 1 byte input + rtcp_len = buffer_len; + CHECK_RETURN(call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, 1, &rtcp_len), + srtp_err_status_bad_param); + + // unprotect short header + rtcp_len = buffer_len; + CHECK_RETURN(call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, + rtcp_header_len - 1, &rtcp_len), + srtp_err_status_bad_param); + + // 0 byte output + rtcp_len = 0; + CHECK_RETURN( + call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, srtcp_len, &rtcp_len), + srtp_err_status_buffer_small); + + // 1 byte output + rtcp_len = 1; + CHECK_RETURN( + call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, srtcp_len, &rtcp_len), + srtp_err_status_buffer_small); + + // 1 byte too small output + rtcp_len = srtcp_len - trailer_len - 1; + CHECK_RETURN( + call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, srtcp_len, &rtcp_len), + srtp_err_status_buffer_small); + + // full unprotect + rtcp_len = buffer_len; + CHECK_OK( + call_srtp_unprotect_rtcp2(srtp_receiver, rtcp, srtcp_len, &rtcp_len)); + CHECK(rtcp_len == srtcp_len - trailer_len); + + free(rtcp); + + CHECK_OK(srtp_dealloc(srtp_receiver)); + + return srtp_err_status_ok; +} + +struct srtp_session_print_stream_data { + // set by callback to indicate failure + srtp_err_status_t status; + // indicates if it is the template stream or a regular stream + int is_template; +}; + +bool srtp_session_print_stream(srtp_stream_t stream, void *raw_data) +{ + static const char *serv_descr[4] = { "none", "confidentiality", + "authentication", + "confidentiality and authentication" }; + static const char *direction[3] = { "unknown", "outbound", "inbound" }; + + struct srtp_session_print_stream_data *data = + (struct srtp_session_print_stream_data *)raw_data; + srtp_session_keys_t *session_keys = &stream->session_keys[0]; + char ssrc_text[32]; + + if (!data->is_template && stream->rtp_services > sec_serv_conf_and_auth) { + data->status = srtp_err_status_bad_param; + return false; + } + + if (data->is_template) { + snprintf(ssrc_text, sizeof(ssrc_text), "any %s", + direction[stream->direction]); + } else { + snprintf(ssrc_text, sizeof(ssrc_text), "0x%08x", stream->ssrc); + } + + printf("# SSRC: %s\r\n" + "# rtp cipher: %s\r\n" + "# rtp auth: %s\r\n" + "# rtp services: %s\r\n" + "# rtcp cipher: %s\r\n" + "# rtcp auth: %s\r\n" + "# rtcp services: %s\r\n" + "# num keys: %zu\r\n" + "# use mki: %s\r\n" + "# mki size: %zu\r\n" + "# window size: %zu\r\n" + "# tx rtx allowed:%s\r\n", + ssrc_text, session_keys->rtp_cipher->type->description, + session_keys->rtp_auth->type->description, + serv_descr[stream->rtp_services], + session_keys->rtcp_cipher->type->description, + session_keys->rtcp_auth->type->description, + serv_descr[stream->rtcp_services], stream->num_master_keys, + stream->use_mki ? "true" : "false", stream->mki_size, + srtp_rdbx_get_window_size(&stream->rtp_rdbx), + stream->allow_repeat_tx ? "true" : "false"); + + printf("# Encrypted extension headers: "); + if (stream->enc_xtn_hdr && stream->enc_xtn_hdr_count > 0) { + uint8_t *enc_xtn_hdr = stream->enc_xtn_hdr; + size_t count = stream->enc_xtn_hdr_count; + while (count > 0) { + printf("%d ", *enc_xtn_hdr); + enc_xtn_hdr++; + count--; + } + printf("\n"); + } else { + printf("none\n"); + } + + return true; +} + +srtp_err_status_t srtp_session_print_policy(srtp_t srtp) +{ + struct srtp_session_print_stream_data data = { srtp_err_status_ok, 0 }; + + /* sanity checking */ + if (srtp == NULL) { + return srtp_err_status_fail; + } + + /* if there's a template stream, print it out */ + if (srtp->stream_template != NULL) { + data.is_template = 1; + srtp_session_print_stream(srtp->stream_template, &data); + } + + /* loop over streams in session, printing the policy of each */ + data.is_template = 0; + srtp_stream_list_for_each(srtp->stream_list, srtp_session_print_stream, + &data); + + return data.status; +} + +srtp_err_status_t srtp_print_policy(const srtp_policy_t *policy) +{ + srtp_err_status_t status; + srtp_t session; + + status = srtp_create(&session, policy); + if (status) { + return status; + } + status = srtp_session_print_policy(session); + if (status) { + return status; + } + status = srtp_dealloc(session); + if (status) { + return status; + } + return srtp_err_status_ok; +} + +/* + * srtp_print_packet(...) is for debugging only + * it prints an RTP packet to the stdout + * + * note that this function is *not* threadsafe + */ + +#include <stdio.h> + +#define MTU 2048 + +char packet_string[MTU]; + +char *srtp_packet_to_string(uint8_t *packet, size_t pkt_octet_len) +{ + srtp_hdr_t *hdr = (srtp_hdr_t *)packet; + size_t octets_in_rtp_header = 12; + uint8_t *data = packet + octets_in_rtp_header; + size_t data_len = pkt_octet_len - octets_in_rtp_header; + + /* sanity checking */ + if ((hdr == NULL) || (pkt_octet_len > MTU)) { + return NULL; + } + + /* write packet into string */ + int offset = snprintf(packet_string, sizeof(packet_string), + "(s)rtp packet: {\n" + " version:\t%d\n" + " p:\t\t%d\n" + " x:\t\t%d\n" + " cc:\t\t%d\n" + " m:\t\t%d\n" + " pt:\t\t%x\n" + " seq:\t\t%x\n" + " ts:\t\t%x\n" + " ssrc:\t%x", + hdr->version, hdr->p, hdr->x, hdr->cc, hdr->m, + hdr->pt, hdr->seq, hdr->ts, hdr->ssrc); + + if (hdr->cc) { + offset += snprintf(packet_string + offset, + sizeof(packet_string) - offset, "\n csrc:\t"); + for (int i = 0; i < hdr->cc; i++) { + offset += + snprintf(packet_string + offset, sizeof(packet_string) - offset, + "%x ", *((&hdr->ssrc) + 1 + i)); + } + data += 4 * hdr->cc; + data_len -= 4 * hdr->cc; + } + + if (hdr->x) { + uint16_t profile = *((uint16_t *)data); + data += 2; + data_len -= 2; + uint16_t length = ntohs(*((uint16_t *)data)) * 4; + data += 2; + data_len -= 2; + offset += snprintf(packet_string + offset, + sizeof(packet_string) - offset, "\n xtn:\t\t%x %s", + profile, octet_string_hex_string(data, length)); + data += length; + data_len -= length; + } + + snprintf(packet_string + offset, sizeof(packet_string) - offset, + "\n data:\t%s\n" + "} (%zu octets in total)\n", + octet_string_hex_string(data, data_len), pkt_octet_len); + + return packet_string; +} + +char *srtp_rtcp_packet_to_string(uint8_t *packet, size_t pkt_octet_len) +{ + srtcp_hdr_t *hdr = (srtcp_hdr_t *)packet; + size_t octets_in_rtcp_header = 8; + uint8_t *data = packet + octets_in_rtcp_header; + size_t hex_len = pkt_octet_len - octets_in_rtcp_header; + + /* sanity checking */ + if ((hdr == NULL) || (pkt_octet_len > MTU)) { + return NULL; + } + + /* write packet into string */ + snprintf(packet_string, sizeof(packet_string), + "(s)rtcp packet: {\n" + " version:\t%d\n" + " p:\t\t%d\n" + " rc:\t\t%d\n" + " pt:\t\t%x\n" + " len:\t\t%x\n" + " ssrc:\t%x\n" + " data:\t%s\n" + "} (%zu octets in total)\n", + hdr->version, hdr->p, hdr->rc, hdr->pt, hdr->len, hdr->ssrc, + octet_string_hex_string(data, hex_len), pkt_octet_len); + + return packet_string; +} + +/* + * mips_estimate() is a simple function to estimate the number of + * instructions per second that the host can perform. note that this + * function can be grossly wrong; you may want to have a manual sanity + * check of its output! + * + * the 'ignore' pointer is there to convince the compiler to not just + * optimize away the function + */ + +double mips_estimate(size_t num_trials, size_t *ignore) +{ + clock_t t; + volatile size_t sum; + + sum = 0; + t = clock(); + for (size_t i = 0; i < num_trials; i++) { + sum += i; + } + t = clock() - t; + if (t < 1) { + t = 1; + } + + /* printf("%d\n", sum); */ + *ignore = sum; + + return (double)num_trials * CLOCKS_PER_SEC / t; +} + +/* + * srtp_validate() verifies the correctness of libsrtp by comparing + * some computed packets against some pre-computed reference values. + * These packets were made with the default SRTP policy. + */ + +srtp_err_status_t srtp_validate(void) +{ + // clang-format off + uint8_t srtp_plaintext_ref[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[38] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtp_ciphertext[38] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0x4e, 0x55, 0xdc, 0x4c, + 0xe7, 0x99, 0x78, 0xd8, 0x8c, 0xa4, 0xd2, 0x15, + 0x94, 0x9d, 0x24, 0x02, 0xb7, 0x8d, 0x6a, 0xcc, + 0x99, 0xea, 0x17, 0x9b, 0x8d, 0xbb + }; + uint8_t rtcp_plaintext_ref[24] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + }; + uint8_t rtcp_plaintext[38] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtcp_ciphertext[38] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0x71, 0x28, 0x03, 0x5b, 0xe4, 0x87, 0xb9, 0xbd, + 0xbe, 0xf8, 0x90, 0x41, 0xf9, 0x77, 0xa5, 0xa8, + 0x80, 0x00, 0x00, 0x01, 0x99, 0x3e, 0x08, 0xcd, + 0x54, 0xd6, 0xc1, 0x23, 0x07, 0x98 + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = 28; + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (status || (len != 38)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(srtp_plaintext, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * protect plaintext rtcp, then compare with srtcp ciphertext + */ + len = 24; + status = call_srtp_protect_rtcp(srtp_snd, rtcp_plaintext, &len, 0); + if (status || (len != 38)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "srtcp ciphertext:\n %s", + octet_string_hex_string(rtcp_plaintext, len)); + debug_print(mod_driver, "srtcp ciphertext reference:\n %s", + octet_string_hex_string(srtcp_ciphertext, len)); + + if (!srtp_octet_string_equal(rtcp_plaintext, srtcp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status || (len != 28)) { + return status; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + /* + * unprotect srtcp ciphertext, then compare with rtcp plaintext + */ + len = 38; + status = call_srtp_unprotect_rtcp(srtp_recv, srtcp_ciphertext, &len); + if (status || (len != 24)) { + return status; + } + + if (!srtp_octet_string_equal(srtcp_ciphertext, rtcp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* + * srtp_validate_mki() verifies the correctness of libsrtp by comparing + * some computed packets against some pre-computed reference values. + * These packets were made with the default SRTP policy. + */ + +srtp_err_status_t srtp_validate_mki(void) +{ + // clang-format off + uint8_t srtp_plaintext_ref[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[42] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + uint8_t srtp_ciphertext[42] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0x4e, 0x55, 0xdc, 0x4c, + 0xe7, 0x99, 0x78, 0xd8, 0x8c, 0xa4, 0xd2, 0x15, + 0x94, 0x9d, 0x24, 0x02, 0xe1, 0xf9, 0x7a, 0x0d, + 0xb7, 0x8d, 0x6a, 0xcc, 0x99, 0xea, 0x17, 0x9b, + 0x8d, 0xbb + }; + uint8_t rtcp_plaintext_ref[24] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + }; + uint8_t rtcp_plaintext[42] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + uint8_t srtcp_ciphertext[42] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0x71, 0x28, 0x03, 0x5b, 0xe4, 0x87, 0xb9, 0xbd, + 0xbe, 0xf8, 0x90, 0x41, 0xf9, 0x77, 0xa5, 0xa8, + 0x80, 0x00, 0x00, 0x01, 0xe1, 0xf9, 0x7a, 0x0d, + 0x99, 0x3e, 0x08, 0xcd, 0x54, 0xd6, 0xc1, 0x23, + 0x07, 0x98 + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.keys = test_keys; + policy.num_master_keys = 2; + policy.use_mki = true; + policy.mki_size = TEST_MKI_ID_SIZE; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = 28; + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (status) { + return status; + } + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(srtp_plaintext, len)); + debug_print( + mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(srtp_ciphertext, sizeof(srtp_ciphertext))); + + if (len != sizeof(srtp_ciphertext)) { + return srtp_err_status_fail; + } + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * protect plaintext rtcp, then compare with srtcp ciphertext + */ + len = 24; + status = call_srtp_protect_rtcp(srtp_snd, rtcp_plaintext, &len, 0); + if (status) { + return status; + } + + debug_print(mod_driver, "srtcp ciphertext:\n %s", + octet_string_hex_string(rtcp_plaintext, len)); + debug_print( + mod_driver, "srtcp ciphertext reference:\n %s", + octet_string_hex_string(srtcp_ciphertext, sizeof(srtcp_ciphertext))); + + if (len != sizeof(srtcp_ciphertext)) { + return srtp_err_status_fail; + } + + if (!srtp_octet_string_equal(rtcp_plaintext, srtcp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + len = 42; + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status || (len != 28)) { + return status; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + /* + * unprotect srtcp ciphertext, then compare with rtcp plaintext + */ + len = 42; + status = call_srtp_unprotect_rtcp(srtp_recv, srtcp_ciphertext, &len); + if (status || (len != 24)) { + return status; + } + + if (!srtp_octet_string_equal(srtcp_ciphertext, rtcp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* + * srtp_validate_null_sha1_80() verifies the correctness of libsrtp by comparing + * some computed packets against some pre-computed reference values. + * These packets were made with a policy that applies null encryption + * and HMAC authentication. + */ + +srtp_err_status_t srtp_validate_null_sha1_80(void) +{ + // clang-format off + uint8_t srtp_plaintext_ref[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[38] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtp_ciphertext[38] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xa1, 0x36, 0x27, + 0x0b, 0x67, 0x91, 0x34, 0xce, 0x9b + }; + uint8_t rtcp_plaintext_ref[24] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + }; + uint8_t rtcp_plaintext[38] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtcp_ciphertext[38] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x01, 0xfe, 0x88, 0xc7, 0xfd, + 0xfd, 0x37, 0xeb, 0xce, 0x61, 0x5d, + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the null cipher + * and sha1_80 policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_null_cipher_hmac_sha1_80(&policy.rtp); + srtp_crypto_policy_set_null_cipher_hmac_sha1_80(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = 28; + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (status || (len != 38)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(srtp_plaintext, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * protect plaintext rtcp, then compare with srtcp ciphertext + */ + len = 24; + status = call_srtp_protect_rtcp(srtp_snd, rtcp_plaintext, &len, 0); + if (status || (len != 38)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "srtcp ciphertext:\n %s", + octet_string_hex_string(rtcp_plaintext, len)); + debug_print(mod_driver, "srtcp ciphertext reference:\n %s", + octet_string_hex_string(srtcp_ciphertext, len)); + + if (!srtp_octet_string_equal(rtcp_plaintext, srtcp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status || (len != 28)) { + return status; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + /* + * unprotect srtcp ciphertext, then compare with rtcp plaintext + */ + len = 38; + status = call_srtp_unprotect_rtcp(srtp_recv, srtcp_ciphertext, &len); + if (status || (len != 24)) { + return status; + } + + if (!srtp_octet_string_equal(srtcp_ciphertext, rtcp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* + * srtp_validate_null_null() verifies the correctness of libsrtp by comparing + * some computed packets against some pre-computed reference values. + * These packets were made with a policy that applies null encryption + * and null authentication. + */ + +srtp_err_status_t srtp_validate_null_null(void) +{ + // clang-format off + uint8_t srtp_plaintext_ref[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, + }; + uint8_t srtp_ciphertext[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, + }; + uint8_t rtcp_plaintext_ref[24] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + }; + uint8_t rtcp_plaintext[28] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, + }; + uint8_t srtcp_ciphertext[28] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x01, + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the null cipher + * and null hmac policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_null_cipher_hmac_null(&policy.rtp); + srtp_crypto_policy_set_null_cipher_hmac_null(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + /* + * We need some non-zero value set here + */ + policy.key = (void *)(uintptr_t)-1; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = 28; + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (!status && (len != 28)) { + status = srtp_err_status_fail; + } + if (status) { + return status; + } + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(srtp_plaintext, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * protect plaintext rtcp, then compare with srtcp ciphertext + */ + len = 24; + status = call_srtp_protect_rtcp(srtp_snd, rtcp_plaintext, &len, 0); + if (!status && (len != 28)) { + status = srtp_err_status_fail; + } + if (status) { + return status; + } + + debug_print(mod_driver, "srtcp ciphertext:\n %s", + octet_string_hex_string(rtcp_plaintext, len)); + debug_print(mod_driver, "srtcp ciphertext reference:\n %s", + octet_string_hex_string(srtcp_ciphertext, len)); + + if (!srtp_octet_string_equal(rtcp_plaintext, srtcp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (!status && (len != 28)) { + status = srtp_err_status_fail; + } + if (status) { + return status; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + /* + * unprotect srtcp ciphertext, then compare with rtcp plaintext + */ + len = 28; + status = call_srtp_unprotect_rtcp(srtp_recv, srtcp_ciphertext, &len); + if (!status && (len != 24)) { + status = srtp_err_status_fail; + } + if (status) { + return status; + } + + if (!srtp_octet_string_equal(srtcp_ciphertext, rtcp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* + * srtp_validate_cryptex() verifies the correctness of libsrtp by comparing + * some computed packets against some pre-computed reference values. + * These packets were made with the default SRTP policy. + */ +srtp_err_status_t srtp_validate_cryptex(void) +{ + // clang-format off + /* Plaintext packet with 1-byte header extension */ + const char *srtp_1bytehdrext_ref = + "900f1235" + "decafbad" + "cafebabe" + "bede0001" + "51000200" + "abababab" + "abababab" + "abababab" + "abababab"; + + /* AES-CTR/HMAC-SHA1 Ciphertext packet with 1-byte header extension */ + const char *srtp_1bytehdrext_cryptex = + "900f1235" + "decafbad" + "cafebabe" + "c0de0001" + "eb923652" + "51c3e036" + "f8de27e9" + "c27ee3e0" + "b4651d9f" + "bc4218a7" + "0244522f" + "34a5"; + + /* Plaintext packet with 2-byte header extension */ + const char *srtp_2bytehdrext_ref = + "900f1236" + "decafbad" + "cafebabe" + "10000001" + "05020002" + "abababab" + "abababab" + "abababab" + "abababab"; + + /* AES-CTR/HMAC-SHA1 Ciphertext packet with 2-byte header extension */ + const char *srtp_2bytehdrext_cryptex = + "900f1236" + "decafbad" + "cafebabe" + "c2de0001" + "4ed9cc4e" + "6a712b30" + "96c5ca77" + "339d4204" + "ce0d7739" + "6cab6958" + "5fbce381" + "94a5"; + + /* Plaintext packet with 1-byte header extension and CSRC fields. */ + const char *srtp_1bytehdrext_cc_ref = + "920f1238" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "bede0001" + "51000200" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_1bytehdrext_cc_cryptex = + "920f1238" + "decafbad" + "cafebabe" + "8bb6e12b" + "5cff16dd" + "c0de0001" + "92838c8c" + "09e58393" + "e1de3a9a" + "74734d67" + "45671338" + "c3acf11d" + "a2df8423" + "bee0"; + + /* Plaintext packet with 2-byte header extension and CSRC fields. */ + const char *srtp_2bytehdrext_cc_ref = + "920f1239" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "10000001" + "05020002" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_2bytehdrext_cc_cryptex = + "920f1239" + "decafbad" + "cafebabe" + "f70e513e" + "b90b9b25" + "c2de0001" + "bbed4848" + "faa64466" + "5f3d7f34" + "125914e9" + "f4d0ae92" + "3c6f479b" + "95a0f7b5" + "3133"; + + /* Plaintext packet with empty 1-byte header extension and CSRC fields. */ + const char *srtp_1byte_empty_hdrext_cc_ref = + "920f123a" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "bede0000" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_1byte_empty_hdrext_cc_cryptex = + "920f123a" + "decafbad" + "cafebabe" + "7130b6ab" + "fe2ab0e3" + "c0de0000" + "e3d9f64b" + "25c9e74c" + "b4cf8e43" + "fb92e378" + "1c2c0cea" + "b6b3a499" + "a14c"; + + /* Plaintext packet with empty 2-byte header extension and CSRC fields. */ + const char *srtp_2byte_empty_hdrext_cc_ref = + "920f123b" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "10000000" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_2byte_empty_hdrext_cc_cryptex = + "920f123b" + "decafbad" + "cafebabe" + "cbf24c12" + "4330e1c8" + "c2de0000" + "599dd45b" + "c9d687b6" + "03e8b59d" + "771fd38e" + "88b170e0" + "cd31e125" + "eabe"; + + // clang-format on + + const struct test_vectors_t vectors[6] = { + { "Plaintext packet with 1-byte header extension", srtp_1bytehdrext_ref, + srtp_1bytehdrext_cryptex }, + { "Plaintext packet with 2-byte header extension", srtp_2bytehdrext_ref, + srtp_2bytehdrext_cryptex }, + { "Plaintext packet with 1-byte header extension and CSRC fields", + srtp_1bytehdrext_cc_ref, srtp_1bytehdrext_cc_cryptex }, + { "Plaintext packet with 2-byte header extension and CSRC fields", + srtp_2bytehdrext_cc_ref, srtp_2bytehdrext_cc_cryptex }, + { "Plaintext packet with empty 1-byte header extension and CSRC fields", + srtp_1byte_empty_hdrext_cc_ref, srtp_1byte_empty_hdrext_cc_cryptex }, + { "Plaintext packet with empty 2-byte header extension and CSRC fields", + srtp_2byte_empty_hdrext_cc_ref, srtp_2byte_empty_hdrext_cc_cryptex }, + }; + const size_t num_vectors = sizeof(vectors) / sizeof(vectors[0]); + + srtp_t srtp_snd, srtp_recv; + size_t len, ref_len, enc_len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = 0; + policy.use_cryptex = true; + policy.next = NULL; + + for (size_t i = 0; i < num_vectors; ++i) { + uint8_t packet[1400]; + uint8_t reference[1400]; + uint8_t ciphertext[1400]; + + /* Initialize reference test vectors */ + ref_len = hex_string_to_octet_string(reference, vectors[i].plaintext, + sizeof(reference)) / + 2; + enc_len = hex_string_to_octet_string(ciphertext, vectors[i].ciphertext, + sizeof(ciphertext)) / + 2; + + /* Initialize test packet */ + len = ref_len; + memcpy(packet, reference, len); + printf("%s\n", vectors[i].name); + /* + * protect plaintext, then compare with ciphertext + */ + debug_print(mod_driver, "test vector: %s\n", vectors[i].name); + + CHECK_OK(srtp_create(&srtp_snd, &policy)); + + CHECK_OK(call_srtp_protect(srtp_snd, packet, &len, 0)); + CHECK(len == enc_len); + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(packet, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(ciphertext, len)); + + CHECK_BUFFER_EQUAL(packet, ciphertext, len); + + CHECK_OK(srtp_dealloc(srtp_snd)); + + CHECK_OK(srtp_create(&srtp_recv, &policy)); + + /* + * unprotect ciphertext, then compare with plaintext + */ + CHECK_OK(call_srtp_unprotect(srtp_recv, packet, &len)); + CHECK(len == ref_len); + + CHECK_BUFFER_EQUAL(packet, reference, len); + + CHECK_OK(srtp_dealloc(srtp_recv)); + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_cryptex_csrc_but_no_extension_header(void) +{ + // clang-format off + /* Plaintext packet with no header extension but CSRC fields. */ + const char *srtp_cc_ref = + "820f1238" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "abababab" + "abababab" + "abababab" + "abababab"; + // clang-format on + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + srtp_policy_t policy; + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = 0; + policy.use_cryptex = true; + policy.next = NULL; + + srtp_t srtp_snd; + CHECK_OK(srtp_create(&srtp_snd, &policy)); + + uint8_t packet[1400]; + size_t packet_len = + hex_string_to_octet_string(packet, srtp_cc_ref, sizeof(packet)) / 2; + + CHECK_RETURN(call_srtp_protect(srtp_snd, packet, &packet_len, 0), + srtp_err_status_cryptex_err); + + CHECK_OK(srtp_dealloc(srtp_snd)); + + return srtp_err_status_ok; +} + +#ifdef GCM +/* + * srtp_validate_gcm() verifies the correctness of libsrtp by comparing + * an computed packet against the known ciphertext for the plaintext. + */ +srtp_err_status_t srtp_validate_gcm(void) +{ + // clang-format off + uint8_t rtp_plaintext_ref[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t rtp_plaintext[44] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtp_ciphertext[44] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xc5, 0x00, 0x2e, 0xde, + 0x04, 0xcf, 0xdd, 0x2e, 0xb9, 0x11, 0x59, 0xe0, + 0x88, 0x0a, 0xa0, 0x6e, 0xd2, 0x97, 0x68, 0x26, + 0xf7, 0x96, 0xb2, 0x01, 0xdf, 0x31, 0x31, 0xa1, + 0x27, 0xe8, 0xa3, 0x92 + }; + uint8_t rtcp_plaintext_ref[24] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + }; + uint8_t rtcp_plaintext[44] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtcp_ciphertext[44] = { + 0x81, 0xc8, 0x00, 0x0b, 0xca, 0xfe, 0xba, 0xbe, + 0xc9, 0x8b, 0x8b, 0x5d, 0xf0, 0x39, 0x2a, 0x55, + 0x85, 0x2b, 0x6c, 0x21, 0xac, 0x8e, 0x70, 0x25, + 0xc5, 0x2c, 0x6f, 0xbe, 0xa2, 0xb3, 0xb4, 0x46, + 0xea, 0x31, 0x12, 0x3b, 0xa8, 0x8c, 0xe6, 0x1e, + 0x80, 0x00, 0x00, 0x01 + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key_gcm; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext rtp, then compare with srtp ciphertext + */ + len = 28; + status = call_srtp_protect(srtp_snd, rtp_plaintext, &len, 0); + if (status || (len != 44)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "srtp ciphertext:\n %s", + octet_string_hex_string(rtp_plaintext, len)); + debug_print(mod_driver, "srtp ciphertext reference:\n %s", + octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(rtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * protect plaintext rtcp, then compare with srtcp ciphertext + */ + len = 24; + status = call_srtp_protect_rtcp(srtp_snd, rtcp_plaintext, &len, 0); + if (status || (len != 44)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "srtcp ciphertext:\n %s", + octet_string_hex_string(rtcp_plaintext, len)); + debug_print(mod_driver, "srtcp ciphertext reference:\n %s", + octet_string_hex_string(srtcp_ciphertext, len)); + + if (!srtp_octet_string_equal(rtcp_plaintext, srtcp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect srtp ciphertext, then compare with rtp plaintext + */ + len = 44; + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status || (len != 28)) { + return status; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, rtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + /* + * unprotect srtcp ciphertext, then compare with rtcp plaintext + */ + len = 44; + status = call_srtp_unprotect_rtcp(srtp_recv, srtcp_ciphertext, &len); + if (status || (len != 24)) { + return status; + } + + debug_print(mod_driver, "srtcp plain:\n %s", + octet_string_hex_string(srtcp_ciphertext, len)); + debug_print(mod_driver, "srtcp plain reference:\n %s", + octet_string_hex_string(rtcp_plaintext_ref, + sizeof(rtcp_plaintext_ref))); + + if (!srtp_octet_string_equal(srtcp_ciphertext, rtcp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* + * srtp_validate_gcm() verifies the correctness of libsrtp by comparing + * an computed packet against the known ciphertext for the plaintext. + */ +srtp_err_status_t srtp_validate_gcm_cryptex(void) +{ + // clang-format off + unsigned char test_key_gcm_cryptex[28] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab + }; + + /* Plaintext packet with 1-byte header extension */ + const char *srtp_1bytehdrext_ref = + "900f1235" + "decafbad" + "cafebabe" + "bede0001" + "51000200" + "abababab" + "abababab" + "abababab" + "abababab"; + + /* GCM Ciphertext packet with 1-byte header extension */ + const char *srtp_1bytehdrext_cryptex_gcm = + "900f1235" + "decafbad" + "cafebabe" + "c0de0001" + "39972dc9" + "572c4d99" + "e8fc355d" + "e743fb2e" + "94f9d8ff" + "54e72f41" + "93bbc5c7" + "4ffab0fa" + "9fa0fbeb"; + + /* Plaintext packet with 2-byte header extension */ + const char *srtp_2bytehdrext_ref = + "900f1236" + "decafbad" + "cafebabe" + "10000001" + "05020002" + "abababab" + "abababab" + "abababab" + "abababab"; + + /* GCM Ciphertext packet with 2-byte header extension */ + const char *srtp_2bytehdrext_cryptex_gcm = + "900f1236" + "decafbad" + "cafebabe" + "c2de0001" + "bb75a4c5" + "45cd1f41" + "3bdb7daa" + "2b1e3263" + "de313667" + "c9632490" + "81b35a65" + "f5cb6c88" + "b394235f"; + + /* Plaintext packet with 1-byte header extension and CSRC fields. */ + const char *srtp_1bytehdrext_cc_ref = + "920f1238" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "bede0001" + "51000200" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_1bytehdrext_cc_cryptex_gcm = + "920f1238" + "decafbad" + "cafebabe" + "63bbccc4" + "a7f695c4" + "c0de0001" + "8ad7c71f" + "ac70a80c" + "92866b4c" + "6ba98546" + "ef913586" + "e95ffaaf" + "fe956885" + "bb0647a8" + "bc094ac8"; + + + /* Plaintext packet with 2-byte header extension and CSRC fields. */ + const char *srtp_2bytehdrext_cc_ref = + "920f1239" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "10000001" + "05020002" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_2bytehdrext_cc_cryptex_gcm = + "920f1239" + "decafbad" + "cafebabe" + "3680524f" + "8d312b00" + "c2de0001" + "c78d1200" + "38422bc1" + "11a7187a" + "18246f98" + "0c059cc6" + "bc9df8b6" + "26394eca" + "344e4b05" + "d80fea83"; + + /* Plaintext packet with empty 1-byte header extension and CSRC fields. */ + const char *srtp_1byte_empty_hdrext_cc_ref = + "920f123a" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "bede0000" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_1byte_empty_hdrext_cc_cryptex_gcm = + "920f123a" + "decafbad" + "cafebabe" + "15b6bb43" + "37906fff" + "c0de0000" + "b7b96453" + "7a2b03ab" + "7ba5389c" + "e9331712" + "6b5d974d" + "f30c6884" + "dcb651c5" + "e120c1da"; + + /* Plaintext packet with empty 2-byte header extension and CSRC fields. */ + const char *srtp_2byte_empty_hdrext_cc_ref = + "920f123b" + "decafbad" + "cafebabe" + "0001e240" + "0000b26e" + "10000000" + "abababab" + "abababab" + "abababab" + "abababab"; + + const char *srtp_2byte_empty_hdrext_cc_cryptex_gcm = + "920f123b" + "decafbad" + "cafebabe" + "dcb38c9e" + "48bf95f4" + "c2de0000" + "61ee432c" + "f9203170" + "76613258" + "d3ce4236" + "c06ac429" + "681ad084" + "13512dc9" + "8b5207d8"; + // clang-format on + + const struct test_vectors_t vectors[6] = { + { "Plaintext packet with 1-byte header extension", srtp_1bytehdrext_ref, + srtp_1bytehdrext_cryptex_gcm }, + { "Plaintext packet with 2-byte header extension", srtp_2bytehdrext_ref, + srtp_2bytehdrext_cryptex_gcm }, + { "Plaintext packet with 1-byte header extension and CSRC fields", + srtp_1bytehdrext_cc_ref, srtp_1bytehdrext_cc_cryptex_gcm }, + { "Plaintext packet with 2-byte header extension and CSRC fields", + srtp_2bytehdrext_cc_ref, srtp_2bytehdrext_cc_cryptex_gcm }, + { "Plaintext packet with empty 1-byte header extension and CSRC fields", + srtp_1byte_empty_hdrext_cc_ref, + srtp_1byte_empty_hdrext_cc_cryptex_gcm }, + { "Plaintext packet with empty 2-byte header extension and CSRC fields", + srtp_2byte_empty_hdrext_cc_ref, + srtp_2byte_empty_hdrext_cc_cryptex_gcm }, + }; + const size_t num_vectors = sizeof(vectors) / sizeof(vectors[0]); + + srtp_t srtp_snd, srtp_recv; + size_t len, ref_len, enc_len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key_gcm_cryptex; + policy.window_size = 128; + policy.allow_repeat_tx = 0; + policy.use_cryptex = true; + policy.next = NULL; + + CHECK_OK(srtp_create(&srtp_snd, &policy)); + + for (size_t i = 0; i < num_vectors; ++i) { + uint8_t packet[1400]; + uint8_t reference[1400]; + uint8_t ciphertext[1400]; + + /* Initialize reference test vectors */ + ref_len = hex_string_to_octet_string(reference, vectors[i].plaintext, + sizeof(reference)) / + 2; + enc_len = hex_string_to_octet_string(ciphertext, vectors[i].ciphertext, + sizeof(ciphertext)) / + 2; + + /* Initialize test packet */ + len = ref_len; + memcpy(packet, reference, len); + printf("%s\n", vectors[i].name); + /* + * protect plaintext, then compare with ciphertext + */ + debug_print(mod_driver, "test vector: %s\n", vectors[i].name); + + const srtp_hdr_t *hdr = (const srtp_hdr_t *)reference; + if (use_srtp_not_in_place_io_api && hdr->cc) { + // the combination of cryptex, cc, GCM & not inplace is not + // supported + CHECK_RETURN(call_srtp_protect(srtp_snd, packet, &len, 0), + srtp_err_status_cryptex_err); + continue; + } + CHECK_OK(call_srtp_protect(srtp_snd, packet, &len, 0)); + CHECK(len == enc_len); + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(packet, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(ciphertext, len)); + + CHECK_BUFFER_EQUAL(packet, ciphertext, len); + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + CHECK_OK(srtp_create(&srtp_recv, &policy)); + + /* + * unprotect ciphertext, then compare with plaintext + */ + CHECK_OK(call_srtp_unprotect(srtp_recv, packet, &len)); + CHECK(len == ref_len); + + CHECK_BUFFER_EQUAL(packet, reference, len); + + CHECK_OK(srtp_dealloc(srtp_recv)); + } + + CHECK_OK(srtp_dealloc(srtp_snd)); + + return srtp_err_status_ok; +} + +#endif + +/* + * Test vectors taken from RFC 6904, Appendix A + */ +srtp_err_status_t srtp_validate_encrypted_extensions_headers(void) +{ + // clang-format off + uint8_t test_key_ext_headers[30] = { + 0xe1, 0xf9, 0x7a, 0x0d, 0x3e, 0x01, 0x8b, 0xe0, + 0xd6, 0x4f, 0xa3, 0x2c, 0x06, 0xde, 0x41, 0x39, + 0x0e, 0xc6, 0x75, 0xad, 0x49, 0x8a, 0xfe, 0xeb, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6 + }; + uint8_t srtp_plaintext_ref[56] = { + 0x90, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xBE, 0xDE, 0x00, 0x06, + 0x17, 0x41, 0x42, 0x73, 0xA4, 0x75, 0x26, 0x27, + 0x48, 0x22, 0x00, 0x00, 0xC8, 0x30, 0x8E, 0x46, + 0x55, 0x99, 0x63, 0x86, 0xB3, 0x95, 0xFB, 0x00, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[66] = { + 0x90, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xBE, 0xDE, 0x00, 0x06, + 0x17, 0x41, 0x42, 0x73, 0xA4, 0x75, 0x26, 0x27, + 0x48, 0x22, 0x00, 0x00, 0xC8, 0x30, 0x8E, 0x46, + 0x55, 0x99, 0x63, 0x86, 0xB3, 0x95, 0xFB, 0x00, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + uint8_t srtp_ciphertext[66] = { + 0x90, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xBE, 0xDE, 0x00, 0x06, + 0x17, 0x58, 0x8A, 0x92, 0x70, 0xF4, 0xE1, 0x5E, + 0x1C, 0x22, 0x00, 0x00, 0xC8, 0x30, 0x95, 0x46, + 0xA9, 0x94, 0xF0, 0xBC, 0x54, 0x78, 0x97, 0x00, + 0x4e, 0x55, 0xdc, 0x4c, 0xe7, 0x99, 0x78, 0xd8, + 0x8c, 0xa4, 0xd2, 0x15, 0x94, 0x9d, 0x24, 0x02, + 0x5a, 0x46, 0xb3, 0xca, 0x35, 0xc5, 0x35, 0xa8, + 0x91, 0xc7 + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + uint8_t headers[3] = { 1, 3, 4 }; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key_ext_headers; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.enc_xtn_hdr = headers; + policy.enc_xtn_hdr_count = sizeof(headers) / sizeof(headers[0]); + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = sizeof(srtp_plaintext_ref); + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (status || (len != sizeof(srtp_plaintext))) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "ciphertext:\n %s", + srtp_octet_string_hex_string(srtp_plaintext, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + srtp_octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status) { + return status; + } else if (len != sizeof(srtp_plaintext_ref)) { + return srtp_err_status_fail; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +#ifdef GCM +/* + * Headers of test vectors taken from RFC 6904, Appendix A + */ +srtp_err_status_t srtp_validate_encrypted_extensions_headers_gcm(void) +{ + // clang-format off + uint8_t test_key_ext_headers[30] = { + 0xe1, 0xf9, 0x7a, 0x0d, 0x3e, 0x01, 0x8b, 0xe0, + 0xd6, 0x4f, 0xa3, 0x2c, 0x06, 0xde, 0x41, 0x39, + 0x0e, 0xc6, 0x75, 0xad, 0x49, 0x8a, 0xfe, 0xeb, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6 + }; + uint8_t srtp_plaintext_ref[56] = { + 0x90, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xBE, 0xDE, 0x00, 0x06, + 0x17, 0x41, 0x42, 0x73, 0xA4, 0x75, 0x26, 0x27, + 0x48, 0x22, 0x00, 0x00, 0xC8, 0x30, 0x8E, 0x46, + 0x55, 0x99, 0x63, 0x86, 0xB3, 0x95, 0xFB, 0x00, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[72] = { + 0x90, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xBE, 0xDE, 0x00, 0x06, + 0x17, 0x41, 0x42, 0x73, 0xA4, 0x75, 0x26, 0x27, + 0x48, 0x22, 0x00, 0x00, 0xC8, 0x30, 0x8E, 0x46, + 0x55, 0x99, 0x63, 0x86, 0xB3, 0x95, 0xFB, 0x00, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtp_ciphertext[72] = { + 0x90, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xBE, 0xDE, 0x00, 0x06, + 0x17, 0x12, 0xe0, 0x20, 0x5b, 0xfa, 0x94, 0x9b, + 0x1C, 0x22, 0x00, 0x00, 0xC8, 0x30, 0xbb, 0x46, + 0x73, 0x27, 0x78, 0xd9, 0x92, 0x9a, 0xab, 0x00, + 0x0e, 0xca, 0x0c, 0xf9, 0x5e, 0xe9, 0x55, 0xb2, + 0x6c, 0xd3, 0xd2, 0x88, 0xb4, 0x9f, 0x6c, 0xa9, + 0xf4, 0xb1, 0xb7, 0x59, 0x71, 0x9e, 0xb5, 0xbc, + 0x11, 0x3b, 0x9f, 0xf1, 0xd4, 0x0c, 0xd2, 0x5a + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + uint8_t headers[3] = { 1, 3, 4 }; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key_ext_headers; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.enc_xtn_hdr = headers; + policy.enc_xtn_hdr_count = sizeof(headers) / sizeof(headers[0]); + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = sizeof(srtp_plaintext_ref); + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (status || (len != sizeof(srtp_plaintext))) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, " ? ciphertext:\n %s", + srtp_octet_string_hex_string(srtp_plaintext, len)); + debug_print(mod_driver, " ? ciphertext reference:\n %s", + srtp_octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status) { + return status; + } else if (len != sizeof(srtp_plaintext_ref)) { + return srtp_err_status_fail; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} +#endif + +/* + * srtp_validate_aes_256() verifies the correctness of libsrtp by comparing + * some computed packets against some pre-computed reference values. + * These packets were made with the AES-CM-256/HMAC-SHA-1-80 policy. + */ + +srtp_err_status_t srtp_validate_aes_256(void) +{ + // clang-format off + uint8_t aes_256_test_key[46] = { + 0xf0, 0xf0, 0x49, 0x14, 0xb5, 0x13, 0xf2, 0x76, + 0x3a, 0x1b, 0x1f, 0xa1, 0x30, 0xf1, 0x0e, 0x29, + 0x98, 0xf6, 0xf6, 0xe4, 0x3e, 0x43, 0x09, 0xd1, + 0xe6, 0x22, 0xa0, 0xe3, 0x32, 0xb9, 0xf1, 0xb6, + + 0x3b, 0x04, 0x80, 0x3d, 0xe5, 0x1e, 0xe7, 0xc9, + 0x64, 0x23, 0xab, 0x5b, 0x78, 0xd2 + }; + uint8_t srtp_plaintext_ref[28] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab + }; + uint8_t srtp_plaintext[38] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + uint8_t srtp_ciphertext[38] = { + 0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, + 0xca, 0xfe, 0xba, 0xbe, 0xf1, 0xd9, 0xde, 0x17, + 0xff, 0x25, 0x1f, 0xf1, 0xaa, 0x00, 0x77, 0x74, + 0xb0, 0xb4, 0xb4, 0x0d, 0xa0, 0x8d, 0x9d, 0x9a, + 0x5b, 0x3a, 0x55, 0xd8, 0x87, 0x3b + }; + // clang-format on + + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(&policy.rtp); + srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = aes_256_test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + /* + * protect plaintext, then compare with ciphertext + */ + len = 28; + status = call_srtp_protect(srtp_snd, srtp_plaintext, &len, 0); + if (status || (len != 38)) { + return srtp_err_status_fail; + } + + debug_print(mod_driver, "ciphertext:\n %s", + octet_string_hex_string(srtp_plaintext, len)); + debug_print(mod_driver, "ciphertext reference:\n %s", + octet_string_hex_string(srtp_ciphertext, len)); + + if (!srtp_octet_string_equal(srtp_plaintext, srtp_ciphertext, len)) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, srtp_ciphertext, &len); + if (status || (len != 28)) { + return status; + } + + if (!srtp_octet_string_equal(srtp_ciphertext, srtp_plaintext_ref, len)) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_create_big_policy(srtp_policy_t **list) +{ + extern const srtp_policy_t *policy_array[]; + srtp_policy_t *p = NULL; + srtp_policy_t *tmp; + int i = 0; + uint32_t ssrc = 0; + + /* sanity checking */ + if ((list == NULL) || (policy_array[0] == NULL)) { + return srtp_err_status_bad_param; + } + + /* + * loop over policy list, mallocing a new list and copying values + * into it (and incrementing the SSRC value as we go along) + */ + tmp = NULL; + while (policy_array[i] != NULL) { + p = (srtp_policy_t *)malloc(sizeof(srtp_policy_t)); + if (p == NULL) { + return srtp_err_status_bad_param; + } + memcpy(p, policy_array[i], sizeof(srtp_policy_t)); + p->ssrc.type = ssrc_specific; + p->ssrc.value = ssrc++; + p->next = tmp; + tmp = p; + i++; + } + *list = p; + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_dealloc_big_policy(srtp_policy_t *list) +{ + srtp_policy_t *p, *next; + + for (p = list; p != NULL; p = next) { + next = p->next; + free(p); + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_empty_payload(void) +{ + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + uint8_t *mesg; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + mesg = + create_rtp_test_packet(0, policy.ssrc.value, 1, 1, false, &len, NULL); + if (mesg == NULL) { + return srtp_err_status_fail; + } + + status = call_srtp_protect(srtp_snd, mesg, &len, 0); + if (status) { + return status; + } else if (len != 12 + 10) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, mesg, &len); + if (status) { + return status; + } else if (len != 12) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + free(mesg); + + return srtp_err_status_ok; +} + +#ifdef GCM +srtp_err_status_t srtp_test_empty_payload_gcm(void) +{ + srtp_t srtp_snd, srtp_recv; + srtp_err_status_t status; + size_t len; + srtp_policy_t policy; + uint8_t *mesg; + + /* + * create a session with a single stream using the default srtp + * policy and with the SSRC value 0xcafebabe + */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + mesg = + create_rtp_test_packet(0, policy.ssrc.value, 1, 1, false, &len, NULL); + if (mesg == NULL) { + return srtp_err_status_fail; + } + + status = call_srtp_protect(srtp_snd, mesg, &len, 0); + if (status) { + return status; + } else if (len != 12 + 16) { + return srtp_err_status_fail; + } + + /* + * create a receiver session context comparable to the one created + * above - we need to do this so that the replay checking doesn't + * complain + */ + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* + * unprotect ciphertext, then compare with plaintext + */ + status = call_srtp_unprotect(srtp_recv, mesg, &len); + if (status) { + return status; + } else if (len != 12) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + free(mesg); + + return srtp_err_status_ok; +} +#endif // GCM + +srtp_err_status_t srtp_test_remove_stream(void) +{ + srtp_err_status_t status; + srtp_policy_t *policy_list, policy; + srtp_t session; + srtp_stream_t stream; + + /* + * srtp_get_stream() is a libSRTP internal function that we declare + * here so that we can use it to verify the correct operation of the + * library + */ + extern srtp_stream_t srtp_get_stream(srtp_t srtp, uint32_t ssrc); + + status = srtp_create_big_policy(&policy_list); + if (status) { + return status; + } + + status = srtp_create(&session, policy_list); + if (status) { + return status; + } + + /* + * check for false positives by trying to remove a stream that's not + * in the session + */ + status = srtp_stream_remove(session, 0xaaaaaaaa); + if (status != srtp_err_status_no_ctx) { + return srtp_err_status_fail; + } + + /* + * check for false negatives by removing stream 0x1, then + * searching for streams 0x0 and 0x2 + */ + status = srtp_stream_remove(session, 0x1); + if (status != srtp_err_status_ok) { + return srtp_err_status_fail; + } + stream = srtp_get_stream(session, htonl(0x0)); + if (stream == NULL) { + return srtp_err_status_fail; + } + stream = srtp_get_stream(session, htonl(0x2)); + if (stream == NULL) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(session); + if (status != srtp_err_status_ok) { + return status; + } + + status = srtp_dealloc_big_policy(policy_list); + if (status != srtp_err_status_ok) { + return status; + } + + /* Now test adding and removing a single stream */ + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + + status = srtp_create(&session, NULL); + if (status != srtp_err_status_ok) { + return status; + } + + status = srtp_stream_add(session, &policy); + if (status != srtp_err_status_ok) { + return status; + } + + status = srtp_stream_remove(session, 0xcafebabe); + if (status != srtp_err_status_ok) { + return status; + } + + status = srtp_dealloc(session); + if (status != srtp_err_status_ok) { + return status; + } + + return srtp_err_status_ok; +} + +// clang-format off +uint8_t test_alt_key[46] = { + 0xe5, 0x19, 0x6f, 0x01, 0x5e, 0xf1, 0x9b, 0xe1, + 0xd7, 0x47, 0xa7, 0x27, 0x07, 0xd7, 0x47, 0x33, + 0x01, 0xc2, 0x35, 0x4d, 0x59, 0x6a, 0xf7, 0x84, + 0x96, 0x98, 0xeb, 0xaa, 0xac, 0xf6, 0xa1, 0x45, + 0xc7, 0x15, 0xe2, 0xea, 0xfe, 0x55, 0x67, 0x96, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6 +}; +// clang-format on + +/* + * srtp_test_update() verifies updating/rekeying existing streams. + * As stated in https://tools.ietf.org/html/rfc3711#section-3.3.1 + * the value of the ROC must not be reset after a rekey, this test + * attempts to prove that srtp_update does not reset the ROC. + */ + +srtp_err_status_t srtp_test_update(void) +{ + srtp_err_status_t status; + uint32_t ssrc = 0x12121212; + size_t msg_len_octets = 32; + size_t protected_msg_len_octets; + uint8_t *msg; + srtp_t srtp_snd, srtp_recv; + srtp_policy_t policy; + + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + policy.key = test_key; + + /* create a send and recive ctx with defualt profile and test_key */ + policy.ssrc.type = ssrc_any_outbound; + status = srtp_create(&srtp_snd, &policy); + if (status) { + return status; + } + + policy.ssrc.type = ssrc_any_inbound; + status = srtp_create(&srtp_recv, &policy); + if (status) { + return status; + } + + /* protect and unprotect two msg's that will cause the ROC to be equal to 1 + */ + msg = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, false, + &protected_msg_len_octets, NULL); + if (msg == NULL) { + return srtp_err_status_alloc_fail; + } + ((srtp_hdr_t *)msg)->seq = htons(65535); + + status = call_srtp_protect(srtp_snd, msg, &protected_msg_len_octets, 0); + if (status) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(srtp_recv, msg, &protected_msg_len_octets); + if (status) { + return status; + } + + free(msg); + + msg = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, false, + &protected_msg_len_octets, NULL); + if (msg == NULL) { + return srtp_err_status_alloc_fail; + } + ((srtp_hdr_t *)msg)->seq = htons(1); + + status = call_srtp_protect(srtp_snd, msg, &protected_msg_len_octets, 0); + if (status) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(srtp_recv, msg, &protected_msg_len_octets); + if (status) { + return status; + } + + free(msg); + + /* update send ctx with same test_key t verify update works*/ + policy.ssrc.type = ssrc_any_outbound; + policy.key = test_key; + status = srtp_update(srtp_snd, &policy); + if (status) { + return status; + } + + msg = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, false, + &protected_msg_len_octets, NULL); + if (msg == NULL) { + return srtp_err_status_alloc_fail; + } + ((srtp_hdr_t *)msg)->seq = htons(2); + + status = call_srtp_protect(srtp_snd, msg, &protected_msg_len_octets, 0); + if (status) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(srtp_recv, msg, &protected_msg_len_octets); + if (status) { + return status; + } + + free(msg); + + /* update send ctx to use test_alt_key */ + policy.ssrc.type = ssrc_any_outbound; + policy.key = test_alt_key; + status = srtp_update(srtp_snd, &policy); + if (status) { + return status; + } + + /* create and protect msg with new key and ROC still equal to 1 */ + msg = create_rtp_test_packet(msg_len_octets, ssrc, 1, 1, false, + &protected_msg_len_octets, NULL); + if (msg == NULL) { + return srtp_err_status_alloc_fail; + } + ((srtp_hdr_t *)msg)->seq = htons(3); + + status = call_srtp_protect(srtp_snd, msg, &protected_msg_len_octets, 0); + if (status) { + return srtp_err_status_fail; + } + + /* verify that receive ctx will fail to unprotect as it still uses test_key + */ + status = call_srtp_unprotect(srtp_recv, msg, &protected_msg_len_octets); + if (status == srtp_err_status_ok) { + return srtp_err_status_fail; + } + + /* create a new receive ctx with test_alt_key but since it is new it will + * have ROC equal to 1 + * and therefore should fail to unprotected */ + { + srtp_t srtp_recv_roc_0; + + policy.ssrc.type = ssrc_any_inbound; + policy.key = test_alt_key; + status = srtp_create(&srtp_recv_roc_0, &policy); + if (status) { + return status; + } + + status = call_srtp_unprotect(srtp_recv_roc_0, msg, + &protected_msg_len_octets); + if (status == srtp_err_status_ok) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp_recv_roc_0); + if (status) { + return status; + } + } + + /* update recive ctx to use test_alt_key */ + policy.ssrc.type = ssrc_any_inbound; + policy.key = test_alt_key; + status = srtp_update(srtp_recv, &policy); + if (status) { + return status; + } + + /* verify that can still unprotect, therfore key is updated and ROC value is + * preserved */ + status = call_srtp_unprotect(srtp_recv, msg, &protected_msg_len_octets); + if (status) { + return status; + } + + free(msg); + + status = srtp_dealloc(srtp_snd); + if (status) { + return status; + } + + status = srtp_dealloc(srtp_recv); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_update_mki(void) +{ + srtp_err_status_t status; + srtp_t srtp; + srtp_policy_t policy; + + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_any_outbound; + policy.keys = test_keys; + policy.num_master_keys = 1; + policy.use_mki = true; + policy.mki_size = 1; + + status = srtp_create(&srtp, &policy); + if (status) { + return status; + } + + /* can not turn off mki */ + policy.use_mki = false; + policy.mki_size = 0; + status = srtp_update(srtp, &policy); + if (status == srtp_err_status_ok) { + return srtp_err_status_fail; + } + + /* update same values still ok*/ + policy.use_mki = true; + policy.mki_size = 1; + status = srtp_update(srtp, &policy); + if (status) { + return status; + } + + /* can not change mki size*/ + policy.use_mki = true; + policy.mki_size = 2; + status = srtp_update(srtp, &policy); + if (status == srtp_err_status_ok) { + return srtp_err_status_fail; + } + + status = srtp_dealloc(srtp); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_setup_protect_trailer_streams( + srtp_t *srtp_send, + srtp_t *srtp_send_mki, + srtp_t *srtp_send_aes_gcm, + srtp_t *srtp_send_aes_gcm_mki) +{ + srtp_err_status_t status; + srtp_policy_t policy; + srtp_policy_t policy_mki; + +#ifdef GCM + srtp_policy_t policy_aes_gcm; + srtp_policy_t policy_aes_gcm_mki; +#else + (void)srtp_send_aes_gcm; + (void)srtp_send_aes_gcm_mki; +#endif // GCM + + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.window_size = 128; + policy.allow_repeat_tx = false; + policy.next = NULL; + policy.ssrc.type = ssrc_any_outbound; + policy.key = test_key; + + memset(&policy_mki, 0, sizeof(policy_mki)); + srtp_crypto_policy_set_rtp_default(&policy_mki.rtp); + srtp_crypto_policy_set_rtcp_default(&policy_mki.rtcp); + policy_mki.window_size = 128; + policy_mki.allow_repeat_tx = false; + policy_mki.next = NULL; + policy_mki.ssrc.type = ssrc_any_outbound; + policy_mki.key = NULL; + policy_mki.keys = test_keys; + policy_mki.num_master_keys = 2; + policy_mki.use_mki = true; + policy_mki.mki_size = TEST_MKI_ID_SIZE; + +#ifdef GCM + memset(&policy_aes_gcm, 0, sizeof(policy_aes_gcm)); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy_aes_gcm.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy_aes_gcm.rtcp); + policy_aes_gcm.window_size = 128; + policy_aes_gcm.allow_repeat_tx = false; + policy_aes_gcm.next = NULL; + policy_aes_gcm.ssrc.type = ssrc_any_outbound; + policy_aes_gcm.key = test_key; + + memset(&policy_aes_gcm_mki, 0, sizeof(policy_aes_gcm_mki)); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy_aes_gcm_mki.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy_aes_gcm_mki.rtcp); + policy_aes_gcm_mki.window_size = 128; + policy_aes_gcm_mki.allow_repeat_tx = false; + policy_aes_gcm_mki.next = NULL; + policy_aes_gcm_mki.ssrc.type = ssrc_any_outbound; + policy_aes_gcm_mki.key = NULL; + policy_aes_gcm_mki.keys = test_keys; + policy_aes_gcm_mki.num_master_keys = 2; + policy_aes_gcm_mki.use_mki = true; + policy_aes_gcm_mki.mki_size = TEST_MKI_ID_SIZE; +#endif // GCM + + /* create a send ctx with defualt profile and test_key */ + status = srtp_create(srtp_send, &policy); + if (status) { + return status; + } + + status = srtp_create(srtp_send_mki, &policy_mki); + if (status) { + return status; + } + +#ifdef GCM + status = srtp_create(srtp_send_aes_gcm, &policy_aes_gcm); + if (status) { + return status; + } + + status = srtp_create(srtp_send_aes_gcm_mki, &policy_aes_gcm_mki); + if (status) { + return status; + } +#endif // GCM + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_protect_trailer_length(void) +{ + srtp_t srtp_send; + srtp_t srtp_send_mki; + srtp_t srtp_send_aes_gcm; + srtp_t srtp_send_aes_gcm_mki; + size_t length = 0; + srtp_err_status_t status; + + status = srtp_test_setup_protect_trailer_streams( + &srtp_send, &srtp_send_mki, &srtp_send_aes_gcm, &srtp_send_aes_gcm_mki); + if (status) { + return status; + } + + status = srtp_get_protect_trailer_length(srtp_send, 0, &length); + if (status) { + return status; + } + + /* TAG Length: 10 bytes */ + if (length != 10) { + return srtp_err_status_fail; + } + + status = srtp_get_protect_trailer_length(srtp_send_mki, 1, &length); + if (status) { + return status; + } + + /* TAG Length: 10 bytes + MKI length: 4 bytes*/ + if (length != 14) { + return srtp_err_status_fail; + } + +#ifdef GCM + status = srtp_get_protect_trailer_length(srtp_send_aes_gcm, 0, &length); + if (status) { + return status; + } + + /* TAG Length: 16 bytes */ + if (length != 16) { + return srtp_err_status_fail; + } + + status = srtp_get_protect_trailer_length(srtp_send_aes_gcm_mki, 1, &length); + if (status) { + return status; + } + + /* TAG Length: 16 bytes + MKI length: 4 bytes*/ + if (length != 20) { + return srtp_err_status_fail; + } +#endif // GCM + + srtp_dealloc(srtp_send); + srtp_dealloc(srtp_send_mki); +#ifdef GCM + srtp_dealloc(srtp_send_aes_gcm); + srtp_dealloc(srtp_send_aes_gcm_mki); +#endif + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_protect_rtcp_trailer_length(void) +{ + srtp_t srtp_send; + srtp_t srtp_send_mki; + srtp_t srtp_send_aes_gcm; + srtp_t srtp_send_aes_gcm_mki; + size_t length = 0; + srtp_err_status_t status; + + srtp_test_setup_protect_trailer_streams( + &srtp_send, &srtp_send_mki, &srtp_send_aes_gcm, &srtp_send_aes_gcm_mki); + + status = srtp_get_protect_rtcp_trailer_length(srtp_send, 0, &length); + if (status) { + return status; + } + + /* TAG Length: 10 bytes + SRTCP Trailer 4 bytes*/ + if (length != 14) { + return srtp_err_status_fail; + } + + status = srtp_get_protect_rtcp_trailer_length(srtp_send_mki, 1, &length); + if (status) { + return status; + } + + /* TAG Length: 10 bytes + SRTCP Trailer 4 bytes + MKI 4 bytes*/ + if (length != 18) { + return srtp_err_status_fail; + } + +#ifdef GCM + status = + srtp_get_protect_rtcp_trailer_length(srtp_send_aes_gcm, 0, &length); + if (status) { + return status; + } + + /* TAG Length: 16 bytes + SRTCP Trailer 4 bytes*/ + if (length != 20) { + return srtp_err_status_fail; + } + + status = + srtp_get_protect_rtcp_trailer_length(srtp_send_aes_gcm_mki, 1, &length); + if (status) { + return status; + } + + /* TAG Length: 16 bytes + SRTCP Trailer 4 bytes + MKI 4 bytes*/ + if (length != 24) { + return srtp_err_status_fail; + } +#endif // GCM + + srtp_dealloc(srtp_send); + srtp_dealloc(srtp_send_mki); +#ifdef GCM + srtp_dealloc(srtp_send_aes_gcm); + srtp_dealloc(srtp_send_aes_gcm_mki); +#endif + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_out_of_order_after_rollover(void) +{ + srtp_err_status_t status; + + srtp_policy_t sender_policy; + srtp_t sender_session; + + srtp_policy_t receiver_policy; + srtp_t receiver_session; + + const uint32_t num_pkts = 5; + uint8_t *pkts[5]; + size_t pkt_len_octets[5]; + + uint32_t i; + uint32_t stream_roc; + + /* Create the sender */ + memset(&sender_policy, 0, sizeof(sender_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtcp); + sender_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&sender_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&sender_policy.rtcp); + sender_policy.key = test_key; +#endif + sender_policy.ssrc.type = ssrc_specific; + sender_policy.ssrc.value = 0xcafebabe; + sender_policy.window_size = 128; + + status = srtp_create(&sender_session, &sender_policy); + if (status) { + return status; + } + + /* Create the receiver */ + memset(&receiver_policy, 0, sizeof(receiver_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtcp); + receiver_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&receiver_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&receiver_policy.rtcp); + receiver_policy.key = test_key; +#endif + receiver_policy.ssrc.type = ssrc_specific; + receiver_policy.ssrc.value = sender_policy.ssrc.value; + receiver_policy.window_size = 128; + + status = srtp_create(&receiver_session, &receiver_policy); + if (status) { + return status; + } + + /* Create and protect packets to get to get roc == 1 */ + pkts[0] = create_rtp_test_packet(64, sender_policy.ssrc.value, 65534, 0, + false, &pkt_len_octets[0], NULL); + status = call_srtp_protect(sender_session, pkts[0], &pkt_len_octets[0], 0); + if (status) { + return status; + } + status = srtp_stream_get_roc(sender_session, sender_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 0) { + return srtp_err_status_fail; + } + + pkts[1] = create_rtp_test_packet(64, sender_policy.ssrc.value, 65535, 1, + false, &pkt_len_octets[1], NULL); + status = call_srtp_protect(sender_session, pkts[1], &pkt_len_octets[1], 0); + if (status) { + return status; + } + status = srtp_stream_get_roc(sender_session, sender_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 0) { + return srtp_err_status_fail; + } + + pkts[2] = create_rtp_test_packet(64, sender_policy.ssrc.value, 0, 2, false, + &pkt_len_octets[2], NULL); + status = call_srtp_protect(sender_session, pkts[2], &pkt_len_octets[2], 0); + if (status) { + return status; + } + status = srtp_stream_get_roc(sender_session, sender_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + pkts[3] = create_rtp_test_packet(64, sender_policy.ssrc.value, 1, 3, false, + &pkt_len_octets[3], NULL); + status = call_srtp_protect(sender_session, pkts[3], &pkt_len_octets[3], 0); + if (status) { + return status; + } + status = srtp_stream_get_roc(sender_session, sender_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + pkts[4] = create_rtp_test_packet(64, sender_policy.ssrc.value, 2, 4, false, + &pkt_len_octets[4], NULL); + status = call_srtp_protect(sender_session, pkts[4], &pkt_len_octets[4], 0); + if (status) { + return status; + } + status = srtp_stream_get_roc(sender_session, sender_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + /* Unprotect packets in this seq order 65534, 0, 2, 1, 65535 which is + * equivalent to index 0, 2, 4, 3, 1*/ + status = call_srtp_unprotect(receiver_session, pkts[0], &pkt_len_octets[0]); + if (status) { + return status; + } + status = srtp_stream_get_roc(receiver_session, receiver_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 0) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(receiver_session, pkts[2], &pkt_len_octets[2]); + if (status) { + return status; + } + status = srtp_stream_get_roc(receiver_session, receiver_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(receiver_session, pkts[4], &pkt_len_octets[4]); + if (status) { + return status; + } + status = srtp_stream_get_roc(receiver_session, receiver_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(receiver_session, pkts[3], &pkt_len_octets[3]); + if (status) { + return status; + } + status = srtp_stream_get_roc(receiver_session, receiver_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + status = call_srtp_unprotect(receiver_session, pkts[1], &pkt_len_octets[1]); + if (status) { + return status; + } + status = srtp_stream_get_roc(receiver_session, receiver_policy.ssrc.value, + &stream_roc); + if (status) { + return status; + } + if (stream_roc != 1) { + return srtp_err_status_fail; + } + + /* Cleanup */ + status = srtp_dealloc(sender_session); + if (status) { + return status; + } + + status = srtp_dealloc(receiver_session); + if (status) { + return status; + } + + for (i = 0; i < num_pkts; i++) { + free(pkts[i]); + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_get_roc(void) +{ + srtp_err_status_t status; + srtp_policy_t policy; + srtp_t session; + uint8_t *pkt; + uint32_t i; + uint32_t roc; + uint32_t ts; + uint16_t seq; + + size_t msg_len_octets = 32; + size_t protected_msg_len_octets; + + memset(&policy, 0, sizeof(policy)); + srtp_crypto_policy_set_rtp_default(&policy.rtp); + srtp_crypto_policy_set_rtcp_default(&policy.rtcp); + policy.ssrc.type = ssrc_specific; + policy.ssrc.value = 0xcafebabe; + policy.key = test_key; + policy.window_size = 128; + + /* Create a sender session */ + status = srtp_create(&session, &policy); + if (status) { + return status; + } + + /* Set start sequence so we roll over */ + seq = 65535; + ts = 0; + + for (i = 0; i < 2; i++) { + pkt = create_rtp_test_packet(msg_len_octets, policy.ssrc.value, seq, ts, + false, &protected_msg_len_octets, NULL); + status = call_srtp_protect(session, pkt, &protected_msg_len_octets, 0); + free(pkt); + if (status) { + return status; + } + + status = srtp_stream_get_roc(session, policy.ssrc.value, &roc); + if (status) { + return status; + } + + if (roc != i) { + return srtp_err_status_fail; + } + + seq++; + ts++; + } + + /* Cleanup */ + status = srtp_dealloc(session); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +static srtp_err_status_t test_set_receiver_roc(uint32_t packets, + uint32_t roc_to_set) +{ + srtp_err_status_t status; + + srtp_policy_t sender_policy; + srtp_t sender_session; + + srtp_policy_t receiver_policy; + srtp_t receiver_session; + + uint8_t *pkt_1; + uint8_t *recv_pkt_1; + + uint8_t *pkt_2; + uint8_t *recv_pkt_2; + + uint32_t i; + uint32_t ts; + uint16_t seq; + uint16_t stride; + + size_t msg_len_octets = 32; + size_t protected_msg_len_octets_1; + size_t protected_msg_len_octets_2; + + /* Create the sender */ + memset(&sender_policy, 0, sizeof(sender_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtcp); + sender_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&sender_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&sender_policy.rtcp); + sender_policy.key = test_key; +#endif + sender_policy.ssrc.type = ssrc_specific; + sender_policy.ssrc.value = 0xcafebabe; + sender_policy.window_size = 128; + + status = srtp_create(&sender_session, &sender_policy); + if (status) { + return status; + } + + /* Create and protect packets */ + i = 0; + seq = 0; + ts = 0; + stride = 0x4000; + while (i < packets) { + uint8_t *tmp_pkt; + size_t tmp_len; + + tmp_pkt = + create_rtp_test_packet(msg_len_octets, sender_policy.ssrc.value, + seq, ts, false, &tmp_len, NULL); + status = call_srtp_protect(sender_session, tmp_pkt, &tmp_len, 0); + free(tmp_pkt); + if (status) { + return status; + } + + while (stride > (packets - i) && stride > 1) { + stride >>= 1; + } + + i += stride; + seq += stride; + ts++; + } + + /* Create the first packet to decrypt and test for ROC change */ + pkt_1 = + create_rtp_test_packet(msg_len_octets, sender_policy.ssrc.value, seq, + ts, false, &protected_msg_len_octets_1, NULL); + status = call_srtp_protect(sender_session, pkt_1, + &protected_msg_len_octets_1, 0); + if (status) { + return status; + } + + /* Create the second packet to decrypt and test for ROC change */ + seq++; + ts++; + pkt_2 = + create_rtp_test_packet(msg_len_octets, sender_policy.ssrc.value, seq, + ts, false, &protected_msg_len_octets_2, NULL); + status = call_srtp_protect(sender_session, pkt_2, + &protected_msg_len_octets_2, 0); + if (status) { + return status; + } + + /* Create the receiver */ + memset(&receiver_policy, 0, sizeof(receiver_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtcp); + receiver_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&receiver_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&receiver_policy.rtcp); + receiver_policy.key = test_key; +#endif + receiver_policy.ssrc.type = ssrc_specific; + receiver_policy.ssrc.value = sender_policy.ssrc.value; + receiver_policy.window_size = 128; + + status = srtp_create(&receiver_session, &receiver_policy); + if (status) { + return status; + } + + /* Make a copy of the first sent protected packet */ + recv_pkt_1 = malloc(protected_msg_len_octets_1); + if (recv_pkt_1 == NULL) { + return srtp_err_status_fail; + } + memcpy(recv_pkt_1, pkt_1, protected_msg_len_octets_1); + + /* Make a copy of the second sent protected packet */ + recv_pkt_2 = malloc(protected_msg_len_octets_2); + if (recv_pkt_2 == NULL) { + return srtp_err_status_fail; + } + memcpy(recv_pkt_2, pkt_2, protected_msg_len_octets_2); + + /* Set the ROC to the wanted value */ + status = srtp_stream_set_roc(receiver_session, receiver_policy.ssrc.value, + roc_to_set); + if (status) { + return status; + } + + /* Unprotect the first packet */ + status = call_srtp_unprotect(receiver_session, recv_pkt_1, + &protected_msg_len_octets_1); + if (status) { + return status; + } + + /* Unprotect the second packet */ + status = call_srtp_unprotect(receiver_session, recv_pkt_2, + &protected_msg_len_octets_2); + if (status) { + return status; + } + + /* Cleanup */ + status = srtp_dealloc(sender_session); + if (status) { + return status; + } + + status = srtp_dealloc(receiver_session); + if (status) { + return status; + } + + free(pkt_1); + free(recv_pkt_1); + free(pkt_2); + free(recv_pkt_2); + + return srtp_err_status_ok; +} + +static srtp_err_status_t test_set_sender_roc(uint16_t seq, uint32_t roc_to_set) +{ + srtp_err_status_t status; + + srtp_policy_t sender_policy; + srtp_t sender_session; + + srtp_policy_t receiver_policy; + srtp_t receiver_session; + + uint8_t *pkt; + uint8_t *recv_pkt; + + uint32_t ts; + + size_t msg_len_octets = 32; + size_t protected_msg_len_octets; + + /* Create the sender */ + memset(&sender_policy, 0, sizeof(sender_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtcp); + sender_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&sender_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&sender_policy.rtcp); + sender_policy.key = test_key; +#endif + sender_policy.ssrc.type = ssrc_specific; + sender_policy.ssrc.value = 0xcafebabe; + sender_policy.window_size = 128; + + status = srtp_create(&sender_session, &sender_policy); + if (status) { + return status; + } + + /* Set the ROC before encrypting the first packet */ + status = srtp_stream_set_roc(sender_session, sender_policy.ssrc.value, + roc_to_set); + if (status != srtp_err_status_ok) { + return status; + } + + /* Create the packet to decrypt */ + ts = 0; + pkt = create_rtp_test_packet(msg_len_octets, sender_policy.ssrc.value, seq, + ts, false, &protected_msg_len_octets, NULL); + status = + call_srtp_protect(sender_session, pkt, &protected_msg_len_octets, 0); + if (status) { + return status; + } + + /* Create the receiver */ + memset(&receiver_policy, 0, sizeof(receiver_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtcp); + receiver_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&receiver_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&receiver_policy.rtcp); + receiver_policy.key = test_key; +#endif + receiver_policy.ssrc.type = ssrc_specific; + receiver_policy.ssrc.value = sender_policy.ssrc.value; + receiver_policy.window_size = 128; + + status = srtp_create(&receiver_session, &receiver_policy); + if (status) { + return status; + } + + /* Make a copy of the sent protected packet */ + recv_pkt = malloc(protected_msg_len_octets); + if (recv_pkt == NULL) { + return srtp_err_status_fail; + } + memcpy(recv_pkt, pkt, protected_msg_len_octets); + + /* Set the ROC to the wanted value */ + status = srtp_stream_set_roc(receiver_session, receiver_policy.ssrc.value, + roc_to_set); + if (status) { + return status; + } + + status = call_srtp_unprotect(receiver_session, recv_pkt, + &protected_msg_len_octets); + if (status) { + return status; + } + + /* Cleanup */ + status = srtp_dealloc(sender_session); + if (status) { + return status; + } + + status = srtp_dealloc(receiver_session); + if (status) { + return status; + } + + free(pkt); + free(recv_pkt); + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_set_receiver_roc(void) +{ + int packets; + uint32_t roc; + srtp_err_status_t status; + + /* First test does not rollover */ + packets = 1; + roc = 0; + + status = test_set_receiver_roc(packets - 1, roc); + if (status) { + return status; + } + + status = test_set_receiver_roc(packets, roc); + if (status) { + return status; + } + + status = test_set_receiver_roc(packets + 1, roc); + if (status) { + return status; + } + + status = test_set_receiver_roc(packets + 60000, roc); + if (status) { + return status; + } + + /* Second test should rollover */ + packets = 65535; + roc = 0; + + status = test_set_receiver_roc(packets - 1, roc); + if (status) { + return status; + } + + status = test_set_receiver_roc(packets, roc); + if (status) { + return status; + } + + /* Now the rollover counter should be 1 */ + roc = 1; + status = test_set_receiver_roc(packets + 1, roc); + if (status) { + return status; + } + + status = test_set_receiver_roc(packets + 60000, roc); + if (status) { + return status; + } + + status = test_set_receiver_roc(packets + 65535, roc); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_test_set_sender_roc(void) +{ + uint32_t roc; + uint16_t seq; + srtp_err_status_t status; + + seq = 43210; + roc = 0; + status = test_set_sender_roc(seq, roc); + if (status) { + return status; + } + + roc = 65535; + status = test_set_sender_roc(seq, roc); + if (status) { + return status; + } + + roc = 0xffff; + status = test_set_sender_roc(seq, roc); + if (status) { + return status; + } + + roc = 0xffff00; + status = test_set_sender_roc(seq, roc); + if (status) { + return status; + } + + roc = 0xfffffff0; + status = test_set_sender_roc(seq, roc); + if (status) { + return status; + } + + return srtp_err_status_ok; +} + +/* This test illustrates how the ROC can be mismatched between + * sender and receiver when a packets are lost before the initial + * sequence number wraparound. In a nutshell: + * - Sender encrypts sequence numbers 65535, 0, 1, ... + * - Receiver only receives 1 initially. + * In that state the receiver will assume the sender used ROC=0 to + * encrypt the packet with sequence number 0. + * This is a long-standing problem that is best avoided by a choice + * of initial sequence number in the lower half of the sequence number + * space. + */ +srtp_err_status_t srtp_test_roc_mismatch(void) +{ + srtp_policy_t sender_policy; + srtp_t sender_session; + + srtp_policy_t receiver_policy; + srtp_t receiver_session; + + const uint32_t num_pkts = 3; + uint8_t *pkts[3]; + size_t pkt_len_octets[3]; + + const uint16_t seq = 0xffff; + uint32_t i; + + /* Create the sender */ + memset(&sender_policy, 0, sizeof(sender_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtcp); + sender_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&sender_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&sender_policy.rtcp); + sender_policy.key = test_key; +#endif + sender_policy.ssrc.type = ssrc_specific; + sender_policy.ssrc.value = 0xcafebabe; + sender_policy.window_size = 128; + + CHECK_OK(srtp_create(&sender_session, &sender_policy)); + + /* Create the receiver */ + memset(&receiver_policy, 0, sizeof(receiver_policy)); +#ifdef GCM + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtp); + srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtcp); + receiver_policy.key = test_key_gcm; +#else + srtp_crypto_policy_set_rtp_default(&receiver_policy.rtp); + srtp_crypto_policy_set_rtcp_default(&receiver_policy.rtcp); + receiver_policy.key = test_key; +#endif + receiver_policy.ssrc.type = ssrc_specific; + receiver_policy.ssrc.value = sender_policy.ssrc.value; + receiver_policy.window_size = 128; + + CHECK_OK(srtp_create(&receiver_session, &receiver_policy)); + + /* Create and protect packets to get to get ROC == 1 */ + for (i = 0; i < num_pkts; i++) { + pkts[i] = create_rtp_test_packet(64, sender_policy.ssrc.value, + (uint16_t)(seq + i), 0, false, + &pkt_len_octets[i], NULL); + CHECK_OK( + call_srtp_protect(sender_session, pkts[i], &pkt_len_octets[i], 0)); + } + + /* Decrypt in reverse order (1, 65535) */ + CHECK_RETURN( + call_srtp_unprotect(receiver_session, pkts[2], &pkt_len_octets[2]), + srtp_err_status_auth_fail); + CHECK_OK( + call_srtp_unprotect(receiver_session, pkts[0], &pkt_len_octets[0])); + /* After decryption of the previous ROC rollover will work as expected */ + /* Only pkts[1] is checked since that is not modified by the attempt to + * decryption. */ + CHECK_OK( + call_srtp_unprotect(receiver_session, pkts[1], &pkt_len_octets[1])); + + for (i = 0; i < num_pkts; i++) { + free(pkts[i]); + } + CHECK_OK(srtp_dealloc(sender_session)); + CHECK_OK(srtp_dealloc(receiver_session)); + return srtp_err_status_ok; +} + +/* + * srtp policy definitions - these definitions are used above + */ + +// clang-format off +uint8_t test_key[46] = { + 0xe1, 0xf9, 0x7a, 0x0d, 0x3e, 0x01, 0x8b, 0xe0, + 0xd6, 0x4f, 0xa3, 0x2c, 0x06, 0xde, 0x41, 0x39, + 0x0e, 0xc6, 0x75, 0xad, 0x49, 0x8a, 0xfe, 0xeb, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6, 0xc1, 0x73, + 0xc3, 0x17, 0xf2, 0xda, 0xbe, 0x35, 0x77, 0x93, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6 +}; + +uint8_t test_key_2[46] = { + 0xf0, 0xf0, 0x49, 0x14, 0xb5, 0x13, 0xf2, 0x76, + 0x3a, 0x1b, 0x1f, 0xa1, 0x30, 0xf1, 0x0e, 0x29, + 0x98, 0xf6, 0xf6, 0xe4, 0x3e, 0x43, 0x09, 0xd1, + 0xe6, 0x22, 0xa0, 0xe3, 0x32, 0xb9, 0xf1, 0xb6, + 0xc3, 0x17, 0xf2, 0xda, 0xbe, 0x35, 0x77, 0x93, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6 +}; + +uint8_t test_key_gcm[28] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab +}; + +uint8_t test_mki_id[TEST_MKI_ID_SIZE] = { + 0xe1, 0xf9, 0x7a, 0x0d +}; + +uint8_t test_mki_id_2[TEST_MKI_ID_SIZE] = { + 0xf3, 0xa1, 0x46, 0x71 +}; +// clang-format on + +const srtp_policy_t default_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_ICM_128, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 16, /* auth key length in octets */ + 10, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_ICM_128, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 16, /* auth key length in octets */ + 10, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t aes_only_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + SRTP_AES_ICM_128, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 0, /* auth tag length in octets */ + sec_serv_conf /* security services flag */ + }, + { + SRTP_AES_ICM_128, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 0, /* auth tag length in octets */ + sec_serv_conf /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t hmac_only_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + SRTP_NULL_CIPHER, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 4, /* auth tag length in octets */ + sec_serv_auth /* security services flag */ + }, + { + SRTP_NULL_CIPHER, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 4, /* auth tag length in octets */ + sec_serv_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* Number of Master keys associated with the policy */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +#ifdef GCM +const srtp_policy_t aes128_gcm_8_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_GCM_128, /* cipher type */ + SRTP_AES_GCM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_GCM_128, /* cipher type */ + SRTP_AES_GCM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t aes128_gcm_8_cauth_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_GCM_128, /* cipher type */ + SRTP_AES_GCM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_GCM_128, /* cipher type */ + SRTP_AES_GCM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t aes256_gcm_8_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_GCM_256, /* cipher type */ + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_GCM_256, /* cipher type */ + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t aes256_gcm_8_cauth_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_GCM_256, /* cipher type */ + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_GCM_256, /* cipher type */ + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 8, /* auth tag length in octets */ + sec_serv_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; +#endif + +const srtp_policy_t null_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + SRTP_NULL_CIPHER, /* cipher type */ + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 0, /* auth tag length in octets */ + sec_serv_none /* security services flag */ + }, + { + SRTP_NULL_CIPHER, /* cipher type */ + SRTP_AES_GCM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_NULL_AUTH, /* authentication func type */ + 0, /* auth key length in octets */ + 0, /* auth tag length in octets */ + sec_serv_none /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +// clang-format off +uint8_t test_256_key[46] = { + 0xf0, 0xf0, 0x49, 0x14, 0xb5, 0x13, 0xf2, 0x76, + 0x3a, 0x1b, 0x1f, 0xa1, 0x30, 0xf1, 0x0e, 0x29, + 0x98, 0xf6, 0xf6, 0xe4, 0x3e, 0x43, 0x09, 0xd1, + 0xe6, 0x22, 0xa0, 0xe3, 0x32, 0xb9, 0xf1, 0xb6, + + 0x3b, 0x04, 0x80, 0x3d, 0xe5, 0x1e, 0xe7, 0xc9, + 0x64, 0x23, 0xab, 0x5b, 0x78, 0xd2 +}; + +uint8_t test_256_key_2[46] = { + 0xe1, 0xf9, 0x7a, 0x0d, 0x3e, 0x01, 0x8b, 0xe0, + 0xd6, 0x4f, 0xa3, 0x2c, 0x06, 0xde, 0x41, 0x39, + 0x0e, 0xc6, 0x75, 0xad, 0x49, 0x8a, 0xfe, 0xeb, + 0xb6, 0x96, 0x0b, 0x3a, 0xab, 0xe6, 0xc1, 0x73, + 0x3b, 0x04, 0x80, 0x3d, 0xe5, 0x1e, 0xe7, 0xc9, + 0x64, 0x23, 0xab, 0x5b, 0x78, 0xd2 +}; + +srtp_master_key_t master_256_key_1 = { + test_256_key, + test_mki_id +}; + +srtp_master_key_t master_256_key_2 = { + test_256_key_2, + test_mki_id_2 +}; + +srtp_master_key_t *test_256_keys[2] = { + &master_key_1, + &master_key_2 +}; +// clang-format on + +const srtp_policy_t aes_256_hmac_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_ICM_256, /* cipher type */ + SRTP_AES_ICM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 10, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_ICM_256, /* cipher type */ + SRTP_AES_ICM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 10, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_256_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + false, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t aes_256_hmac_32_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_ICM_256, /* cipher type */ + SRTP_AES_ICM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 4, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_ICM_256, /* cipher type */ + SRTP_AES_ICM_256_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 10, /* auth tag length in octets. + 80 bits per RFC 3711. */ + sec_serv_conf_and_auth /* security services flag */ + }, + NULL, + (srtp_master_key_t **)test_256_keys, + 2, /* indicates the number of Master keys */ + true, /* no mki */ + TEST_MKI_ID_SIZE, /* mki size */ + 128, /* replay window size */ + false, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +const srtp_policy_t hmac_only_with_no_master_key = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + SRTP_NULL_CIPHER, /* cipher type */ + 0, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 4, /* auth tag length in octets */ + sec_serv_auth /* security services flag */ + }, + { + SRTP_NULL_CIPHER, /* cipher type */ + 0, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 20, /* auth key length in octets */ + 4, /* auth tag length in octets */ + sec_serv_auth /* security services flag */ + }, + NULL, + NULL, /* no master keys*/ + 0, /* indicates the number of Master keys */ + false, /* no mki */ + 0, /* mki size */ + 128, /* replay window size */ + false, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +/* + * an array of pointers to the policies listed above + * + * This array is used to test various aspects of libSRTP for + * different cryptographic policies. The order of the elements + * matters - the timing test generates output that can be used + * in a plot (see the gnuplot script file 'timing'). If you + * add to this list, you should do it at the end. + */ + +// clang-format off +const srtp_policy_t *policy_array[] = { + &hmac_only_policy, + &aes_only_policy, + &default_policy, +#ifdef GCM + &aes128_gcm_8_policy, + &aes128_gcm_8_cauth_policy, + &aes256_gcm_8_policy, + &aes256_gcm_8_cauth_policy, +#endif + &null_policy, + &aes_256_hmac_policy, + &aes_256_hmac_32_policy, + NULL +}; +// clang-format on + +// clang-format off +const srtp_policy_t *invalid_policy_array[] = { + &hmac_only_with_no_master_key, + NULL +}; +// clang-format on + +const srtp_policy_t wildcard_policy = { + { ssrc_any_outbound, 0 }, /* SSRC */ + { + /* SRTP policy */ + SRTP_AES_ICM_128, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 16, /* auth key length in octets */ + 10, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + { + /* SRTCP policy */ + SRTP_AES_ICM_128, /* cipher type */ + SRTP_AES_ICM_128_KEY_LEN_WSALT, /* cipher key length in octets */ + SRTP_HMAC_SHA1, /* authentication func type */ + 16, /* auth key length in octets */ + 10, /* auth tag length in octets */ + sec_serv_conf_and_auth /* security services flag */ + }, + test_key, + NULL, + 0, + false, /* no mki */ + 0, /* mki size */ + 128, /* replay window size */ + 0, /* retransmission not allowed */ + NULL, /* no encrypted extension headers */ + 0, /* list of encrypted extension headers is empty */ + false, /* cryptex */ + NULL +}; + +static srtp_stream_t stream_list_test_create_stream(uint32_t ssrc) +{ + srtp_stream_t stream = malloc(sizeof(srtp_stream_ctx_t)); + stream->ssrc = ssrc; + return stream; +} + +static void stream_list_test_free_stream(srtp_stream_t stream) +{ + free(stream); +} + +bool stream_list_test_count_cb(srtp_stream_t stream, void *data) +{ + size_t *count = (size_t *)data; + (*count)++; + (void)stream; + return true; +} + +struct remove_one_data { + uint32_t ssrc; + srtp_stream_list_t list; +}; + +bool stream_list_test_remove_one_cb(srtp_stream_t stream, void *data) +{ + struct remove_one_data *d = (struct remove_one_data *)data; + if (stream->ssrc == d->ssrc) { + srtp_stream_list_remove(d->list, stream); + stream_list_test_free_stream(stream); + return false; + } + return true; +} + +bool stream_list_test_remove_all_cb(srtp_stream_t stream, void *data) +{ + srtp_stream_list_t *list = (srtp_stream_list_t *)data; + srtp_stream_list_remove(*list, stream); + stream_list_test_free_stream(stream); + return true; +} + +srtp_err_status_t srtp_stream_list_test(void) +{ + srtp_stream_list_t list; + + if (srtp_stream_list_alloc(&list)) { + return srtp_err_status_fail; + } + + /* add 4 streams */ + if (srtp_stream_list_insert(list, stream_list_test_create_stream(1))) { + return srtp_err_status_fail; + } + if (srtp_stream_list_insert(list, stream_list_test_create_stream(2))) { + return srtp_err_status_fail; + } + if (srtp_stream_list_insert(list, stream_list_test_create_stream(3))) { + return srtp_err_status_fail; + } + if (srtp_stream_list_insert(list, stream_list_test_create_stream(4))) { + return srtp_err_status_fail; + } + + /* find */ + if (srtp_stream_list_get(list, 3) == NULL) { + return srtp_err_status_fail; + } + if (srtp_stream_list_get(list, 1) == NULL) { + return srtp_err_status_fail; + } + if (srtp_stream_list_get(list, 2) == NULL) { + return srtp_err_status_fail; + } + if (srtp_stream_list_get(list, 4) == NULL) { + return srtp_err_status_fail; + } + + /* find not in list */ + if (srtp_stream_list_get(list, 5)) { + return srtp_err_status_fail; + } + + /* for each */ + size_t count = 0; + srtp_stream_list_for_each(list, stream_list_test_count_cb, &count); + if (count != 4) { + return srtp_err_status_fail; + } + + /* remove */ + srtp_stream_t stream = srtp_stream_list_get(list, 3); + if (stream == NULL) { + return srtp_err_status_fail; + } + srtp_stream_list_remove(list, stream); + stream_list_test_free_stream(stream); + + /* find after remove */ + if (srtp_stream_list_get(list, 3)) { + return srtp_err_status_fail; + } + + /* recount */ + count = 0; + srtp_stream_list_for_each(list, stream_list_test_count_cb, &count); + if (count != 3) { + return srtp_err_status_fail; + } + + /* remove one in for each */ + struct remove_one_data data = { 2, list }; + srtp_stream_list_for_each(list, stream_list_test_remove_one_cb, &data); + + /* find after remove */ + if (srtp_stream_list_get(list, 2)) { + return srtp_err_status_fail; + } + + /* recount */ + count = 0; + srtp_stream_list_for_each(list, stream_list_test_count_cb, &count); + if (count != 2) { + return srtp_err_status_fail; + } + + /* destroy non empty list */ + if (srtp_stream_list_dealloc(list) == srtp_err_status_ok) { + return srtp_err_status_fail; + } + + /* remove all in for each */ + srtp_stream_list_for_each(list, stream_list_test_remove_all_cb, &list); + + /* recount */ + count = 0; + srtp_stream_list_for_each(list, stream_list_test_count_cb, &count); + if (count != 0) { + return srtp_err_status_fail; + } + + /* destroy empty list */ + if (srtp_stream_list_dealloc(list)) { + return srtp_err_status_fail; + } + + return srtp_err_status_ok; +} + +#ifdef SRTP_USE_TEST_STREAM_LIST + +/* + * A srtp_stream_list_ctx_t implementation using a single linked list + * that does not use the internal next / prev fields. + */ + +struct test_list_node { + srtp_stream_t stream; + struct test_list_node *next; +}; +struct srtp_stream_list_ctx_t_ { + struct test_list_node *head; +}; + +srtp_err_status_t srtp_stream_list_alloc(srtp_stream_list_t *list_ptr) +{ + struct srtp_stream_list_ctx_t_ *l = + malloc(sizeof(struct srtp_stream_list_ctx_t_)); + l->head = NULL; + *list_ptr = l; + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_list_dealloc(srtp_stream_list_t list) +{ + struct test_list_node *node = list->head; + if (node) { + return srtp_err_status_fail; + } + free(list); + + return srtp_err_status_ok; +} + +srtp_err_status_t srtp_stream_list_insert(srtp_stream_list_t list, + srtp_stream_t stream) +{ + struct test_list_node *node = malloc(sizeof(struct test_list_node)); + node->stream = stream; + node->next = list->head; + list->head = node; + + return srtp_err_status_ok; +} + +srtp_stream_t srtp_stream_list_get(srtp_stream_list_t list, uint32_t ssrc) +{ + struct test_list_node *node = list->head; + while (node != NULL) { + if (node->stream->ssrc == ssrc) { + return node->stream; + } + node = node->next; + } + return NULL; +} + +void srtp_stream_list_remove(srtp_stream_list_t list, srtp_stream_t stream) +{ + struct test_list_node **node = &(list->head); + while ((*node) != NULL) { + if ((*node)->stream->ssrc == stream->ssrc) { + struct test_list_node *tmp = (*node); + (*node) = tmp->next; + free(tmp); + return; + } + node = &(*node)->next; + } +} + +void srtp_stream_list_for_each(srtp_stream_list_t list, + bool (*callback)(srtp_stream_t, void *), + void *data) +{ + struct test_list_node *node = list->head; + while (node != NULL) { + struct test_list_node *tmp = node; + node = node->next; + if (!callback(tmp->stream, data)) { + break; + } + } +} + +#endif diff --git a/src/libs/libsrtp/test/test_srtp.c b/src/libs/libsrtp/test/test_srtp.c new file mode 100644 index 00000000..e739239b --- /dev/null +++ b/src/libs/libsrtp/test/test_srtp.c @@ -0,0 +1,184 @@ +/* + * test_srtp.c + * + * Unit tests for internal srtp functions + * + * Cisco Systems, Inc. + * + */ + +/* + * + * Copyright (c) 2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* + * libSRTP specific. + */ +#include "../srtp/srtp.c" // Get access to static functions + +/* + * Test specific. + */ +#include "cutest.h" + +/* + * Standard library. + */ + +/* + * Forward declarations for all tests. + */ + +void srtp_calc_aead_iv_srtcp_all_zero_input_yield_zero_output(void); +void srtp_calc_aead_iv_srtcp_seq_num_over_0x7FFFFFFF_bad_param(void); +void srtp_calc_aead_iv_srtcp_distinct_iv_per_sequence_number(void); + +/* + * NULL terminated array of tests. + * The first item in the array is a char[] which give some information about + * what is being tested and is displayed to the user during runtime, the second + * item is the test function. + */ + +TEST_LIST = { { "srtp_calc_aead_iv_srtcp_all_zero_input_yield_zero_output()", + srtp_calc_aead_iv_srtcp_all_zero_input_yield_zero_output }, + { "srtp_calc_aead_iv_srtcp_seq_num_over_0x7FFFFFFF_bad_param()", + srtp_calc_aead_iv_srtcp_seq_num_over_0x7FFFFFFF_bad_param }, + { "srtp_calc_aead_iv_srtcp_distinct_iv_per_sequence_number()", + srtp_calc_aead_iv_srtcp_distinct_iv_per_sequence_number }, + { 0 } /* End of tests */ }; + +/* + * Implementation. + */ + +void srtp_calc_aead_iv_srtcp_all_zero_input_yield_zero_output(void) +{ + // Preconditions + srtp_session_keys_t session_keys; + v128_t init_vector; + srtcp_hdr_t header; + uint32_t sequence_num; + + // Postconditions + srtp_err_status_t status; + const v128_t zero_vector = { 0 }; + + // Given + memset(&session_keys, 0, sizeof(srtp_session_keys_t)); + memset(&init_vector, 0, sizeof(v128_t)); + memset(&header, 0, sizeof(srtcp_hdr_t)); + sequence_num = 0x0UL; + + // When + status = srtp_calc_aead_iv_srtcp(&session_keys, &init_vector, sequence_num, + &header); + + // Then + TEST_CHECK(status == srtp_err_status_ok); + TEST_CHECK(memcmp(&zero_vector, &init_vector, sizeof(v128_t)) == 0); +} + +void srtp_calc_aead_iv_srtcp_seq_num_over_0x7FFFFFFF_bad_param(void) +{ + // Preconditions + srtp_session_keys_t session_keys; + v128_t init_vector; + srtcp_hdr_t header; + uint32_t sequence_num; + + // Postconditions + srtp_err_status_t status; + + // Given + memset(&session_keys, 0, sizeof(srtp_session_keys_t)); + memset(&init_vector, 0, sizeof(v128_t)); + memset(&header, 0, sizeof(srtcp_hdr_t)); + sequence_num = 0x7FFFFFFFUL + 0x1UL; + + // When + status = srtp_calc_aead_iv_srtcp(&session_keys, &init_vector, sequence_num, + &header); + + // Then + TEST_CHECK(status == srtp_err_status_bad_param); +} + +/* + * Regression test for issue #256: + * Srtcp IV calculation incorrectly masks high bit of sequence number for + * little-endian platforms. + * Ensure that for each valid sequence number where the most significant bit is + * high that we get an expected and unique IV. + */ +void srtp_calc_aead_iv_srtcp_distinct_iv_per_sequence_number(void) +{ +#define SAMPLE_COUNT (3) + // Preconditions + // Test each significant bit high in each full byte. + srtp_session_keys_t session_keys; + srtcp_hdr_t header; + v128_t output_iv[SAMPLE_COUNT]; + uint32_t sequence_num[SAMPLE_COUNT]; + v128_t final_iv[SAMPLE_COUNT]; + size_t i = 0; + memset(&output_iv, 0, SAMPLE_COUNT * sizeof(v128_t)); + sequence_num[0] = 0xFF; + sequence_num[1] = 0xFF00; + sequence_num[2] = 0xFF0000; + + // Postconditions + memset(&final_iv, 0, SAMPLE_COUNT * sizeof(v128_t)); + final_iv[0].v8[11] = 0xFF; + final_iv[1].v8[10] = 0xFF; + final_iv[2].v8[9] = 0xFF; + + // Given + memset(&session_keys, 0, sizeof(srtp_session_keys_t)); + memset(&header, 0, sizeof(srtcp_hdr_t)); + + // When + for (i = 0; i < SAMPLE_COUNT; i++) { + TEST_CHECK(srtp_calc_aead_iv_srtcp(&session_keys, &output_iv[i], + sequence_num[i], + &header) == srtp_err_status_ok); + } + + // Then all IVs are as expected + for (i = 0; i < SAMPLE_COUNT; i++) { + TEST_CHECK(memcmp(&final_iv[i], &output_iv[i], sizeof(v128_t)) == 0); + } +#undef SAMPLE_COUNT +} diff --git a/src/libs/libsrtp/test/ut_sim.c b/src/libs/libsrtp/test/ut_sim.c new file mode 100644 index 00000000..02099cf7 --- /dev/null +++ b/src/libs/libsrtp/test/ut_sim.c @@ -0,0 +1,112 @@ +/* + * ut_sim.c + * + * an unreliable transport simulator + * (for testing replay databases and suchlike) + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "ut_sim.h" +#include "cipher_priv.h" + +#include <stdlib.h> + +int ut_compar(const void *a, const void *b) +{ + uint8_t r; + (void)a; + (void)b; + srtp_cipher_rand_for_tests(&r, sizeof(r)); + return r > (UINT8_MAX / 2) ? -1 : 1; +} + +void ut_init(ut_connection *utc) +{ + int i; + utc->index = 0; + + for (i = 0; i < UT_BUF; i++) { + utc->buffer[i] = i; + } + + qsort(utc->buffer, UT_BUF, sizeof(uint32_t), ut_compar); + + utc->index = UT_BUF - 1; +} + +uint32_t ut_next_index(ut_connection *utc) +{ + uint32_t tmp; + + tmp = utc->buffer[0]; + utc->index++; + utc->buffer[0] = utc->index; + + qsort(utc->buffer, UT_BUF, sizeof(uint32_t), ut_compar); + + return tmp; +} + +#ifdef UT_TEST + +#include <stdio.h> + +int main() +{ + uint32_t i, irecvd, idiff; + ut_connection utc; + + ut_init(&utc); + + for (i = 0; i < 1000; i++) { + irecvd = ut_next_index(&utc); + idiff = i - irecvd; + printf("%lu\t%lu\t%d\n", i, irecvd, idiff); + } + + return 0; +} + +#endif diff --git a/src/libs/libsrtp/test/ut_sim.h b/src/libs/libsrtp/test/ut_sim.h new file mode 100644 index 00000000..5462ccee --- /dev/null +++ b/src/libs/libsrtp/test/ut_sim.h @@ -0,0 +1,83 @@ +/* + * ut-sim.h + * + * an unreliable transport simulator + * (for testing replay databases and suchlike) + * + * David A. McGrew + * Cisco Systems, Inc. + */ + +/* + * + * Copyright (c) 2001-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef UT_SIM_H +#define UT_SIM_H + +#include "datatypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define UT_BUF 160 /* maximum amount of packet reorder */ + +typedef struct { + uint32_t index; + uint32_t buffer[UT_BUF]; +} ut_connection; + +/* + * ut_init(&u) initializes the ut_connection + * + * this function should always be the first one called on a new + * ut_connection + */ + +void ut_init(ut_connection *utc); + +/* + * ut_next_index(&u) returns the next index from the simulated + * unreliable connection + */ + +uint32_t ut_next_index(ut_connection *utc); + +#ifdef __cplusplus +} +#endif + +#endif /* UT_SIM_H */ diff --git a/src/libs/libsrtp/test/util.c b/src/libs/libsrtp/test/util.c new file mode 100644 index 00000000..2500fa06 --- /dev/null +++ b/src/libs/libsrtp/test/util.c @@ -0,0 +1,344 @@ +/* + * util.c + * + * Utilities used by the test apps + * + * John A. Foley + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2014-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "config.h" +#include "util.h" + +#include <string.h> +#include <stdlib.h> +#include <stdio.h> + +/* include space for null terminator */ +static char bit_string[MAX_PRINT_STRING_LEN + 1]; + +#define ERR_STATUS_STRING(STATUS) \ + case srtp_err_status_##STATUS: \ + return #STATUS + +const char *err_status_string(srtp_err_status_t status) +{ + switch (status) { + ERR_STATUS_STRING(ok); + ERR_STATUS_STRING(fail); + ERR_STATUS_STRING(bad_param); + ERR_STATUS_STRING(alloc_fail); + ERR_STATUS_STRING(dealloc_fail); + ERR_STATUS_STRING(init_fail); + ERR_STATUS_STRING(terminus); + ERR_STATUS_STRING(auth_fail); + ERR_STATUS_STRING(cipher_fail); + ERR_STATUS_STRING(replay_fail); + ERR_STATUS_STRING(replay_old); + ERR_STATUS_STRING(algo_fail); + ERR_STATUS_STRING(no_such_op); + ERR_STATUS_STRING(no_ctx); + ERR_STATUS_STRING(cant_check); + ERR_STATUS_STRING(key_expired); + ERR_STATUS_STRING(socket_err); + ERR_STATUS_STRING(signal_err); + ERR_STATUS_STRING(nonce_bad); + ERR_STATUS_STRING(read_fail); + ERR_STATUS_STRING(write_fail); + ERR_STATUS_STRING(parse_err); + ERR_STATUS_STRING(encode_err); + ERR_STATUS_STRING(semaphore_err); + ERR_STATUS_STRING(pfkey_err); + ERR_STATUS_STRING(bad_mki); + ERR_STATUS_STRING(pkt_idx_old); + ERR_STATUS_STRING(pkt_idx_adv); + ERR_STATUS_STRING(buffer_small); + ERR_STATUS_STRING(cryptex_err); + } + return "unkown srtp_err_status"; +} + +void check_ok_impl(srtp_err_status_t status, const char *file, int line) +{ + if (status != srtp_err_status_ok) { + fflush(stdout); + fprintf(stderr, + "\nerror at %s:%d, unexpected srtp failure: %d (\"%s\")\n", + file, line, status, err_status_string(status)); + fflush(stderr); + exit(1); + } +} + +void check_return_impl(srtp_err_status_t status, + srtp_err_status_t expected, + const char *file, + int line) +{ + if (status != expected) { + fflush(stdout); + fprintf(stderr, + "\nerror at %s:%d, unexpected srtp status: %d != %d (\"%s\" != " + "\"%s\")\n", + file, line, status, expected, err_status_string(status), + err_status_string(expected)); + fflush(stderr); + exit(1); + } +} + +void check_impl(bool condition, + const char *file, + int line, + const char *condition_str) +{ + if (!condition) { + fflush(stdout); + fprintf(stderr, "\nerror at %s:%d, %s)\n", file, line, condition_str); + fflush(stderr); + exit(1); + } +} + +#define OVERRUN_CHECK_BYTE 0xf1 + +void overrun_check_prepare(uint8_t *buffer, size_t offset, size_t buffer_len) +{ + memset(buffer + offset, OVERRUN_CHECK_BYTE, buffer_len - offset); +} + +void check_buffer_equal_impl(const uint8_t *buffer1, + const uint8_t *buffer2, + size_t buffer_length, + const char *file, + int line) +{ + for (size_t i = 0; i < buffer_length; i++) { + if (buffer1[i] != buffer2[i]) { + fflush(stdout); + fprintf(stderr, + "\nerror at %s:%d, buffer1 != buffer2 at index: %zu (%x != " + "%x)\n", + file, line, i, buffer1[i], buffer2[i]); + fprintf(stderr, "buffer1 = %s\n", + octet_string_hex_string(buffer1, buffer_length)); + fprintf(stderr, "buffer2 = %s\n", + octet_string_hex_string(buffer2, buffer_length)); + fflush(stderr); + exit(1); + } + } +} + +void check_overrun_impl(const uint8_t *buffer, + size_t offset, + size_t buffer_length, + const char *file, + int line) +{ + for (size_t i = offset; i < buffer_length; i++) { + if (buffer[i] != OVERRUN_CHECK_BYTE) { + fflush(stdout); + printf("\nerror at %s:%d, overrun detected in buffer at index %zu " + "(expected %x, found %x)\n", + file, line, i, OVERRUN_CHECK_BYTE, buffer[i]); + fflush(stderr); + exit(1); + } + } +} + +static inline int hex_char_to_nibble(char c) +{ + switch (c) { + case ('0'): + return 0x0; + case ('1'): + return 0x1; + case ('2'): + return 0x2; + case ('3'): + return 0x3; + case ('4'): + return 0x4; + case ('5'): + return 0x5; + case ('6'): + return 0x6; + case ('7'): + return 0x7; + case ('8'): + return 0x8; + case ('9'): + return 0x9; + case ('a'): + return 0xa; + case ('A'): + return 0xa; + case ('b'): + return 0xb; + case ('B'): + return 0xb; + case ('c'): + return 0xc; + case ('C'): + return 0xc; + case ('d'): + return 0xd; + case ('D'): + return 0xd; + case ('e'): + return 0xe; + case ('E'): + return 0xe; + case ('f'): + return 0xf; + case ('F'): + return 0xf; + default: + return -1; /* this flags an error */ + } +} + +char nibble_to_hex_char(uint8_t nibble) +{ + char buf[16] = { '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + + return buf[nibble & 0xF]; +} + +/* + * hex_string_to_octet_string converts a hexadecimal string + * of length 2 * len to a raw octet string of length len + */ +size_t hex_string_to_octet_string(uint8_t *raw, const char *hex, size_t len) +{ + uint8_t x; + int tmp; + size_t hex_len; + + hex_len = 0; + while (hex_len < len) { + tmp = hex_char_to_nibble(hex[0]); + if (tmp == -1) { + return hex_len; + } + x = (uint8_t)(tmp << 4); + hex_len++; + tmp = hex_char_to_nibble(hex[1]); + if (tmp == -1) { + return hex_len; + } + x |= (tmp & 0xff); + hex_len++; + *raw++ = x; + hex += 2; + } + return hex_len; +} + +const char *octet_string_hex_string(const uint8_t *str, size_t length) +{ + size_t i; + + /* double length, since one octet takes two hex characters */ + length *= 2; + + /* truncate string if it would be too long */ + if (length > MAX_PRINT_STRING_LEN) { + length = MAX_PRINT_STRING_LEN; + } + + for (i = 0; i < length; i += 2) { + bit_string[i] = nibble_to_hex_char(*str >> 4); + bit_string[i + 1] = nibble_to_hex_char(*str++ & 0xF); + } + bit_string[i] = 0; /* null terminate string */ + return bit_string; +} + +static const char b64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz0123456789+/"; + +static size_t base64_block_to_octet_triple(uint8_t *out, const char *in) +{ + uint8_t sextets[4] = { 0 }; + size_t j = 0; + size_t i; + + for (i = 0; i < 4; i++) { + char *p = strchr(b64chars, in[i]); + if (p != NULL) { + sextets[i] = (uint8_t)(p - b64chars); + } else { + j++; + } + } + + out[0] = (sextets[0] << 2) | (sextets[1] >> 4); + if (j < 2) { + out[1] = (sextets[1] << 4) | (sextets[2] >> 2); + } + if (j < 1) { + out[2] = (sextets[2] << 6) | sextets[3]; + } + return j; +} + +size_t base64_string_to_octet_string(uint8_t *out, + int *pad, + const char *in, + size_t len) +{ + size_t k = 0; + size_t i = 0; + size_t j = 0; + + if (len % 4 != 0) { + return 0; + } + + while (i < len && j == 0) { + j = base64_block_to_octet_triple(out + k, in + i); + k += 3; + i += 4; + } + *pad = (int)j; + return i; +} diff --git a/src/libs/libsrtp/test/util.h b/src/libs/libsrtp/test/util.h new file mode 100644 index 00000000..4f86552b --- /dev/null +++ b/src/libs/libsrtp/test/util.h @@ -0,0 +1,89 @@ +/* + * util.h + * + * Utilities used by the test apps + * + * John A. Foley + * Cisco Systems, Inc. + */ +/* + * + * Copyright (c) 2014-2017, Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +#ifndef SRTP_TEST_UTIL_H +#define SRTP_TEST_UTIL_H + +#include "srtp.h" + +// test check macros and functions +void check_ok_impl(srtp_err_status_t status, const char *file, int line); +void check_return_impl(srtp_err_status_t status, + srtp_err_status_t expected, + const char *file, + int line); +void check_impl(bool condition, + const char *file, + int line, + const char *condition_str); +void check_buffer_equal_impl(const uint8_t *buffer1, + const uint8_t *buffer2, + size_t buffer_length, + const char *file, + int line); +void check_overrun_impl(const uint8_t *buffer, + size_t offset, + size_t buffer_length, + const char *file, + int line); +void overrun_check_prepare(uint8_t *buffer, size_t offset, size_t buffer_len); + +#define CHECK_OK(status) check_ok_impl((status), __FILE__, __LINE__) +#define CHECK_RETURN(status, expected) \ + check_return_impl((status), (expected), __FILE__, __LINE__) +#define CHECK(condition) check_impl((condition), __FILE__, __LINE__, #condition) +#define CHECK_BUFFER_EQUAL(buffer1, buffer2, length) \ + check_buffer_equal_impl((buffer1), (buffer2), (length), __FILE__, __LINE__) +#define CHECK_OVERRUN(buffer, offset, length) \ + check_overrun_impl((buffer), (offset), (length), __FILE__, __LINE__) + +#define MAX_PRINT_STRING_LEN 1024 + +size_t hex_string_to_octet_string(uint8_t *raw, const char *hex, size_t len); +const char *octet_string_hex_string(const uint8_t *str, size_t length); +size_t base64_string_to_octet_string(uint8_t *raw, + int *pad, + const char *base64, + size_t len); + +#endif diff --git a/src/libs/libsrtp/test/words.txt b/src/libs/libsrtp/test/words.txt new file mode 100644 index 00000000..fe99c2d4 --- /dev/null +++ b/src/libs/libsrtp/test/words.txt @@ -0,0 +1,250 @@ +abducing +acidheads +acidness +actons +admixtures +affidavit +agelastic +alated +alimentary +alleviated +allseed +annexure +arragonite +atonements +autacoid +axe +axon +ayres +beathing +blazonry +bottom +braising +brehon +brindisi +broadcasts +buds +bulnbulns +bushcraft +calamander +calipee +casing +caveat +chaffings +citifies +clappers +claques +clavate +colonial +colonials +commonalty +compares +consequent +consumed +contango +courtierly +creamery +cruddiest +cue +cultish +cumin +cyclus +dahlias +dentitions +derailers +devitrify +dibs +diphysite +disjunes +drolleries +dubitated +dupion +earliness +eductor +elenctic +empresses +entames +epaulettes +epicanthic +epochal +estated +eurhythmic +exfoliated +extremity +fayence +figgery +flaming +foes +forelays +forewings +forfeits +fratches +gardened +gentile +glumpish +glyph +goatherd +grow +gulden +gumming +hackling +hanapers +hared +hatters +hectare +hedger +heel +heterodox +hidden +histologic +howe +inglobe +inliers +inuredness +iotacism +japed +jelled +jiffy +jollies +judgeship +karite +kart +kenophobia +kittens +lactarian +lancets +leasable +leep +leming +licorice +listing +lividly +lobectomy +lysosome +madders +maderizing +manacle +mangels +marshiest +maulstick +meliorates +mercy +mikados +monarchise +moultings +mucro +munnions +mystic +myxoedemic +nointing +nong +nonsense +ochidore +octuor +officering +opaqued +oragious +outtell +oxeye +pads +palamae +pansophy +parazoa +pepsines +perimetric +pheasant +phonotypy +pitarah +plaintful +poinders +poke +politer +poonces +populism +pouty +praedial +presence +prompter +pummelled +punishing +quippish +radicality +radiuses +rebuffing +recorded +redips +regulators +replay +retrocedes +rigors +risen +rootstocks +rotenone +rudenesses +ruggedest +runabout +ruthfully +sagacious +scapes +sclera +sclerotium +scumbering +secondi +serial +shampoo +showed +sights +sirenised +sized +slave +socle +solidness +some +spetches +spiels +squiring +staminode +stay +stewpot +stunsails +subhumid +subprogram +supawn +surplusage +swimming +swineherd +tabun +talliths +taroks +tensed +thinnings +three +tipper +toko +tomahawks +tombolos +torpefy +torulae +touns +travails +tsarist +unbeseems +unblamably +unbooked +unnailed +updates +valorise +viability +virtue +vulturns +vulvate +warran +weakness +westernise +whingeings +wrenching +written +yak +yate +yaupon +zendiks diff --git a/src/libs/libsrtp/timing b/src/libs/libsrtp/timing new file mode 100644 index 00000000..66b00c45 --- /dev/null +++ b/src/libs/libsrtp/timing @@ -0,0 +1 @@ +# timing.plt # # gnuplot script file for plotting the output generated by srtp_driver -t # # David A. McGrew # Cisco Systems, Inc. # set xrange [0:2500] set term pict "Times-Roman" 9 # # plot authentication-only data # set title "Authentication Only" set ylabel "Megabits per second" set xlabel "Octets in packet" set yrange [0:2000] set output "plot-auth.pict" plot "timing.dat" index 0 title "HMAC SHA1" with lines, "timing.dat" index 1 title "TMMH/AES" with lines, "timing.dat" index 2 title "TMMH/SEAL" with lines # # plot encryption-only data # set title "Encryption Only" set ylabel "Megabits per second" set xlabel "Octets in packet" set output "plot-enc.pict" set yrange [0:1200] plot "timing.dat" index 3 title "SEAL" with lines, "timing.dat" index 4 title "AES ICM" with lines # # plot encryption and authentication data # set title "Encryption and Authentication" set ylabel "Megabits per second" set xlabel "Octets in packet" set yrange [0:1000] set output "plot-enc-auth.pict" plot "timing.dat" index 5 title "TMMH/SEAL" with lines, "timing.dat" index 6 title "TMMH/AES" with lines, "timing.dat" index 7 title "HMAC/AES" with lines \ No newline at end of file diff --git a/src/libs/libsrtp/update.sh b/src/libs/libsrtp/update.sh new file mode 100755 index 00000000..595b647f --- /dev/null +++ b/src/libs/libsrtp/update.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# +# update.sh +# +# update copyright dates in files + +a=`find . -name "*.[ch]"` +for x in $a; do + sed 's/(c) 2001-2005/(c) 2001-2006/' $x > $x.tmp; + mv $x.tmp $x; +done + + + + diff --git a/src/libs/libsrtp/valgrind.supp b/src/libs/libsrtp/valgrind.supp new file mode 100644 index 00000000..72e3d7d7 --- /dev/null +++ b/src/libs/libsrtp/valgrind.supp @@ -0,0 +1,9 @@ +{ + https://github.com/openssl/openssl/issues/19719 + Memcheck:Cond + obj:*libcrypto.so.3 + obj:*libcrypto.so.3 + fun:EVP_DecryptFinal_ex + fun:srtp_aes_gcm_openssl_decrypt + ... +} \ No newline at end of file