mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
add initial work for openssl signatures add basic C test files for ciphers and signatures more signature classes, comments for evp base classes more signature tests fix super calls for input consumers fix getOutputArtifact for tests formatting delete redundant test files move algorithm methods to OpenSSLOperation refactor ECKeyGenOperation for new EVP classes formatting fix getOutputArtifact fix cipher and digest operation test results mv openssl signature to another PR
35 lines
1.4 KiB
Plaintext
35 lines
1.4 KiB
Plaintext
private import experimental.quantum.Language
|
|
private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow
|
|
private import OpenSSLOperationBase
|
|
private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers
|
|
private import semmle.code.cpp.dataflow.new.DataFlow
|
|
|
|
class ECKeyGenOperation extends OpenSSLOperation, Crypto::KeyGenerationOperationInstance {
|
|
ECKeyGenOperation() { this.(Call).getTarget().getName() = "EC_KEY_generate_key" }
|
|
|
|
override Expr getAlgorithmArg() { result = this.(Call).getArgument(0) }
|
|
|
|
override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() }
|
|
|
|
override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() {
|
|
result.asExpr() = this.(Call).getArgument(0)
|
|
}
|
|
|
|
override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() {
|
|
none() // no explicit key size, inferred from algorithm
|
|
}
|
|
|
|
override int getKeySizeFixed() {
|
|
none()
|
|
// TODO: marked as none as the operation itself has no key size, it
|
|
// comes from the algorithm source, but note we could grab the
|
|
// algorithm source and get the key size (see below).
|
|
// We may need to reconsider what is the best approach here.
|
|
// result =
|
|
// this.getAnAlgorithmValueConsumer()
|
|
// .getAKnownAlgorithmSource()
|
|
// .(Crypto::EllipticCurveInstance)
|
|
// .getKeySize()
|
|
}
|
|
}
|