You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
srs/trunk/src/utest/srs_utest_protocol.cpp

418 lines
180 KiB
C++

/*
The MIT License (MIT)
Copyright (c) 2013-2014 winlin
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.
*/
#include <srs_utest_protocol.hpp>
using namespace std;
#include <srs_kernel_error.hpp>
#include <srs_core_autofree.hpp>
#include <srs_protocol_utility.hpp>
#include <srs_protocol_msg_array.hpp>
#include <srs_protocol_rtmp_stack.hpp>
MockEmptyIO::MockEmptyIO()
{
}
MockEmptyIO::~MockEmptyIO()
{
}
bool MockEmptyIO::is_never_timeout(int64_t /*timeout_us*/)
{
return true;
}
int MockEmptyIO::read_fully(void* /*buf*/, size_t /*size*/, ssize_t* /*nread*/)
{
return ERROR_SUCCESS;
}
int MockEmptyIO::write(void* /*buf*/, size_t /*size*/, ssize_t* /*nwrite*/)
{
return ERROR_SUCCESS;
}
void MockEmptyIO::set_recv_timeout(int64_t /*timeout_us*/)
{
}
int64_t MockEmptyIO::get_recv_timeout()
{
return -1;
}
int64_t MockEmptyIO::get_recv_bytes()
{
return -1;
}
void MockEmptyIO::set_send_timeout(int64_t /*timeout_us*/)
{
}
int64_t MockEmptyIO::get_send_timeout()
{
return 0;
}
int64_t MockEmptyIO::get_send_bytes()
{
return 0;
}
int MockEmptyIO::writev(const iovec */*iov*/, int /*iov_size*/, ssize_t* /*nwrite*/)
{
return ERROR_SUCCESS;
}
int MockEmptyIO::read(void* /*buf*/, size_t /*size*/, ssize_t* /*nread*/)
{
return ERROR_SUCCESS;
}
#ifdef SRS_AUTO_SSL
// verify the sha256
VOID TEST(ProtocolHandshakeTest, OpensslSha256)
{
// randome bytes to ensure the openssl sha256 is ok.
char random_bytes[] = {
(char)0x8b, (char)0x1c, (char)0x5c, (char)0x5c, (char)0x3b, (char)0x98, (char)0x60, (char)0x80, (char)0x3c, (char)0x97, (char)0x43, (char)0x79, (char)0x9c, (char)0x94, (char)0xec, (char)0x63, (char)0xaa, (char)0xd9, (char)0x10, (char)0xd7, (char)0x0d, (char)0x91, (char)0xfb, (char)0x1f, (char)0xbf, (char)0xe0, (char)0x29, (char)0xde, (char)0x77, (char)0x09, (char)0x21, (char)0x34, (char)0xa5, (char)0x7d, (char)0xdf, (char)0xe3, (char)0xdf, (char)0x11, (char)0xdf, (char)0xd4, (char)0x00, (char)0x57, (char)0x38, (char)0x5b, (char)0xae, (char)0x9e, (char)0x89, (char)0x35, (char)0xcf, (char)0x07, (char)0x48, (char)0xca, (char)0xc8, (char)0x25, (char)0x46, (char)0x3c,
(char)0xb6, (char)0xdb, (char)0x9b, (char)0x39, (char)0xa6, (char)0x07, (char)0x3d, (char)0xaf, (char)0x8b, (char)0x85, (char)0xa2, (char)0x2f, (char)0x03, (char)0x64, (char)0x5e, (char)0xbd, (char)0xb4, (char)0x20, (char)0x01, (char)0x48, (char)0x2e, (char)0xc2, (char)0xe6, (char)0xcc, (char)0xce, (char)0x61, (char)0x59, (char)0x47, (char)0xf9, (char)0xdd, (char)0xc2, (char)0xa2, (char)0xfe, (char)0x64, (char)0xe6, (char)0x0b, (char)0x41, (char)0x4f, (char)0xe4, (char)0x8a, (char)0xca, (char)0xbe, (char)0x4d, (char)0x0e, (char)0x73, (char)0xba, (char)0x82, (char)0x30, (char)0x3c, (char)0x53, (char)0x36, (char)0x2e, (char)0xd3, (char)0x04, (char)0xae, (char)0x49,
(char)0x44, (char)0x71, (char)0x6d, (char)0x4d, (char)0x5a, (char)0x14, (char)0x94, (char)0x94, (char)0x57, (char)0x78, (char)0xb9, (char)0x2a, (char)0x34, (char)0x49, (char)0xf8, (char)0xc2, (char)0xec, (char)0x4e, (char)0x29, (char)0xb6, (char)0x28, (char)0x54, (char)0x4a, (char)0x5e, (char)0x68, (char)0x06, (char)0xfe, (char)0xfc, (char)0xd5, (char)0x01, (char)0x35, (char)0x0c, (char)0x95, (char)0x6f, (char)0xe9, (char)0x77, (char)0x8a, (char)0xfc, (char)0x11, (char)0x15, (char)0x1a, (char)0xda, (char)0x6c, (char)0xf5, (char)0xba, (char)0x9e, (char)0x41, (char)0xd9, (char)0x7e, (char)0x0f, (char)0xdb, (char)0x33, (char)0xda, (char)0x35, (char)0x9d, (char)0x34,
(char)0x67, (char)0x8f, (char)0xdf, (char)0x71, (char)0x63, (char)0x04, (char)0x9c, (char)0x54, (char)0xb6, (char)0x18, (char)0x10, (char)0x2d, (char)0x42, (char)0xd2, (char)0xf3, (char)0x14, (char)0x34, (char)0xa1, (char)0x31, (char)0x90, (char)0x48, (char)0xc9, (char)0x4b, (char)0x87, (char)0xb5, (char)0xcd, (char)0x62, (char)0x6b, (char)0x77, (char)0x18, (char)0x36, (char)0xd9, (char)0xc9, (char)0xc9, (char)0xae, (char)0x89, (char)0xfb, (char)0xed, (char)0xcd, (char)0xcb, (char)0xdb, (char)0x6e, (char)0xe3, (char)0x22, (char)0xbf, (char)0x7b, (char)0x72, (char)0x8a, (char)0xc3, (char)0x79, (char)0xd6, (char)0x1b, (char)0x6c, (char)0xe7, (char)0x9c, (char)0xc9,
(char)0xfd, (char)0x48, (char)0xaa, (char)0xc1, (char)0xfa, (char)0xbf, (char)0x33, (char)0x87, (char)0x5c, (char)0x0d, (char)0xe5, (char)0x34, (char)0x24, (char)0x70, (char)0x14, (char)0x1e, (char)0x4a, (char)0x48, (char)0x07, (char)0x6e, (char)0xaf, (char)0xbf, (char)0xfe, (char)0x34, (char)0x1e, (char)0x1e, (char)0x19, (char)0xfc, (char)0xb5, (char)0x8a, (char)0x4f, (char)0x3c, (char)0xb4, (char)0xcf, (char)0xde, (char)0x24, (char)0x79, (char)0x65, (char)0x17, (char)0x22, (char)0x3f, (char)0xc0, (char)0x06, (char)0x76, (char)0x4e, (char)0x3c, (char)0xfb, (char)0xc3, (char)0xd0, (char)0x7f, (char)0x7b, (char)0x87, (char)0x5c, (char)0xeb, (char)0x97, (char)0x87,
};
char digest[OpensslHashSize];
ASSERT_EQ(ERROR_SUCCESS,
openssl_HMACsha256(
random_bytes, sizeof(random_bytes),
SrsGenuineFPKey, 30,
digest
)
);
char expect_digest[] = {
(char)0x1b, (char)0xc7, (char)0xe6, (char)0x14, (char)0xd5, (char)0x19, (char)0x8d, (char)0x99, (char)0x42, (char)0x0a, (char)0x21, (char)0x95, (char)0x26, (char)0x9a, (char)0x8a, (char)0x56,
(char)0xb4, (char)0x82, (char)0x2a, (char)0x7f, (char)0xd3, (char)0x1d, (char)0xc3, (char)0xd8, (char)0x92, (char)0x97, (char)0xc4, (char)0x61, (char)0xb7, (char)0x4d, (char)0x5d, (char)0xd2
};
EXPECT_TRUE(srs_bytes_equals(digest, expect_digest, 32));
}
// verify the dh key
VOID TEST(ProtocolHandshakeTest, DHKey)
{
char pri_key[] = {
(char)0x6e, (char)0x65, (char)0x69, (char)0x2d, (char)0x69, (char)0x2d, (char)0x69, (char)0x73,
(char)0x6e, (char)0x69, (char)0x73, (char)0x6c, (char)0x65, (char)0x72, (char)0x69, (char)0x72,
(char)0x76, (char)0x65, (char)0x72, (char)0x69, (char)0x77, (char)0x74, (char)0x2e, (char)0x6e,
(char)0x72, (char)0x76, (char)0x72, (char)0x65, (char)0x72, (char)0x70, (char)0x72, (char)0x69,
(char)0x69, (char)0x70, (char)0x72, (char)0x73, (char)0x6e, (char)0x65, (char)0x72, (char)0x72,
(char)0x6e, (char)0x2d, (char)0x65, (char)0x74, (char)0x72, (char)0x6c, (char)0x69, (char)0x74,
(char)0x69, (char)0x65, (char)0x40, (char)0x69, (char)0x69, (char)0x76, (char)0x77, (char)0x2d,
(char)0x73, (char)0x65, (char)0x72, (char)0x72, (char)0x76, (char)0x73, (char)0x72, (char)0x2e,
(char)0x2d, (char)0x76, (char)0x65, (char)0x31, (char)0x65, (char)0x6d, (char)0x6d, (char)0x73,
(char)0x69, (char)0x73, (char)0x74, (char)0x2e, (char)0x74, (char)0x72, (char)0x65, (char)0x65,
(char)0x72, (char)0x65, (char)0x2d, (char)0x74, (char)0x69, (char)0x31, (char)0x65, (char)0x2d,
(char)0x6f, (char)0x77, (char)0x2e, (char)0x76, (char)0x77, (char)0x2d, (char)0x77, (char)0x72,
(char)0x65, (char)0x65, (char)0x31, (char)0x74, (char)0x73, (char)0x70, (char)0x74, (char)0x6e,
(char)0x72, (char)0x6e, (char)0x73, (char)0x6d, (char)0x2e, (char)0x69, (char)0x72, (char)0x2d,
(char)0x65, (char)0x69, (char)0x77, (char)0x69, (char)0x76, (char)0x72, (char)0x77, (char)0x72,
(char)0x32, (char)0x6e, (char)0x65, (char)0x6c, (char)0x2e, (char)0x2d, (char)0x6e, (char)0x69
};
char pub_key1[128];
openssl_generate_key(pri_key, pub_key1, 128);
char pub_key2[128];
openssl_generate_key(pri_key, pub_key2, 128);
EXPECT_FALSE(srs_bytes_equals(pub_key1, pub_key2, 128));
}
// flash will sendout a c0c1 encrypt by ssl.
VOID TEST(ProtocolHandshakeTest, VerifyFPC0C1)
{
char c0c1[] = {
(char)0x03, (char)0x00, (char)0x0f, (char)0x64, (char)0xd0, (char)0x80, (char)0x00, (char)0x07, (char)0x02, (char)0xe6, (char)0x42, (char)0xe5, (char)0x2b, (char)0xf1, (char)0x1d, (char)0x0f, (char)0x6c, (char)0xc8, (char)0x50, (char)0xf2, (char)0x06, (char)0xae, (char)0xd5, (char)0x4f, (char)0xdb, (char)0xfe, (char)0x79, (char)0xc2, (char)0xef, (char)0xf5, (char)0x01, (char)0x74, (char)0x4b, (char)0x5b, (char)0xe7, (char)0x37, (char)0xa3, (char)0xe0, (char)0xca, (char)0xe1, (char)0x97, (char)0x07, (char)0xdb, (char)0x54, (char)0x1d, (char)0x4c, (char)0x4b, (char)0xa3, (char)0xc3, (char)0x3e, (char)0xa9, (char)0xeb, (char)0xa9, (char)0x5b, (char)0x2f, (char)0x38, (char)0xa0, (char)0xa9, (char)0x98, (char)0x38, (char)0x80, (char)0x1b, (char)0xfb, (char)0xa7, (char)0x04, (char)0xff, (char)0xfd, (char)0x45, (char)0xfe, (char)0xfa, (char)0xc1, (char)0xe4, (char)0x1c, (char)0x77, (char)0x9a, (char)0x19, (char)0x39, (char)0x34, (char)0x10, (char)0x79, (char)0x12, (char)0xcf, (char)0x4e, (char)0xea, (char)0x34, (char)0x7d, (char)0x88, (char)0x47, (char)0xca, (char)0xf2, (char)0xb3, (char)0x09, (char)0x50, (char)0xbb, (char)0xe1, (char)0x20, (char)0x9b, (char)0x25, (char)0xb0, (char)0x3c, (char)0xbc, (char)0x46, (char)0x7a, (char)0x36, (char)0xb8, (char)0xc2, (char)0x4d, (char)0xd0, (char)0xf1, (char)0x20, (char)0x2a, (char)0xcc, (char)0x7a, (char)0x91, (char)0xab, (char)0x0b, (char)0xb6, (char)0xc7, (char)0x09, (char)0x0d, (char)0xf1, (char)0x34, (char)0x0c, (char)0x37, (char)0xbe, (char)0xad, (char)0x0e, (char)0xe3, (char)0x6b, (char)0x68, (char)0x0a, (char)0x7e, (char)0xd2, (char)0xd4, (char)0xc5, (char)0x3d, (char)0xdc, (char)0xac, (char)0x28, (char)0x8b, (char)0x88, (char)0xb5, (char)0x1e, (char)0xd8, (char)0x2b, (char)0x68, (char)0x72, (char)0x55, (char)0x64, (char)0xa2, (char)0xa5, (char)0x69, (char)0x0a, (char)0xdb, (char)0x26, (char)0xff, (char)0x63, (char)0x2d, (char)0xb8, (char)0xff, (char)0xb6, (char)0x33, (char)0xd3, (char)0x9d, (char)0x5c, (char)0x46, (char)0xd6, (char)0xbf, (char)0x8b, (char)0x1c, (char)0x5c, (char)0x5c, (char)0x3b, (char)0x98, (char)0x60, (char)0x80, (char)0x3c, (char)0x97, (char)0x43, (char)0x79, (char)0x9c, (char)0x94, (char)0xec, (char)0x63, (char)0xaa, (char)0xd9, (char)0x10, (char)0xd7, (char)0x0d, (char)0x91, (char)0xfb, (char)0x1f, (char)0xbf, (char)0xe0, (char)0x29, (char)0xde, (char)0x77, (char)0x09, (char)0x21, (char)0x34, (char)0xa5, (char)0x7d, (char)0xdf, (char)0xe3, (char)0xdf, (char)0x11, (char)0xdf, (char)0xd4, (char)0x00, (char)0x57, (char)0x38, (char)0x5b, (char)0xae, (char)0x9e, (char)0x89, (char)0x35, (char)0xcf, (char)0x07, (char)0x48, (char)0xca, (char)0xc8, (char)0x25, (char)0x46, (char)0x3c,
(char)0xb6, (char)0xdb, (char)0x9b, (char)0x39, (char)0xa6, (char)0x07, (char)0x3d, (char)0xaf, (char)0x8b, (char)0x85, (char)0xa2, (char)0x2f, (char)0x03, (char)0x64, (char)0x5e, (char)0xbd, (char)0xb4, (char)0x20, (char)0x01, (char)0x48, (char)0x2e, (char)0xc2, (char)0xe6, (char)0xcc, (char)0xce, (char)0x61, (char)0x59, (char)0x47, (char)0xf9, (char)0xdd, (char)0xc2, (char)0xa2, (char)0xfe, (char)0x64, (char)0xe6, (char)0x0b, (char)0x41, (char)0x4f, (char)0xe4, (char)0x8a, (char)0xca, (char)0xbe, (char)0x4d, (char)0x0e, (char)0x73, (char)0xba, (char)0x82, (char)0x30, (char)0x3c, (char)0x53, (char)0x36, (char)0x2e, (char)0xd3, (char)0x04, (char)0xae, (char)0x49, (char)0x44, (char)0x71, (char)0x6d, (char)0x4d, (char)0x5a, (char)0x14, (char)0x94, (char)0x94, (char)0x57, (char)0x78, (char)0xb9, (char)0x2a, (char)0x34, (char)0x49, (char)0xf8, (char)0xc2, (char)0xec, (char)0x4e, (char)0x29, (char)0xb6, (char)0x28, (char)0x54, (char)0x4a, (char)0x5e, (char)0x68, (char)0x06, (char)0xfe, (char)0xfc, (char)0xd5, (char)0x01, (char)0x35, (char)0x0c, (char)0x95, (char)0x6f, (char)0xe9, (char)0x77, (char)0x8a, (char)0xfc, (char)0x11, (char)0x15, (char)0x1a, (char)0xda, (char)0x6c, (char)0xf5, (char)0xba, (char)0x9e, (char)0x41, (char)0xd9, (char)0x7e, (char)0x0f, (char)0xdb, (char)0x33, (char)0xda, (char)0x35, (char)0x9d, (char)0x34, (char)0x67, (char)0x8f, (char)0xdf, (char)0x71, (char)0x63, (char)0x04, (char)0x9c, (char)0x54, (char)0xb6, (char)0x18, (char)0x10, (char)0x2d, (char)0x42, (char)0xd2, (char)0xf3, (char)0x14, (char)0x34, (char)0xa1, (char)0x31, (char)0x90, (char)0x48, (char)0xc9, (char)0x4b, (char)0x87, (char)0xb5, (char)0xcd, (char)0x62, (char)0x6b, (char)0x77, (char)0x18, (char)0x36, (char)0xd9, (char)0xc9, (char)0xc9, (char)0xae, (char)0x89, (char)0xfb, (char)0xed, (char)0xcd, (char)0xcb, (char)0xdb, (char)0x6e, (char)0xe3, (char)0x22, (char)0xbf, (char)0x7b, (char)0x72, (char)0x8a, (char)0xc3, (char)0x79, (char)0xd6, (char)0x1b, (char)0x6c, (char)0xe7, (char)0x9c, (char)0xc9, (char)0xfd, (char)0x48, (char)0xaa, (char)0xc1, (char)0xfa, (char)0xbf, (char)0x33, (char)0x87, (char)0x5c, (char)0x0d, (char)0xe5, (char)0x34, (char)0x24, (char)0x70, (char)0x14, (char)0x1e, (char)0x4a, (char)0x48, (char)0x07, (char)0x6e, (char)0xaf, (char)0xbf, (char)0xfe, (char)0x34, (char)0x1e, (char)0x1e, (char)0x19, (char)0xfc, (char)0xb5, (char)0x8a, (char)0x4f, (char)0x3c, (char)0xb4, (char)0xcf, (char)0xde, (char)0x24, (char)0x79, (char)0x65, (char)0x17, (char)0x22, (char)0x3f, (char)0xc0, (char)0x06, (char)0x76, (char)0x4e, (char)0x3c, (char)0xfb, (char)0xc3, (char)0xd0, (char)0x7f, (char)0x7b, (char)0x87, (char)0x5c, (char)0xeb, (char)0x97, (char)0x87,
(char)0x99, (char)0x20, (char)0x70, (char)0x7b, (char)0xf8, (char)0x97, (char)0x73, (char)0xdc, (char)0xb4, (char)0x94, (char)0x43, (char)0x27, (char)0x03, (char)0xbd, (char)0xb5, (char)0x91, (char)0xd9, (char)0x3e, (char)0x51, (char)0x1a, (char)0xd5, (char)0x60, (char)0x9c, (char)0x71, (char)0xd3, (char)0xc7, (char)0x1f, (char)0xd7, (char)0xef, (char)0x2f, (char)0xa1, (char)0xf7, (char)0xe6, (char)0xb1, (char)0x31, (char)0x9d, (char)0xec, (char)0xa3, (char)0xe1, (char)0x01, (char)0x57, (char)0xa8, (char)0x1c, (char)0x34, (char)0xf8, (char)0x82, (char)0xf5, (char)0x4d, (char)0xb8, (char)0x32, (char)0xe4, (char)0x4b, (char)0x90, (char)0x97, (char)0xcf, (char)0x8c, (char)0x2e, (char)0x89, (char)0xd0, (char)0xbc, (char)0xc0, (char)0xca, (char)0x45, (char)0x5e, (char)0x5c, (char)0x36, (char)0x47, (char)0x98, (char)0xa8, (char)0x57, (char)0xb5, (char)0x56, (char)0xc9, (char)0x11, (char)0xe4, (char)0x2f, (char)0xf0, (char)0x2b, (char)0x2c, (char)0xc1, (char)0x49, (char)0x1a, (char)0xfb, (char)0xdd, (char)0x89, (char)0x3f, (char)0x18, (char)0x98, (char)0x78, (char)0x13, (char)0x83, (char)0xf4, (char)0x30, (char)0xe2, (char)0x4e, (char)0x0e, (char)0xf4, (char)0x6c, (char)0xcb, (char)0xc6, (char)0xc7, (char)0x31, (char)0xe9, (char)0x78, (char)0x74, (char)0xfd, (char)0x53, (char)0x05, (char)0x4e, (char)0x7b, (char)0xd3, (char)0x9b, (char)0xeb, (char)0x15, (char)0xc0, (char)0x6f, (char)0xbf, (char)0xa4, (char)0x69, (char)0x7d, (char)0xd1, (char)0x53, (char)0x0f, (char)0x0b, (char)0xc1, (char)0x2b, (char)0xad, (char)0x00, (char)0x44, (char)0x10, (char)0xe2, (char)0x9f, (char)0xb9, (char)0xf3, (char)0x0c, (char)0x98, (char)0x53, (char)0xf0, (char)0x60, (char)0xcb, (char)0xee, (char)0x7e, (char)0x5c, (char)0x83, (char)0x4a, (char)0xde, (char)0xa0, (char)0x7a, (char)0xcf, (char)0x50, (char)0x2b, (char)0x84, (char)0x09, (char)0xff, (char)0x42, (char)0xe4, (char)0x80, (char)0x2a, (char)0x64, (char)0x20, (char)0x9b, (char)0xb9, (char)0xba, (char)0xd4, (char)0x54, (char)0xca, (char)0xd8, (char)0xdc, (char)0x0a, (char)0x4d, (char)0xdd, (char)0x84, (char)0x91, (char)0x5e, (char)0x16, (char)0x90, (char)0x1d, (char)0xdc, (char)0xe3, (char)0x95, (char)0x55, (char)0xac, (char)0xf2, (char)0x8c, (char)0x9a, (char)0xcc, (char)0xb2, (char)0x6d, (char)0x17, (char)0x01, (char)0xe4, (char)0x01, (char)0xc6, (char)0xba, (char)0xe4, (char)0xb8, (char)0xd5, (char)0xbd, (char)0x7b, (char)0x43, (char)0xc9, (char)0x69, (char)0x6b, (char)0x40, (char)0xf7, (char)0xdc, (char)0x65, (char)0xa4, (char)0xf7, (char)0xca, (char)0x1f, (char)0xd8, (char)0xe5, (char)0xba, (char)0x4c, (char)0xdf, (char)0xe4, (char)0x64, (char)0x9e, (char)0x7d, (char)0xbd, (char)0x54, (char)0x13, (char)0x13,
(char)0xc6, (char)0x0c, (char)0xb8, (char)0x1d, (char)0x31, (char)0x0a, (char)0x49, (char)0xe2, (char)0x43, (char)0xb6, (char)0x95, (char)0x5f, (char)0x05, (char)0x6e, (char)0x66, (char)0xf4, (char)0x21, (char)0xa8, (char)0x65, (char)0xce, (char)0xf8, (char)0x8e, (char)0xcc, (char)0x16, (char)0x1e, (char)0xbb, (char)0xd8, (char)0x0e, (char)0xcb, (char)0xd2, (char)0x48, (char)0x37, (char)0xaf, (char)0x4e, (char)0x67, (char)0x45, (char)0xf1, (char)0x79, (char)0x69, (char)0xd2, (char)0xee, (char)0xa4, (char)0xb5, (char)0x01, (char)0xbf, (char)0x57, (char)0x0f, (char)0x68, (char)0x37, (char)0xbe, (char)0x4e, (char)0xff, (char)0xc9, (char)0xb9, (char)0x92, (char)0x23, (char)0x06, (char)0x75, (char)0xa0, (char)0x42, (char)0xe4, (char)0x0a, (char)0x30, (char)0xf0, (char)0xaf, (char)0xb0, (char)0x54, (char)0x88, (char)0x7c, (char)0xc0, (char)0xc1, (char)0x0c, (char)0x6d, (char)0x01, (char)0x36, (char)0x63, (char)0xf3, (char)0x3d, (char)0xbc, (char)0x72, (char)0xf6, (char)0x96, (char)0xc8, (char)0x87, (char)0xab, (char)0x8b, (char)0x0c, (char)0x91, (char)0x2f, (char)0x42, (char)0x2a, (char)0x11, (char)0xf6, (char)0x2d, (char)0x5e, (char)0x77, (char)0xce, (char)0x9c, (char)0xc1, (char)0x34, (char)0xe5, (char)0x2d, (char)0x9b, (char)0xd0, (char)0x37, (char)0x97, (char)0x0e, (char)0x39, (char)0xe5, (char)0xaa, (char)0xbe, (char)0x15, (char)0x3e, (char)0x6b, (char)0x1e, (char)0x73, (char)0xf6, (char)0xd7, (char)0xf4, (char)0xd6, (char)0x71, (char)0x70, (char)0xc6, (char)0xa1, (char)0xe6, (char)0x04, (char)0xd3, (char)0x7c, (char)0x2d, (char)0x1c, (char)0x98, (char)0x47, (char)0xdb, (char)0x8f, (char)0x59, (char)0x99, (char)0x2a, (char)0x57, (char)0x63, (char)0x14, (char)0xc7, (char)0x02, (char)0x42, (char)0x74, (char)0x57, (char)0x02, (char)0x22, (char)0xb2, (char)0x55, (char)0xe9, (char)0xf3, (char)0xe0, (char)0x76, (char)0x1c, (char)0x50, (char)0xbf, (char)0x43, (char)0x65, (char)0xbe, (char)0x52, (char)0xbd, (char)0x46, (char)0xf0, (char)0xfd, (char)0x5e, (char)0x25, (char)0xfe, (char)0x34, (char)0x50, (char)0x0d, (char)0x24, (char)0x7c, (char)0xfc, (char)0xfa, (char)0x82, (char)0x2f, (char)0x8c, (char)0x7d, (char)0x97, (char)0x1b, (char)0x07, (char)0x6b, (char)0x20, (char)0x6c, (char)0x9b, (char)0x7b, (char)0xae, (char)0xbf, (char)0xb3, (char)0x4f, (char)0x6e, (char)0xbb, (char)0xb6, (char)0xc4, (char)0xe9, (char)0xa5, (char)0x07, (char)0xa7, (char)0x74, (char)0x45, (char)0x16, (char)0x8a, (char)0x12, (char)0xee, (char)0x42, (char)0xc8, (char)0xea, (char)0xb5, (char)0x33, (char)0x69, (char)0xef, (char)0xff, (char)0x60, (char)0x6d, (char)0x99, (char)0xa3, (char)0x92, (char)0x5d, (char)0x0f, (char)0xbe, (char)0xb7, (char)0x4e, (char)0x1c, (char)0x85,
(char)0xef, (char)0x9e, (char)0x1d, (char)0x38, (char)0x72, (char)0x1f, (char)0xe0, (char)0xca, (char)0xc9, (char)0x90, (char)0x85, (char)0x3f, (char)0xa6, (char)0x5d, (char)0x60, (char)0x3f, (char)0xe6, (char)0x92, (char)0x08, (char)0x3b, (char)0xd4, (char)0xc3, (char)0xa2, (char)0x7e, (char)0x7c, (char)0x35, (char)0x49, (char)0xd4, (char)0x21, (char)0x38, (char)0x8c, (char)0x2c, (char)0x49, (char)0xb3, (char)0xcb, (char)0x33, (char)0xd4, (char)0xc2, (char)0x88, (char)0xdc, (char)0x09, (char)0xb3, (char)0x8a, (char)0x13, (char)0x95, (char)0x0f, (char)0xb4, (char)0x0a, (char)0xd1, (char)0x1d, (char)0xc8, (char)0xe4, (char)0x64, (char)0xb4, (char)0x24, (char)0x51, (char)0xe1, (char)0x0a, (char)0x22, (char)0xd4, (char)0x45, (char)0x77, (char)0x91, (char)0x0a, (char)0xc6, (char)0x61, (char)0xa1, (char)0x2c, (char)0x50, (char)0x84, (char)0x1c, (char)0x0c, (char)0xbe, (char)0x05, (char)0x1c, (char)0x3b, (char)0x4f, (char)0x27, (char)0x83, (char)0x33, (char)0xba, (char)0xfb, (char)0x7f, (char)0xa0, (char)0xc6, (char)0x38, (char)0xb4, (char)0x0c, (char)0x15, (char)0x49, (char)0x8f, (char)0xfa, (char)0x17, (char)0x76, (char)0xa9, (char)0x54, (char)0xf4, (char)0x6c, (char)0x7e, (char)0x5e, (char)0x39, (char)0xb8, (char)0xa8, (char)0x78, (char)0x86, (char)0x48, (char)0xb2, (char)0x18, (char)0xf1, (char)0xde, (char)0x0d, (char)0x24, (char)0xee, (char)0x6b, (char)0x01, (char)0x7d, (char)0x60, (char)0xfa, (char)0x35, (char)0xfe, (char)0x71, (char)0x0b, (char)0xfa, (char)0x8c, (char)0x79, (char)0x6c, (char)0x0b, (char)0x25, (char)0x84, (char)0x6d, (char)0x1a, (char)0x1d, (char)0xe0, (char)0x33, (char)0xa1, (char)0xa0, (char)0x8f, (char)0x47, (char)0x08, (char)0x4b, (char)0x5c, (char)0x8c, (char)0xc6, (char)0x1e, (char)0x2a, (char)0x6d, (char)0xd8, (char)0x3e, (char)0x09, (char)0x83, (char)0x96, (char)0xe6, (char)0xbc, (char)0x14, (char)0x55, (char)0x17, (char)0xcb, (char)0x50, (char)0x44, (char)0xdb, (char)0x80, (char)0xab, (char)0xb9, (char)0xf0, (char)0x1a, (char)0x3a, (char)0x9e, (char)0x23, (char)0xd5, (char)0x46, (char)0x73, (char)0x4b, (char)0xd0, (char)0x41, (char)0x9d, (char)0x29, (char)0x03, (char)0x59, (char)0x29, (char)0xeb, (char)0x82, (char)0x71, (char)0x09, (char)0x0c, (char)0x26, (char)0x10, (char)0x0f, (char)0x59, (char)0xd4, (char)0xd7, (char)0xb4, (char)0x4d, (char)0xe5, (char)0x35, (char)0xf5, (char)0x19, (char)0xef, (char)0xc7, (char)0xe7, (char)0x43, (char)0x0a, (char)0x3e, (char)0xeb, (char)0x3d, (char)0xc5, (char)0x55, (char)0xde, (char)0x04, (char)0xe7, (char)0x88, (char)0x72, (char)0x6c, (char)0xf7, (char)0x9d, (char)0x86, (char)0xb2, (char)0x0c, (char)0x83, (char)0x55, (char)0x20, (char)0x67, (char)0xc0, (char)0xc9, (char)0x15,
(char)0x3c, (char)0x76, (char)0x69, (char)0x80, (char)0x79, (char)0x68, (char)0x89, (char)0x16, (char)0x0a, (char)0xaf, (char)0xe4, (char)0x2c, (char)0xf0, (char)0x0e, (char)0x26, (char)0x74, (char)0x84, (char)0xfb, (char)0x27, (char)0xd4, (char)0x1c, (char)0x61, (char)0xbe, (char)0xe8, (char)0xc3, (char)0xce, (char)0x74, (char)0xd9, (char)0xf8, (char)0x5a, (char)0xa8, (char)0x63, (char)0x13, (char)0x27, (char)0xfa, (char)0xab, (char)0x93, (char)0x32, (char)0x25, (char)0x18, (char)0xb1, (char)0x78, (char)0x2f, (char)0xd3, (char)0x93, (char)0x0b, (char)0xc6, (char)0x5a, (char)0xda, (char)0xfe, (char)0xff, (char)0x7e, (char)0x38, (char)0x0c, (char)0x26, (char)0x44, (char)0x4c, (char)0x23, (char)0xe0, (char)0x8e, (char)0x64, (char)0xff, (char)0x07, (char)0xbc, (char)0x5b, (char)0x87, (char)0xd6, (char)0x3c, (char)0x8e, (char)0xe7, (char)0xd1, (char)0x78, (char)0x55, (char)0x00, (char)0x19, (char)0xbe, (char)0x98, (char)0x55, (char)0x1e, (char)0x16, (char)0xea, (char)0x63, (char)0x79, (char)0xb5, (char)0xaf, (char)0x9a, (char)0x20, (char)0x04, (char)0x8d, (char)0x3f, (char)0xdc, (char)0x15, (char)0x29, (char)0xc4, (char)0xe3, (char)0x9a, (char)0x82, (char)0x92, (char)0x85, (char)0xee, (char)0x1c, (char)0x37, (char)0xb3, (char)0xd7, (char)0xd2, (char)0x2e, (char)0x1e, (char)0xdb, (char)0x59, (char)0x87, (char)0xef, (char)0xa8, (char)0x9a, (char)0xaa, (char)0xa4, (char)0xed, (char)0x89, (char)0x33, (char)0xa8, (char)0xa7, (char)0x6c, (char)0x96, (char)0x9f, (char)0x26, (char)0xeb, (char)0xdc, (char)0x61, (char)0xc4, (char)0x8f, (char)0xd3, (char)0x2b, (char)0x81, (char)0x86, (char)0x6c, (char)0x9c, (char)0xc2, (char)0xb1, (char)0xb5, (char)0xbc, (char)0xa6, (char)0xd6, (char)0xd6, (char)0x1d, (char)0xce, (char)0x93, (char)0x78, (char)0xb3, (char)0xec, (char)0xa8, (char)0x64, (char)0x19, (char)0x13, (char)0x59, (char)0x1c, (char)0xb9, (char)0xbf, (char)0xd8, (char)0x7f, (char)0x27, (char)0x8e, (char)0x6f, (char)0x05, (char)0xd9, (char)0x1a, (char)0xa4, (char)0x1a, (char)0xc2, (char)0x46, (char)0x81, (char)0x52, (char)0xa5, (char)0xaf, (char)0x73, (char)0x35, (char)0x34, (char)0x88, (char)0x60, (char)0x46, (char)0x4d, (char)0x09, (char)0x87, (char)0xf1, (char)0x7e, (char)0x5e, (char)0xea, (char)0x32, (char)0x98, (char)0xb4, (char)0x68, (char)0x28, (char)0xff, (char)0x47, (char)0xde, (char)0x72, (char)0x9b, (char)0xc5, (char)0xfe, (char)0xb8, (char)0x93, (char)0xe8, (char)0x79, (char)0xe4, (char)0xa6, (char)0xd7, (char)0x63, (char)0x94, (char)0x29, (char)0x94, (char)0x33, (char)0x30, (char)0x61, (char)0xd4, (char)0x19, (char)0x36, (char)0x99, (char)0x94, (char)0x31, (char)0xbf, (char)0x93, (char)0x46, (char)0x04, (char)0xc0, (char)0xfe, (char)0x4d,
(char)0x92, (char)0xb4, (char)0xbc, (char)0xb2, (char)0x14, (char)0x3f, (char)0xf7, (char)0xce, (char)0x05, (char)0xcf, (char)0xf2, (char)0x5b, (char)0x66, (char)0xcb, (char)0x67, (char)0xa9, (char)0x8f, (char)0x63, (char)0xd4, (char)0x7c, (char)0x1d, (char)0x33, (char)0x6a, (char)0x05, (char)0xfb, (char)0xf7, (char)0x11, (char)0x03, (char)0x97, (char)0xff, (char)0x02, (char)0x1b, (char)0x6f, (char)0x15, (char)0x8b, (char)0x33, (char)0xe6, (char)0xf7, (char)0x5d, (char)0x93, (char)0x21, (char)0x9d, (char)0x17, (char)0xde, (char)0x9e, (char)0x87, (char)0xdc, (char)0xcd, (char)0x9a, (char)0x6a, (char)0x30, (char)0x3e, (char)0xa9, (char)0x70, (char)0xed, (char)0x93, (char)0x1d, (char)0x43, (char)0xb5, (char)0x5d, (char)0xb0, (char)0x46, (char)0x74, (char)0x73, (char)0x3b, (char)0x25, (char)0xfa, (char)0x0e, (char)0xe3, (char)0x70, (char)0x74, (char)0x2d, (char)0x75, (char)0xd6, (char)0x14, (char)0x67, (char)0x40, (char)0x31, (char)0xf9, (char)0x2c, (char)0xf6, (char)0x38, (char)0xea, (char)0x45, (char)0x33, (char)0xc1, (char)0xb6, (char)0xd5, (char)0x93, (char)0x0f, (char)0x5c, (char)0xaf, (char)0x3a, (char)0x53, (char)0x75, (char)0xd6, (char)0xe8, (char)0x97, (char)0xa0, (char)0x51, (char)0x3f, (char)0x96, (char)0x41, (char)0x32, (char)0x0b, (char)0x59, (char)0x48, (char)0xbf, (char)0x2b, (char)0x19, (char)0x67, (char)0x98, (char)0x42, (char)0xfe, (char)0x44, (char)0x23, (char)0x84, (char)0xa9, (char)0x09, (char)0x40, (char)0x4e, (char)0x10, (char)0x25, (char)0xdf, (char)0x68, (char)0x93, (char)0x6b, (char)0x0d, (char)0xa8, (char)0x51, (char)0x47, (char)0x55, (char)0xb7, (char)0xb8, (char)0x22, (char)0xab, (char)0xa3, (char)0x3c, (char)0x78, (char)0xd6, (char)0x8b, (char)0x4f, (char)0x2a, (char)0x73, (char)0xc1, (char)0x4a, (char)0x4a, (char)0xdd, (char)0x73, (char)0xb1, (char)0xc0, (char)0x8c, (char)0x5f, (char)0xf6, (char)0xe7, (char)0xbe, (char)0x9c, (char)0x96, (char)0xd6, (char)0x37, (char)0x91, (char)0x05, (char)0x52, (char)0xd1, (char)0x2f, (char)0xa9, (char)0xdc, (char)0xca, (char)0x11, (char)0x30, (char)0x6d, (char)0x4f, (char)0xb5, (char)0x6e, (char)0x39, (char)0x24, (char)0x28, (char)0x80, (char)0x54, (char)0x28, (char)0x87, (char)0xe6, (char)0x40, (char)0xeb, (char)0xd8, (char)0x7a, (char)0x1f, (char)0x63, (char)0x56, (char)0xc1, (char)0x4d, (char)0xa0, (char)0xf8
};
ASSERT_EQ(1537, (int)sizeof(c0c1));
// c0
EXPECT_EQ(0x03, c0c1[0]);
// c1
c1s1 c1;
// the schema of data must be schema0: key-digest.
ASSERT_EQ(ERROR_SUCCESS, c1.parse(c0c1 + 1, srs_schema0));
EXPECT_EQ((int32_t)0x000f64d0, c1.time);
EXPECT_EQ((int32_t)0x80000702, c1.version);
// manually validate the c1
// @see: calc_c1_digest
char* c1s1_joined_bytes = srs_bytes_join_schema0(c1.time, c1.version, &c1.block0.key, &c1.block1.digest);
SrsAutoFree(char, c1s1_joined_bytes);
bool is_valid;
ASSERT_EQ(ERROR_SUCCESS, c1.c1_validate_digest(is_valid));
ASSERT_TRUE(is_valid);
// 128bytes key
char key[] = {
(char)0x01, (char)0xc6, (char)0xba, (char)0xe4, (char)0xb8, (char)0xd5, (char)0xbd, (char)0x7b, (char)0x43, (char)0xc9, (char)0x69, (char)0x6b, (char)0x40, (char)0xf7, (char)0xdc, (char)0x65, (char)0xa4, (char)0xf7, (char)0xca, (char)0x1f, (char)0xd8, (char)0xe5, (char)0xba, (char)0x4c, (char)0xdf, (char)0xe4, (char)0x64, (char)0x9e, (char)0x7d, (char)0xbd, (char)0x54, (char)0x13, (char)0x13, (char)0xc6, (char)0x0c, (char)0xb8, (char)0x1d, (char)0x31, (char)0x0a, (char)0x49, (char)0xe2, (char)0x43, (char)0xb6, (char)0x95, (char)0x5f, (char)0x05, (char)0x6e, (char)0x66,
(char)0xf4, (char)0x21, (char)0xa8, (char)0x65, (char)0xce, (char)0xf8, (char)0x8e, (char)0xcc, (char)0x16, (char)0x1e, (char)0xbb, (char)0xd8, (char)0x0e, (char)0xcb, (char)0xd2, (char)0x48, (char)0x37, (char)0xaf, (char)0x4e, (char)0x67, (char)0x45, (char)0xf1, (char)0x79, (char)0x69, (char)0xd2, (char)0xee, (char)0xa4, (char)0xb5, (char)0x01, (char)0xbf, (char)0x57, (char)0x0f, (char)0x68, (char)0x37, (char)0xbe, (char)0x4e, (char)0xff, (char)0xc9, (char)0xb9, (char)0x92, (char)0x23, (char)0x06, (char)0x75, (char)0xa0, (char)0x42, (char)0xe4, (char)0x0a, (char)0x30,
(char)0xf0, (char)0xaf, (char)0xb0, (char)0x54, (char)0x88, (char)0x7c, (char)0xc0, (char)0xc1, (char)0x0c, (char)0x6d, (char)0x01, (char)0x36, (char)0x63, (char)0xf3, (char)0x3d, (char)0xbc, (char)0x72, (char)0xf6, (char)0x96, (char)0xc8, (char)0x87, (char)0xab, (char)0x8b, (char)0x0c, (char)0x91, (char)0x2f, (char)0x42, (char)0x2a, (char)0x11, (char)0xf6, (char)0x2d, (char)0x5e
};
EXPECT_TRUE(srs_bytes_equals(c1.block0.key.key, key, 128));
// 32bytes digest
char digest[] = {
(char)0x6c, (char)0x96, (char)0x9f, (char)0x26, (char)0xeb, (char)0xdc, (char)0x61, (char)0xc4, (char)0x8f, (char)0xd3, (char)0x2b, (char)0x81, (char)0x86, (char)0x6c, (char)0x9c, (char)0xc2,
(char)0xb1, (char)0xb5, (char)0xbc, (char)0xa6, (char)0xd6, (char)0xd6, (char)0x1d, (char)0xce, (char)0x93, (char)0x78, (char)0xb3, (char)0xec, (char)0xa8, (char)0x64, (char)0x19, (char)0x13
};
EXPECT_TRUE(srs_bytes_equals(c1.block1.digest.digest, digest, 32));
}
#endif
VOID TEST(ProtocolHandshakeTest, SimpleHandshake)
{
char c0c1[] = {
(char)0x03, (char)0x01, (char)0x14, (char)0xf7, (char)0x4e, (char)0x80, (char)0x00, (char)0x07, (char)0x02, (char)0xac, (char)0x14, (char)0x98, (char)0x57, (char)0x0a, (char)0x07, (char)0x58, (char)0x44, (char)0x96, (char)0x47, (char)0xb5, (char)0x9a, (char)0x73, (char)0xf6, (char)0x07, (char)0x0f, (char)0x49, (char)0x0d, (char)0x72, (char)0xb8, (char)0x16, (char)0xbb, (char)0xb2, (char)0xb7, (char)0x61, (char)0x17, (char)0x79, (char)0xa0, (char)0xe9, (char)0x98, (char)0xca, (char)0xb2, (char)0x86, (char)0x64, (char)0x5f, (char)0x65, (char)0x3e, (char)0xfc, (char)0x4d, (char)0xc0, (char)0x0e, (char)0x4c, (char)0xfa, (char)0x91, (char)0xc7, (char)0x0f, (char)0x2e, (char)0x57, (char)0x31, (char)0x4b, (char)0x96, (char)0xef, (char)0xc9, (char)0x81, (char)0x02, (char)0x00, (char)0x54, (char)0x25, (char)0x2b, (char)0xb2, (char)0x0d, (char)0x7c, (char)0xee, (char)0xba, (char)0xdb, (char)0xe4, (char)0x06, (char)0x78, (char)0xcd, (char)0x70, (char)0x2c, (char)0x54, (char)0x5a, (char)0x3a, (char)0x03, (char)0x13, (char)0x2e, (char)0xe7, (char)0x4b, (char)0x87, (char)0x40, (char)0x77, (char)0x0b, (char)0x9f, (char)0xd2, (char)0xab, (char)0x32, (char)0x07, (char)0x6f, (char)0x1e, (char)0x75, (char)0x74, (char)0xe9, (char)0xc7, (char)0x44, (char)0xd9, (char)0x76, (char)0x53, (char)0xba, (char)0xe2, (char)0x52, (char)0xfa, (char)0xcc, (char)0xef, (char)0x34, (char)0xd5, (char)0x14, (char)0x61, (char)0xac, (char)0xcc, (char)0x63, (char)0xfd, (char)0x2b, (char)0x2d, (char)0xb3, (char)0xb8, (char)0xdd, (char)0x8a, (char)0x51, (char)0x9a, (char)0x2d, (char)0x0e, (char)0xfa, (char)0x84, (char)0x25, (char)0x55, (char)0xb2, (char)0xb7, (char)0x94, (char)0x54, (char)0x68, (char)0xfb, (char)0x94, (char)0xdf, (char)0xd8, (char)0xeb, (char)0x43, (char)0xd0, (char)0x11, (char)0x70, (char)0x8f, (char)0xf5, (char)0x48, (char)0xfc, (char)0x69, (char)0x4d, (char)0x5b, (char)0xc6, (char)0x53, (char)0x8a, (char)0x22, (char)0xea, (char)0x62, (char)0x84, (char)0x89, (char)0x6b, (char)0xfe, (char)0x4e, (char)0xab, (char)0x51, (char)0x98, (char)0xf4, (char)0x4f, (char)0xae, (char)0xf8, (char)0xdf, (char)0xac, (char)0x43, (char)0xed, (char)0x5a, (char)0x04, (char)0x97, (char)0xc4, (char)0xbe, (char)0x44, (char)0x5b, (char)0x99, (char)0x20, (char)0x68, (char)0x67, (char)0x0f, (char)0xe3, (char)0xfa, (char)0x4c, (char)0x9d, (char)0xe7, (char)0x0b, (char)0x3f, (char)0x80, (char)0x7c, (char)0x4c, (char)0x35, (char)0xf6, (char)0xdd, (char)0x20, (char)0x05, (char)0xfd, (char)0x0f, (char)0x39, (char)0xb7, (char)0x36, (char)0x45, (char)0x4c, (char)0xb7, (char)0x62, (char)0x92, (char)0x35, (char)0x2a, (char)0xcd, (char)0xb9, (char)0x49, (char)0xea, (char)0x12, (char)0x0b, (char)0x5f, (char)0x39, (char)0xae, (char)0x3b, (char)0x49, (char)0x29, (char)0xe6, (char)0x30, (char)0xc7, (char)0x7c, (char)0x77, (char)0xaf, (char)0x00, (char)0x43, (char)0x4d, (char)0x06, (char)0x45, (char)0x72, (char)0x73, (char)0x25, (char)0x71, (char)0x5e, (char)0x35, (char)0x04, (char)0xbd, (char)0xe9, (char)0x48, (char)0x23, (char)0x64, (char)0x4d, (char)0x15, (char)0x0b, (char)0xc5, (char)0x3f, (char)0x6e, (char)0x3a, (char)0xd5, (char)0xd5, (char)0xa6, (char)0xae, (char)0x3b, (char)0x4c, (char)0x66, (char)0x6a, (char)0x70, (char)0x8b, (char)0xf3, (char)0x6a, (char)0x43, (char)0xc4, (char)0xb9, (char)0xbd, (char)0xa0, (char)0x09, (char)0x72, (char)0xbc, (char)0xce, (char)0x7a, (char)0xea, (char)0x49, (char)0xf2, (char)0x86, (char)0xa7, (char)0xd8, (char)0x4a, (char)0x87, (char)0x28, (char)0xca, (char)0x2c, (char)0x53, (char)0xee, (char)0x96, (char)0x0b, (char)0xbe, (char)0x15, (char)0x14, (char)0xa8, (char)0x00, (char)0xca, (char)0x76, (char)0x08, (char)0x4d, (char)0x0f, (char)0xef, (char)0x78, (char)0x4b, (char)0xf6, (char)0x47, (char)0x60, (char)0xfc, (char)0x16, (char)0x00, (char)0x7c, (char)0x6b, (char)0x49, (char)0x39, (char)0x64, (char)0x36, (char)0xee, (char)0x45, (char)0x3a, (char)0x9a, (char)0xa5, (char)0xbf, (char)0xfb, (char)0x7b, (char)0xe7, (char)0xcf, (char)0x42, (char)0x82, (char)0x48, (char)0x1b, (char)0x30, (char)0xfe, (char)0x0d, (char)0xba, (char)0x10, (char)0
(char)0x83, (char)0x8b, (char)0x8c, (char)0x2d, (char)0x24, (char)0x0e, (char)0x30, (char)0xb1, (char)0x84, (char)0xa2, (char)0xbe, (char)0x2c, (char)0x86, (char)0xe6, (char)0x42, (char)0x82, (char)0xaa, (char)0x37, (char)0x64, (char)0x55, (char)0x51, (char)0xbc, (char)0xde, (char)0xc0, (char)0x63, (char)0x88, (char)0xf6, (char)0x31, (char)0x71, (char)0x52, (char)0xd5, (char)0x34, (char)0x0f, (char)0x8e, (char)0xcb, (char)0x28, (char)0x65, (char)0x93, (char)0x1a, (char)0x66, (char)0x3b, (char)0x21, (char)0x00, (char)0xaa, (char)0x7a, (char)0xda, (char)0x2d, (char)0xf6, (char)0x7e, (char)0xb5, (char)0x27, (char)0x79, (char)0xf4, (char)0x50, (char)0x3b, (char)0x10, (char)0x6b, (char)0x3c, (char)0xd7, (char)0x99, (char)0x9d, (char)0xf6, (char)0xc5, (char)0x01, (char)0x91, (char)0xa0, (char)0xd5, (char)0x4f, (char)0xd3, (char)0x76, (char)0x54, (char)0xa8, (char)0x5c, (char)0x35, (char)0x1d, (char)0xe2, (char)0x35, (char)0x6a, (char)0x68, (char)0x67, (char)0x03, (char)0xc4, (char)0x1f, (char)0xe9, (char)0x60, (char)0xb8, (char)0x49, (char)0xb1, (char)0x9a, (char)0x40, (char)0xd9, (char)0x3c, (char)0x4c, (char)0x73, (char)0xaa, (char)0x88, (char)0x63, (char)0xaf, (char)0xfe, (char)0xe8, (char)0xa8, (char)0x0c, (char)0x96, (char)0xbe, (char)0xb4, (char)0x65, (char)0x7c, (char)0x27, (char)0xfb, (char)0xc1, (char)0x27, (char)0x24, (char)0x58, (char)0xab, (char)0x4b, (char)0xa0, (char)0x5a, (char)0x7d, (char)0xc7, (char)0xca, (char)0x2d, (char)0xa5, (char)0x22, (char)0xa7, (char)0xed, (char)0x26, (char)0x87, (char)0xd5, (char)0x44, (char)0x1a, (char)0xc7, (char)0xdd, (char)0xfb, (char)0x60, (char)0xfc, (char)0xe5, (char)0x50, (char)0xd9, (char)0x8d, (char)0xa7, (char)0xdb, (char)0x78, (char)0xb6, (char)0x9d, (char)0x80, (char)0x0f, (char)0xb9, (char)0x5f, (char)0xa7, (char)0x53, (char)0x92, (char)0x5d, (char)0x18, (char)0xce, (char)0x89, (char)0xc2, (char)0x69, (char)0xee, (char)0xcf, (char)0xb6, (char)0x66, (char)0xe5, (char)0x66, (char)0xd2, (char)0xe3, (char)0x35, (char)0x74, (char)0x0b, (char)0x83, (char)0xb6, (char)0xde, (char)0xf1, (char)0xfb, (char)0xb4, (char)0x1d, (char)0x4b, (char)0x94, (char)0x95, (char)0x06, (char)0x82, (char)0xe7, (char)0x1c, (char)0xf8, (char)0xc5, (char)0xe6, (char)0xd0, (char)0xf2, (char)0x17, (char)0x37, (char)0x44, (char)0xfe, (char)0x99, (char)0x43, (char)0x82, (char)0xbb, (char)0x88, (char)0xe4, (char)0x43, (char)0x67, (char)0xcc, (char)0x4d, (char)0x5f, (char)0xa6, (char)0x26, (char)0xd7, (char)0x53, (char)0xd6, (char)0x45, (char)0x96, (char)0x2b, (char)0x63, (char)0xd1, (char)0x2a, (char)0xa1, (char)0x2c, (char)0x41, (char)0x59, (char)0x8b, (char)0xb8, (char)0xc1, (char)0x89, (char)0x03, (char)0x3a, (char)0x61, (char)0x13, (char)0xc4, (char)0x2c, (char)0x37, (char)0xa5, (char)0xbf, (char)0xd7, (char)0xdb, (char)0xd8, (char)0x53, (char)0x5f, (char)0xa1, (char)0xdb, (char)0xdb, (char)0xa5, (char)0x73, (char)0xb6, (char)0xf7, (char)0x74, (char)0xa0, (char)0xf8, (char)0x93, (char)0xf5, (char)0x61, (char)0xee, (char)0x3c, (char)0xe7, (char)0x00, (char)0x01, (char)0x98, (char)0xe0, (char)0xa1, (char)0x22, (char)0xb6, (char)0x9a, (char)0x83, (char)0x44, (char)0xa1, (char)0xe6, (char)0x70, (char)0x56, (char)0x65, (char)0x92, (char)0x1e, (char)0xf0, (char)0xbc, (char)0x73, (char)0xa5, (char)0x7a, (char)0xc1, (char)0x1a, (char)0x02, (char)0xf9, (char)0xd4, (char)0xc4, (char)0x7c, (char)0x81, (char)0xda, (char)0x15, (char)0xc0, (char)0xd4, (char)0x25, (char)0xdc, (char)0x17, (char)0xa6, (char)0x0d, (char)0x90, (char)0x55, (char)0xf2, (char)0x10, (char)0xf8, (char)0xa7, (char)0x71, (char)0x9b, (char)0xed, (char)0xdf, (char)0xdf, (char)0xa1, (char)0xe4, (char)0xb9, (char)0x12, (char)0x6b, (char)0x05, (char)0x3e, (char)0x83, (char)0x99, (char)0x49, (char)0xbf, (char)0x66, (char)0xbb, (char)0xf6, (char)0x76, (char)0xd3, (char)0xa9, (char)0x24, (char)0x61, (char)0x8c, (char)0x25, (char)0x49, (char)0xd0, (char)0xf7, (char)0x83, (char)0x44, (char)0xfb, (char)0x27, (char)0xe2, (char)0x7d, (char)0x69, (char)0x6d, (char)0x34, (char)0x67, (char)0xed, (char)0x39, (char)0x89, (char)0x02, (char)0xcb, (char)0
};
char s0s1s2[] = {
(char)0x03, (char)0xac, (char)0x44, (char)0x29, (char)0x53, (char)0x04, (char)0x05, (char)0x00, (char)0x01, (char)0x6e, (char)0x65, (char)0x69, (char)0x2d, (char)0x69, (char)0x2d, (char)0x69, (char)0x73, (char)0x6e, (char)0x69, (char)0x73, (char)0x6c, (char)0x65, (char)0x72, (char)0x69, (char)0x72, (char)0x76, (char)0x65, (char)0x72, (char)0x69, (char)0x77, (char)0x74, (char)0x2e, (char)0x6e, (char)0x72, (char)0x76, (char)0x72, (char)0x65, (char)0x72, (char)0x70, (char)0x72, (char)0x69, (char)0x69, (char)0x70, (char)0x72, (char)0x73, (char)0x6e, (char)0x65, (char)0x72, (char)0x72, (char)0x6e, (char)0x2d, (char)0x65, (char)0x74, (char)0x72, (char)0x6c, (char)0x69, (char)0x74, (char)0x69, (char)0x65, (char)0x40, (char)0x69, (char)0x69, (char)0x76, (char)0x77, (char)0x2d, (char)0x73, (char)0x65, (char)0x72, (char)0x72, (char)0x76, (char)0x73, (char)0x72, (char)0x2e, (char)0x2d, (char)0x76, (char)0x65, (char)0x31, (char)0x65, (char)0x6d, (char)0x6d, (char)0x73, (char)0x69, (char)0x73, (char)0x74, (char)0x2e, (char)0x74, (char)0x72, (char)0x65, (char)0x65, (char)0x72, (char)0x65, (char)0x2d, (char)0x74, (char)0x69, (char)0x31, (char)0x65, (char)0x2d, (char)0x6f, (char)0x77, (char)0x2e, (char)0x76, (char)0x77, (char)0x2d, (char)0x77, (char)0x72, (char)0x65, (char)0x65, (char)0x31, (char)0x74, (char)0x73, (char)0x70, (char)0x74, (char)0x6e, (char)0x72, (char)0x6e, (char)0x73, (char)0x6d, (char)0x2e, (char)0x69, (char)0x72, (char)0x2d, (char)0x65, (char)0x69, (char)0x77, (char)0x69, (char)0x76, (char)0x72, (char)0x77, (char)0x72, (char)0x32, (char)0x6e, (char)0x65, (char)0x6c, (char)0x2e, (char)0x2d, (char)0x6e, (char)0x69, (char)0x6d, (char)0x6c, (char)0x73, (char)0x65, (char)0x73, (char)0x70, (char)0x2d, (char)0x65, (char)0x72, (char)0x40, (char)0x72, (char)0x74, (char)0x6e, (char)0x6e, (char)0x6d, (char)0x6f, (char)0x70, (char)0x74, (char)0x73, (char)0x2d, (char)0x63, (char)0x69, (char)0x32, (char)0x31, (char)0x2d, (char)0x40, (char)0x69, (char)0x70, (char)0x2d, (char)0x2d, (char)0x72, (char)0x69, (char)0x74, (char)0x63, (char)0x6f, (char)0x69, (char)0x69, (char)0x65, (char)0x6e, (char)0x32, (char)0x6f, (char)0x6c, (char)0x6e, (char)0x72, (char)0x73, (char)0x77, (char)0x65, (char)0x65, (char)0x72, (char)0x32, (char)0x6d, (char)0x65, (char)0x6c, (char)0x2d, (char)0x72, (char)0x6e, (char)0x65, (char)0x6d, (char)0x31, (char)0x65, (char)0x74, (char)0x2d, (char)0x6f, (char)0x72, (char)0x65, (char)0x63, (char)0x69, (char)0x40, (char)0x70, (char)0x2d, (char)0x65, (char)0x6d, (char)0x2d, (char)0x77, (char)0x63, (char)0x63, (char)0x74, (char)0x40, (char)0x36, (char)0x2d, (char)0x72, (char)0x65, (char)0x70, (char)0x2d, (char)0x6e, (char)0x69, (char)0x6d, (char)0x65, (char)0x74, (char)0x70, (char)0x76, (char)0x40, (char)0x76, (char)0x72, (char)0x72, (char)0x69, (char)0x77, (char)0x76, (char)0x69, (char)0x74, (char)0x74, (char)0x65, (char)0x31, (char)0x6d, (char)0x2e, (char)0x6f, (char)0x72, (char)0x73, (char)0x73, (char)0x6c, (char)0x40, (char)0x36, (char)0x72, (char)0x70, (char)0x72, (char)0x70, (char)0x72, (char)0x69, (char)0x32, (char)0x6c, (char)0x77, (char)0x70, (char)0x76, (char)0x65, (char)0x72, (char)0x76, (char)0x63, (char)0x65, (char)0x65, (char)0x77, (char)0x72, (char)0x6e, (char)0x2e, (char)0x76, (char)0x69, (char)0x69, (char)0x2e, (char)0x40, (char)0x72, (char)0x2e, (char)0x2e, (char)0x72, (char)0x73, (char)0x6e, (char)0x72, (char)0x72, (char)0x6e, (char)0x70, (char)0x40, (char)0x77, (char)0x65, (char)0x77, (char)0x65, (char)0x70, (char)0x63, (char)0x74, (char)0x2d, (char)0x70, (char)0x72, (char)0x2d, (char)0x74, (char)0x72, (char)0x31, (char)0x65, (char)0x6e, (char)0x2d, (char)0x76, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x74, (char)0x76, (char)0x2d, (char)0x74, (char)0x65, (char)0x2e, (char)0x2d, (char)0x6c, (char)0x76, (char)0x2d, (char)0x6c, (char)0x70, (char)0x73, (char)0x6d, (char)0x65, (char)0x72, (char)0x31, (char)0x31, (char)0x36, (char)0x76, (char)0x73, (char)0x73, (char)0x6e, (char)0x2d, (char)0x6e, (char)0x73, (char)0x72, (char)0x2d, (char)0x6f, (char)0x6c, (char)0x65, (char)0x74, (char)0x77, (char)0
(char)0x77, (char)0x69, (char)0x69, (char)0x72, (char)0x65, (char)0x77, (char)0x6c, (char)0x72, (char)0x2d, (char)0x69, (char)0x72, (char)0x31, (char)0x6e, (char)0x65, (char)0x70, (char)0x72, (char)0x74, (char)0x76, (char)0x6c, (char)0x2e, (char)0x72, (char)0x65, (char)0x72, (char)0x6c, (char)0x73, (char)0x6c, (char)0x2e, (char)0x2e, (char)0x72, (char)0x2d, (char)0x6e, (char)0x63, (char)0x32, (char)0x2e, (char)0x65, (char)0x2d, (char)0x65, (char)0x69, (char)0x2d, (char)0x65, (char)0x70, (char)0x6e, (char)0x72, (char)0x72, (char)0x32, (char)0x2e, (char)0x73, (char)0x70, (char)0x77, (char)0x65, (char)0x73, (char)0x77, (char)0x73, (char)0x40, (char)0x40, (char)0x73, (char)0x63, (char)0x2e, (char)0x65, (char)0x76, (char)0x70, (char)0x65, (char)0x69, (char)0x65, (char)0x70, (char)0x73, (char)0x40, (char)0x65, (char)0x73, (char)0x2d, (char)0x2d, (char)0x2e, (char)0x2e, (char)0x73, (char)0x65, (char)0x6f, (char)0x65, (char)0x65, (char)0x6d, (char)0x76, (char)0x70, (char)0x6d, (char)0x69, (char)0x70, (char)0x70, (char)0x69, (char)0x2e, (char)0x76, (char)0x6e, (char)0x72, (char)0x72, (char)0x72, (char)0x6d, (char)0x73, (char)0x6f, (char)0x73, (char)0x72, (char)0x72, (char)0x72, (char)0x77, (char)0x70, (char)0x65, (char)0x69, (char)0x72, (char)0x73, (char)0x6e, (char)0x69, (char)0x65, (char)0x65, (char)0x74, (char)0x65, (char)0x69, (char)0x40, (char)0x63, (char)0x69, (char)0x70, (char)0x6c, (char)0x6e, (char)0x2d, (char)0x65, (char)0x69, (char)0x72, (char)0x63, (char)0x6c, (char)0x72, (char)0x2e, (char)0x36, (char)0x69, (char)0x72, (char)0x6c, (char)0x6c, (char)0x2d, (char)0x6f, (char)0x76, (char)0x69, (char)0x6f, (char)0x2d, (char)0x6d, (char)0x6c, (char)0x72, (char)0x72, (char)0x2e, (char)0x70, (char)0x73, (char)0x6d, (char)0x6f, (char)0x2e, (char)0x6e, (char)0x69, (char)0x65, (char)0x65, (char)0x2d, (char)0x6d, (char)0x76, (char)0x6e, (char)0x69, (char)0x73, (char)0x73, (char)0x73, (char)0x74, (char)0x63, (char)0x65, (char)0x76, (char)0x2e, (char)0x77, (char)0x2d, (char)0x36, (char)0x73, (char)0x69, (char)0x2d, (char)0x72, (char)0x72, (char)0x6c, (char)0x36, (char)0x74, (char)0x72, (char)0x6d, (char)0x65, (char)0x2d, (char)0x65, (char)0x2e, (char)0x6d, (char)0x31, (char)0x72, (char)0x6f, (char)0x74, (char)0x76, (char)0x31, (char)0x65, (char)0x6d, (char)0x69, (char)0x72, (char)0x69, (char)0x69, (char)0x2d, (char)0x72, (char)0x73, (char)0x72, (char)0x72, (char)0x76, (char)0x31, (char)0x6e, (char)0x2d, (char)0x69, (char)0x6e, (char)0x77, (char)0x70, (char)0x69, (char)0x72, (char)0x6e, (char)0x76, (char)0x74, (char)0x6f, (char)0x65, (char)0x63, (char)0x6f, (char)0x73, (char)0x65, (char)0x73, (char)0x72, (char)0x69, (char)0x69, (char)0x40, (char)0x6e, (char)0x65, (char)0x65, (char)0x65, (char)0x65, (char)0x77, (char)0x70, (char)0x70, (char)0x6e, (char)0x72, (char)0x6e, (char)0x65, (char)0x72, (char)0x32, (char)0x65, (char)0x2d, (char)0x77, (char)0x69, (char)0x6e, (char)0x70, (char)0x69, (char)0x6f, (char)0x76, (char)0x77, (char)0x72, (char)0x74, (char)0x77, (char)0x6e, (char)0x72, (char)0xfe, (char)0x98, (char)0xf3, (char)0xb4, (char)0xff, (char)0x3f, (char)0x2e, (char)0xdb, (char)0x59, (char)0xbd, (char)0x32, (char)0x02, (char)0x6a, (char)0x44, (char)0x03, (char)0x67, (char)0x9e, (char)0xe1, (char)0x98, (char)0x97, (char)0xed, (char)0x67, (char)0x6d, (char)0xb0, (char)0x8f, (char)0xa9, (char)0xb6, (char)0xf8, (char)0x4d, (char)0x92, (char)0x35, (char)0x19, (char)0x72, (char)0x72, (char)0x65, (char)0x74, (char)0x73, (char)0x6e, (char)0x65, (char)0x65, (char)0x69, (char)0x36, (char)0x72, (char)0x73, (char)0x2d, (char)0x70, (char)0x2d, (char)0x2d, (char)0x69, (char)0x6e, (char)0x72, (char)0x65, (char)0x32, (char)0x72, (char)0x77, (char)0x72, (char)0x73, (char)0x77, (char)0x73, (char)0x70, (char)0x2d, (char)0x2d, (char)0x69, (char)0x6c, (char)0x70, (char)0x74, (char)0x65, (char)0x69, (char)0x72, (char)0x74, (char)0x6e, (char)0x76, (char)0x65, (char)0x76, (char)0x76, (char)0x69, (char)0x69, (char)0x65, (char)0x70, (char)0x6e, (char)0x73, (char)0x6e, (char)0x36, (char)0x76, (char)0x70, (char)0x76, (char)0x6c, (char)0x6c, (char)0
(char)0x77, (char)0x65, (char)0x74, (char)0x72, (char)0x77, (char)0x40, (char)0x69, (char)0x65, (char)0x70, (char)0x31, (char)0x36, (char)0x72, (char)0x73, (char)0x2d, (char)0x72, (char)0x72, (char)0x32, (char)0x72, (char)0x6c, (char)0x77, (char)0x6e, (char)0x6f, (char)0x77, (char)0x6c, (char)0x74, (char)0x72, (char)0x2d, (char)0x6e, (char)0x65, (char)0x70, (char)0x6c, (char)0x72, (char)0x6f, (char)0x69, (char)0x2d, (char)0x2d, (char)0x69, (char)0x36, (char)0x69, (char)0x69, (char)0x76, (char)0x69, (char)0x69, (char)0x6d, (char)0x72, (char)0x73, (char)0x6f, (char)0x6d, (char)0x74, (char)0x70, (char)0x76, (char)0x6d, (char)0x6d, (char)0x69, (char)0x72, (char)0x70, (char)0x70, (char)0x2d, (char)0x31, (char)0x63, (char)0x6c, (char)0x65, (char)0x65, (char)0x6e, (char)0x2d, (char)0x77, (char)0x74, (char)0x73, (char)0x6c, (char)0x72, (char)0x6e, (char)0x65, (char)0x65, (char)0x2d, (char)0x6c, (char)0x69, (char)0x2d, (char)0x6e, (char)0x74, (char)0x70, (char)0x72, (char)0x77, (char)0x77, (char)0x65, (char)0x65, (char)0x65, (char)0x2d, (char)0x76, (char)0x6e, (char)0x72, (char)0x69, (char)0x69, (char)0x73, (char)0x65, (char)0x74, (char)0x73, (char)0x76, (char)0x72, (char)0x72, (char)0x72, (char)0x69, (char)0x72, (char)0x73, (char)0x72, (char)0x6f, (char)0x2e, (char)0x77, (char)0x2d, (char)0x2d, (char)0x6c, (char)0x6e, (char)0x65, (char)0x65, (char)0x6d, (char)0x73, (char)0x2e, (char)0x72, (char)0x65, (char)0x73, (char)0x40, (char)0x69, (char)0x32, (char)0x69, (char)0x32, (char)0x6e, (char)0x65, (char)0x32, (char)0x65, (char)0x74, (char)0x6d, (char)0x65, (char)0x74, (char)0x36, (char)0x6e, (char)0x72, (char)0x32, (char)0x6e, (char)0x65, (char)0x69, (char)0x32, (char)0x6f, (char)0x70, (char)0x72, (char)0x72, (char)0x65, (char)0x72, (char)0x72, (char)0x69, (char)0x6e, (char)0x6d, (char)0x69, (char)0x70, (char)0x6c, (char)0x6c, (char)0x65, (char)0x31, (char)0x72, (char)0x72, (char)0x73, (char)0x72, (char)0x70, (char)0x73, (char)0x72, (char)0x65, (char)0x65, (char)0x6e, (char)0x76, (char)0x69, (char)0x6d, (char)0x65, (char)0x6c, (char)0x65, (char)0x31, (char)0x74, (char)0x74, (char)0x72, (char)0x63, (char)0x2e, (char)0x69, (char)0x65, (char)0x2d, (char)0x6d, (char)0x72, (char)0x70, (char)0x6e, (char)0x6c, (char)0x65, (char)0x31, (char)0x73, (char)0x73, (char)0x40, (char)0x74, (char)0x72, (char)0x73, (char)0x2e, (char)0x74, (char)0x6e, (char)0x77, (char)0x6c, (char)0x6f, (char)0x70, (char)0x77, (char)0x76, (char)0x73, (char)0x72, (char)0x69, (char)0x77, (char)0x69, (char)0x6e, (char)0x69, (char)0x2d, (char)0x72, (char)0x70, (char)0x70, (char)0x73, (char)0x2e, (char)0x76, (char)0x73, (char)0x65, (char)0x72, (char)0x72, (char)0x74, (char)0x2d, (char)0x72, (char)0x65, (char)0x76, (char)0x69, (char)0x77, (char)0x72, (char)0x65, (char)0x2d, (char)0x72, (char)0x69, (char)0x36, (char)0x77, (char)0x77, (char)0x77, (char)0x40, (char)0x2d, (char)0x6d, (char)0x69, (char)0x74, (char)0x72, (char)0x2d, (char)0x32, (char)0x6f, (char)0x76, (char)0x72, (char)0x2d, (char)0x2d, (char)0x65, (char)0x2e, (char)0x2e, (char)0x72, (char)0x6e, (char)0x32, (char)0x74, (char)0x6c, (char)0x6e, (char)0x6c, (char)0x2e, (char)0x6d, (char)0x2d, (char)0x6f, (char)0x65, (char)0x72, (char)0x2d, (char)0x6e, (char)0x65, (char)0x65, (char)0x69, (char)0x40, (char)0x69, (char)0x77, (char)0x65, (char)0x6c, (char)0x2d, (char)0x69, (char)0x69, (char)0x65, (char)0x72, (char)0x72, (char)0x32, (char)0x40, (char)0x73, (char)0x65, (char)0x36, (char)0x76, (char)0x73, (char)0x72, (char)0x69, (char)0x63, (char)0x77, (char)0x72, (char)0x6c, (char)0x72, (char)0x6e, (char)0x74, (char)0x2d, (char)0x65, (char)0x69, (char)0x72, (char)0x70, (char)0x6d, (char)0x65, (char)0x6c, (char)0x73, (char)0x65, (char)0x6c, (char)0x32, (char)0x2d, (char)0x73, (char)0x70, (char)0x2d, (char)0x31, (char)0x72, (char)0x74, (char)0x2e, (char)0x65, (char)0x74, (char)0x72, (char)0x74, (char)0x72, (char)0x70, (char)0x69, (char)0x40, (char)0x36, (char)0x2d, (char)0x74, (char)0x72, (char)0x6c, (char)0x2d, (char)0x6e, (char)0x72, (char)0x6e, (char)0x6d, (char)0x63, (char)0x76, (char)0x74, (char)0x6d, (char)0
(char)0x69, (char)0x6c, (char)0x72, (char)0x76, (char)0x6d, (char)0x74, (char)0x6e, (char)0x73, (char)0x74, (char)0x72, (char)0x65, (char)0x63, (char)0x69, (char)0x65, (char)0x65, (char)0x72, (char)0x6f, (char)0x6e, (char)0x72, (char)0x72, (char)0x6c, (char)0x6e, (char)0x6e, (char)0x65, (char)0x6d, (char)0x74, (char)0x6c, (char)0x74, (char)0x65, (char)0x69, (char)0x2d, (char)0x6f, (char)0x69, (char)0x2e, (char)0x6e, (char)0x63, (char)0x65, (char)0x6c, (char)0x40, (char)0x70, (char)0x2d, (char)0x2d, (char)0x74, (char)0x73, (char)0x74, (char)0x40, (char)0x72, (char)0x74, (char)0x6c, (char)0x72, (char)0x6e, (char)0x6f, (char)0x73, (char)0x65, (char)0x74, (char)0x6d, (char)0x69, (char)0x32, (char)0x72, (char)0x65, (char)0x77, (char)0x6e, (char)0x76, (char)0x74, (char)0x73, (char)0x2d, (char)0x72, (char)0x6e, (char)0x69, (char)0x73, (char)0x40, (char)0x36, (char)0x2d, (char)0x6d, (char)0x2e, (char)0x65, (char)0x6d, (char)0x40, (char)0x69, (char)0x72, (char)0x72, (char)0x70, (char)0x65, (char)0x72, (char)0x76, (char)0x6c, (char)0x65, (char)0x76, (char)0x72, (char)0x65, (char)0x69, (char)0x65, (char)0x69, (char)0x6e, (char)0x72, (char)0x2d, (char)0x63, (char)0x72, (char)0x69, (char)0x6e, (char)0x72, (char)0x69, (char)0x6e, (char)0x69, (char)0x70, (char)0x6e, (char)0x2d, (char)0x69, (char)0x6c, (char)0x72, (char)0x2d, (char)0x65, (char)0x2d, (char)0x72, (char)0x6f, (char)0x65, (char)0x6e, (char)0x76, (char)0x6e, (char)0x40, (char)0x2d, (char)0x65, (char)0x72, (char)0x72, (char)0x6f, (char)0x6f, (char)0x72, (char)0x6c, (char)0x65, (char)0x74, (char)0x73, (char)0x72, (char)0x70, (char)0x77, (char)0x69, (char)0x69, (char)0x6d, (char)0x6c, (char)0x6d, (char)0x6e, (char)0x2d, (char)0x65, (char)0x65, (char)0x65, (char)0x74, (char)0x6c, (char)0x2d, (char)0x74, (char)0x6f, (char)0x2d, (char)0x74, (char)0x70, (char)0x72, (char)0x6e, (char)0x73, (char)0x72, (char)0x69, (char)0x72, (char)0x2e, (char)0x6d, (char)0x69, (char)0x65, (char)0x65, (char)0x32, (char)0x70, (char)0x6c, (char)0x6c, (char)0x65, (char)0x77, (char)0x2d, (char)0x72, (char)0x6f, (char)0x70, (char)0x76, (char)0x65, (char)0x2d, (char)0x72, (char)0x69, (char)0x6d, (char)0x72, (char)0x36, (char)0x40, (char)0x6d, (char)0x72, (char)0x6c, (char)0x6d, (char)0x77, (char)0x6c, (char)0x6e, (char)0x69, (char)0x72, (char)0x6d, (char)0x76, (char)0x73, (char)0x2e, (char)0x73, (char)0x72, (char)0x77, (char)0x73, (char)0x76, (char)0x2d, (char)0x73, (char)0x76, (char)0x6d, (char)0x76, (char)0x65, (char)0x69, (char)0x76, (char)0x63, (char)0x65, (char)0x72, (char)0x31, (char)0x72, (char)0x69, (char)0x76, (char)0x72, (char)0x65, (char)0x65, (char)0x2d, (char)0x73, (char)0x6d, (char)0x31, (char)0x72, (char)0x6e, (char)0x72, (char)0x2d, (char)0x2d, (char)0x36, (char)0x72, (char)0x73, (char)0x77, (char)0x2d, (char)0x77, (char)0x36, (char)0x76, (char)0x72, (char)0x6d, (char)0x65, (char)0x2d, (char)0x72, (char)0x70, (char)0x2d, (char)0x74, (char)0x32, (char)0x6c, (char)0x63, (char)0x6d, (char)0x6f, (char)0x6e, (char)0x2e, (char)0x2d, (char)0x69, (char)0x65, (char)0x73, (char)0x6d, (char)0x65, (char)0x73, (char)0x6e, (char)0x6d, (char)0x6c, (char)0x65, (char)0x6e, (char)0x72, (char)0x72, (char)0x72, (char)0x32, (char)0x70, (char)0x65, (char)0x73, (char)0x6c, (char)0x6d, (char)0x70, (char)0x6d, (char)0x72, (char)0x6f, (char)0x65, (char)0x6c, (char)0x76, (char)0x73, (char)0x63, (char)0x73, (char)0x65, (char)0x6c, (char)0x2d, (char)0x6e, (char)0x72, (char)0x65, (char)0x65, (char)0x72, (char)0x2d, (char)0x70, (char)0x6d, (char)0x69, (char)0x69, (char)0x65, (char)0x2d, (char)0x6c, (char)0x72, (char)0x69, (char)0x6c, (char)0x2d, (char)0x74, (char)0x65, (char)0x65, (char)0x69, (char)0x31, (char)0x72, (char)0x69, (char)0x6d, (char)0x69, (char)0x74, (char)0x74, (char)0x73, (char)0x65, (char)0x32, (char)0x2d, (char)0x6f, (char)0x2d, (char)0x70, (char)0x72, (char)0x6f, (char)0x65, (char)0x69, (char)0x73, (char)0x32, (char)0x6d, (char)0x65, (char)0x2d, (char)0x65, (char)0x74, (char)0x6d, (char)0x6d, (char)0x73, (char)0x76, (char)0x6c, (char)0x69, (char)0x65, (char)0x2d, (char)0x73, (char)0x74, (char)0
};
char c2[] = {
(char)0x5b, (char)0x52, (char)0xf1, (char)0x2d, (char)0x94, (char)0xcb, (char)0xb0, (char)0x86, (char)0xd8, (char)0xd3, (char)0xe3, (char)0x20, (char)0x88, (char)0x47, (char)0xcf, (char)0x5a, (char)0x49, (char)0xd2, (char)0x11, (char)0x30, (char)0x92, (char)0x17, (char)0x8d, (char)0xf4, (char)0x99, (char)0xf7, (char)0x6c, (char)0x8a, (char)0xbc, (char)0xe7, (char)0x5c, (char)0x58, (char)0x6a, (char)0x65, (char)0xed, (char)0x81, (char)0xdc, (char)0xdd, (char)0xcf, (char)0x83, (char)0xcd, (char)0xa4, (char)0xed, (char)0xa2, (char)0x5e, (char)0x63, (char)0xd9, (char)0x98, (char)0xf6, (char)0x2e, (char)0x15, (char)0x76, (char)0x9a, (char)0xc8, (char)0x8c, (char)0x42, (char)0x54, (char)0x44, (char)0xf4, (char)0x47, (char)0xf5, (char)0x96, (char)0xc9, (char)0x6e, (char)0x23, (char)0x09, (char)0x1a, (char)0x0d, (char)0xe3, (char)0x04, (char)0xe6, (char)0xed, (char)0x48, (char)0x49, (char)0x62, (char)0x31, (char)0xe8, (char)0x36, (char)0x04, (char)0xed, (char)0xb9, (char)0xe7, (char)0xa6, (char)0x35, (char)0x4d, (char)0xcd, (char)0xe3, (char)0xfa, (char)0xa0, (char)0xc8, (char)0x34, (char)0xbd, (char)0x62, (char)0x7b, (char)0xbc, (char)0xbe, (char)0x1c, (char)0x5b, (char)0x69, (char)0x1f, (char)0x9c, (char)0x30, (char)0x20, (char)0x48, (char)0x52, (char)0xd1, (char)0xb6, (char)0x5e, (char)0xa2, (char)0x6e, (char)0x06, (char)0x94, (char)0x72, (char)0x10, (char)0x56, (char)0x7c, (char)0x94, (char)0xa5, (char)0xc0, (char)0xaa, (char)0xea, (char)0x48, (char)0x61, (char)0x03, (char)0x14, (char)0x94, (char)0x09, (char)0x77, (char)0xd9, (char)0xa7, (char)0xfe, (char)0x78, (char)0x17, (char)0x95, (char)0x4f, (char)0x7e, (char)0xb0, (char)0x32, (char)0x63, (char)0x02, (char)0x17, (char)0x47, (char)0x1e, (char)0x7d, (char)0xb2, (char)0x7d, (char)0xb5, (char)0xcb, (char)0x9f, (char)0x61, (char)0x65, (char)0xed, (char)0x03, (char)0xd2, (char)0xdb, (char)0xd1, (char)0xb3, (char)0xd6, (char)0x1a, (char)0xf5, (char)0x67, (char)0x0b, (char)0x8b, (char)0x6b, (char)0x44, (char)0xf2, (char)0x62, (char)0x42, (char)0xc2, (char)0x4d, (char)0xe1, (char)0x5c, (char)0xfe, (char)0xc6, (char)0x19, (char)0x2b, (char)0xfb, (char)0x03, (char)0x0f, (char)0x1b, (char)0x89, (char)0x08, (char)0x86, (char)0x40, (char)0xca, (char)0x45, (char)0x15, (char)0xda, (char)0x65, (char)0xcc, (char)0x73, (char)0x00, (char)0x49, (char)0x4e, (char)0x48, (char)0x21, (char)0x25, (char)0xc6, (char)0xde, (char)0x26, (char)0x21, (char)0x1d, (char)0xea, (char)0x3c, (char)0x11, (char)0xac, (char)0xef, (char)0x34, (char)0x4c, (char)0x96, (char)0xcc, (char)0x5e, (char)0x26, (char)0xf3, (char)0xcd, (char)0x70, (char)0x0d, (char)0x62, (char)0xea, (char)0x09, (char)0x35, (char)0x2b, (char)0x1e, (char)0x60, (char)0xe4, (char)0x76, (char)0xd3, (char)0x65, (char)0x01, (char)0x8c, (char)0xab, (char)0xd4, (char)0x89, (char)0xad, (char)0x81, (char)0x9d, (char)0x04, (char)0x01, (char)0xd5, (char)0x55, (char)0x3c, (char)0xcb, (char)0x32, (char)0xe1, (char)0xb5, (char)0xd4, (char)0xda, (char)0xb4, (char)0xa9, (char)0x01, (char)0xb2, (char)0x10, (char)0xc7, (char)0xb1, (char)0xa9, (char)0x54, (char)0x66, (char)0x1d, (char)0xcc, (char)0xff, (char)0x54, (char)0x0b, (char)0x84, (char)0x37, (char)0xe0, (char)0x3a, (char)0xa5, (char)0x68, (char)0x80, (char)0x87, (char)0xbc, (char)0x3c, (char)0x0f, (char)0xda, (char)0x7e, (char)0x3c, (char)0x23, (char)0xfc, (char)0xd8, (char)0xc5, (char)0x52, (char)0xf7, (char)0x22, (char)0x12, (char)0x05, (char)0x9c, (char)0x68, (char)0x39, (char)0xb1, (char)0xed, (char)0x26, (char)0x24, (char)0x2b, (char)0x7e, (char)0x0b, (char)0xaf, (char)0x9e, (char)0x97, (char)0x45, (char)0x7b, (char)0xa9, (char)0xbc, (char)0x48, (char)0x0e, (char)0x66, (char)0x93, (char)0x32, (char)0x0d, (char)0x6b, (char)0xd6, (char)0xf0, (char)0x4f, (char)0x54, (char)0x18, (char)0xcd, (char)0xc9, (char)0x8c, (char)0xce, (char)0xc4, (char)0xa2, (char)0xff, (char)0x1e, (char)0x69, (char)0x17, (char)0x7e, (char)0xf4, (char)0x99, (char)0x09, (char)0x68, (char)0xa1, (char)0x9e, (char)0x1f, (char)0xbf, (char)0x90, (char)0xdc, (char)0x77, (char)0x5d, (char)0x50, (char)0x2b, (char)0x0e, (char)0
(char)0x50, (char)0xcc, (char)0x52, (char)0xc7, (char)0x4b, (char)0x16, (char)0x33, (char)0xa5, (char)0xde, (char)0x20, (char)0xed, (char)0x6a, (char)0xa7, (char)0x58, (char)0x5e, (char)0x4e, (char)0x7e, (char)0x29, (char)0xab, (char)0xb9, (char)0x65, (char)0x9d, (char)0x17, (char)0xe0, (char)0x1e, (char)0x79, (char)0x77, (char)0xf6, (char)0x1e, (char)0xa0, (char)0xcb, (char)0x0c, (char)0xf7, (char)0xc0, (char)0xe4, (char)0xf6, (char)0x3b, (char)0x60, (char)0x81, (char)0xfe, (char)0xed, (char)0xd9, (char)0x42, (char)0xa9, (char)0x61, (char)0x9d, (char)0xa8, (char)0xd7, (char)0xe8, (char)0xaa, (char)0x97, (char)0xad, (char)0xbb, (char)0xba, (char)0x13, (char)0x6e, (char)0x05, (char)0xa5, (char)0xce, (char)0x7a, (char)0x65, (char)0x6f, (char)0x55, (char)0xe3, (char)0xcf, (char)0xbc, (char)0x67, (char)0x14, (char)0x64, (char)0x57, (char)0x9c, (char)0x46, (char)0x14, (char)0xd6, (char)0x1d, (char)0x39, (char)0x1c, (char)0xd3, (char)0xe8, (char)0x98, (char)0x20, (char)0x5a, (char)0x1a, (char)0x05, (char)0x3b, (char)0x27, (char)0xd5, (char)0x84, (char)0xca, (char)0xd4, (char)0x0b, (char)0xc4, (char)0x1e, (char)0xd8, (char)0x46, (char)0x29, (char)0x48, (char)0x95, (char)0xdb, (char)0xe5, (char)0x58, (char)0x8a, (char)0x51, (char)0xc7, (char)0x74, (char)0x7f, (char)0x53, (char)0xa8, (char)0xbb, (char)0x58, (char)0xc0, (char)0x5b, (char)0xe1, (char)0xa7, (char)0x27, (char)0x36, (char)0x6c, (char)0xa6, (char)0x70, (char)0xec, (char)0x88, (char)0xcd, (char)0x9a, (char)0x70, (char)0xe1, (char)0xa0, (char)0xc7, (char)0xdd, (char)0x60, (char)0x71, (char)0xf4, (char)0x2a, (char)0x51, (char)0x98, (char)0x8e, (char)0xab, (char)0xb8, (char)0x13, (char)0x03, (char)0x48, (char)0x5f, (char)0x44, (char)0xf8, (char)0x88, (char)0xd9, (char)0x7d, (char)0xd3, (char)0xf1, (char)0x5f, (char)0xc4, (char)0x2b, (char)0x44, (char)0x15, (char)0x57, (char)0x31, (char)0xa4, (char)0xa1, (char)0xdb, (char)0x6d, (char)0x2a, (char)0x5a, (char)0x5a, (char)0xf7, (char)0xde, (char)0xd5, (char)0x23, (char)0x38, (char)0x00, (char)0xe5, (char)0x5c, (char)0x55, (char)0xe7, (char)0x37, (char)0x9c, (char)0xcb, (char)0x8b, (char)0xc0, (char)0x33, (char)0x42, (char)0x68, (char)0x23, (char)0x84, (char)0x7d, (char)0x89, (char)0x9d, (char)0xae, (char)0x59, (char)0x18, (char)0xae, (char)0xea, (char)0x46, (char)0x3f, (char)0xac, (char)0x57, (char)0x0d, (char)0x5d, (char)0x49, (char)0x14, (char)0x50, (char)0xe5, (char)0x70, (char)0x17, (char)0x73, (char)0x09, (char)0x11, (char)0x93, (char)0x6b, (char)0x02, (char)0x22, (char)0xb7, (char)0x63, (char)0xc9, (char)0xe6, (char)0xa4, (char)0xe3, (char)0xb1, (char)0xf7, (char)0xa6, (char)0x58, (char)0x8d, (char)0x14, (char)0xa1, (char)0xda, (char)0x6a, (char)0xb9, (char)0x38, (char)0xf9, (char)0x20, (char)0x45, (char)0x8c, (char)0xe6, (char)0x32, (char)0x23, (char)0x9d, (char)0x5f, (char)0xba, (char)0xcb, (char)0xb4, (char)0x95, (char)0xf9, (char)0xa9, (char)0x5c, (char)0x60, (char)0x03, (char)0x5a, (char)0x8c, (char)0xa7, (char)0xb9, (char)0x65, (char)0xa8, (char)0x84, (char)0x38, (char)0xc0, (char)0x25, (char)0xe6, (char)0xa7, (char)0xc0, (char)0x3b, (char)0xbc, (char)0x11, (char)0xed, (char)0x0e, (char)0x9a, (char)0x6f, (char)0xfe, (char)0x61, (char)0x79, (char)0x86, (char)0x92, (char)0x3a, (char)0xce, (char)0xe0, (char)0xb7, (char)0x70, (char)0xad, (char)0xe0, (char)0xcc, (char)0x88, (char)0x47, (char)0xd9, (char)0x2a, (char)0x3d, (char)0x41, (char)0x06, (char)0x77, (char)0x41, (char)0xbe, (char)0x3f, (char)0x55, (char)0x31, (char)0x54, (char)0x10, (char)0x14, (char)0x5b, (char)0xdf, (char)0x88, (char)0xb2, (char)0x9f, (char)0xff, (char)0x11, (char)0xb8, (char)0x11, (char)0xdc, (char)0x5e, (char)0x64, (char)0xf9, (char)0x97, (char)0x8a, (char)0x26, (char)0x6a, (char)0x44, (char)0xb4, (char)0x83, (char)0x83, (char)0x9b, (char)0x81, (char)0xaa, (char)0xfd, (char)0xb5, (char)0x8b, (char)0x16, (char)0x18, (char)0x2e, (char)0x5c, (char)0xe4, (char)0x5b, (char)0x8f, (char)0xdd, (char)0x7c, (char)0x1f, (char)0x33, (char)0x2f, (char)0xef, (char)0x57, (char)0x8c, (char)0x6a, (char)0x3f, (char)0x3c, (char)0x19, (char)0x5e, (char)0
};
SrsHandshakeBytes bytes;
ASSERT_EQ(ERROR_SUCCESS, bytes.create_c0c1());
memcpy(bytes.c0c1, c0c1, 1537);
ASSERT_EQ(ERROR_SUCCESS, bytes.create_s0s1s2());
memcpy(bytes.s0s1s2, s0s1s2, 3073);
ASSERT_EQ(ERROR_SUCCESS, bytes.create_c2());
memcpy(bytes.c2, c2, 1536);
MockEmptyIO eio;
SrsSimpleHandshake hs;
EXPECT_EQ(ERROR_SUCCESS, hs.handshake_with_client(&bytes, &eio));
EXPECT_EQ(ERROR_SUCCESS, hs.handshake_with_server(&bytes, &eio));
}
VOID TEST(ProtocolHandshakeTest, ComplexHandshake)
{
SrsHandshakeBytes bytes;
if (true) {
char c0c1[] = {
(char)0x03, (char)0x01, (char)0x14, (char)0xf7, (char)0x4e, (char)0x80, (char)0x00, (char)0x07, (char)0x02, (char)0xac, (char)0x14, (char)0x98, (char)0x57, (char)0x0a, (char)0x07, (char)0x58, (char)0x44, (char)0x96, (char)0x47, (char)0xb5, (char)0x9a, (char)0x73, (char)0xf6, (char)0x07, (char)0x0f, (char)0x49, (char)0x0d, (char)0x72, (char)0xb8, (char)0x16, (char)0xbb, (char)0xb2, (char)0xb7, (char)0x61, (char)0x17, (char)0x79, (char)0xa0, (char)0xe9, (char)0x98, (char)0xca, (char)0xb2, (char)0x86, (char)0x64, (char)0x5f, (char)0x65, (char)0x3e, (char)0xfc, (char)0x4d, (char)0xc0, (char)0x0e, (char)0x4c, (char)0xfa, (char)0x91, (char)0xc7, (char)0x0f, (char)0x2e, (char)0x57, (char)0x31, (char)0x4b, (char)0x96, (char)0xef, (char)0xc9, (char)0x81, (char)0x02, (char)0x00, (char)0x54, (char)0x25, (char)0x2b, (char)0xb2, (char)0x0d, (char)0x7c, (char)0xee, (char)0xba, (char)0xdb, (char)0xe4, (char)0x06, (char)0x78, (char)0xcd, (char)0x70, (char)0x2c, (char)0x54, (char)0x5a, (char)0x3a, (char)0x03, (char)0x13, (char)0x2e, (char)0xe7, (char)0x4b, (char)0x87, (char)0x40, (char)0x77, (char)0x0b, (char)0x9f, (char)0xd2, (char)0xab, (char)0x32, (char)0x07, (char)0x6f, (char)0x1e, (char)0x75, (char)0x74, (char)0xe9, (char)0xc7, (char)0x44, (char)0xd9, (char)0x76, (char)0x53, (char)0xba, (char)0xe2, (char)0x52, (char)0xfa, (char)0xcc, (char)0xef, (char)0x34, (char)0xd5, (char)0x14, (char)0x61, (char)0xac, (char)0xcc, (char)0x63, (char)0xfd, (char)0x2b, (char)0x2d, (char)0xb3, (char)0xb8, (char)0xdd, (char)0x8a, (char)0x51, (char)0x9a, (char)0x2d, (char)0x0e, (char)0xfa, (char)0x84, (char)0x25, (char)0x55, (char)0xb2, (char)0xb7, (char)0x94, (char)0x54, (char)0x68, (char)0xfb, (char)0x94, (char)0xdf, (char)0xd8, (char)0xeb, (char)0x43, (char)0xd0, (char)0x11, (char)0x70, (char)0x8f, (char)0xf5, (char)0x48, (char)0xfc, (char)0x69, (char)0x4d, (char)0x5b, (char)0xc6, (char)0x53, (char)0x8a, (char)0x22, (char)0xea, (char)0x62, (char)0x84, (char)0x89, (char)0x6b, (char)0xfe, (char)0x4e, (char)0xab, (char)0x51, (char)0x98, (char)0xf4, (char)0x4f, (char)0xae, (char)0xf8, (char)0xdf, (char)0xac, (char)0x43, (char)0xed, (char)0x5a, (char)0x04, (char)0x97, (char)0xc4, (char)0xbe, (char)0x44, (char)0x5b, (char)0x99, (char)0x20, (char)0x68, (char)0x67, (char)0x0f, (char)0xe3, (char)0xfa, (char)0x4c, (char)0x9d, (char)0xe7, (char)0x0b, (char)0x3f, (char)0x80, (char)0x7c, (char)0x4c, (char)0x35, (char)0xf6, (char)0xdd, (char)0x20, (char)0x05, (char)0xfd, (char)0x0f, (char)0x39, (char)0xb7, (char)0x36, (char)0x45, (char)0x4c, (char)0xb7, (char)0x62, (char)0x92, (char)0x35, (char)0x2a, (char)0xcd, (char)0xb9, (char)0x49, (char)0xea, (char)0x12, (char)0x0b, (char)0x5f, (char)0x39, (char)0xae, (char)0x3b, (char)0x49, (char)0x29, (char)0xe6, (char)0x30, (char)0xc7, (char)0x7c, (char)0x77, (char)0xaf, (char)0x00, (char)0x43, (char)0x4d, (char)0x06, (char)0x45, (char)0x72, (char)0x73, (char)0x25, (char)0x71, (char)0x5e, (char)0x35, (char)0x04, (char)0xbd, (char)0xe9, (char)0x48, (char)0x23, (char)0x64, (char)0x4d, (char)0x15, (char)0x0b, (char)0xc5, (char)0x3f, (char)0x6e, (char)0x3a, (char)0xd5, (char)0xd5, (char)0xa6, (char)0xae, (char)0x3b, (char)0x4c, (char)0x66, (char)0x6a, (char)0x70, (char)0x8b, (char)0xf3, (char)0x6a, (char)0x43, (char)0xc4, (char)0xb9, (char)0xbd, (char)0xa0, (char)0x09, (char)0x72, (char)0xbc, (char)0xce, (char)0x7a, (char)0xea, (char)0x49, (char)0xf2, (char)0x86, (char)0xa7, (char)0xd8, (char)0x4a, (char)0x87, (char)0x28, (char)0xca, (char)0x2c, (char)0x53, (char)0xee, (char)0x96, (char)0x0b, (char)0xbe, (char)0x15, (char)0x14, (char)0xa8, (char)0x00, (char)0xca, (char)0x76, (char)0x08, (char)0x4d, (char)0x0f, (char)0xef, (char)0x78, (char)0x4b, (char)0xf6, (char)0x47, (char)0x60, (char)0xfc, (char)0x16, (char)0x00, (char)0x7c, (char)0x6b, (char)0x49, (char)0x39, (char)0x64, (char)0x36, (char)0xee, (char)0x45, (char)0x3a, (char)0x9a, (char)0xa5, (char)0xbf, (char)0xfb, (char)0x7b, (char)0xe7, (char)0xcf, (char)0x42, (char)0x82, (char)0x48, (char)0x1b, (char)0x30, (char)0xfe, (char)0x0d, (char)0xba, (char)0x10, (ch
(char)0x83, (char)0x8b, (char)0x8c, (char)0x2d, (char)0x24, (char)0x0e, (char)0x30, (char)0xb1, (char)0x84, (char)0xa2, (char)0xbe, (char)0x2c, (char)0x86, (char)0xe6, (char)0x42, (char)0x82, (char)0xaa, (char)0x37, (char)0x64, (char)0x55, (char)0x51, (char)0xbc, (char)0xde, (char)0xc0, (char)0x63, (char)0x88, (char)0xf6, (char)0x31, (char)0x71, (char)0x52, (char)0xd5, (char)0x34, (char)0x0f, (char)0x8e, (char)0xcb, (char)0x28, (char)0x65, (char)0x93, (char)0x1a, (char)0x66, (char)0x3b, (char)0x21, (char)0x00, (char)0xaa, (char)0x7a, (char)0xda, (char)0x2d, (char)0xf6, (char)0x7e, (char)0xb5, (char)0x27, (char)0x79, (char)0xf4, (char)0x50, (char)0x3b, (char)0x10, (char)0x6b, (char)0x3c, (char)0xd7, (char)0x99, (char)0x9d, (char)0xf6, (char)0xc5, (char)0x01, (char)0x91, (char)0xa0, (char)0xd5, (char)0x4f, (char)0xd3, (char)0x76, (char)0x54, (char)0xa8, (char)0x5c, (char)0x35, (char)0x1d, (char)0xe2, (char)0x35, (char)0x6a, (char)0x68, (char)0x67, (char)0x03, (char)0xc4, (char)0x1f, (char)0xe9, (char)0x60, (char)0xb8, (char)0x49, (char)0xb1, (char)0x9a, (char)0x40, (char)0xd9, (char)0x3c, (char)0x4c, (char)0x73, (char)0xaa, (char)0x88, (char)0x63, (char)0xaf, (char)0xfe, (char)0xe8, (char)0xa8, (char)0x0c, (char)0x96, (char)0xbe, (char)0xb4, (char)0x65, (char)0x7c, (char)0x27, (char)0xfb, (char)0xc1, (char)0x27, (char)0x24, (char)0x58, (char)0xab, (char)0x4b, (char)0xa0, (char)0x5a, (char)0x7d, (char)0xc7, (char)0xca, (char)0x2d, (char)0xa5, (char)0x22, (char)0xa7, (char)0xed, (char)0x26, (char)0x87, (char)0xd5, (char)0x44, (char)0x1a, (char)0xc7, (char)0xdd, (char)0xfb, (char)0x60, (char)0xfc, (char)0xe5, (char)0x50, (char)0xd9, (char)0x8d, (char)0xa7, (char)0xdb, (char)0x78, (char)0xb6, (char)0x9d, (char)0x80, (char)0x0f, (char)0xb9, (char)0x5f, (char)0xa7, (char)0x53, (char)0x92, (char)0x5d, (char)0x18, (char)0xce, (char)0x89, (char)0xc2, (char)0x69, (char)0xee, (char)0xcf, (char)0xb6, (char)0x66, (char)0xe5, (char)0x66, (char)0xd2, (char)0xe3, (char)0x35, (char)0x74, (char)0x0b, (char)0x83, (char)0xb6, (char)0xde, (char)0xf1, (char)0xfb, (char)0xb4, (char)0x1d, (char)0x4b, (char)0x94, (char)0x95, (char)0x06, (char)0x82, (char)0xe7, (char)0x1c, (char)0xf8, (char)0xc5, (char)0xe6, (char)0xd0, (char)0xf2, (char)0x17, (char)0x37, (char)0x44, (char)0xfe, (char)0x99, (char)0x43, (char)0x82, (char)0xbb, (char)0x88, (char)0xe4, (char)0x43, (char)0x67, (char)0xcc, (char)0x4d, (char)0x5f, (char)0xa6, (char)0x26, (char)0xd7, (char)0x53, (char)0xd6, (char)0x45, (char)0x96, (char)0x2b, (char)0x63, (char)0xd1, (char)0x2a, (char)0xa1, (char)0x2c, (char)0x41, (char)0x59, (char)0x8b, (char)0xb8, (char)0xc1, (char)0x89, (char)0x03, (char)0x3a, (char)0x61, (char)0x13, (char)0xc4, (char)0x2c, (char)0x37, (char)0xa5, (char)0xbf, (char)0xd7, (char)0xdb, (char)0xd8, (char)0x53, (char)0x5f, (char)0xa1, (char)0xdb, (char)0xdb, (char)0xa5, (char)0x73, (char)0xb6, (char)0xf7, (char)0x74, (char)0xa0, (char)0xf8, (char)0x93, (char)0xf5, (char)0x61, (char)0xee, (char)0x3c, (char)0xe7, (char)0x00, (char)0x01, (char)0x98, (char)0xe0, (char)0xa1, (char)0x22, (char)0xb6, (char)0x9a, (char)0x83, (char)0x44, (char)0xa1, (char)0xe6, (char)0x70, (char)0x56, (char)0x65, (char)0x92, (char)0x1e, (char)0xf0, (char)0xbc, (char)0x73, (char)0xa5, (char)0x7a, (char)0xc1, (char)0x1a, (char)0x02, (char)0xf9, (char)0xd4, (char)0xc4, (char)0x7c, (char)0x81, (char)0xda, (char)0x15, (char)0xc0, (char)0xd4, (char)0x25, (char)0xdc, (char)0x17, (char)0xa6, (char)0x0d, (char)0x90, (char)0x55, (char)0xf2, (char)0x10, (char)0xf8, (char)0xa7, (char)0x71, (char)0x9b, (char)0xed, (char)0xdf, (char)0xdf, (char)0xa1, (char)0xe4, (char)0xb9, (char)0x12, (char)0x6b, (char)0x05, (char)0x3e, (char)0x83, (char)0x99, (char)0x49, (char)0xbf, (char)0x66, (char)0xbb, (char)0xf6, (char)0x76, (char)0xd3, (char)0xa9, (char)0x24, (char)0x61, (char)0x8c, (char)0x25, (char)0x49, (char)0xd0, (char)0xf7, (char)0x83, (char)0x44, (char)0xfb, (char)0x27, (char)0xe2, (char)0x7d, (char)0x69, (char)0x6d, (char)0x34, (char)0x67, (char)0xed, (char)0x39, (char)0x89, (char)0x02, (char)0xcb, (ch
};
char s0s1s2[] = {
(char)0x03, (char)0xac, (char)0x44, (char)0x29, (char)0x53, (char)0x04, (char)0x05, (char)0x00, (char)0x01, (char)0x6e, (char)0x65, (char)0x69, (char)0x2d, (char)0x69, (char)0x2d, (char)0x69, (char)0x73, (char)0x6e, (char)0x69, (char)0x73, (char)0x6c, (char)0x65, (char)0x72, (char)0x69, (char)0x72, (char)0x76, (char)0x65, (char)0x72, (char)0x69, (char)0x77, (char)0x74, (char)0x2e, (char)0x6e, (char)0x72, (char)0x76, (char)0x72, (char)0x65, (char)0x72, (char)0x70, (char)0x72, (char)0x69, (char)0x69, (char)0x70, (char)0x72, (char)0x73, (char)0x6e, (char)0x65, (char)0x72, (char)0x72, (char)0x6e, (char)0x2d, (char)0x65, (char)0x74, (char)0x72, (char)0x6c, (char)0x69, (char)0x74, (char)0x69, (char)0x65, (char)0x40, (char)0x69, (char)0x69, (char)0x76, (char)0x77, (char)0x2d, (char)0x73, (char)0x65, (char)0x72, (char)0x72, (char)0x76, (char)0x73, (char)0x72, (char)0x2e, (char)0x2d, (char)0x76, (char)0x65, (char)0x31, (char)0x65, (char)0x6d, (char)0x6d, (char)0x73, (char)0x69, (char)0x73, (char)0x74, (char)0x2e, (char)0x74, (char)0x72, (char)0x65, (char)0x65, (char)0x72, (char)0x65, (char)0x2d, (char)0x74, (char)0x69, (char)0x31, (char)0x65, (char)0x2d, (char)0x6f, (char)0x77, (char)0x2e, (char)0x76, (char)0x77, (char)0x2d, (char)0x77, (char)0x72, (char)0x65, (char)0x65, (char)0x31, (char)0x74, (char)0x73, (char)0x70, (char)0x74, (char)0x6e, (char)0x72, (char)0x6e, (char)0x73, (char)0x6d, (char)0x2e, (char)0x69, (char)0x72, (char)0x2d, (char)0x65, (char)0x69, (char)0x77, (char)0x69, (char)0x76, (char)0x72, (char)0x77, (char)0x72, (char)0x32, (char)0x6e, (char)0x65, (char)0x6c, (char)0x2e, (char)0x2d, (char)0x6e, (char)0x69, (char)0x6d, (char)0x6c, (char)0x73, (char)0x65, (char)0x73, (char)0x70, (char)0x2d, (char)0x65, (char)0x72, (char)0x40, (char)0x72, (char)0x74, (char)0x6e, (char)0x6e, (char)0x6d, (char)0x6f, (char)0x70, (char)0x74, (char)0x73, (char)0x2d, (char)0x63, (char)0x69, (char)0x32, (char)0x31, (char)0x2d, (char)0x40, (char)0x69, (char)0x70, (char)0x2d, (char)0x2d, (char)0x72, (char)0x69, (char)0x74, (char)0x63, (char)0x6f, (char)0x69, (char)0x69, (char)0x65, (char)0x6e, (char)0x32, (char)0x6f, (char)0x6c, (char)0x6e, (char)0x72, (char)0x73, (char)0x77, (char)0x65, (char)0x65, (char)0x72, (char)0x32, (char)0x6d, (char)0x65, (char)0x6c, (char)0x2d, (char)0x72, (char)0x6e, (char)0x65, (char)0x6d, (char)0x31, (char)0x65, (char)0x74, (char)0x2d, (char)0x6f, (char)0x72, (char)0x65, (char)0x63, (char)0x69, (char)0x40, (char)0x70, (char)0x2d, (char)0x65, (char)0x6d, (char)0x2d, (char)0x77, (char)0x63, (char)0x63, (char)0x74, (char)0x40, (char)0x36, (char)0x2d, (char)0x72, (char)0x65, (char)0x70, (char)0x2d, (char)0x6e, (char)0x69, (char)0x6d, (char)0x65, (char)0x74, (char)0x70, (char)0x76, (char)0x40, (char)0x76, (char)0x72, (char)0x72, (char)0x69, (char)0x77, (char)0x76, (char)0x69, (char)0x74, (char)0x74, (char)0x65, (char)0x31, (char)0x6d, (char)0x2e, (char)0x6f, (char)0x72, (char)0x73, (char)0x73, (char)0x6c, (char)0x40, (char)0x36, (char)0x72, (char)0x70, (char)0x72, (char)0x70, (char)0x72, (char)0x69, (char)0x32, (char)0x6c, (char)0x77, (char)0x70, (char)0x76, (char)0x65, (char)0x72, (char)0x76, (char)0x63, (char)0x65, (char)0x65, (char)0x77, (char)0x72, (char)0x6e, (char)0x2e, (char)0x76, (char)0x69, (char)0x69, (char)0x2e, (char)0x40, (char)0x72, (char)0x2e, (char)0x2e, (char)0x72, (char)0x73, (char)0x6e, (char)0x72, (char)0x72, (char)0x6e, (char)0x70, (char)0x40, (char)0x77, (char)0x65, (char)0x77, (char)0x65, (char)0x70, (char)0x63, (char)0x74, (char)0x2d, (char)0x70, (char)0x72, (char)0x2d, (char)0x74, (char)0x72, (char)0x31, (char)0x65, (char)0x6e, (char)0x2d, (char)0x76, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x74, (char)0x76, (char)0x2d, (char)0x74, (char)0x65, (char)0x2e, (char)0x2d, (char)0x6c, (char)0x76, (char)0x2d, (char)0x6c, (char)0x70, (char)0x73, (char)0x6d, (char)0x65, (char)0x72, (char)0x31, (char)0x31, (char)0x36, (char)0x76, (char)0x73, (char)0x73, (char)0x6e, (char)0x2d, (char)0x6e, (char)0x73, (char)0x72, (char)0x2d, (char)0x6f, (char)0x6c, (char)0x65, (char)0x74, (char)0x77, (ch
(char)0x77, (char)0x69, (char)0x69, (char)0x72, (char)0x65, (char)0x77, (char)0x6c, (char)0x72, (char)0x2d, (char)0x69, (char)0x72, (char)0x31, (char)0x6e, (char)0x65, (char)0x70, (char)0x72, (char)0x74, (char)0x76, (char)0x6c, (char)0x2e, (char)0x72, (char)0x65, (char)0x72, (char)0x6c, (char)0x73, (char)0x6c, (char)0x2e, (char)0x2e, (char)0x72, (char)0x2d, (char)0x6e, (char)0x63, (char)0x32, (char)0x2e, (char)0x65, (char)0x2d, (char)0x65, (char)0x69, (char)0x2d, (char)0x65, (char)0x70, (char)0x6e, (char)0x72, (char)0x72, (char)0x32, (char)0x2e, (char)0x73, (char)0x70, (char)0x77, (char)0x65, (char)0x73, (char)0x77, (char)0x73, (char)0x40, (char)0x40, (char)0x73, (char)0x63, (char)0x2e, (char)0x65, (char)0x76, (char)0x70, (char)0x65, (char)0x69, (char)0x65, (char)0x70, (char)0x73, (char)0x40, (char)0x65, (char)0x73, (char)0x2d, (char)0x2d, (char)0x2e, (char)0x2e, (char)0x73, (char)0x65, (char)0x6f, (char)0x65, (char)0x65, (char)0x6d, (char)0x76, (char)0x70, (char)0x6d, (char)0x69, (char)0x70, (char)0x70, (char)0x69, (char)0x2e, (char)0x76, (char)0x6e, (char)0x72, (char)0x72, (char)0x72, (char)0x6d, (char)0x73, (char)0x6f, (char)0x73, (char)0x72, (char)0x72, (char)0x72, (char)0x77, (char)0x70, (char)0x65, (char)0x69, (char)0x72, (char)0x73, (char)0x6e, (char)0x69, (char)0x65, (char)0x65, (char)0x74, (char)0x65, (char)0x69, (char)0x40, (char)0x63, (char)0x69, (char)0x70, (char)0x6c, (char)0x6e, (char)0x2d, (char)0x65, (char)0x69, (char)0x72, (char)0x63, (char)0x6c, (char)0x72, (char)0x2e, (char)0x36, (char)0x69, (char)0x72, (char)0x6c, (char)0x6c, (char)0x2d, (char)0x6f, (char)0x76, (char)0x69, (char)0x6f, (char)0x2d, (char)0x6d, (char)0x6c, (char)0x72, (char)0x72, (char)0x2e, (char)0x70, (char)0x73, (char)0x6d, (char)0x6f, (char)0x2e, (char)0x6e, (char)0x69, (char)0x65, (char)0x65, (char)0x2d, (char)0x6d, (char)0x76, (char)0x6e, (char)0x69, (char)0x73, (char)0x73, (char)0x73, (char)0x74, (char)0x63, (char)0x65, (char)0x76, (char)0x2e, (char)0x77, (char)0x2d, (char)0x36, (char)0x73, (char)0x69, (char)0x2d, (char)0x72, (char)0x72, (char)0x6c, (char)0x36, (char)0x74, (char)0x72, (char)0x6d, (char)0x65, (char)0x2d, (char)0x65, (char)0x2e, (char)0x6d, (char)0x31, (char)0x72, (char)0x6f, (char)0x74, (char)0x76, (char)0x31, (char)0x65, (char)0x6d, (char)0x69, (char)0x72, (char)0x69, (char)0x69, (char)0x2d, (char)0x72, (char)0x73, (char)0x72, (char)0x72, (char)0x76, (char)0x31, (char)0x6e, (char)0x2d, (char)0x69, (char)0x6e, (char)0x77, (char)0x70, (char)0x69, (char)0x72, (char)0x6e, (char)0x76, (char)0x74, (char)0x6f, (char)0x65, (char)0x63, (char)0x6f, (char)0x73, (char)0x65, (char)0x73, (char)0x72, (char)0x69, (char)0x69, (char)0x40, (char)0x6e, (char)0x65, (char)0x65, (char)0x65, (char)0x65, (char)0x77, (char)0x70, (char)0x70, (char)0x6e, (char)0x72, (char)0x6e, (char)0x65, (char)0x72, (char)0x32, (char)0x65, (char)0x2d, (char)0x77, (char)0x69, (char)0x6e, (char)0x70, (char)0x69, (char)0x6f, (char)0x76, (char)0x77, (char)0x72, (char)0x74, (char)0x77, (char)0x6e, (char)0x72, (char)0xfe, (char)0x98, (char)0xf3, (char)0xb4, (char)0xff, (char)0x3f, (char)0x2e, (char)0xdb, (char)0x59, (char)0xbd, (char)0x32, (char)0x02, (char)0x6a, (char)0x44, (char)0x03, (char)0x67, (char)0x9e, (char)0xe1, (char)0x98, (char)0x97, (char)0xed, (char)0x67, (char)0x6d, (char)0xb0, (char)0x8f, (char)0xa9, (char)0xb6, (char)0xf8, (char)0x4d, (char)0x92, (char)0x35, (char)0x19, (char)0x72, (char)0x72, (char)0x65, (char)0x74, (char)0x73, (char)0x6e, (char)0x65, (char)0x65, (char)0x69, (char)0x36, (char)0x72, (char)0x73, (char)0x2d, (char)0x70, (char)0x2d, (char)0x2d, (char)0x69, (char)0x6e, (char)0x72, (char)0x65, (char)0x32, (char)0x72, (char)0x77, (char)0x72, (char)0x73, (char)0x77, (char)0x73, (char)0x70, (char)0x2d, (char)0x2d, (char)0x69, (char)0x6c, (char)0x70, (char)0x74, (char)0x65, (char)0x69, (char)0x72, (char)0x74, (char)0x6e, (char)0x76, (char)0x65, (char)0x76, (char)0x76, (char)0x69, (char)0x69, (char)0x65, (char)0x70, (char)0x6e, (char)0x73, (char)0x6e, (char)0x36, (char)0x76, (char)0x70, (char)0x76, (char)0x6c, (char)0x6c, (ch
(char)0x77, (char)0x65, (char)0x74, (char)0x72, (char)0x77, (char)0x40, (char)0x69, (char)0x65, (char)0x70, (char)0x31, (char)0x36, (char)0x72, (char)0x73, (char)0x2d, (char)0x72, (char)0x72, (char)0x32, (char)0x72, (char)0x6c, (char)0x77, (char)0x6e, (char)0x6f, (char)0x77, (char)0x6c, (char)0x74, (char)0x72, (char)0x2d, (char)0x6e, (char)0x65, (char)0x70, (char)0x6c, (char)0x72, (char)0x6f, (char)0x69, (char)0x2d, (char)0x2d, (char)0x69, (char)0x36, (char)0x69, (char)0x69, (char)0x76, (char)0x69, (char)0x69, (char)0x6d, (char)0x72, (char)0x73, (char)0x6f, (char)0x6d, (char)0x74, (char)0x70, (char)0x76, (char)0x6d, (char)0x6d, (char)0x69, (char)0x72, (char)0x70, (char)0x70, (char)0x2d, (char)0x31, (char)0x63, (char)0x6c, (char)0x65, (char)0x65, (char)0x6e, (char)0x2d, (char)0x77, (char)0x74, (char)0x73, (char)0x6c, (char)0x72, (char)0x6e, (char)0x65, (char)0x65, (char)0x2d, (char)0x6c, (char)0x69, (char)0x2d, (char)0x6e, (char)0x74, (char)0x70, (char)0x72, (char)0x77, (char)0x77, (char)0x65, (char)0x65, (char)0x65, (char)0x2d, (char)0x76, (char)0x6e, (char)0x72, (char)0x69, (char)0x69, (char)0x73, (char)0x65, (char)0x74, (char)0x73, (char)0x76, (char)0x72, (char)0x72, (char)0x72, (char)0x69, (char)0x72, (char)0x73, (char)0x72, (char)0x6f, (char)0x2e, (char)0x77, (char)0x2d, (char)0x2d, (char)0x6c, (char)0x6e, (char)0x65, (char)0x65, (char)0x6d, (char)0x73, (char)0x2e, (char)0x72, (char)0x65, (char)0x73, (char)0x40, (char)0x69, (char)0x32, (char)0x69, (char)0x32, (char)0x6e, (char)0x65, (char)0x32, (char)0x65, (char)0x74, (char)0x6d, (char)0x65, (char)0x74, (char)0x36, (char)0x6e, (char)0x72, (char)0x32, (char)0x6e, (char)0x65, (char)0x69, (char)0x32, (char)0x6f, (char)0x70, (char)0x72, (char)0x72, (char)0x65, (char)0x72, (char)0x72, (char)0x69, (char)0x6e, (char)0x6d, (char)0x69, (char)0x70, (char)0x6c, (char)0x6c, (char)0x65, (char)0x31, (char)0x72, (char)0x72, (char)0x73, (char)0x72, (char)0x70, (char)0x73, (char)0x72, (char)0x65, (char)0x65, (char)0x6e, (char)0x76, (char)0x69, (char)0x6d, (char)0x65, (char)0x6c, (char)0x65, (char)0x31, (char)0x74, (char)0x74, (char)0x72, (char)0x63, (char)0x2e, (char)0x69, (char)0x65, (char)0x2d, (char)0x6d, (char)0x72, (char)0x70, (char)0x6e, (char)0x6c, (char)0x65, (char)0x31, (char)0x73, (char)0x73, (char)0x40, (char)0x74, (char)0x72, (char)0x73, (char)0x2e, (char)0x74, (char)0x6e, (char)0x77, (char)0x6c, (char)0x6f, (char)0x70, (char)0x77, (char)0x76, (char)0x73, (char)0x72, (char)0x69, (char)0x77, (char)0x69, (char)0x6e, (char)0x69, (char)0x2d, (char)0x72, (char)0x70, (char)0x70, (char)0x73, (char)0x2e, (char)0x76, (char)0x73, (char)0x65, (char)0x72, (char)0x72, (char)0x74, (char)0x2d, (char)0x72, (char)0x65, (char)0x76, (char)0x69, (char)0x77, (char)0x72, (char)0x65, (char)0x2d, (char)0x72, (char)0x69, (char)0x36, (char)0x77, (char)0x77, (char)0x77, (char)0x40, (char)0x2d, (char)0x6d, (char)0x69, (char)0x74, (char)0x72, (char)0x2d, (char)0x32, (char)0x6f, (char)0x76, (char)0x72, (char)0x2d, (char)0x2d, (char)0x65, (char)0x2e, (char)0x2e, (char)0x72, (char)0x6e, (char)0x32, (char)0x74, (char)0x6c, (char)0x6e, (char)0x6c, (char)0x2e, (char)0x6d, (char)0x2d, (char)0x6f, (char)0x65, (char)0x72, (char)0x2d, (char)0x6e, (char)0x65, (char)0x65, (char)0x69, (char)0x40, (char)0x69, (char)0x77, (char)0x65, (char)0x6c, (char)0x2d, (char)0x69, (char)0x69, (char)0x65, (char)0x72, (char)0x72, (char)0x32, (char)0x40, (char)0x73, (char)0x65, (char)0x36, (char)0x76, (char)0x73, (char)0x72, (char)0x69, (char)0x63, (char)0x77, (char)0x72, (char)0x6c, (char)0x72, (char)0x6e, (char)0x74, (char)0x2d, (char)0x65, (char)0x69, (char)0x72, (char)0x70, (char)0x6d, (char)0x65, (char)0x6c, (char)0x73, (char)0x65, (char)0x6c, (char)0x32, (char)0x2d, (char)0x73, (char)0x70, (char)0x2d, (char)0x31, (char)0x72, (char)0x74, (char)0x2e, (char)0x65, (char)0x74, (char)0x72, (char)0x74, (char)0x72, (char)0x70, (char)0x69, (char)0x40, (char)0x36, (char)0x2d, (char)0x74, (char)0x72, (char)0x6c, (char)0x2d, (char)0x6e, (char)0x72, (char)0x6e, (char)0x6d, (char)0x63, (char)0x76, (char)0x74, (char)0x6d, (ch
(char)0x69, (char)0x6c, (char)0x72, (char)0x76, (char)0x6d, (char)0x74, (char)0x6e, (char)0x73, (char)0x74, (char)0x72, (char)0x65, (char)0x63, (char)0x69, (char)0x65, (char)0x65, (char)0x72, (char)0x6f, (char)0x6e, (char)0x72, (char)0x72, (char)0x6c, (char)0x6e, (char)0x6e, (char)0x65, (char)0x6d, (char)0x74, (char)0x6c, (char)0x74, (char)0x65, (char)0x69, (char)0x2d, (char)0x6f, (char)0x69, (char)0x2e, (char)0x6e, (char)0x63, (char)0x65, (char)0x6c, (char)0x40, (char)0x70, (char)0x2d, (char)0x2d, (char)0x74, (char)0x73, (char)0x74, (char)0x40, (char)0x72, (char)0x74, (char)0x6c, (char)0x72, (char)0x6e, (char)0x6f, (char)0x73, (char)0x65, (char)0x74, (char)0x6d, (char)0x69, (char)0x32, (char)0x72, (char)0x65, (char)0x77, (char)0x6e, (char)0x76, (char)0x74, (char)0x73, (char)0x2d, (char)0x72, (char)0x6e, (char)0x69, (char)0x73, (char)0x40, (char)0x36, (char)0x2d, (char)0x6d, (char)0x2e, (char)0x65, (char)0x6d, (char)0x40, (char)0x69, (char)0x72, (char)0x72, (char)0x70, (char)0x65, (char)0x72, (char)0x76, (char)0x6c, (char)0x65, (char)0x76, (char)0x72, (char)0x65, (char)0x69, (char)0x65, (char)0x69, (char)0x6e, (char)0x72, (char)0x2d, (char)0x63, (char)0x72, (char)0x69, (char)0x6e, (char)0x72, (char)0x69, (char)0x6e, (char)0x69, (char)0x70, (char)0x6e, (char)0x2d, (char)0x69, (char)0x6c, (char)0x72, (char)0x2d, (char)0x65, (char)0x2d, (char)0x72, (char)0x6f, (char)0x65, (char)0x6e, (char)0x76, (char)0x6e, (char)0x40, (char)0x2d, (char)0x65, (char)0x72, (char)0x72, (char)0x6f, (char)0x6f, (char)0x72, (char)0x6c, (char)0x65, (char)0x74, (char)0x73, (char)0x72, (char)0x70, (char)0x77, (char)0x69, (char)0x69, (char)0x6d, (char)0x6c, (char)0x6d, (char)0x6e, (char)0x2d, (char)0x65, (char)0x65, (char)0x65, (char)0x74, (char)0x6c, (char)0x2d, (char)0x74, (char)0x6f, (char)0x2d, (char)0x74, (char)0x70, (char)0x72, (char)0x6e, (char)0x73, (char)0x72, (char)0x69, (char)0x72, (char)0x2e, (char)0x6d, (char)0x69, (char)0x65, (char)0x65, (char)0x32, (char)0x70, (char)0x6c, (char)0x6c, (char)0x65, (char)0x77, (char)0x2d, (char)0x72, (char)0x6f, (char)0x70, (char)0x76, (char)0x65, (char)0x2d, (char)0x72, (char)0x69, (char)0x6d, (char)0x72, (char)0x36, (char)0x40, (char)0x6d, (char)0x72, (char)0x6c, (char)0x6d, (char)0x77, (char)0x6c, (char)0x6e, (char)0x69, (char)0x72, (char)0x6d, (char)0x76, (char)0x73, (char)0x2e, (char)0x73, (char)0x72, (char)0x77, (char)0x73, (char)0x76, (char)0x2d, (char)0x73, (char)0x76, (char)0x6d, (char)0x76, (char)0x65, (char)0x69, (char)0x76, (char)0x63, (char)0x65, (char)0x72, (char)0x31, (char)0x72, (char)0x69, (char)0x76, (char)0x72, (char)0x65, (char)0x65, (char)0x2d, (char)0x73, (char)0x6d, (char)0x31, (char)0x72, (char)0x6e, (char)0x72, (char)0x2d, (char)0x2d, (char)0x36, (char)0x72, (char)0x73, (char)0x77, (char)0x2d, (char)0x77, (char)0x36, (char)0x76, (char)0x72, (char)0x6d, (char)0x65, (char)0x2d, (char)0x72, (char)0x70, (char)0x2d, (char)0x74, (char)0x32, (char)0x6c, (char)0x63, (char)0x6d, (char)0x6f, (char)0x6e, (char)0x2e, (char)0x2d, (char)0x69, (char)0x65, (char)0x73, (char)0x6d, (char)0x65, (char)0x73, (char)0x6e, (char)0x6d, (char)0x6c, (char)0x65, (char)0x6e, (char)0x72, (char)0x72, (char)0x72, (char)0x32, (char)0x70, (char)0x65, (char)0x73, (char)0x6c, (char)0x6d, (char)0x70, (char)0x6d, (char)0x72, (char)0x6f, (char)0x65, (char)0x6c, (char)0x76, (char)0x73, (char)0x63, (char)0x73, (char)0x65, (char)0x6c, (char)0x2d, (char)0x6e, (char)0x72, (char)0x65, (char)0x65, (char)0x72, (char)0x2d, (char)0x70, (char)0x6d, (char)0x69, (char)0x69, (char)0x65, (char)0x2d, (char)0x6c, (char)0x72, (char)0x69, (char)0x6c, (char)0x2d, (char)0x74, (char)0x65, (char)0x65, (char)0x69, (char)0x31, (char)0x72, (char)0x69, (char)0x6d, (char)0x69, (char)0x74, (char)0x74, (char)0x73, (char)0x65, (char)0x32, (char)0x2d, (char)0x6f, (char)0x2d, (char)0x70, (char)0x72, (char)0x6f, (char)0x65, (char)0x69, (char)0x73, (char)0x32, (char)0x6d, (char)0x65, (char)0x2d, (char)0x65, (char)0x74, (char)0x6d, (char)0x6d, (char)0x73, (char)0x76, (char)0x6c, (char)0x69, (char)0x65, (char)0x2d, (char)0x73, (char)0x74, (ch
};
char c2[] = {
(char)0x5b, (char)0x52, (char)0xf1, (char)0x2d, (char)0x94, (char)0xcb, (char)0xb0, (char)0x86, (char)0xd8, (char)0xd3, (char)0xe3, (char)0x20, (char)0x88, (char)0x47, (char)0xcf, (char)0x5a, (char)0x49, (char)0xd2, (char)0x11, (char)0x30, (char)0x92, (char)0x17, (char)0x8d, (char)0xf4, (char)0x99, (char)0xf7, (char)0x6c, (char)0x8a, (char)0xbc, (char)0xe7, (char)0x5c, (char)0x58, (char)0x6a, (char)0x65, (char)0xed, (char)0x81, (char)0xdc, (char)0xdd, (char)0xcf, (char)0x83, (char)0xcd, (char)0xa4, (char)0xed, (char)0xa2, (char)0x5e, (char)0x63, (char)0xd9, (char)0x98, (char)0xf6, (char)0x2e, (char)0x15, (char)0x76, (char)0x9a, (char)0xc8, (char)0x8c, (char)0x42, (char)0x54, (char)0x44, (char)0xf4, (char)0x47, (char)0xf5, (char)0x96, (char)0xc9, (char)0x6e, (char)0x23, (char)0x09, (char)0x1a, (char)0x0d, (char)0xe3, (char)0x04, (char)0xe6, (char)0xed, (char)0x48, (char)0x49, (char)0x62, (char)0x31, (char)0xe8, (char)0x36, (char)0x04, (char)0xed, (char)0xb9, (char)0xe7, (char)0xa6, (char)0x35, (char)0x4d, (char)0xcd, (char)0xe3, (char)0xfa, (char)0xa0, (char)0xc8, (char)0x34, (char)0xbd, (char)0x62, (char)0x7b, (char)0xbc, (char)0xbe, (char)0x1c, (char)0x5b, (char)0x69, (char)0x1f, (char)0x9c, (char)0x30, (char)0x20, (char)0x48, (char)0x52, (char)0xd1, (char)0xb6, (char)0x5e, (char)0xa2, (char)0x6e, (char)0x06, (char)0x94, (char)0x72, (char)0x10, (char)0x56, (char)0x7c, (char)0x94, (char)0xa5, (char)0xc0, (char)0xaa, (char)0xea, (char)0x48, (char)0x61, (char)0x03, (char)0x14, (char)0x94, (char)0x09, (char)0x77, (char)0xd9, (char)0xa7, (char)0xfe, (char)0x78, (char)0x17, (char)0x95, (char)0x4f, (char)0x7e, (char)0xb0, (char)0x32, (char)0x63, (char)0x02, (char)0x17, (char)0x47, (char)0x1e, (char)0x7d, (char)0xb2, (char)0x7d, (char)0xb5, (char)0xcb, (char)0x9f, (char)0x61, (char)0x65, (char)0xed, (char)0x03, (char)0xd2, (char)0xdb, (char)0xd1, (char)0xb3, (char)0xd6, (char)0x1a, (char)0xf5, (char)0x67, (char)0x0b, (char)0x8b, (char)0x6b, (char)0x44, (char)0xf2, (char)0x62, (char)0x42, (char)0xc2, (char)0x4d, (char)0xe1, (char)0x5c, (char)0xfe, (char)0xc6, (char)0x19, (char)0x2b, (char)0xfb, (char)0x03, (char)0x0f, (char)0x1b, (char)0x89, (char)0x08, (char)0x86, (char)0x40, (char)0xca, (char)0x45, (char)0x15, (char)0xda, (char)0x65, (char)0xcc, (char)0x73, (char)0x00, (char)0x49, (char)0x4e, (char)0x48, (char)0x21, (char)0x25, (char)0xc6, (char)0xde, (char)0x26, (char)0x21, (char)0x1d, (char)0xea, (char)0x3c, (char)0x11, (char)0xac, (char)0xef, (char)0x34, (char)0x4c, (char)0x96, (char)0xcc, (char)0x5e, (char)0x26, (char)0xf3, (char)0xcd, (char)0x70, (char)0x0d, (char)0x62, (char)0xea, (char)0x09, (char)0x35, (char)0x2b, (char)0x1e, (char)0x60, (char)0xe4, (char)0x76, (char)0xd3, (char)0x65, (char)0x01, (char)0x8c, (char)0xab, (char)0xd4, (char)0x89, (char)0xad, (char)0x81, (char)0x9d, (char)0x04, (char)0x01, (char)0xd5, (char)0x55, (char)0x3c, (char)0xcb, (char)0x32, (char)0xe1, (char)0xb5, (char)0xd4, (char)0xda, (char)0xb4, (char)0xa9, (char)0x01, (char)0xb2, (char)0x10, (char)0xc7, (char)0xb1, (char)0xa9, (char)0x54, (char)0x66, (char)0x1d, (char)0xcc, (char)0xff, (char)0x54, (char)0x0b, (char)0x84, (char)0x37, (char)0xe0, (char)0x3a, (char)0xa5, (char)0x68, (char)0x80, (char)0x87, (char)0xbc, (char)0x3c, (char)0x0f, (char)0xda, (char)0x7e, (char)0x3c, (char)0x23, (char)0xfc, (char)0xd8, (char)0xc5, (char)0x52, (char)0xf7, (char)0x22, (char)0x12, (char)0x05, (char)0x9c, (char)0x68, (char)0x39, (char)0xb1, (char)0xed, (char)0x26, (char)0x24, (char)0x2b, (char)0x7e, (char)0x0b, (char)0xaf, (char)0x9e, (char)0x97, (char)0x45, (char)0x7b, (char)0xa9, (char)0xbc, (char)0x48, (char)0x0e, (char)0x66, (char)0x93, (char)0x32, (char)0x0d, (char)0x6b, (char)0xd6, (char)0xf0, (char)0x4f, (char)0x54, (char)0x18, (char)0xcd, (char)0xc9, (char)0x8c, (char)0xce, (char)0xc4, (char)0xa2, (char)0xff, (char)0x1e, (char)0x69, (char)0x17, (char)0x7e, (char)0xf4, (char)0x99, (char)0x09, (char)0x68, (char)0xa1, (char)0x9e, (char)0x1f, (char)0xbf, (char)0x90, (char)0xdc, (char)0x77, (char)0x5d, (char)0x50, (char)0x2b, (char)0x0e, (ch
(char)0x50, (char)0xcc, (char)0x52, (char)0xc7, (char)0x4b, (char)0x16, (char)0x33, (char)0xa5, (char)0xde, (char)0x20, (char)0xed, (char)0x6a, (char)0xa7, (char)0x58, (char)0x5e, (char)0x4e, (char)0x7e, (char)0x29, (char)0xab, (char)0xb9, (char)0x65, (char)0x9d, (char)0x17, (char)0xe0, (char)0x1e, (char)0x79, (char)0x77, (char)0xf6, (char)0x1e, (char)0xa0, (char)0xcb, (char)0x0c, (char)0xf7, (char)0xc0, (char)0xe4, (char)0xf6, (char)0x3b, (char)0x60, (char)0x81, (char)0xfe, (char)0xed, (char)0xd9, (char)0x42, (char)0xa9, (char)0x61, (char)0x9d, (char)0xa8, (char)0xd7, (char)0xe8, (char)0xaa, (char)0x97, (char)0xad, (char)0xbb, (char)0xba, (char)0x13, (char)0x6e, (char)0x05, (char)0xa5, (char)0xce, (char)0x7a, (char)0x65, (char)0x6f, (char)0x55, (char)0xe3, (char)0xcf, (char)0xbc, (char)0x67, (char)0x14, (char)0x64, (char)0x57, (char)0x9c, (char)0x46, (char)0x14, (char)0xd6, (char)0x1d, (char)0x39, (char)0x1c, (char)0xd3, (char)0xe8, (char)0x98, (char)0x20, (char)0x5a, (char)0x1a, (char)0x05, (char)0x3b, (char)0x27, (char)0xd5, (char)0x84, (char)0xca, (char)0xd4, (char)0x0b, (char)0xc4, (char)0x1e, (char)0xd8, (char)0x46, (char)0x29, (char)0x48, (char)0x95, (char)0xdb, (char)0xe5, (char)0x58, (char)0x8a, (char)0x51, (char)0xc7, (char)0x74, (char)0x7f, (char)0x53, (char)0xa8, (char)0xbb, (char)0x58, (char)0xc0, (char)0x5b, (char)0xe1, (char)0xa7, (char)0x27, (char)0x36, (char)0x6c, (char)0xa6, (char)0x70, (char)0xec, (char)0x88, (char)0xcd, (char)0x9a, (char)0x70, (char)0xe1, (char)0xa0, (char)0xc7, (char)0xdd, (char)0x60, (char)0x71, (char)0xf4, (char)0x2a, (char)0x51, (char)0x98, (char)0x8e, (char)0xab, (char)0xb8, (char)0x13, (char)0x03, (char)0x48, (char)0x5f, (char)0x44, (char)0xf8, (char)0x88, (char)0xd9, (char)0x7d, (char)0xd3, (char)0xf1, (char)0x5f, (char)0xc4, (char)0x2b, (char)0x44, (char)0x15, (char)0x57, (char)0x31, (char)0xa4, (char)0xa1, (char)0xdb, (char)0x6d, (char)0x2a, (char)0x5a, (char)0x5a, (char)0xf7, (char)0xde, (char)0xd5, (char)0x23, (char)0x38, (char)0x00, (char)0xe5, (char)0x5c, (char)0x55, (char)0xe7, (char)0x37, (char)0x9c, (char)0xcb, (char)0x8b, (char)0xc0, (char)0x33, (char)0x42, (char)0x68, (char)0x23, (char)0x84, (char)0x7d, (char)0x89, (char)0x9d, (char)0xae, (char)0x59, (char)0x18, (char)0xae, (char)0xea, (char)0x46, (char)0x3f, (char)0xac, (char)0x57, (char)0x0d, (char)0x5d, (char)0x49, (char)0x14, (char)0x50, (char)0xe5, (char)0x70, (char)0x17, (char)0x73, (char)0x09, (char)0x11, (char)0x93, (char)0x6b, (char)0x02, (char)0x22, (char)0xb7, (char)0x63, (char)0xc9, (char)0xe6, (char)0xa4, (char)0xe3, (char)0xb1, (char)0xf7, (char)0xa6, (char)0x58, (char)0x8d, (char)0x14, (char)0xa1, (char)0xda, (char)0x6a, (char)0xb9, (char)0x38, (char)0xf9, (char)0x20, (char)0x45, (char)0x8c, (char)0xe6, (char)0x32, (char)0x23, (char)0x9d, (char)0x5f, (char)0xba, (char)0xcb, (char)0xb4, (char)0x95, (char)0xf9, (char)0xa9, (char)0x5c, (char)0x60, (char)0x03, (char)0x5a, (char)0x8c, (char)0xa7, (char)0xb9, (char)0x65, (char)0xa8, (char)0x84, (char)0x38, (char)0xc0, (char)0x25, (char)0xe6, (char)0xa7, (char)0xc0, (char)0x3b, (char)0xbc, (char)0x11, (char)0xed, (char)0x0e, (char)0x9a, (char)0x6f, (char)0xfe, (char)0x61, (char)0x79, (char)0x86, (char)0x92, (char)0x3a, (char)0xce, (char)0xe0, (char)0xb7, (char)0x70, (char)0xad, (char)0xe0, (char)0xcc, (char)0x88, (char)0x47, (char)0xd9, (char)0x2a, (char)0x3d, (char)0x41, (char)0x06, (char)0x77, (char)0x41, (char)0xbe, (char)0x3f, (char)0x55, (char)0x31, (char)0x54, (char)0x10, (char)0x14, (char)0x5b, (char)0xdf, (char)0x88, (char)0xb2, (char)0x9f, (char)0xff, (char)0x11, (char)0xb8, (char)0x11, (char)0xdc, (char)0x5e, (char)0x64, (char)0xf9, (char)0x97, (char)0x8a, (char)0x26, (char)0x6a, (char)0x44, (char)0xb4, (char)0x83, (char)0x83, (char)0x9b, (char)0x81, (char)0xaa, (char)0xfd, (char)0xb5, (char)0x8b, (char)0x16, (char)0x18, (char)0x2e, (char)0x5c, (char)0xe4, (char)0x5b, (char)0x8f, (char)0xdd, (char)0x7c, (char)0x1f, (char)0x33, (char)0x2f, (char)0xef, (char)0x57, (char)0x8c, (char)0x6a, (char)0x3f, (char)0x3c, (char)0x19, (char)0x5e, (ch
};
ASSERT_EQ(ERROR_SUCCESS, bytes.create_c0c1());
memcpy(bytes.c0c1, c0c1, 1537);
ASSERT_EQ(ERROR_SUCCESS, bytes.create_s0s1s2());
memcpy(bytes.s0s1s2, s0s1s2, 3073);
ASSERT_EQ(ERROR_SUCCESS, bytes.create_c2());
memcpy(bytes.c2, c2, 1536);
}
SrsHandshakeBytes* hs_bytes = &bytes;
if (true) {
bool is_valid;
c1s1 c1;
ASSERT_EQ(ERROR_SUCCESS, c1.parse(hs_bytes->c0c1 + 1, srs_schema0));
ASSERT_EQ(ERROR_SUCCESS, c1.c1_validate_digest(is_valid));
ASSERT_TRUE(is_valid);
c1s1 s1;
ASSERT_EQ(ERROR_SUCCESS, s1.parse(hs_bytes->s0s1s2 + 1, c1.schema));
ASSERT_EQ(ERROR_SUCCESS, s1.s1_validate_digest(is_valid));
ASSERT_TRUE(is_valid);
c2s2 c2;
c2.parse(hs_bytes->c2);
ASSERT_EQ(ERROR_SUCCESS, c2.c2_validate(&s1, is_valid));
ASSERT_TRUE(is_valid);
c2s2 s2;
s2.parse(hs_bytes->s0s1s2 + 1 + 1536);
ASSERT_EQ(ERROR_SUCCESS, s2.s2_validate(&c1, is_valid));
ASSERT_TRUE(is_valid);
}
}
VOID TEST(ProtocolHandshakeTest, BytesEqual)
{
char a1[] = { (char)0x01 };
char b1[] = { (char)0x02 };
char a2[] = { (char)0x01, (char)0x02 };
char b2[] = { (char)0x02, (char)0x03 };
EXPECT_TRUE(srs_bytes_equals(NULL, NULL, 0));
EXPECT_FALSE(srs_bytes_equals(a1, NULL, 1));
EXPECT_FALSE(srs_bytes_equals(NULL, a1, 1));
EXPECT_FALSE(srs_bytes_equals(a1, b1, 1));
EXPECT_TRUE(srs_bytes_equals(a1, a1, 1));
EXPECT_TRUE(srs_bytes_equals(a1, a2, 1));
EXPECT_FALSE(srs_bytes_equals(a1, b2, 1));
}
VOID TEST(ProtocolUtilityTest, VhostResolve)
{
std::string vhost = "vhost";
std::string app = "app";
srs_vhost_resolve(vhost, app);
EXPECT_STREQ("vhost", vhost.c_str());
EXPECT_STREQ("app", app.c_str());
app = "app?vhost=changed";
srs_vhost_resolve(vhost, app);
EXPECT_STREQ("changed", vhost.c_str());
EXPECT_STREQ("app", app.c_str());
app = "app?vhost=changed1&&query=true";
srs_vhost_resolve(vhost, app);
EXPECT_STREQ("changed1", vhost.c_str());
EXPECT_STREQ("app", app.c_str());
app = "app?other=true&&vhost=changed2&&query=true";
srs_vhost_resolve(vhost, app);
EXPECT_STREQ("changed2", vhost.c_str());
EXPECT_STREQ("app", app.c_str());
app = "app...other...true...vhost...changed3...query...true";
srs_vhost_resolve(vhost, app);
EXPECT_STREQ("changed3", vhost.c_str());
EXPECT_STREQ("app", app.c_str());
}
VOID TEST(ProtocolUtilityTest, DiscoveryTcUrl)
{
std::string tcUrl;
std::string schema; std::string host; std::string vhost;
std::string app; std::string port;
tcUrl = "rtmp://127.0.0.1:1935/live";
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port);
EXPECT_STREQ("rtmp", schema.c_str());
EXPECT_STREQ("127.0.0.1", host.c_str());
EXPECT_STREQ("127.0.0.1", vhost.c_str());
EXPECT_STREQ("live", app.c_str());
EXPECT_STREQ("1935", port.c_str());
tcUrl = "rtmp://127.0.0.1:19351/live";
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port);
EXPECT_STREQ("rtmp", schema.c_str());
EXPECT_STREQ("127.0.0.1", host.c_str());
EXPECT_STREQ("127.0.0.1", vhost.c_str());
EXPECT_STREQ("live", app.c_str());
EXPECT_STREQ("19351", port.c_str());
tcUrl = "rtmp://127.0.0.1:19351/live?vhost=demo";
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port);
EXPECT_STREQ("rtmp", schema.c_str());
EXPECT_STREQ("127.0.0.1", host.c_str());
EXPECT_STREQ("demo", vhost.c_str());
EXPECT_STREQ("live", app.c_str());
EXPECT_STREQ("19351", port.c_str());
tcUrl = "rtmp://127.0.0.1:19351/live/show?vhost=demo";
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port);
EXPECT_STREQ("rtmp", schema.c_str());
EXPECT_STREQ("127.0.0.1", host.c_str());
EXPECT_STREQ("demo", vhost.c_str());
EXPECT_STREQ("live/show", app.c_str());
EXPECT_STREQ("19351", port.c_str());
}
VOID TEST(ProtocolUtilityTest, GenerateTcUrl)
{
string ip; string vhost; string app; string port; string tcUrl;
ip = "127.0.0.1"; vhost = "__defaultVhost__"; app = "live"; port = "1935";
tcUrl = srs_generate_tc_url(ip, vhost, app, port);
EXPECT_STREQ("rtmp://127.0.0.1/live", tcUrl.c_str());
ip = "127.0.0.1"; vhost = "demo"; app = "live"; port = "1935";
tcUrl = srs_generate_tc_url(ip, vhost, app, port);
EXPECT_STREQ("rtmp://demo/live", tcUrl.c_str());
ip = "127.0.0.1"; vhost = "demo"; app = "live"; port = "19351";
tcUrl = srs_generate_tc_url(ip, vhost, app, port);
EXPECT_STREQ("rtmp://demo:19351/live", tcUrl.c_str());
}
VOID TEST(ProtocolMsgArrayTest, MessageArray)
{
SrsMessageHeader header;
SrsSharedPtrMessage msg;
char* payload = new char[1024];
EXPECT_TRUE(ERROR_SUCCESS == msg.create(&header, payload, 1024));
EXPECT_EQ(0, msg.count());
if (true) {
SrsSharedPtrMessageArray arr(3);
arr.msgs[0] = msg.copy();
EXPECT_EQ(1, msg.count());
arr.msgs[1] = msg.copy();
EXPECT_EQ(2, msg.count());
arr.msgs[2] = msg.copy();
EXPECT_EQ(3, msg.count());
}
EXPECT_EQ(0, msg.count());
}