# # patch "ChangeLog" # from [e4d2a75f26fd9f54452af72f2d91b681475ad174] # to [e0bb339636dc10add32e4029f9b22ecbb5c5ea57] # # patch "tests/t_genkey.at" # from [00fcefb5a6cc4e1767ee538090c0720f37aaff31] # to [79ddbe2d6c180820c0ced9ca871a56d5ff194501] # # patch "transforms.cc" # from [4a53f37a0a51f1477b8b339b6e5737c1323f3c02] # to [425574e7b998c9fd7acba1b96239dd0f120f31f7] # ======================================================================== --- ChangeLog e4d2a75f26fd9f54452af72f2d91b681475ad174 +++ ChangeLog e0bb339636dc10add32e4029f9b22ecbb5c5ea57 @@ -1,3 +1,10 @@ +2005-08-25 Matt Johnston + + * transform.cc ({int,ext}ernalize_rsa_keypair_id): don't + convert the username portion of key ids to/from ACE. + * tests/t_genkey.at: check that address@hidden works + and address@hidden doesn't. + 2005-08-24 Nathaniel Smith * database.cc (assert_sqlite3_ok): Remove accidentally-left-in ======================================================================== --- tests/t_genkey.at 00fcefb5a6cc4e1767ee538090c0720f37aaff31 +++ tests/t_genkey.at 79ddbe2d6c180820c0ced9ca871a56d5ff194501 @@ -47,4 +47,19 @@ AT_CHECK(grep pink stdout, [], [ignore]) AT_CHECK(grep yellow stdout, [], [ignore]) +# third section, keys with a + in the user portion work, keys with a +# + in the domain portion don't work. address@hidden + +AT_CHECK((echo $GOODKEY; echo $GOODKEY) | MONOTONE genkey $GOODKEY, [], [ignore], [ignore]) +#exists +AT_CHECK(MONOTONE ls keys, [], [stdout]) +AT_CHECK(grep $GOODKEY stdout, [], [ignore]) + +# bad keys fail address@hidden +AT_CHECK((echo $BADKEY1; echo $BADKEY1) | MONOTONE genkey $BADKEY1, [1], [ignore], [ignore]) address@hidden +AT_CHECK((echo $BADKEY2; echo $BADKEY2) | MONOTONE genkey $BADKEY2, [1], [ignore], [ignore]) + AT_CLEANUP ======================================================================== --- transforms.cc 4a53f37a0a51f1477b8b339b6e5737c1323f3c02 +++ transforms.cc 425574e7b998c9fd7acba1b96239dd0f120f31f7 @@ -758,9 +758,10 @@ tokenizer; boost::char_separator sep("", ".@", boost::keep_empty_tokens); tokenizer tokens(utf(), sep); + bool in_domain = false; for(tokenizer::iterator i = tokens.begin(); i != tokens.end(); ++i) { - if (*i == "." || *i == "@") + if (!in_domain || *i == "." || *i == "@") tmp += *i; else { @@ -768,6 +769,8 @@ utf8_to_ace(*i, a); tmp += a(); } + if (*i == "@") + in_domain = true; } key = tmp; } @@ -788,9 +791,10 @@ tokenizer; boost::char_separator sep("", ".@", boost::keep_empty_tokens); tokenizer tokens(key(), sep); + bool in_domain = false; for(tokenizer::iterator i = tokens.begin(); i != tokens.end(); ++i) { - if (*i == "." || *i == "@") + if (!in_domain || *i == "." || *i == "@") tmp += *i; else { @@ -799,6 +803,8 @@ ace_to_utf8(a, u); tmp += u(); } + if (*i == "@") + in_domain = true; } utf = tmp; }