Commit c48f9107 authored by jan.koester's avatar jan.koester
Browse files

test

parent e522ab25
Loading
Loading
Loading
Loading
Loading
+8 −4
Changes for src/admin.cpp: 8 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -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(),
@@ -1726,7 +1731,6 @@ namespace authdb {
                    key, salt, KDC_ETYPE_AES256_CTS_HMAC_SHA1);
                cdat.setKrbKey(hexEncode(krbKeyBytes));
            }
            }

            Client clt;
            clt.create(*backend, &cdat);
+5 −1
Changes for src/api.cpp: 5 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -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();
@@ -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
                    }
                }
            }