@@ -4,21 +4,16 @@ import TlsLibraryModel
4
4
5
5
/**
6
6
* Configuration to determine the state of a context being used to create
7
- * a connection. There is one configuration for each pair of `TlsLibrary` and `ProtocolVersion`,
8
- * such that a single configuration only tracks contexts where a specific `ProtocolVersion` is allowed.
7
+ * a connection. The configuration uses a flow state to track the `TlsLibrary`
8
+ * and the insecure `ProtocolVersion`s that are allowed.
9
9
*
10
10
* The state is in terms of whether a specific protocol is allowed. This is
11
11
* either true or false when the context is created and can then be modified
12
- * later by either restricting or unrestricting the protocol (see the predicates
13
- * `isRestriction` and `isUnrestriction `).
12
+ * later by either restricting or unrestricting the protocol (see the predicate
13
+ * `isAdditionalFlowStep `).
14
14
*
15
- * Since we are interested in the final state, we want the flow to start from
16
- * the last unrestriction, so we disallow flow into unrestrictions. We also
17
- * model the creation as an unrestriction of everything it allows, to account
18
- * for the common case where the creation plays the role of "last unrestriction".
19
- *
20
- * Since we really want "the last unrestriction, not nullified by a restriction",
21
- * we also disallow flow into restrictions.
15
+ * The state is represented as a bit vector, where each bit corresponds to a
16
+ * protocol version. The bit is set if the protocol is allowed.
22
17
*/
23
18
module InsecureContextConfiguration implements DataFlow:: StateConfigSig {
24
19
private newtype TFlowState =
0 commit comments