@@ -435,6 +435,17 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
435435 final override ConsumerInputDataFlowNode getInputNode ( ) { result = inputNode }
436436 }
437437
438+ final private class SignatureArtifactConsumer extends ArtifactConsumerAndInstance {
439+ ConsumerInputDataFlowNode inputNode ;
440+
441+ SignatureArtifactConsumer ( ) {
442+ exists ( SignatureOperationInstance op | inputNode = op .getSignatureConsumer ( ) ) and
443+ this = Input:: dfn_to_element ( inputNode )
444+ }
445+
446+ final override ConsumerInputDataFlowNode getInputNode ( ) { result = inputNode }
447+ }
448+
438449 /**
439450 * An artifact that is produced by an operation, representing a concrete artifact instance rather than a synthetic consumer artifact.
440451 */
@@ -471,6 +482,8 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
471482 override DataFlowNode getOutputNode ( ) { result = creator .getOutputArtifact ( ) }
472483
473484 KeyOperationInstance getCreator ( ) { result = creator }
485+
486+ KeyOperationInstance getCreator ( ) { result = creator }
474487 }
475488
476489 /**
@@ -800,6 +813,8 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
800813 */
801814 abstract class SignatureOperationInstance extends KeyOperationInstance {
802815 /**
816+ * Gets the consumer of the signature that is being verified in case of a
817+ * verification operation.
803818 * Gets the consumer of the signature that is being verified in case of a
804819 * verification operation.
805820 */
@@ -1300,7 +1315,6 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
13001315 TKeyOperation ( KeyOperationInstance e ) or
13011316 TKeyOperationAlgorithm ( KeyOperationAlgorithmInstanceOrValueConsumer e ) or
13021317 TKeyOperationOutput ( KeyOperationOutputArtifactInstance e ) or
1303- TSignature ( SignatureOperationInstance e ) or
13041318 // Non-Standalone Algorithms (e.g., Mode, Padding)
13051319 // These algorithms are always tied to a key operation algorithm
13061320 TModeOfOperationAlgorithm ( ModeOfOperationAlgorithmInstance e ) or
@@ -1547,6 +1561,20 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
15471561 override LocatableElement asElement ( ) { result = instance }
15481562 }
15491563
1564+ /**
1565+ * A signature input. This may represent a signature, or a signature component
1566+ * such as the scalar values r and s in ECDSA.
1567+ */
1568+ final class SignatureArtifactNode extends ArtifactNode , TSignatureInput {
1569+ SignatureArtifactConsumer instance ;
1570+
1571+ SignatureArtifactNode ( ) { this = TSignatureInput ( instance ) }
1572+
1573+ final override string getInternalType ( ) { result = "SignatureInput" }
1574+
1575+ override LocatableElement asElement ( ) { result = instance }
1576+ }
1577+
15501578 /**
15511579 * A salt input.
15521580 */
0 commit comments