support full DC NTE credentials
This commit is contained in:
@@ -465,9 +465,8 @@ static void on_88_DCNTE(shared_ptr<Client> c, uint16_t, uint32_t, string& data)
|
||||
c->config.set_flags_for_version(c->version(), -1);
|
||||
c->log.info("Game version changed to DC_NTE");
|
||||
|
||||
uint32_t serial_number = stoul(cmd.serial_number.decode(), nullptr, 16);
|
||||
try {
|
||||
shared_ptr<License> l = s->license_index->verify_v1_v2(serial_number, cmd.access_key.decode(), "");
|
||||
shared_ptr<License> l = s->license_index->verify_dc_nte(cmd.serial_number.decode(), cmd.access_key.decode());
|
||||
c->set_license(l);
|
||||
send_command(c, 0x88, 0x00);
|
||||
|
||||
@@ -487,8 +486,9 @@ static void on_88_DCNTE(shared_ptr<Client> c, uint16_t, uint32_t, string& data)
|
||||
} else {
|
||||
c->config.set_flag(Client::Flag::LICENSE_WAS_CREATED);
|
||||
auto l = s->license_index->create_license();
|
||||
l->serial_number = serial_number;
|
||||
l->access_key = cmd.access_key.decode();
|
||||
l->dc_nte_serial_number = cmd.serial_number.decode();
|
||||
l->dc_nte_access_key = cmd.access_key.decode();
|
||||
l->serial_number = fnv1a32(l->dc_nte_serial_number) & 0x7FFFFFFF;
|
||||
s->license_index->add(l);
|
||||
if (!s->is_replay) {
|
||||
l->save();
|
||||
@@ -510,9 +510,8 @@ static void on_8B_DCNTE(shared_ptr<Client> c, uint16_t, uint32_t, string& data)
|
||||
c->config.set_flags_for_version(c->version(), -1);
|
||||
c->log.info("Game version changed to DC_NTE");
|
||||
|
||||
uint32_t serial_number = stoul(cmd.serial_number.decode(), nullptr, 16);
|
||||
try {
|
||||
shared_ptr<License> l = s->license_index->verify_v1_v2(serial_number, cmd.access_key.decode(), cmd.name.decode());
|
||||
shared_ptr<License> l = s->license_index->verify_dc_nte(cmd.serial_number.decode(), cmd.access_key.decode());
|
||||
c->set_license(l);
|
||||
|
||||
} catch (const LicenseIndex::no_username& e) {
|
||||
@@ -531,8 +530,9 @@ static void on_8B_DCNTE(shared_ptr<Client> c, uint16_t, uint32_t, string& data)
|
||||
} else {
|
||||
c->config.set_flag(Client::Flag::LICENSE_WAS_CREATED);
|
||||
auto l = s->license_index->create_license();
|
||||
l->serial_number = serial_number;
|
||||
l->access_key = cmd.access_key.decode();
|
||||
l->dc_nte_serial_number = cmd.serial_number.decode();
|
||||
l->dc_nte_access_key = cmd.access_key.decode();
|
||||
l->serial_number = fnv1a32(l->dc_nte_serial_number) & 0x7FFFFFFF;
|
||||
s->license_index->add(l);
|
||||
if (!s->is_replay) {
|
||||
l->save();
|
||||
|
||||
Reference in New Issue
Block a user