@@ -130,7 +130,7 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
130
130
/**
131
131
* An element that is flow-aware, i.e., it has an input and output node implicitly used for data flow analysis.
132
132
*/
133
- abstract class FlowAwareElement extends LocatableElement {
133
+ abstract private class FlowAwareElementImpl extends LocatableElement {
134
134
/**
135
135
* Gets the output node for this element, which should usually be the same as `this`.
136
136
*/
@@ -155,6 +155,8 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
155
155
abstract predicate flowsTo ( FlowAwareElement other ) ;
156
156
}
157
157
158
+ final class FlowAwareElement = FlowAwareElementImpl ;
159
+
158
160
/**
159
161
* An element that represents a _known_ cryptographic asset with a determinable value OR an artifact.
160
162
*
@@ -187,7 +189,7 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
187
189
* 1. A value (e.g., a string or integer literal) *or*
188
190
* 1. An input for which a value cannot be determined (e.g., `argv`, file system reads, and web request headers)
189
191
*/
190
- abstract class GenericSourceInstance extends FlowAwareElement {
192
+ abstract class GenericSourceInstance extends FlowAwareElementImpl {
191
193
final override ConsumerInputDataFlowNode getInputNode ( ) { none ( ) }
192
194
193
195
abstract string getInternalType ( ) ;
@@ -257,7 +259,7 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
257
259
*
258
260
* A consumer can consume multiple instances and types of assets at once, e.g., both a `PaddingAlgorithm` and `CipherAlgorithm`.
259
261
*/
260
- abstract private class ConsumerElement extends FlowAwareElement {
262
+ abstract private class ConsumerElement extends FlowAwareElementImpl {
261
263
abstract KnownElement getAKnownSource ( ) ;
262
264
263
265
override predicate flowsTo ( FlowAwareElement other ) { none ( ) }
@@ -337,7 +339,7 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
337
339
/**
338
340
* An element that represents a _known_ cryptographic artifact.
339
341
*/
340
- abstract class ArtifactInstance extends KnownElement , FlowAwareElement {
342
+ abstract class ArtifactInstance extends KnownElement , FlowAwareElementImpl {
341
343
abstract predicate isConsumerArtifact ( ) ; // whether this is an input artifact defined by its consumer
342
344
}
343
345
0 commit comments