mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
SRT: Support encrypt, with utest (#3223)
* SRT: support encrypt, with utest * SRT: refine set srt option error log
This commit is contained in:
parent
8dcbcd1656
commit
7d9dc69ae1
7 changed files with 172 additions and 13 deletions
|
@ -20,6 +20,8 @@ using namespace std;
|
|||
|
||||
extern SrsSrtEventLoop* _srt_eventloop;
|
||||
|
||||
// TODO: FIXME: set srt log handler.
|
||||
|
||||
// Test srt st service
|
||||
VOID TEST(ServiceSrtPoller, SrtPollOperateSocket)
|
||||
{
|
||||
|
@ -146,6 +148,10 @@ public:
|
|||
return err;
|
||||
}
|
||||
|
||||
srs_srt_t fd() {
|
||||
return srt_server_fd_;
|
||||
}
|
||||
|
||||
srs_error_t listen(std::string ip, int port) {
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
|
@ -463,6 +469,82 @@ VOID TEST(ProtocolSrtTest, SrtStreamIdToRequest)
|
|||
}
|
||||
}
|
||||
|
||||
VOID TEST(ServiceSRTTest, Encrypt)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
std::string server_ip = "127.0.0.1";
|
||||
int server_port = 19000;
|
||||
|
||||
MockSrtServer srt_server;
|
||||
HELPER_EXPECT_SUCCESS(srt_server.create_socket());
|
||||
|
||||
string passphrase = "srt_passphrase";
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_passphrase(srt_server.fd(), passphrase));
|
||||
HELPER_EXPECT_SUCCESS(srt_server.listen(server_ip, server_port));
|
||||
|
||||
std::string streamid = "SRS_SRT_Streamid";
|
||||
if (true) {
|
||||
srs_srt_t srt_client_fd = srs_srt_socket_invalid();
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_socket_with_default_option(&srt_client_fd));
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_streamid(srt_client_fd, streamid));
|
||||
SrsSrtSocket* srt_client_socket = new SrsSrtSocket(_srt_eventloop->poller(), srt_client_fd);
|
||||
|
||||
// SRT connect without passphrase, will reject.
|
||||
HELPER_EXPECT_FAILED(srt_client_socket->connect(server_ip, server_port));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
srs_srt_t srt_client_fd = srs_srt_socket_invalid();
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_socket_with_default_option(&srt_client_fd));
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_streamid(srt_client_fd, streamid));
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_passphrase(srt_client_fd, "wrong_passphrase"));
|
||||
SrsSrtSocket* srt_client_socket = new SrsSrtSocket(_srt_eventloop->poller(), srt_client_fd);
|
||||
|
||||
// SRT connect with wrong passphrase, will reject.
|
||||
HELPER_EXPECT_FAILED(srt_client_socket->connect(server_ip, server_port));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
srs_srt_t srt_client_fd = srs_srt_socket_invalid();
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_socket_with_default_option(&srt_client_fd));
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_streamid(srt_client_fd, streamid));
|
||||
// Set correct passphrase.
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_passphrase(srt_client_fd, passphrase));
|
||||
SrsSrtSocket* srt_client_socket = new SrsSrtSocket(_srt_eventloop->poller(), srt_client_fd);
|
||||
HELPER_EXPECT_SUCCESS(srt_client_socket->connect(server_ip, server_port));
|
||||
|
||||
srs_srt_t srt_server_accepted_fd = srs_srt_socket_invalid();
|
||||
HELPER_EXPECT_SUCCESS(srt_server.accept(&srt_server_accepted_fd));
|
||||
EXPECT_NE(srt_server_accepted_fd, srs_srt_socket_invalid());
|
||||
std::string s;
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_get_streamid(srt_server_accepted_fd, s));
|
||||
EXPECT_EQ(s, streamid);
|
||||
}
|
||||
|
||||
if (true) {
|
||||
int pbkeylens[4] = {0, 16, 24, 32};
|
||||
for (int i = 0; i < sizeof(pbkeylens) / sizeof(pbkeylens[0]); ++i) {
|
||||
srs_srt_t srt_client_fd = srs_srt_socket_invalid();
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_socket_with_default_option(&srt_client_fd));
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_streamid(srt_client_fd, streamid));
|
||||
// Set correct passphrase.
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_passphrase(srt_client_fd, passphrase));
|
||||
// Set different pbkeylen.
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_set_pbkeylen(srt_client_fd, pbkeylens[i]));
|
||||
SrsSrtSocket* srt_client_socket = new SrsSrtSocket(_srt_eventloop->poller(), srt_client_fd);
|
||||
HELPER_EXPECT_SUCCESS(srt_client_socket->connect(server_ip, server_port));
|
||||
|
||||
srs_srt_t srt_server_accepted_fd = srs_srt_socket_invalid();
|
||||
HELPER_EXPECT_SUCCESS(srt_server.accept(&srt_server_accepted_fd));
|
||||
EXPECT_NE(srt_server_accepted_fd, srs_srt_socket_invalid());
|
||||
std::string s;
|
||||
HELPER_EXPECT_SUCCESS(srs_srt_get_streamid(srt_server_accepted_fd, s));
|
||||
EXPECT_EQ(s, streamid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: FIXME: add mpegts conn test
|
||||
// set srt option, recv srt client, get srt client opt and check.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue