[Pki-devel] [PATCH] 0084..0086 Lightweight CA replication support

Fraser Tweedale ftweedal at redhat.com
Sat Apr 23 09:21:47 UTC 2016


On Fri, Apr 22, 2016 at 07:50:06PM -0400, John Magne wrote:
> I took a look at the stuff alee asked for.
> 
> CFU even took a quick look when I asked her a couple of questions.
> She was unsure of something (as was I) and she would like to be able
> to take a closer look next week. I will give my quick thoughts.
> 
> 1. I agree that HSM support is not in the patch, seems fine to move that
> to a future ticket.
> 
Thanks.  I filed ticket: https://fedorahosted.org/pki/ticket/2292

> Here is one thing I was kind of worried about:
> This is the code that imports the archive of the desired private key.
> 
> 
> ublic static PrivateKey importPKIArchiveOptions(
> +            CryptoToken token, PrivateKey unwrappingKey,
> +            PublicKey pubkey, byte[] data)
> +            throws InvalidBERException, Exception {
> +        ByteArrayInputStream in = new ByteArrayInputStream(data);
> +        PKIArchiveOptions options = (PKIArchiveOptions)
> +            (new PKIArchiveOptions.Template()).decode(in);
> +        EncryptedKey encKey = options.getEncryptedKey();
> +        EncryptedValue encVal = encKey.getEncryptedValue();
> +        AlgorithmIdentifier algId = encVal.getSymmAlg();
> +        BIT_STRING encSymKey = encVal.getEncSymmKey();
> +        BIT_STRING encPrivKey = encVal.getEncValue();
> 
> This the wrapper object that is build off of the caSigningUnit key gotten
> in the other patch, the RetrieverThread like this:
> 
> 
> 
>  PrivateKey unwrappingKey = hostCA.mSigningUnit.getPrivateKey();
> 
> 
> 
> The code below works fine if said key is RSA. I talked over with CFU and she said there
> could be a chance this key is ECC for an ECC CA.
> 
> We both think the rest of the code in this routine is fine, except for possibly that.
> She is also not even sure if JSS can support an ECC private key wrapper.
> 
Yes, it is currently not supported in JSS (I'm unsure if NSS
supports it).  However, because the first release of Lightweight CAs
is to support FreeIPA sub-CAs feature, and FreeIPA does not yet
support EC CA, I don't think it's a show-stopper.  I filed a ticket
for key replication with non-RSA CA:

https://fedorahosted.org/pki/ticket/2291

> She requests you guys give her a day or two to look at it.
> 
No problem.  Thank you (and Christina) for the review.

Cheers,
Fraser

> Except for the hsm issue, the code that calls this routine in the thread seems fine too.
> 
> +
> +        KeyWrapper wrapper = token.getKeyWrapper(KeyWrapAlgorithm.RSA);
> +        wrapper.initUnwrap(unwrappingKey, null);
> 
> 
> 
> 
> 
> 
> +        SymmetricKey sk = wrapper.unwrapSymmetric(
> +            encSymKey.getBits(), SymmetricKey.Type.DES3, 0);
> +
> +        ASN1Value v = algId.getParameters();
> +        v = ((ANY) v).decodeWith(new OCTET_STRING.Template());
> +        byte iv[] = ((OCTET_STRING) v).toByteArray();
> +        IVParameterSpec ivps = new IVParameterSpec(iv);
> +
> +        wrapper = token.getKeyWrapper(KeyWrapAlgorithm.DES3_CBC_PAD);
> +        wrapper.initUnwrap(sk, ivps);
> +        PrivateKey.Type keyType = pubkey.getAlgorithm().equals("EC")
> +            ? PrivateKey.Type.EC
> +            : PrivateKey.Type.RSA;
> +        return wrapper.unwrapPrivate(encPrivKey.getBits(), keyType, pubkey);
> +    }
> 
> 
> ----- Original Message -----
> > From: "Fraser Tweedale" <ftweedal at redhat.com>
> > To: "Ade Lee" <alee at redhat.com>
> > Cc: pki-devel at redhat.com
> > Sent: Wednesday, April 20, 2016 9:58:54 PM
> > Subject: Re: [Pki-devel] [PATCH] 0084..0086 Lightweight CA replication	support
> > 
> > Thanks Ade.  Updated patch 0096 attached.  Comments inline.
> > 
> > On Wed, Apr 20, 2016 at 11:30:52AM -0400, Ade Lee wrote:
> > > Comments:
> > > 
> > > 95 - ack
> > > 
> > > 96 -
> > > 
> > > 1. You have made the return type of initSigUnit() to be boolean.
> > >  Should you be checking the return value in init()?
> > > 
> > It is not needed to check it here; only when re-entering init from
> > the KeyReplicatorRunner thread.
> > 
> > > 2. In addInstanceToAuthorityKeyHosts(), you are still using only the
> > > hostname.  Should be host:port
> > > 
> > Good pickup.  Fixed in latest patch.
> > 
> > > 3. The logic in the KeyRetrieverRunner class looks OK to me, but I'd
> > > like cfu and/or jmagne to check it and make sure we are calling the
> > > right primitives to wrap/unwrap inside the cryptographic token.
> > > 
> > > Also I'd like them to confirm that this would wor for an HSM.
> > > Statements like the following make me question that:
> > >    CryptoToken token = manager.getInternalKeyStorageToken()
> > > 
> > It won't work on HSM.  Can I get an HSM to test with? ;) I've filed
> > a ticket for HSM support[1].  FreeIPA does not yet support HSM[2] so
> > I think we can put it in 10.4 milestone (I've put it there for now).
> > 
> > [1] https://fedorahosted.org/pki/ticket/2292
> > [2] https://fedorahosted.org/freeipa/ticket/5608
> > 
> > > 4. Can you explain what happens if for some reason the script fails to
> > > retrieve the key?  Do we end up retrying later and if so, when?
> > > 
> > If the script fails to retrieve the key, it does not retry
> > automatically.  I filed a ticket[3] to implement retry with
> > backoff (this patchset is big enough already!) and put it in
> > 10.3.1 milestone (that's up for discussion).
> > 
> > [3] https://fedorahosted.org/pki/ticket/2293
> > 
> > Right now, the following events cause authority reinitialisation,
> > entailing key retrieval if necessary:
> > 
> > - Dogtag is restarted
> > - LDAP disconnect-reconnect
> > - LDAP modification of authority replicated from another clone
> > 
> > > 97- ACK
> > > 
> > > 98 - ACK
> > >  
> > Thanks.  Any feedback on patch 0099?
> > 
> > _______________________________________________
> > Pki-devel mailing list
> > Pki-devel at redhat.com
> > https://www.redhat.com/mailman/listinfo/pki-devel




More information about the Pki-devel mailing list