diff --git a/zomp/etc/otpr/realm.conf b/zomp/etc/otpr/realm.conf index 7e30e52..f97ccab 100644 --- a/zomp/etc/otpr/realm.conf +++ b/zomp/etc/otpr/realm.conf @@ -1,4 +1,7 @@ -{realm, "otpr"}. -{prime, {"zomp.psychobitch.party",11311}}. -{sysop, "zxq9"}. -{key, "zxq9-root"}. +{realm, "otpr"}. +{prime, {"zomp.psychobitch.party",11311}}. +{sysop, {"zxq9", "Craig Everett", [{"email", "zxq9@zxq9.com"}]}}. +{key, <<38,103,252,11,212,145,139,235,72,17,254,18,49,212,225,154,251,31,136,0,11, + 230,252,220,118,33,116,200,63,200,8,166,213,29,94,176,113,70,228,47,37,54,90, + 124,151,66,121,221,136,7,5,112,114,74,165,205,88,29,138,226,27,104,84,250>>}. +{timestamp, {{2019, 12, 16}, {13, 01, 21}}}. diff --git a/zomp/key/otpr/63VIEETCEAZCB51XFX0F6XWN110OH4RXR5207BM6E09LCVOFM2OW5AZSTRV4ZN1F1M07ASKYCYJ35NLFQ5Z4DMGKSB5NCZRPVY2.pub.der b/zomp/key/otpr/63VIEETCEAZCB51XFX0F6XWN110OH4RXR5207BM6E09LCVOFM2OW5AZSTRV4ZN1F1M07ASKYCYJ35NLFQ5Z4DMGKSB5NCZRPVY2.pub.der new file mode 100644 index 0000000..776e5c5 Binary files /dev/null and b/zomp/key/otpr/63VIEETCEAZCB51XFX0F6XWN110OH4RXR5207BM6E09LCVOFM2OW5AZSTRV4ZN1F1M07ASKYCYJ35NLFQ5Z4DMGKSB5NCZRPVY2.pub.der differ diff --git a/zomp/key/otpr/zxq9-root.pub.der b/zomp/key/otpr/zxq9-root.pub.der deleted file mode 100644 index 636a48f..0000000 Binary files a/zomp/key/otpr/zxq9-root.pub.der and /dev/null differ diff --git a/zomp/lib/otpr/zx/0.3.0/src/zx_daemon.erl b/zomp/lib/otpr/zx/0.3.0/src/zx_daemon.erl index bf97dc4..d9108e7 100644 --- a/zomp/lib/otpr/zx/0.3.0/src/zx_daemon.erl +++ b/zomp/lib/otpr/zx/0.3.0/src/zx_daemon.erl @@ -842,10 +842,10 @@ handle_call({takeover, Realm}, _, State = #s{conf = Conf}) -> {Result, NewConf} = do_takeover(Realm, Conf), NewState = eval_queue(State#s{conf = NewConf}), {reply, Result, NewState}; -handle_call({drop_realm, Realm}, _, State = #s{conf = Conf}) -> - {Result, NewConf} = do_drop_realm(Realm, Conf), - NewState = eval_queue(State#s{conf = NewConf}), - {reply, Result, NewState}; +handle_call({drop_realm, Realm}, _, State) -> + NextState = do_drop_realm(Realm, State), + NewState = eval_queue(NextState), + {reply, ok, NewState}; handle_call(hosts, _, State = #s{cx = CX}) -> Result = cx_mirrors(CX), {reply, Result, State}; @@ -1868,24 +1868,24 @@ do_takeover(Realm, C = #conf{realms = Realms, managed = Managed}) -> end. --spec do_abdicate(Realm, Conf) -> {Result, NewConf} - when Realm :: zx:realm(), - Conf :: conf(), - Result :: ok - | {error, unmanaged}, - NewConf :: conf(). +-spec do_abdicate(Realm, State) -> {Result, NewState} + when Realm :: zx:realm(), + State :: state(), + Result :: ok + | {error, unmanaged}, + NewState :: state(). -do_abdicate(Realm, C = #conf{managed = Managed}) -> +do_abdicate(Realm, State = #s{conf = C = #conf{managed = Managed}}) -> case sets:is_element(Realm, Managed) of true -> NewManaged = sets:del_element(Realm, Managed), NewC = C#conf{managed = NewManaged}, ok = save_conf(NewC), ok = log(info, "No longer managing realm: ~160tp", [Realm]), - {ok, NewC}; + {ok, State#s{conf = NewC}}; false -> - ok = log(error, "Cannot abdicate an unmanaged realm."), - {{error, unmanaged}, C} + ok = tell(error, "Cannot abdicate an unmanaged realm."), + {{error, unmanaged}, State} end. @@ -2121,25 +2121,27 @@ do_list_keys(private, Realm, {RK, _, _}) -> end. --spec do_drop_realm(Realm, State) -> {ok, NewState} +-spec do_drop_realm(Realm, State) -> NewState when Realm :: zx:realm(), State :: state(), NewState :: state(). -do_drop_realm(Realm, State = #s{kx = {RealmIndex, Pairs}}) -> +do_drop_realm(Realm, State = #s{kx = {RealmIndex, Pairs, Owners}}) -> NewKX = case maps:take(Realm, RealmIndex) of {KeyIndex, NextRealmIndex} -> NewPairs = scrub_pairs(maps:values(KeyIndex), Pairs), - {NextRealmIndex, NewPairs}; + Screen = fun({{R, _}, _}) -> R == Realm end, + NewOwners = maps:filter(Screen, Owners), + {NextRealmIndex, NewPairs, NewOwners}; error -> - {RealmIndex, Pairs} + {RealmIndex, Pairs, Owners} end, Dirs = [etc, var, tmp, log, key, zsp, lib], RM = fun(D) -> ok = zx_lib:rm_rf(zx_lib:path(D, Realm)) end, ok = lists:foreach(RM, Dirs), - NewState = do_abdicate(Realm, State), - {ok, NewState#s{kx = NewKX}}. + {_, NewState} = do_abdicate(Realm, State), + NewState#s{kx = NewKX}. scrub_pairs([#key{pubhash = PubHash, keyhash = KeyHash} | Rest], Pairs) -> scrub_pairs(Rest, maps:without([PubHash, KeyHash], Pairs)); diff --git a/zomp/lib/otpr/zx/0.3.0/src/zx_key.erl b/zomp/lib/otpr/zx/0.3.0/src/zx_key.erl index 999da29..bcd4998 100644 --- a/zomp/lib/otpr/zx/0.3.0/src/zx_key.erl +++ b/zomp/lib/otpr/zx/0.3.0/src/zx_key.erl @@ -24,7 +24,7 @@ -spec path(public | private, zx:key_id()) -> file:filename(). -path(Type, {Realm, KeyHash}) when is_binary(KeyHash) -> +path(Type, {Realm, KeyHash}) -> Size = byte_size(KeyHash) * 8, <> = KeyHash, String = integer_to_list(N, 36), @@ -33,9 +33,7 @@ path(Type, {Realm, KeyHash}) when is_binary(KeyHash) -> public -> String ++ ".pub.der"; private -> String ++ ".key.der" end, - zx_lib:path(key, Realm, Name); -path(Type, {Realm, KeyName}) -> - zx_lib:path(key, Realm, KeyName). + zx_lib:path(key, Realm, Name). @@ -82,12 +80,10 @@ generate_rsa2(Owner, PemFile, KeyFile, PubFile) -> true -> ok = tell(info, "~ts and ~ts agree", [KeyFile, PubFile]), PubHash = crypto:hash(sha512, PubBin), - KeyHash = crypto:hash(sha512, KeyBin), - PairHash = crypto:hash(sha512, <>), - KeyData = {PairHash, {none, PubBin}, {none, KeyBin}}, + KeyData = {PubHash, {none, PubBin}, {none, KeyBin}}, ok = zx_daemon:register_key(Owner, KeyData), ok = zx_lib:rm_rf(filename:dirname(KeyFile)), - {ok, PairHash}; + {ok, PubHash}; false -> ok = lists:foreach(fun file:delete/1, [PemFile, KeyFile, PubFile]), ok = tell(error, "Something has gone wrong."),