Dear Paul, I now see what happened here. I have made this harder to track by answering the DISCUSS items only in my email - when, in fact, we have addressed or at least discussed everything on github. I’m sorry! There were so many emails, I also didn’t want to make the answers too long.
As a general comment, for everyone else who might see this: if you miss answers to your COMMENTS, we’re sorry! - but you’re likely to find them fast by going to: https://github.com/ietf-tapswg/api-drafts/issues … removing “is:open” from the search field but instead writing your last name there. Paul, please see below: > ---------------------------------------------------------------------- > COMMENT: > ---------------------------------------------------------------------- > > I updated my discuss items to non-blocking comments. I'm still a bit concerned > that some security items are not fully addressed by the API or its Security > Considerations. Resolving my comments would make the document a bit more clear > and useful I think. > > I'm not sure that the model really expands from netflows to IP flows (or TOR) > in the future. > > I'm not sure the Security Considerations warn enough about re-using the same > credentials with different protocols/auth mechanisms. (eg TLS and IKEv2, or > TLS > 1.2 and QUIC, or using RSA as RSA-PKCS1.5 as well as RSA-PSS) > > Unqualified Hostname vs FQDN seems a security risk punted mostly to the > application. These are new comments as part of the COMMENT block. As with the others, we will file an issue on our github and resolve them there. Personally, I think we should use these comments to strengthen our security considerations section (e.g., to warn about the security risk when not using an FQDN. Indeed such a warning does now exist in the text, and using an FQDN is qualified with a SHOULD, but the security considerations section could point at it once again). Here comes an answer for the other COMMENT items on the basis of what happened on github: > I don't understand this code: > > Connection := Preconnection.Initiate() > Connection2 := Connection.Clone() > > Connection -> Ready<> > Connection2 -> Ready<> > > //---- Ready event handler for any Connection C begin ---- > C.Send(messageDataRequest) > > Where does "C" come from in "C.Send" ? The comment says "any Connection C"? Issue: https://github.com/ietf-tapswg/api-drafts/issues/1368 PR to resolve: https://github.com/ietf-tapswg/api-drafts/pull/1413 We hope that the text that we added makes this clear enough: this code block is an event handler for Connection C. Either it gets C as a parameter, or it’s in some other way associated to Connection C. > I have a question on this code: > > Preconnections are reusable after being used to initiate a > Connection, whether this Connection was closed or not. Hence, it > would be correct to continue as follows after the above example: > > //.. carry out adjustments to the Preconnection, if desired > Connection := Preconnection.Initiate() > > What would happen here? I can imagine a "compiler" turning this into > a noop. I can also see it would kill the existing Connection state and > start a new one. This could be to a different IP address (eg if the DNS > name has A and AAAA). When starting a new one, what would happen to any > Message or Event queues for Connection ? Issue: https://github.com/ietf-tapswg/api-drafts/issues/1369 PR to resolve: https://github.com/ietf-tapswg/api-drafts/issues/1369 A Preconnection is just a data structure, used as a template to create a Connection - so, the call to Initiate() after adjustments wouldn’t affect the already ongoing Connection. We hope that the text that we added makes this clear enough now. > Preconnection.AddRemote(RemoteCandidates) > > Should this not technically be: > > Preconnection.AddRemote([]RemoteCandidates) > > as the array contains at least a host and a stun server candidate? > > Maybe this is just the difference between you using the variable you define > that has been assigned, versus a more C like prototype format, eg: > > Preconnection := NewPreconnection([]LocalEndpoint, > > So I guess if your example here had set LocalEndpoint := [a,b] you would not > have used [] in the call ? Issue: https://github.com/ietf-tapswg/api-drafts/issues/1371 Commit: https://github.com/ietf-tapswg/api-drafts/commit/e1ca6015d25c8a2a3f78f99cfc552ed4fd63019e … this should be resolved now. > Section 6.1.4 > > Perhaps it would be useful to add a Local Endpoint with ephemeral port before > the Local Endpoint with static port example, as the ephemeral port should be > the far more common case. Right now the examples might give the wrong > impression > a local port MUST be specified. Yes, good catch, thanks! - addressed: Issue: https://github.com/ietf-tapswg/api-drafts/issues/1374 PR: https://github.com/ietf-tapswg/api-drafts/pull/1431 > SecurityParameters.Set() seems to allow to set our identiy and our > certificate, > but not the remote peer's identity or certificate? For example, one might want > to pin a remote certificate and not just rely on a WithHostname() identifier > being present as subjectAltname on a certificate. Issue: https://github.com/ietf-tapswg/api-drafts/issues/1375 PR: https://github.com/ietf-tapswg/api-drafts/pull/1430 (this PR introduces client- and server- certificates) > The Connection state, which can be one of the following: > Establishing, Established, Closing, or Closed. > > I think the text in Section 8 should more clearly show the property names if > the > goal is to have different implementations use the identical name. Eg in this > case, why not write: The Connection state ("state"). The next two entries are > similarly lacking a clear keyword to use: > > Whether the Connection can be used to send data. > > Whether the Connection can be used to receive data. > > eg. why not define words for these to implementations will use the same words, > in this case perhaps ReadySend and ReadyRcv ? > Writing that now, perhaps "state" should be "State" then ? Issue: https://github.com/ietf-tapswg/api-drafts/issues/1377 PR: https://github.com/ietf-tapswg/api-drafts/pull/1437 This PR incorporates your suggestion by introducing three read-only properties: connState (to query for “Establishing”, “Established”, “Closing”, “Closed"), canSend, canReceive. > Section 8.1.1: > > If this property is an Integer > > It is best to define the actual type in this document and not let > implementations choose, if the goal is to try and harmonize implementations. I > also see no non-integer value being given here ? We got a similar comment about this from Lars Eggert, so we discussed both in this issue: https://github.com/ietf-tapswg/api-drafts/issues/1346 This is a more general thing, affecting several properties. After trying and discussing (at an interim) a somewhat heavy-handed approach to solve this for all of them: https://github.com/ietf-tapswg/api-drafts/pull/1409 … we ended up with what we agreed was a better way to do it, in this PR: https://github.com/ietf-tapswg/api-drafts/pull/1410 Now it’s a non-negative Integer, with a defined special value of 0, and how to specify "Full Coverage” is explained in the text. I hope this helps - my apologies for not immediately answering how we addressed the COMMENT items ! Cheers, Michael _______________________________________________ Taps mailing list [email protected] https://www.ietf.org/mailman/listinfo/taps
