Re: Re: [patch] cgd

"Roland C. Dowdeswell" <[email protected]> Thu, 2 Dec 2010 05:07:10 +0000
Newsgroups gmane.os.netbsd.devel.crypto
Message-ID <[email protected]>
On Thu, Dec 02, 2010 at 04:23:57AM +0000, Taylor R Campbell wrote:
>

>    Date: Wed, 1 Dec 2010 23:57:45 +0000
>    From: "Roland C. Dowdeswell" <[email protected]>
> 
>    I'm reviewing the patch and it looks mostly good.  I've checked in
>    a couple of the bits already and will check the rest in with only
>    cosmetic modifications (such as breaking the patch into separate
>    commits implementing single changes) over the course of the next
>    few hours.
> 
> Great, thanks!

So, the part of your patch:

-       (void)params_filldefaults(p);
-       (void)keygen_filldefaults(p->keygen, p->keylen);
-       p->key = getkey("new file", p->keygen, p->keylen);
 
-       kg = keygen_generate(KEYGEN_STOREDKEY);
-       kg->kg_key = bits_xor(p->key, oldp->key);
-       keygen_addlist(&p->keygen, kg);
+       (void)params_filldefaults(p);
+       if (p->keygen && !p->keygen->next &&
+           p->keygen->kg_method == KEYGEN_STOREDKEY)
+               p->keygen->kg_key = bits_dup(oldp->key);
+       else
+               (void)keygen_filldefaults(p->keygen, p->keylen);
 
        if (!params_verify(p)) {
                warnx("can't generate new parameters file");
                return -1;
        }
 
+       p->key = getkey("new file", p->keygen, p->keylen);
+
+       /* put in a stored key only if necessary to preserve the key */
+       if (!bits_match(p->key, oldp->key)) {
+               kg = keygen_generate(KEYGEN_STOREDKEY);
+               kg->kg_key = bits_xor(p->key, oldp->key);
+               keygen_addlist(&p->keygen, kg);
+       }

Your use case here is to generate a new params file which has in it
only a stored key?

--
    Roland Dowdeswell                      http://Imrryr.ORG/~elric/