Loading src/admin.cpp +8 −4 Changes for src/admin.cpp: 8 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -1702,21 +1702,26 @@ namespace authdb { json_object *jname = json_object_object_get(jreq, "clientname"); json_object *jkey = json_object_object_get(jreq, "clientkey"); if (!jname || !jkey) throw AuthBackendError("createClient: missing clientname or clientkey!"); uuid::uuid clid; clid.generate(); class ClientData cdat(clid); if (jname) cdat.setName(json_object_get_string(jname)); cdat.setName(json_object_get_string(jname)); if (jkey) { std::string key = json_object_get_string(jkey); if (key.empty()) throw AuthBackendError("createClient: clientkey cannot be empty!"); std::string keyhash; sha512 hash; hash.hash(key, keyhash); cdat.setKey(keyhash.c_str()); /* Compute Kerberos long-term key for machine account */ if (jname && !key.empty() && g_KdcPlugin) { if (g_KdcPlugin) { std::string clientname = json_object_get_string(jname); std::string realm = backend->getDomain(); std::transform(realm.begin(), realm.end(), realm.begin(), Loading @@ -1726,7 +1731,6 @@ namespace authdb { key, salt, KDC_ETYPE_AES256_CTS_HMAC_SHA1); cdat.setKrbKey(hexEncode(krbKeyBytes)); } } Client clt; clt.create(*backend, &cdat); Loading src/api.cpp +5 −1 Changes for src/api.cpp: 5 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -431,6 +431,7 @@ public: size_t upos = sizeof(AuthHeader); AuthClient.info(_Backend, cdat, upos); try { if (constant_time_eq(pwsalt, cdat.getKey())) { ClientConnections* cid = AuthClient.addConnection(_Backend, cdat); json_object* respid = json_object_new_object(); Loading @@ -440,7 +441,10 @@ public: json_object_array_add(response, respid); return cid; } return nullptr; // wrong secret } catch (const AuthBackendError&) { // missing clientkey is treated as invalid credentials } return nullptr; // wrong secret or invalid client record } } } Loading Loading
src/admin.cpp +8 −4 Changes for src/admin.cpp: 8 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -1702,21 +1702,26 @@ namespace authdb { json_object *jname = json_object_object_get(jreq, "clientname"); json_object *jkey = json_object_object_get(jreq, "clientkey"); if (!jname || !jkey) throw AuthBackendError("createClient: missing clientname or clientkey!"); uuid::uuid clid; clid.generate(); class ClientData cdat(clid); if (jname) cdat.setName(json_object_get_string(jname)); cdat.setName(json_object_get_string(jname)); if (jkey) { std::string key = json_object_get_string(jkey); if (key.empty()) throw AuthBackendError("createClient: clientkey cannot be empty!"); std::string keyhash; sha512 hash; hash.hash(key, keyhash); cdat.setKey(keyhash.c_str()); /* Compute Kerberos long-term key for machine account */ if (jname && !key.empty() && g_KdcPlugin) { if (g_KdcPlugin) { std::string clientname = json_object_get_string(jname); std::string realm = backend->getDomain(); std::transform(realm.begin(), realm.end(), realm.begin(), Loading @@ -1726,7 +1731,6 @@ namespace authdb { key, salt, KDC_ETYPE_AES256_CTS_HMAC_SHA1); cdat.setKrbKey(hexEncode(krbKeyBytes)); } } Client clt; clt.create(*backend, &cdat); Loading
src/api.cpp +5 −1 Changes for src/api.cpp: 5 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -431,6 +431,7 @@ public: size_t upos = sizeof(AuthHeader); AuthClient.info(_Backend, cdat, upos); try { if (constant_time_eq(pwsalt, cdat.getKey())) { ClientConnections* cid = AuthClient.addConnection(_Backend, cdat); json_object* respid = json_object_new_object(); Loading @@ -440,7 +441,10 @@ public: json_object_array_add(response, respid); return cid; } return nullptr; // wrong secret } catch (const AuthBackendError&) { // missing clientkey is treated as invalid credentials } return nullptr; // wrong secret or invalid client record } } } Loading