-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Quantum: Initial support for C# #19905
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…to tob/quantum-csharp
…to tob/quantum-csharp
- Added support to get input consumers and output artifacts - Added padding and cipher mode algorithm instances, as well as dataflow to link these to `CryptoStream` key operations
…to tob/quantum-csharp
…to tob/quantum-csharp
…to tob/quantum-csharp
This commit also reorganizes the dotnet library to move utility classes into the private Cryptography module.
…to tob/quantum-csharp
@fegge Check out my test cases. I do 3 tests, nodes, node edges, and node properties. That should cover everything. Can you update the PR to do that kind of test? |
@fegge make sure to work with @nicolaswill to get all my PRs in first and double check if model updates on my part break anything. |
/** | ||
* An instance of random number generation, modelled as the expression | ||
* tied to an output node (i.e., the RNG output) | ||
*/ |
Check warning
Code scanning / CodeQL
Misspelling Warning
private import Cryptography | ||
private import FlowAnalysis | ||
|
||
class NamedCurveAlgorithmInstance extends Crypto::EllipticCurveInstance instanceof NamedCurvePropertyAccess |
Check warning
Code scanning / CodeQL
Suggest using non-extending subtype relationships. Warning
NamedCurvePropertyAccess
ECParameters() { this.hasName("ECParameters") } | ||
} | ||
|
||
class RSAParameters extends CryptographyType { |
Check warning
Code scanning / CodeQL
Acronyms should be PascalCase/camelCase. Warning
ECDsaClass() { this.hasName("ECDsa") } | ||
} | ||
|
||
private class RSAClass extends CryptographyType { |
Check warning
Code scanning / CodeQL
Acronyms should be PascalCase/camelCase. Warning
RSAClass() { this.hasName("RSA") } | ||
} | ||
|
||
private class RSAPKCS1SignatureFormatter extends CryptographyType { |
Check warning
Code scanning / CodeQL
Acronyms should be PascalCase/camelCase. Warning
override string getRawMACAlgorithmName() { result = super.getType().getName() } | ||
} | ||
|
||
class HMACAlgorithmQualifier extends Crypto::HMACAlgorithmInstance, Crypto::AlgorithmValueConsumer, |
Check warning
Code scanning / CodeQL
Acronyms should be PascalCase/camelCase. Warning
|
||
module AeadFlow = CreationToUseFlow<AeadCreation, AeadUse>; | ||
|
||
module HMACFlow = CreationToUseFlow<HMACCreation, MacUse>; |
Check warning
Code scanning / CodeQL
Acronyms should be PascalCase/camelCase. Warning
} | ||
|
||
module SigningCreateToUseFlow { | ||
private module SigningCreateToUseFlow implements DataFlow::ConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
/** | ||
* An additional flow step across new object creations that use the original objects. | ||
* | ||
* Example: | ||
* ``` | ||
* RSA rsa = RSA.Create() | ||
* RSAPKCS1SignatureFormatter rsaFormatter = new(rsa); | ||
* rsaFormatter.SetHashAlgorithm(nameof(SHA256)); | ||
* signedHash = rsaFormatter.CreateSignature(hash); | ||
* ``` | ||
*/ |
Check warning
Code scanning / CodeQL
Predicate QLDoc style. Warning
} | ||
} | ||
|
||
class HMACOperationInstance extends Crypto::MACOperationInstance instanceof MacUse { |
Check warning
Code scanning / CodeQL
Acronyms should be PascalCase/camelCase. Warning
This PR adds support for parts of the .NET cryptographic libraries. Currently, it contains QL libraries and tests for