From e0ff863b85a61beeb40f9ad62acded90ddfed28e Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Sun, 22 Feb 2026 17:51:09 +0100 Subject: [PATCH 1/6] Support additional JCA algorithms and tests Extend the experimental JCA model to recognize additional symmetric ciphers and padding/mode types (ARIA, Camellia, Twofish, SEED, Salsa20, LRW, PKCS1Padding, PSS) and fix DES/DESEDE classification ordering. Add test coverage with AdditionalSymmetricAlgorithms.java and expand existing tests: EllipticCurve1 (Ed448 and NIST P-256/P-384/P-521 key generation) and SymmetricModesTest (3DES ECB, DES CFB/OFB). Update standardization logic and test expectations (node_edges, node_properties, nodes) to reflect the new algorithm mappings. --- java/ql/lib/experimental/quantum/JCA.qll | 35 ++- .../jca/AdditionalSymmetricAlgorithms.java | 98 ++++++++ .../quantum/jca/EllipticCurve1.java | 35 +++ .../quantum/jca/SymmetricModesTest.java | 34 +++ .../library-tests/quantum/node_edges.expected | 138 +++++++++++ .../quantum/node_properties.expected | 224 +++++++++++++++++- .../library-tests/quantum/nodes.expected | 135 +++++++++++ .../quantum/experimental/Standardization.qll | 33 ++- 8 files changed, 715 insertions(+), 17 deletions(-) create mode 100644 java/ql/test/experimental/library-tests/quantum/jca/AdditionalSymmetricAlgorithms.java diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index feac5aaf0ea3..b95af21b0b8e 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -27,9 +27,10 @@ module JCAModel { predicate cipher_names(string algo) { algo.toUpperCase() .matches([ - "AES", "AESWrap", "AESWrapPad", "ARCFOUR", "Blowfish", "ChaCha20", "ChaCha20-Poly1305", - "DES", "DESede", "DESedeWrap", "ECIES", "PBEWith%", "RC2", "RC4", "RC5", "RSA", - "Skipjack", "Idea" + "AES", "AESWrap", "AESWrapPad", "ARCFOUR", "ARIA", "Blowfish", "Camellia", + "ChaCha20", "ChaCha20-Poly1305", "DES", "DESede", "DESedeWrap", "ECIES", + "PBEWith%", "RC2", "RC4", "RC5", "RSA", "Salsa20", "SEED", "Skipjack", "Idea", + "Twofish" ].toUpperCase()) } @@ -189,6 +190,8 @@ module JCAModel { type = KeyOpAlg::PCBC() and name = "PCBC" or type = KeyOpAlg::KWP() and name = "KWP" + or + type = KeyOpAlg::LRW() and name = "LRW" } bindingset[name] @@ -197,13 +200,31 @@ module JCAModel { upper.matches("AES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) or - // NOTE: there is DES and DESede - upper.matches("DES%") and + // NOTE: DESede (TripleDES) must be matched before DES% to avoid misclassification + upper.matches("DESEDE%") and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) + or + not upper.matches("DESEDE%") and upper.matches("DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or upper = "TRIPLEDES" and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or + upper = "ARIA" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::ARIA()) + or + upper = "CAMELLIA" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::CAMELLIA()) + or + upper = "TWOFISH" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TWOFISH()) + or + upper = "SEED" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::SEED()) + or + upper = "SALSA20" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::SALSA20()) + or upper = "IDEA" and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) or @@ -363,6 +384,10 @@ module JCAModel { type instanceof KeyOpAlg::PKCS7 and name = ["PKCS5Padding", "PKCS7Padding"] // TODO: misnomer in the JCA? or type instanceof KeyOpAlg::OAEP and name.matches("OAEP%") // TODO: handle OAEPWith% + or + type instanceof KeyOpAlg::PKCS1_V1_5 and name = "PKCS1Padding" + or + type instanceof KeyOpAlg::PSS and name = "PSS" } override KeyOpAlg::PaddingSchemeType getPaddingType() { diff --git a/java/ql/test/experimental/library-tests/quantum/jca/AdditionalSymmetricAlgorithms.java b/java/ql/test/experimental/library-tests/quantum/jca/AdditionalSymmetricAlgorithms.java new file mode 100644 index 000000000000..4e51f4d3f815 --- /dev/null +++ b/java/ql/test/experimental/library-tests/quantum/jca/AdditionalSymmetricAlgorithms.java @@ -0,0 +1,98 @@ +package com.example.crypto.algorithms; + +import java.security.*; +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; + +/** + * Demonstrates symmetric encryption using cipher algorithms beyond the + * standard JCA defaults, typically available through BouncyCastle. + * + * Algorithms covered: Twofish, ARIA, Camellia, Salsa20, SEED, Blowfish. + */ +public class AdditionalSymmetricAlgorithms { + + /** + * Twofish in CBC mode with PKCS5 padding. + */ + public byte[] twofishEncrypt(byte[] plaintext) throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance("Twofish"); + keyGen.init(256); + SecretKey key = keyGen.generateKey(); + Cipher cipher = Cipher.getInstance("Twofish/CBC/PKCS5Padding"); + byte[] iv = new byte[16]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } + + /** + * ARIA in CBC mode with PKCS5 padding. + */ + public byte[] ariaEncrypt(byte[] plaintext) throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance("ARIA"); + keyGen.init(256); + SecretKey key = keyGen.generateKey(); + Cipher cipher = Cipher.getInstance("ARIA/CBC/PKCS5Padding"); + byte[] iv = new byte[16]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } + + /** + * Camellia in CBC mode with no padding. + */ + public byte[] camelliaEncrypt(byte[] plaintext) throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance("Camellia"); + keyGen.init(256); + SecretKey key = keyGen.generateKey(); + Cipher cipher = Cipher.getInstance("Camellia/CBC/NoPadding"); + byte[] iv = new byte[16]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } + + /** + * Salsa20 stream cipher. + */ + public byte[] salsa20Encrypt(byte[] plaintext) throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance("Salsa20"); + keyGen.init(256); + SecretKey key = keyGen.generateKey(); + Cipher cipher = Cipher.getInstance("Salsa20"); + cipher.init(Cipher.ENCRYPT_MODE, key); + return cipher.doFinal(plaintext); + } + + /** + * SEED in CBC mode with PKCS5 padding. + */ + public byte[] seedEncrypt(byte[] plaintext) throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance("SEED"); + keyGen.init(128); + SecretKey key = keyGen.generateKey(); + Cipher cipher = Cipher.getInstance("SEED/CBC/PKCS5Padding"); + byte[] iv = new byte[16]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } + + /** + * Blowfish in CBC mode with PKCS5 padding. + */ + public byte[] blowfishEncrypt(byte[] plaintext) throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance("Blowfish"); + keyGen.init(128); + SecretKey key = keyGen.generateKey(); + Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); + byte[] iv = new byte[8]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } +} diff --git a/java/ql/test/experimental/library-tests/quantum/jca/EllipticCurve1.java b/java/ql/test/experimental/library-tests/quantum/jca/EllipticCurve1.java index 71481b7e7a92..d01c86dc35a1 100644 --- a/java/ql/test/experimental/library-tests/quantum/jca/EllipticCurve1.java +++ b/java/ql/test/experimental/library-tests/quantum/jca/EllipticCurve1.java @@ -115,6 +115,41 @@ public KeyPair generateESKeyPair() throws Exception { return kpg.generateKeyPair(); } + /** + * Generates an Ed448 key pair (for signatures). + */ + public KeyPair generateEd448KeyPair() throws Exception { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed448"); + return kpg.generateKeyPair(); + } + + /** + * Generates a key pair using the NIST P-256 alias for secp256r1. + */ + public KeyPair generateNISTP256KeyPair() throws Exception { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC"); + kpg.initialize(new java.security.spec.ECGenParameterSpec("P-256")); + return kpg.generateKeyPair(); + } + + /** + * Generates a key pair using the NIST P-384 alias for secp384r1. + */ + public KeyPair generateNISTP384KeyPair() throws Exception { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC"); + kpg.initialize(new java.security.spec.ECGenParameterSpec("P-384")); + return kpg.generateKeyPair(); + } + + /** + * Generates a key pair using the NIST P-521 alias for secp521r1. + */ + public KeyPair generateNISTP521KeyPair() throws Exception { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC"); + kpg.initialize(new java.security.spec.ECGenParameterSpec("P-521")); + return kpg.generateKeyPair(); + } + /** * Generates a key pair for an "Other" elliptic curve type. * This serves as a fallback example (using secp256r1). diff --git a/java/ql/test/experimental/library-tests/quantum/jca/SymmetricModesTest.java b/java/ql/test/experimental/library-tests/quantum/jca/SymmetricModesTest.java index 18df2602a7dd..8d6591398eea 100644 --- a/java/ql/test/experimental/library-tests/quantum/jca/SymmetricModesTest.java +++ b/java/ql/test/experimental/library-tests/quantum/jca/SymmetricModesTest.java @@ -128,4 +128,38 @@ public SecretKey generateAESKey() throws Exception { kg.init(256, new SecureRandom()); return kg.generateKey(); } + + // --------------------------- + // DESede and DES Mode Variants + // --------------------------- + /** + * DESede (TripleDES) in ECB mode. + */ + public byte[] tripleDesEcbEncrypt(SecretKey key, byte[] plaintext) throws Exception { + Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding"); + cipher.init(Cipher.ENCRYPT_MODE, key); + return cipher.doFinal(plaintext); + } + + /** + * DES in CFB mode. + */ + public byte[] desCfbEncrypt(SecretKey key, byte[] plaintext) throws Exception { + Cipher cipher = Cipher.getInstance("DES/CFB/NoPadding"); + byte[] iv = new byte[8]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } + + /** + * DES in OFB mode. + */ + public byte[] desOfbEncrypt(SecretKey key, byte[] plaintext) throws Exception { + Cipher cipher = Cipher.getInstance("DES/OFB/NoPadding"); + byte[] iv = new byte[8]; + new SecureRandom().nextBytes(iv); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + return cipher.doFinal(plaintext); + } } diff --git a/java/ql/test/experimental/library-tests/quantum/node_edges.expected b/java/ql/test/experimental/library-tests/quantum/node_edges.expected index 905304ac7715..6afaf9d8d873 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -1,3 +1,74 @@ +| jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | KeyGeneration | Algorithm | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | KeyGeneration | Output | jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | Mode | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | Padding | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:27:42:27:44 | Key | Source | jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:27:47:27:69 | Nonce | Source | jca/AdditionalSymmetricAlgorithms.java:26:38:26:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | Algorithm | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | Input | jca/AdditionalSymmetricAlgorithms.java:28:31:28:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | Key | jca/AdditionalSymmetricAlgorithms.java:27:42:27:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | Nonce | jca/AdditionalSymmetricAlgorithms.java:27:47:27:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | Output | jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:28:31:28:39 | Message | Source | jca/AdditionalSymmetricAlgorithms.java:20:34:20:49 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | KeyGeneration | Algorithm | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | KeyGeneration | Output | jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | Mode | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | Padding | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:41:42:41:44 | Key | Source | jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:41:47:41:69 | Nonce | Source | jca/AdditionalSymmetricAlgorithms.java:40:38:40:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | Algorithm | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | Input | jca/AdditionalSymmetricAlgorithms.java:42:31:42:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | Key | jca/AdditionalSymmetricAlgorithms.java:41:42:41:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | Nonce | jca/AdditionalSymmetricAlgorithms.java:41:47:41:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | Output | jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:42:31:42:39 | Message | Source | jca/AdditionalSymmetricAlgorithms.java:34:31:34:46 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | KeyGeneration | Algorithm | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | KeyGeneration | Output | jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | Mode | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | Padding | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:55:42:55:44 | Key | Source | jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:55:47:55:69 | Nonce | Source | jca/AdditionalSymmetricAlgorithms.java:54:38:54:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | Algorithm | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | Input | jca/AdditionalSymmetricAlgorithms.java:56:31:56:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | Key | jca/AdditionalSymmetricAlgorithms.java:55:42:55:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | Nonce | jca/AdditionalSymmetricAlgorithms.java:55:47:55:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | Output | jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:56:31:56:39 | Message | Source | jca/AdditionalSymmetricAlgorithms.java:48:35:48:50 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | KeyGeneration | Algorithm | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | KeyGeneration | Output | jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | Mode | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | Padding | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:67:42:67:44 | Key | Source | jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | Algorithm | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | Input | jca/AdditionalSymmetricAlgorithms.java:68:31:68:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | Key | jca/AdditionalSymmetricAlgorithms.java:67:42:67:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | Nonce | jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | Output | jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:68:31:68:39 | Message | Source | jca/AdditionalSymmetricAlgorithms.java:62:34:62:49 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | KeyGeneration | Algorithm | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | KeyGeneration | Output | jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | Mode | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | Padding | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:81:42:81:44 | Key | Source | jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:81:47:81:69 | Nonce | Source | jca/AdditionalSymmetricAlgorithms.java:80:38:80:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | Algorithm | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | Input | jca/AdditionalSymmetricAlgorithms.java:82:31:82:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | Key | jca/AdditionalSymmetricAlgorithms.java:81:42:81:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | Nonce | jca/AdditionalSymmetricAlgorithms.java:81:47:81:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | Output | jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:82:31:82:39 | Message | Source | jca/AdditionalSymmetricAlgorithms.java:74:31:74:46 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | KeyGeneration | Algorithm | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | KeyGeneration | Output | jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | Mode | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | Padding | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:95:42:95:44 | Key | Source | jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:95:47:95:69 | Nonce | Source | jca/AdditionalSymmetricAlgorithms.java:94:38:94:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | Algorithm | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | Input | jca/AdditionalSymmetricAlgorithms.java:96:31:96:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | Key | jca/AdditionalSymmetricAlgorithms.java:95:42:95:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | Nonce | jca/AdditionalSymmetricAlgorithms.java:95:47:95:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | Output | jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:96:31:96:39 | Message | Source | jca/AdditionalSymmetricAlgorithms.java:88:35:88:50 | Parameter | | jca/AesWrapAndPBEWith.java:60:33:60:48 | KeyGeneration | Algorithm | jca/AesWrapAndPBEWith.java:58:52:58:56 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:60:33:60:48 | KeyGeneration | Output | jca/AesWrapAndPBEWith.java:60:33:60:48 | Key | | jca/AesWrapAndPBEWith.java:63:31:63:46 | KeyGeneration | Algorithm | jca/AesWrapAndPBEWith.java:58:52:58:56 | KeyOperationAlgorithm | @@ -71,7 +142,9 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | Key | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | KeyGeneration | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | KeyGeneration | Output | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | Key | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | Key | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | Key | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | KeyAgreementAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | KeyGeneration | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | KeyGeneration | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | KeyAgreementAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | KeyGeneration | Output | jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:109:17:109:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | Key | @@ -377,10 +450,14 @@ | jca/EllipticCurve1.java:67:16:67:36 | Key | Algorithm | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | | jca/EllipticCurve1.java:67:16:67:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | | jca/EllipticCurve1.java:67:16:67:36 | KeyGeneration | Output | jca/EllipticCurve1.java:67:16:67:36 | Key | +| jca/EllipticCurve1.java:76:16:76:36 | Key | Algorithm | jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | | jca/EllipticCurve1.java:76:16:76:36 | Key | Algorithm | jca/EllipticCurve1.java:74:61:74:68 | KeyAgreementAlgorithm | +| jca/EllipticCurve1.java:76:16:76:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | | jca/EllipticCurve1.java:76:16:76:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:74:61:74:68 | KeyAgreementAlgorithm | | jca/EllipticCurve1.java:76:16:76:36 | KeyGeneration | Output | jca/EllipticCurve1.java:76:16:76:36 | Key | +| jca/EllipticCurve1.java:84:16:84:36 | Key | Algorithm | jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | | jca/EllipticCurve1.java:84:16:84:36 | Key | Algorithm | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | +| jca/EllipticCurve1.java:84:16:84:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | | jca/EllipticCurve1.java:84:16:84:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | | jca/EllipticCurve1.java:84:16:84:36 | KeyGeneration | Output | jca/EllipticCurve1.java:84:16:84:36 | Key | | jca/EllipticCurve1.java:95:16:95:36 | Key | Algorithm | jca/EllipticCurve1.java:94:66:94:76 | EllipticCurve | @@ -391,9 +468,27 @@ | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | Output | jca/EllipticCurve1.java:106:16:106:36 | Key | | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:115:16:115:36 | Key | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | | jca/EllipticCurve1.java:115:16:115:36 | Key | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Output | jca/EllipticCurve1.java:115:16:115:36 | Key | +| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | Mode | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | Padding | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:123:16:123:36 | Key | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | +| jca/EllipticCurve1.java:123:16:123:36 | Key | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:123:16:123:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | +| jca/EllipticCurve1.java:123:16:123:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:123:16:123:36 | KeyGeneration | Output | jca/EllipticCurve1.java:123:16:123:36 | Key | +| jca/EllipticCurve1.java:132:16:132:36 | Key | Algorithm | jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | +| jca/EllipticCurve1.java:132:16:132:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | +| jca/EllipticCurve1.java:132:16:132:36 | KeyGeneration | Output | jca/EllipticCurve1.java:132:16:132:36 | Key | +| jca/EllipticCurve1.java:141:16:141:36 | Key | Algorithm | jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | +| jca/EllipticCurve1.java:141:16:141:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | +| jca/EllipticCurve1.java:141:16:141:36 | KeyGeneration | Output | jca/EllipticCurve1.java:141:16:141:36 | Key | +| jca/EllipticCurve1.java:150:16:150:36 | Key | Algorithm | jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | +| jca/EllipticCurve1.java:150:16:150:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | +| jca/EllipticCurve1.java:150:16:150:36 | KeyGeneration | Output | jca/EllipticCurve1.java:150:16:150:36 | Key | | jca/EllipticCurve2.java:47:16:47:36 | Key | Algorithm | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | | jca/EllipticCurve2.java:47:16:47:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | | jca/EllipticCurve2.java:47:16:47:36 | KeyGeneration | Output | jca/EllipticCurve2.java:47:16:47:36 | Key | @@ -403,12 +498,16 @@ | jca/EllipticCurve2.java:65:16:65:36 | Key | Algorithm | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | | jca/EllipticCurve2.java:65:16:65:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | | jca/EllipticCurve2.java:65:16:65:36 | KeyGeneration | Output | jca/EllipticCurve2.java:65:16:65:36 | Key | +| jca/EllipticCurve2.java:73:16:73:36 | Key | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | | jca/EllipticCurve2.java:73:16:73:36 | Key | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | +| jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Output | jca/EllipticCurve2.java:73:16:73:36 | Key | | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | +| jca/EllipticCurve2.java:81:16:81:36 | Key | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | | jca/EllipticCurve2.java:81:16:81:36 | Key | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | +| jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | | jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Output | jca/EllipticCurve2.java:81:16:81:36 | Key | | jca/EllipticCurve2.java:106:17:106:36 | Key | Source | jca/EllipticCurve2.java:47:16:47:36 | Key | @@ -830,7 +929,9 @@ | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | Key | Algorithm | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | KeyGeneration | Algorithm | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | KeyGeneration | Output | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | Key | +| jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | Key | Algorithm | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | | jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | Key | Algorithm | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | KeyAgreementAlgorithm | +| jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | KeyGeneration | Algorithm | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | | jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | KeyGeneration | Algorithm | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | KeyAgreementAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | KeyGeneration | Output | jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | Key | | jca/KeyAgreementHybridCryptosystem.java:68:17:68:26 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | Key | @@ -944,9 +1045,11 @@ | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Output | jca/KeyArtifact.java:66:32:66:51 | Key | | jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | | jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Output | jca/KeyArtifact.java:73:16:73:43 | Key | | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Mode | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | @@ -1160,7 +1263,9 @@ | jca/KeyExchange.java:139:16:139:34 | KeyAgreementOperation | PeerKey | jca/KeyExchange.java:138:20:138:28 | Key | | jca/KeyExchange.java:139:16:139:34 | KeyAgreementOperation | ServerKey | jca/KeyExchange.java:137:17:137:26 | Key | | jca/KeyExchange.java:139:16:139:34 | SharedSecret | Source | jca/KeyExchange.java:139:16:139:34 | SharedSecret | +| jca/KeyExchange.java:159:16:159:36 | Key | Algorithm | jca/KeyExchange.java:156:61:156:68 | EllipticCurve | | jca/KeyExchange.java:159:16:159:36 | Key | Algorithm | jca/KeyExchange.java:156:61:156:68 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:159:16:159:36 | KeyGeneration | Algorithm | jca/KeyExchange.java:156:61:156:68 | EllipticCurve | | jca/KeyExchange.java:159:16:159:36 | KeyGeneration | Algorithm | jca/KeyExchange.java:156:61:156:68 | KeyAgreementAlgorithm | | jca/KeyExchange.java:159:16:159:36 | KeyGeneration | Output | jca/KeyExchange.java:159:16:159:36 | Key | | jca/KeyExchange.java:174:17:174:26 | Key | Source | jca/KeyExchange.java:159:16:159:36 | Key | @@ -1170,7 +1275,9 @@ | jca/KeyExchange.java:176:16:176:34 | KeyAgreementOperation | PeerKey | jca/KeyExchange.java:175:20:175:28 | Key | | jca/KeyExchange.java:176:16:176:34 | KeyAgreementOperation | ServerKey | jca/KeyExchange.java:174:17:174:26 | Key | | jca/KeyExchange.java:176:16:176:34 | SharedSecret | Source | jca/KeyExchange.java:176:16:176:34 | SharedSecret | +| jca/KeyExchange.java:196:16:196:36 | Key | Algorithm | jca/KeyExchange.java:193:61:193:66 | EllipticCurve | | jca/KeyExchange.java:196:16:196:36 | Key | Algorithm | jca/KeyExchange.java:193:61:193:66 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:196:16:196:36 | KeyGeneration | Algorithm | jca/KeyExchange.java:193:61:193:66 | EllipticCurve | | jca/KeyExchange.java:196:16:196:36 | KeyGeneration | Algorithm | jca/KeyExchange.java:193:61:193:66 | KeyAgreementAlgorithm | | jca/KeyExchange.java:196:16:196:36 | KeyGeneration | Output | jca/KeyExchange.java:196:16:196:36 | Key | | jca/KeyExchange.java:211:17:211:26 | Key | Source | jca/KeyExchange.java:196:16:196:36 | Key | @@ -1475,7 +1582,9 @@ | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | Source | jca/SignatureOperation.java:236:27:236:30 | Constant | | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:133:16:133:36 | Key | Algorithm | jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | | jca/SignatureOperation.java:133:16:133:36 | Key | Algorithm | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | | jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | | jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Output | jca/SignatureOperation.java:133:16:133:36 | Key | | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | @@ -1728,6 +1837,35 @@ | jca/SymmetricModesTest.java:110:44:110:52 | Message | Source | jca/SymmetricModesTest.java:104:60:104:75 | Parameter | | jca/SymmetricModesTest.java:129:16:129:31 | KeyGeneration | Algorithm | jca/SymmetricModesTest.java:127:52:127:56 | KeyOperationAlgorithm | | jca/SymmetricModesTest.java:129:16:129:31 | KeyGeneration | Output | jca/SymmetricModesTest.java:129:16:129:31 | Key | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | Mode | jca/SymmetricModesTest.java:139:44:139:65 | ModeOfOperation | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | Padding | jca/SymmetricModesTest.java:139:44:139:65 | PaddingAlgorithm | +| jca/SymmetricModesTest.java:140:42:140:44 | Key | Source | jca/SymmetricModesTest.java:138:39:138:51 | Parameter | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | Algorithm | jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | Input | jca/SymmetricModesTest.java:141:31:141:39 | Message | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | Key | jca/SymmetricModesTest.java:140:42:140:44 | Key | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | Nonce | jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | Output | jca/SymmetricModesTest.java:141:16:141:40 | KeyOperationOutput | +| jca/SymmetricModesTest.java:141:31:141:39 | Message | Source | jca/SymmetricModesTest.java:138:54:138:69 | Parameter | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | Mode | jca/SymmetricModesTest.java:148:44:148:62 | ModeOfOperation | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | Padding | jca/SymmetricModesTest.java:148:44:148:62 | PaddingAlgorithm | +| jca/SymmetricModesTest.java:151:42:151:44 | Key | Source | jca/SymmetricModesTest.java:147:33:147:45 | Parameter | +| jca/SymmetricModesTest.java:151:47:151:69 | Nonce | Source | jca/SymmetricModesTest.java:150:38:150:39 | RandomNumberGeneration | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | Algorithm | jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | Input | jca/SymmetricModesTest.java:152:31:152:39 | Message | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | Key | jca/SymmetricModesTest.java:151:42:151:44 | Key | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | Nonce | jca/SymmetricModesTest.java:151:47:151:69 | Nonce | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | Output | jca/SymmetricModesTest.java:152:16:152:40 | KeyOperationOutput | +| jca/SymmetricModesTest.java:152:31:152:39 | Message | Source | jca/SymmetricModesTest.java:147:48:147:63 | Parameter | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | Mode | jca/SymmetricModesTest.java:159:44:159:62 | ModeOfOperation | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | Padding | jca/SymmetricModesTest.java:159:44:159:62 | PaddingAlgorithm | +| jca/SymmetricModesTest.java:162:42:162:44 | Key | Source | jca/SymmetricModesTest.java:158:33:158:45 | Parameter | +| jca/SymmetricModesTest.java:162:47:162:69 | Nonce | Source | jca/SymmetricModesTest.java:161:38:161:39 | RandomNumberGeneration | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | Algorithm | jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | Input | jca/SymmetricModesTest.java:163:31:163:39 | Message | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | Key | jca/SymmetricModesTest.java:162:42:162:44 | Key | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | Nonce | jca/SymmetricModesTest.java:162:47:162:69 | Nonce | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | Output | jca/SymmetricModesTest.java:163:16:163:40 | KeyOperationOutput | +| jca/SymmetricModesTest.java:163:31:163:39 | Message | Source | jca/SymmetricModesTest.java:158:48:158:63 | Parameter | | jca/UniversalFlowTest.java:27:25:27:44 | KeyGeneration | Algorithm | jca/UniversalFlowTest.java:19:28:19:32 | KeyOperationAlgorithm | | jca/UniversalFlowTest.java:27:25:27:44 | KeyGeneration | Algorithm | jca/UniversalFlowTest.java:46:20:46:24 | KeyOperationAlgorithm | | jca/UniversalFlowTest.java:27:25:27:44 | KeyGeneration | Output | jca/UniversalFlowTest.java:27:25:27:44 | Key | diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index 20c7276cc4f6..f456b93cf997 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -1,3 +1,102 @@ +| jca/AdditionalSymmetricAlgorithms.java:20:34:20:49 | Parameter | Description | plaintext | jca/AdditionalSymmetricAlgorithms.java:20:34:20:49 | jca/AdditionalSymmetricAlgorithms.java:20:34:20:49 | +| jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/AdditionalSymmetricAlgorithms.java:22:21:22:23 | jca/AdditionalSymmetricAlgorithms.java:22:21:22:23 | +| jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | KeyOperationAlgorithm | Name | Twofish | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | +| jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | KeyOperationAlgorithm | RawName | Twofish | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | +| jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | +| jca/AdditionalSymmetricAlgorithms.java:22:21:22:23 | Constant | Description | 256 | jca/AdditionalSymmetricAlgorithms.java:22:21:22:23 | jca/AdditionalSymmetricAlgorithms.java:22:21:22:23 | +| jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | Key | KeyType | Symmetric | jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | Name | Twofish | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | RawName | Twofish/CBC/PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | ModeOfOperation | Name | CBC | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | ModeOfOperation | RawName | CBC | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | PaddingAlgorithm | Name | PKCS7 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | PaddingAlgorithm | RawName | PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | +| jca/AdditionalSymmetricAlgorithms.java:26:38:26:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AdditionalSymmetricAlgorithms.java:26:38:26:39 | jca/AdditionalSymmetricAlgorithms.java:26:38:26:39 | +| jca/AdditionalSymmetricAlgorithms.java:27:42:27:44 | Key | KeyType | Unknown | jca/AdditionalSymmetricAlgorithms.java:27:42:27:44 | jca/AdditionalSymmetricAlgorithms.java:27:42:27:44 | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | +| jca/AdditionalSymmetricAlgorithms.java:34:31:34:46 | Parameter | Description | plaintext | jca/AdditionalSymmetricAlgorithms.java:34:31:34:46 | jca/AdditionalSymmetricAlgorithms.java:34:31:34:46 | +| jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/AdditionalSymmetricAlgorithms.java:36:21:36:23 | jca/AdditionalSymmetricAlgorithms.java:36:21:36:23 | +| jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | KeyOperationAlgorithm | Name | ARIA | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | +| jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | KeyOperationAlgorithm | RawName | ARIA | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | +| jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | +| jca/AdditionalSymmetricAlgorithms.java:36:21:36:23 | Constant | Description | 256 | jca/AdditionalSymmetricAlgorithms.java:36:21:36:23 | jca/AdditionalSymmetricAlgorithms.java:36:21:36:23 | +| jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | Key | KeyType | Symmetric | jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | Name | ARIA | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | RawName | ARIA/CBC/PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | ModeOfOperation | Name | CBC | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | ModeOfOperation | RawName | CBC | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | PaddingAlgorithm | Name | PKCS7 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | PaddingAlgorithm | RawName | PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | +| jca/AdditionalSymmetricAlgorithms.java:40:38:40:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AdditionalSymmetricAlgorithms.java:40:38:40:39 | jca/AdditionalSymmetricAlgorithms.java:40:38:40:39 | +| jca/AdditionalSymmetricAlgorithms.java:41:42:41:44 | Key | KeyType | Unknown | jca/AdditionalSymmetricAlgorithms.java:41:42:41:44 | jca/AdditionalSymmetricAlgorithms.java:41:42:41:44 | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | +| jca/AdditionalSymmetricAlgorithms.java:48:35:48:50 | Parameter | Description | plaintext | jca/AdditionalSymmetricAlgorithms.java:48:35:48:50 | jca/AdditionalSymmetricAlgorithms.java:48:35:48:50 | +| jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/AdditionalSymmetricAlgorithms.java:50:21:50:23 | jca/AdditionalSymmetricAlgorithms.java:50:21:50:23 | +| jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | KeyOperationAlgorithm | Name | Camellia | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | +| jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | KeyOperationAlgorithm | RawName | Camellia | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | +| jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | +| jca/AdditionalSymmetricAlgorithms.java:50:21:50:23 | Constant | Description | 256 | jca/AdditionalSymmetricAlgorithms.java:50:21:50:23 | jca/AdditionalSymmetricAlgorithms.java:50:21:50:23 | +| jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | Key | KeyType | Symmetric | jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | Name | Camellia | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | RawName | Camellia/CBC/NoPadding | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | ModeOfOperation | Name | CBC | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | ModeOfOperation | RawName | CBC | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | PaddingAlgorithm | Name | UnknownPadding | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | PaddingAlgorithm | RawName | NoPadding | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | +| jca/AdditionalSymmetricAlgorithms.java:54:38:54:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AdditionalSymmetricAlgorithms.java:54:38:54:39 | jca/AdditionalSymmetricAlgorithms.java:54:38:54:39 | +| jca/AdditionalSymmetricAlgorithms.java:55:42:55:44 | Key | KeyType | Unknown | jca/AdditionalSymmetricAlgorithms.java:55:42:55:44 | jca/AdditionalSymmetricAlgorithms.java:55:42:55:44 | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | +| jca/AdditionalSymmetricAlgorithms.java:62:34:62:49 | Parameter | Description | plaintext | jca/AdditionalSymmetricAlgorithms.java:62:34:62:49 | jca/AdditionalSymmetricAlgorithms.java:62:34:62:49 | +| jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/AdditionalSymmetricAlgorithms.java:64:21:64:23 | jca/AdditionalSymmetricAlgorithms.java:64:21:64:23 | +| jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | KeyOperationAlgorithm | Name | Salsa20 | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | +| jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | KeyOperationAlgorithm | RawName | Salsa20 | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | +| jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | KeyOperationAlgorithm | Structure | Stream | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | +| jca/AdditionalSymmetricAlgorithms.java:64:21:64:23 | Constant | Description | 256 | jca/AdditionalSymmetricAlgorithms.java:64:21:64:23 | jca/AdditionalSymmetricAlgorithms.java:64:21:64:23 | +| jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | Key | KeyType | Symmetric | jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | +| jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | Name | Salsa20 | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | +| jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | RawName | Salsa20 | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | +| jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | Structure | Stream | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | +| jca/AdditionalSymmetricAlgorithms.java:67:42:67:44 | Key | KeyType | Unknown | jca/AdditionalSymmetricAlgorithms.java:67:42:67:44 | jca/AdditionalSymmetricAlgorithms.java:67:42:67:44 | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | +| jca/AdditionalSymmetricAlgorithms.java:74:31:74:46 | Parameter | Description | plaintext | jca/AdditionalSymmetricAlgorithms.java:74:31:74:46 | jca/AdditionalSymmetricAlgorithms.java:74:31:74:46 | +| jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | KeySize | 128 | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | +| jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | KeySize | Constant:128 | jca/AdditionalSymmetricAlgorithms.java:76:21:76:23 | jca/AdditionalSymmetricAlgorithms.java:76:21:76:23 | +| jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | Name | SEED | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | +| jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | RawName | SEED | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | +| jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | +| jca/AdditionalSymmetricAlgorithms.java:76:21:76:23 | Constant | Description | 128 | jca/AdditionalSymmetricAlgorithms.java:76:21:76:23 | jca/AdditionalSymmetricAlgorithms.java:76:21:76:23 | +| jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | Key | KeyType | Symmetric | jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | KeySize | 128 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | Name | SEED | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | RawName | SEED/CBC/PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | ModeOfOperation | Name | CBC | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | ModeOfOperation | RawName | CBC | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | PaddingAlgorithm | Name | PKCS7 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | PaddingAlgorithm | RawName | PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | +| jca/AdditionalSymmetricAlgorithms.java:80:38:80:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AdditionalSymmetricAlgorithms.java:80:38:80:39 | jca/AdditionalSymmetricAlgorithms.java:80:38:80:39 | +| jca/AdditionalSymmetricAlgorithms.java:81:42:81:44 | Key | KeyType | Unknown | jca/AdditionalSymmetricAlgorithms.java:81:42:81:44 | jca/AdditionalSymmetricAlgorithms.java:81:42:81:44 | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | +| jca/AdditionalSymmetricAlgorithms.java:88:35:88:50 | Parameter | Description | plaintext | jca/AdditionalSymmetricAlgorithms.java:88:35:88:50 | jca/AdditionalSymmetricAlgorithms.java:88:35:88:50 | +| jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | KeyOperationAlgorithm | KeySize | Constant:128 | jca/AdditionalSymmetricAlgorithms.java:90:21:90:23 | jca/AdditionalSymmetricAlgorithms.java:90:21:90:23 | +| jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | KeyOperationAlgorithm | Name | Blowfish | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | +| jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | KeyOperationAlgorithm | RawName | Blowfish | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | +| jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | +| jca/AdditionalSymmetricAlgorithms.java:90:21:90:23 | Constant | Description | 128 | jca/AdditionalSymmetricAlgorithms.java:90:21:90:23 | jca/AdditionalSymmetricAlgorithms.java:90:21:90:23 | +| jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | Key | KeyType | Symmetric | jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | Name | Blowfish | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | RawName | Blowfish/CBC/PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | Structure | Block | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | ModeOfOperation | Name | CBC | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | ModeOfOperation | RawName | CBC | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | PaddingAlgorithm | Name | PKCS7 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | PaddingAlgorithm | RawName | PKCS5Padding | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | +| jca/AdditionalSymmetricAlgorithms.java:94:38:94:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AdditionalSymmetricAlgorithms.java:94:38:94:39 | jca/AdditionalSymmetricAlgorithms.java:94:38:94:39 | +| jca/AdditionalSymmetricAlgorithms.java:95:42:95:44 | Key | KeyType | Unknown | jca/AdditionalSymmetricAlgorithms.java:95:42:95:44 | jca/AdditionalSymmetricAlgorithms.java:95:42:95:44 | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | | jca/AesWrapAndPBEWith.java:58:52:58:56 | KeyOperationAlgorithm | KeySize | Constant:128 | jca/AesWrapAndPBEWith.java:62:17:62:19 | jca/AesWrapAndPBEWith.java:62:17:62:19 | | jca/AesWrapAndPBEWith.java:58:52:58:56 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/AesWrapAndPBEWith.java:59:17:59:19 | jca/AesWrapAndPBEWith.java:59:17:59:19 | | jca/AesWrapAndPBEWith.java:58:52:58:56 | KeyOperationAlgorithm | Name | AES | jca/AesWrapAndPBEWith.java:58:52:58:56 | jca/AesWrapAndPBEWith.java:58:52:58:56 | @@ -88,6 +187,11 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | ParsedName | secp256r1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | RawName | secp256r1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | Key | KeyType | Asymmetric | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | CurveType | CURVE25519 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | KeySize | 255 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | Name | X25519 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | ParsedName | X25519 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | RawName | X25519 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | KeyAgreementAlgorithm | Name | X25519 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | KeyAgreementAlgorithm | RawName | X25519 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:95:24:95:26 | Constant | Description | 255 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:95:24:95:26 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:95:24:95:26 | @@ -132,7 +236,7 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | KeyOperationAlgorithm | RawName | RSA/ECB/PKCS1Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | ModeOfOperation | Name | ECB | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | ModeOfOperation | RawName | ECB | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | PaddingAlgorithm | Name | UnknownPadding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | PaddingAlgorithm | Name | PKCS1_v1_5 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | PaddingAlgorithm | RawName | PKCS1Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:190:47:190:68 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:191:42:191:58 | Key | KeyType | Unknown | jca/AsymmetricEncryptionMacHybridCryptosystem.java:191:42:191:58 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:191:42:191:58 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:192:34:192:55 | WrapOperation | KeyOperationSubtype | Wrap | jca/AsymmetricEncryptionMacHybridCryptosystem.java:192:34:192:55 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:192:34:192:55 | @@ -390,9 +494,19 @@ | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | ParsedName | brainpoolP256r1 | jca/EllipticCurve1.java:66:66:66:82 | jca/EllipticCurve1.java:66:66:66:82 | | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | RawName | brainpoolP256r1 | jca/EllipticCurve1.java:66:66:66:82 | jca/EllipticCurve1.java:66:66:66:82 | | jca/EllipticCurve1.java:67:16:67:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:67:16:67:36 | jca/EllipticCurve1.java:67:16:67:36 | +| jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | CurveType | CURVE25519 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | +| jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | KeySize | 255 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | +| jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | Name | X25519 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | +| jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | ParsedName | X25519 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | +| jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | RawName | X25519 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | | jca/EllipticCurve1.java:74:61:74:68 | KeyAgreementAlgorithm | Name | X25519 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | | jca/EllipticCurve1.java:74:61:74:68 | KeyAgreementAlgorithm | RawName | X25519 | jca/EllipticCurve1.java:74:61:74:68 | jca/EllipticCurve1.java:74:61:74:68 | | jca/EllipticCurve1.java:76:16:76:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:76:16:76:36 | jca/EllipticCurve1.java:76:16:76:36 | +| jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | CurveType | CURVE448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | +| jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | KeySize | 448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | +| jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | Name | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | +| jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | ParsedName | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | +| jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | RawName | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | Name | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | RawName | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | | jca/EllipticCurve1.java:84:16:84:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:84:16:84:36 | jca/EllipticCurve1.java:84:16:84:36 | @@ -404,9 +518,40 @@ | jca/EllipticCurve1.java:95:16:95:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:95:16:95:36 | jca/EllipticCurve1.java:95:16:95:36 | | jca/EllipticCurve1.java:105:66:105:76 | Constant | Description | "sm2p256v1" | jca/EllipticCurve1.java:105:66:105:76 | jca/EllipticCurve1.java:105:66:105:76 | | jca/EllipticCurve1.java:106:16:106:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:106:16:106:36 | jca/EllipticCurve1.java:106:16:106:36 | +| jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | CurveType | CURVE25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | +| jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | KeySize | 255 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | +| jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | Name | Ed25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | +| jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | ParsedName | Ed25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | +| jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | RawName | Ed25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Name | EDSA | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | | jca/EllipticCurve1.java:115:16:115:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:115:16:115:36 | jca/EllipticCurve1.java:115:16:115:36 | +| jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | CurveType | CURVE448 | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | KeySize | 448 | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | Name | Ed448 | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | ParsedName | Ed448 | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | RawName | Ed448 | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | Name | EDSA | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | RawName | Ed448 | jca/EllipticCurve1.java:122:61:122:67 | jca/EllipticCurve1.java:122:61:122:67 | +| jca/EllipticCurve1.java:123:16:123:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:123:16:123:36 | jca/EllipticCurve1.java:123:16:123:36 | +| jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | CurveType | SEC | jca/EllipticCurve1.java:131:66:131:72 | jca/EllipticCurve1.java:131:66:131:72 | +| jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | KeySize | 256 | jca/EllipticCurve1.java:131:66:131:72 | jca/EllipticCurve1.java:131:66:131:72 | +| jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | Name | P-256 | jca/EllipticCurve1.java:131:66:131:72 | jca/EllipticCurve1.java:131:66:131:72 | +| jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | ParsedName | P-256 | jca/EllipticCurve1.java:131:66:131:72 | jca/EllipticCurve1.java:131:66:131:72 | +| jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | RawName | P-256 | jca/EllipticCurve1.java:131:66:131:72 | jca/EllipticCurve1.java:131:66:131:72 | +| jca/EllipticCurve1.java:132:16:132:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:132:16:132:36 | jca/EllipticCurve1.java:132:16:132:36 | +| jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | CurveType | SEC | jca/EllipticCurve1.java:140:66:140:72 | jca/EllipticCurve1.java:140:66:140:72 | +| jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | KeySize | 384 | jca/EllipticCurve1.java:140:66:140:72 | jca/EllipticCurve1.java:140:66:140:72 | +| jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | Name | P-384 | jca/EllipticCurve1.java:140:66:140:72 | jca/EllipticCurve1.java:140:66:140:72 | +| jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | ParsedName | P-384 | jca/EllipticCurve1.java:140:66:140:72 | jca/EllipticCurve1.java:140:66:140:72 | +| jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | RawName | P-384 | jca/EllipticCurve1.java:140:66:140:72 | jca/EllipticCurve1.java:140:66:140:72 | +| jca/EllipticCurve1.java:141:16:141:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:141:16:141:36 | jca/EllipticCurve1.java:141:16:141:36 | +| jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | CurveType | SEC | jca/EllipticCurve1.java:149:66:149:72 | jca/EllipticCurve1.java:149:66:149:72 | +| jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | KeySize | 521 | jca/EllipticCurve1.java:149:66:149:72 | jca/EllipticCurve1.java:149:66:149:72 | +| jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | Name | P-521 | jca/EllipticCurve1.java:149:66:149:72 | jca/EllipticCurve1.java:149:66:149:72 | +| jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | ParsedName | P-521 | jca/EllipticCurve1.java:149:66:149:72 | jca/EllipticCurve1.java:149:66:149:72 | +| jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | RawName | P-521 | jca/EllipticCurve1.java:149:66:149:72 | jca/EllipticCurve1.java:149:66:149:72 | +| jca/EllipticCurve1.java:150:16:150:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:150:16:150:36 | jca/EllipticCurve1.java:150:16:150:36 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | CurveType | SEC | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | KeySize | 256 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | Name | secp256r1 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | @@ -425,9 +570,19 @@ | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | ParsedName | brainpoolP256r1 | jca/EllipticCurve2.java:64:47:64:63 | jca/EllipticCurve2.java:64:47:64:63 | | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | RawName | brainpoolP256r1 | jca/EllipticCurve2.java:64:47:64:63 | jca/EllipticCurve2.java:64:47:64:63 | | jca/EllipticCurve2.java:65:16:65:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:65:16:65:36 | jca/EllipticCurve2.java:65:16:65:36 | +| jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | CurveType | CURVE25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | +| jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | KeySize | 255 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | +| jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | Name | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | +| jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | ParsedName | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | +| jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | RawName | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | Name | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | RawName | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | | jca/EllipticCurve2.java:73:16:73:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:73:16:73:36 | jca/EllipticCurve2.java:73:16:73:36 | +| jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | CurveType | CURVE25519 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | +| jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | KeySize | 255 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | +| jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | Name | Ed25519 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | +| jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | ParsedName | Ed25519 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | +| jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | RawName | Ed25519 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Name | EDSA | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | | jca/EllipticCurve2.java:81:16:81:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:81:16:81:36 | jca/EllipticCurve2.java:81:16:81:36 | @@ -862,6 +1017,11 @@ | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | ParsedName | secp256r1 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | RawName | secp256r1 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | Key | KeyType | Asymmetric | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | +| jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | CurveType | CURVE25519 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | +| jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | KeySize | 255 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | +| jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | Name | X25519 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | +| jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | ParsedName | X25519 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | +| jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | RawName | X25519 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | KeyAgreementAlgorithm | Name | X25519 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | KeyAgreementAlgorithm | RawName | X25519 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | | jca/KeyAgreementHybridCryptosystem.java:59:24:59:26 | Constant | Description | 255 | jca/KeyAgreementHybridCryptosystem.java:59:24:59:26 | jca/KeyAgreementHybridCryptosystem.java:59:24:59:26 | @@ -987,6 +1147,11 @@ | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | KeySize | Constant:2048 | jca/KeyArtifact.java:72:31:72:34 | jca/KeyArtifact.java:72:31:72:34 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | Name | RSA | jca/KeyArtifact.java:78:32:78:36 | jca/KeyArtifact.java:78:32:78:36 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | RawName | RSA | jca/KeyArtifact.java:78:32:78:36 | jca/KeyArtifact.java:78:32:78:36 | +| jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | CurveType | CURVE25519 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | +| jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | KeySize | 255 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | +| jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | Name | Ed25519 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | +| jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | ParsedName | Ed25519 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | +| jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | RawName | Ed25519 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Name | EDSA | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | RawName | Ed25519 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | | jca/KeyDerivation1.java:78:39:78:53 | Parameter | Description | password | jca/KeyDerivation1.java:78:39:78:53 | jca/KeyDerivation1.java:78:39:78:53 | @@ -1237,6 +1402,11 @@ | jca/KeyExchange.java:136:52:136:57 | KeyAgreementAlgorithm | RawName | ECDH | jca/KeyExchange.java:136:52:136:57 | jca/KeyExchange.java:136:52:136:57 | | jca/KeyExchange.java:137:17:137:26 | Key | KeyType | Unknown | jca/KeyExchange.java:137:17:137:26 | jca/KeyExchange.java:137:17:137:26 | | jca/KeyExchange.java:138:20:138:28 | Key | KeyType | Unknown | jca/KeyExchange.java:138:20:138:28 | jca/KeyExchange.java:138:20:138:28 | +| jca/KeyExchange.java:156:61:156:68 | EllipticCurve | CurveType | CURVE25519 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | +| jca/KeyExchange.java:156:61:156:68 | EllipticCurve | KeySize | 255 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | +| jca/KeyExchange.java:156:61:156:68 | EllipticCurve | Name | X25519 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | +| jca/KeyExchange.java:156:61:156:68 | EllipticCurve | ParsedName | X25519 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | +| jca/KeyExchange.java:156:61:156:68 | EllipticCurve | RawName | X25519 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | | jca/KeyExchange.java:156:61:156:68 | KeyAgreementAlgorithm | Name | X25519 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | | jca/KeyExchange.java:156:61:156:68 | KeyAgreementAlgorithm | RawName | X25519 | jca/KeyExchange.java:156:61:156:68 | jca/KeyExchange.java:156:61:156:68 | | jca/KeyExchange.java:158:24:158:26 | Constant | Description | 255 | jca/KeyExchange.java:158:24:158:26 | jca/KeyExchange.java:158:24:158:26 | @@ -1245,6 +1415,11 @@ | jca/KeyExchange.java:173:52:173:59 | KeyAgreementAlgorithm | RawName | X25519 | jca/KeyExchange.java:173:52:173:59 | jca/KeyExchange.java:173:52:173:59 | | jca/KeyExchange.java:174:17:174:26 | Key | KeyType | Unknown | jca/KeyExchange.java:174:17:174:26 | jca/KeyExchange.java:174:17:174:26 | | jca/KeyExchange.java:175:20:175:28 | Key | KeyType | Unknown | jca/KeyExchange.java:175:20:175:28 | jca/KeyExchange.java:175:20:175:28 | +| jca/KeyExchange.java:193:61:193:66 | EllipticCurve | CurveType | CURVE448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | +| jca/KeyExchange.java:193:61:193:66 | EllipticCurve | KeySize | 448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | +| jca/KeyExchange.java:193:61:193:66 | EllipticCurve | Name | X448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | +| jca/KeyExchange.java:193:61:193:66 | EllipticCurve | ParsedName | X448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | +| jca/KeyExchange.java:193:61:193:66 | EllipticCurve | RawName | X448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | | jca/KeyExchange.java:193:61:193:66 | KeyAgreementAlgorithm | Name | X448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | | jca/KeyExchange.java:193:61:193:66 | KeyAgreementAlgorithm | RawName | X448 | jca/KeyExchange.java:193:61:193:66 | jca/KeyExchange.java:193:61:193:66 | | jca/KeyExchange.java:195:24:195:26 | Constant | Description | 448 | jca/KeyExchange.java:195:24:195:26 | jca/KeyExchange.java:195:24:195:26 | @@ -1505,6 +1680,11 @@ | jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | | jca/SignatureOperation.java:116:30:116:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:116:30:116:38 | jca/SignatureOperation.java:116:30:116:38 | | jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:118:16:118:41 | jca/SignatureOperation.java:118:16:118:41 | +| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | CurveType | CURVE25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | +| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | KeySize | 255 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | +| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | Name | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | +| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | ParsedName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | +| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | RawName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | | jca/SignatureOperation.java:133:16:133:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:133:16:133:36 | jca/SignatureOperation.java:133:16:133:36 | @@ -1625,8 +1805,8 @@ | jca/SymmetricAlgorithm.java:151:29:151:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:151:29:151:53 | jca/SymmetricAlgorithm.java:151:29:151:53 | | jca/SymmetricAlgorithm.java:167:42:167:54 | Parameter | Description | key | jca/SymmetricAlgorithm.java:167:42:167:54 | jca/SymmetricAlgorithm.java:167:42:167:54 | | jca/SymmetricAlgorithm.java:167:57:167:72 | Parameter | Description | plaintext | jca/SymmetricAlgorithm.java:167:57:167:72 | jca/SymmetricAlgorithm.java:167:57:167:72 | -| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | KeySize | 56 | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | -| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Name | DES | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | +| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | KeySize | 168 | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | +| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Name | TripleDES | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | RawName | DESede/CBC/PKCS5Padding | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | ModeOfOperation | Name | CBC | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | @@ -1742,6 +1922,44 @@ | jca/SymmetricModesTest.java:127:52:127:56 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricModesTest.java:127:52:127:56 | jca/SymmetricModesTest.java:127:52:127:56 | | jca/SymmetricModesTest.java:128:17:128:19 | Constant | Description | 256 | jca/SymmetricModesTest.java:128:17:128:19 | jca/SymmetricModesTest.java:128:17:128:19 | | jca/SymmetricModesTest.java:129:16:129:31 | Key | KeyType | Symmetric | jca/SymmetricModesTest.java:129:16:129:31 | jca/SymmetricModesTest.java:129:16:129:31 | +| jca/SymmetricModesTest.java:138:39:138:51 | Parameter | Description | key | jca/SymmetricModesTest.java:138:39:138:51 | jca/SymmetricModesTest.java:138:39:138:51 | +| jca/SymmetricModesTest.java:138:54:138:69 | Parameter | Description | plaintext | jca/SymmetricModesTest.java:138:54:138:69 | jca/SymmetricModesTest.java:138:54:138:69 | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | KeySize | 168 | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | Name | TripleDES | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | RawName | DESede/ECB/NoPadding | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | ModeOfOperation | Name | ECB | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | ModeOfOperation | RawName | ECB | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:139:44:139:65 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricModesTest.java:139:44:139:65 | jca/SymmetricModesTest.java:139:44:139:65 | +| jca/SymmetricModesTest.java:140:42:140:44 | Key | KeyType | Unknown | jca/SymmetricModesTest.java:140:42:140:44 | jca/SymmetricModesTest.java:140:42:140:44 | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricModesTest.java:141:16:141:40 | jca/SymmetricModesTest.java:141:16:141:40 | +| jca/SymmetricModesTest.java:147:33:147:45 | Parameter | Description | key | jca/SymmetricModesTest.java:147:33:147:45 | jca/SymmetricModesTest.java:147:33:147:45 | +| jca/SymmetricModesTest.java:147:48:147:63 | Parameter | Description | plaintext | jca/SymmetricModesTest.java:147:48:147:63 | jca/SymmetricModesTest.java:147:48:147:63 | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | KeySize | 56 | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | Name | DES | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | RawName | DES/CFB/NoPadding | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | ModeOfOperation | Name | CFB | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | ModeOfOperation | RawName | CFB | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:148:44:148:62 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricModesTest.java:148:44:148:62 | jca/SymmetricModesTest.java:148:44:148:62 | +| jca/SymmetricModesTest.java:150:38:150:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricModesTest.java:150:38:150:39 | jca/SymmetricModesTest.java:150:38:150:39 | +| jca/SymmetricModesTest.java:151:42:151:44 | Key | KeyType | Unknown | jca/SymmetricModesTest.java:151:42:151:44 | jca/SymmetricModesTest.java:151:42:151:44 | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricModesTest.java:152:16:152:40 | jca/SymmetricModesTest.java:152:16:152:40 | +| jca/SymmetricModesTest.java:158:33:158:45 | Parameter | Description | key | jca/SymmetricModesTest.java:158:33:158:45 | jca/SymmetricModesTest.java:158:33:158:45 | +| jca/SymmetricModesTest.java:158:48:158:63 | Parameter | Description | plaintext | jca/SymmetricModesTest.java:158:48:158:63 | jca/SymmetricModesTest.java:158:48:158:63 | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | KeySize | 56 | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | Name | DES | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | RawName | DES/OFB/NoPadding | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | ModeOfOperation | Name | OFB | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | ModeOfOperation | RawName | OFB | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:159:44:159:62 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricModesTest.java:159:44:159:62 | jca/SymmetricModesTest.java:159:44:159:62 | +| jca/SymmetricModesTest.java:161:38:161:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricModesTest.java:161:38:161:39 | jca/SymmetricModesTest.java:161:38:161:39 | +| jca/SymmetricModesTest.java:162:42:162:44 | Key | KeyType | Unknown | jca/SymmetricModesTest.java:162:42:162:44 | jca/SymmetricModesTest.java:162:42:162:44 | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricModesTest.java:163:16:163:40 | jca/SymmetricModesTest.java:163:16:163:40 | | jca/UniversalFlowTest.java:19:28:19:32 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/UniversalFlowTest.java:26:21:26:23 | jca/UniversalFlowTest.java:26:21:26:23 | | jca/UniversalFlowTest.java:19:28:19:32 | KeyOperationAlgorithm | Name | AES | jca/UniversalFlowTest.java:19:28:19:32 | jca/UniversalFlowTest.java:19:28:19:32 | | jca/UniversalFlowTest.java:19:28:19:32 | KeyOperationAlgorithm | RawName | AES | jca/UniversalFlowTest.java:19:28:19:32 | jca/UniversalFlowTest.java:19:28:19:32 | diff --git a/java/ql/test/experimental/library-tests/quantum/nodes.expected b/java/ql/test/experimental/library-tests/quantum/nodes.expected index b9661aaf64f9..30ef5332664f 100644 --- a/java/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/java/ql/test/experimental/library-tests/quantum/nodes.expected @@ -1,3 +1,83 @@ +| jca/AdditionalSymmetricAlgorithms.java:20:34:20:49 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:21:56:21:64 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:22:21:22:23 | Constant | +| jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:23:25:23:44 | KeyGeneration | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:24:44:24:69 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:26:38:26:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:27:42:27:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:27:47:27:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:28:16:28:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:28:31:28:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:34:31:34:46 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:35:56:35:61 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:36:21:36:23 | Constant | +| jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:37:25:37:44 | KeyGeneration | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:38:44:38:66 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:40:38:40:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:41:42:41:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:41:47:41:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:42:16:42:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:42:31:42:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:48:35:48:50 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:49:56:49:65 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:50:21:50:23 | Constant | +| jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:51:25:51:44 | KeyGeneration | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:52:44:52:67 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:54:38:54:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:55:42:55:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:55:47:55:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:56:16:56:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:56:31:56:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:62:34:62:49 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:63:56:63:64 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:64:21:64:23 | Constant | +| jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:65:25:65:44 | KeyGeneration | +| jca/AdditionalSymmetricAlgorithms.java:66:44:66:52 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:67:42:67:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:68:16:68:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:68:31:68:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:74:31:74:46 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:75:56:75:61 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:76:21:76:23 | Constant | +| jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:77:25:77:44 | KeyGeneration | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:78:44:78:66 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:80:38:80:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:81:42:81:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:81:47:81:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:82:16:82:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:82:31:82:39 | Message | +| jca/AdditionalSymmetricAlgorithms.java:88:35:88:50 | Parameter | +| jca/AdditionalSymmetricAlgorithms.java:89:56:89:65 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:90:21:90:23 | Constant | +| jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:91:25:91:44 | KeyGeneration | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | KeyOperationAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | ModeOfOperation | +| jca/AdditionalSymmetricAlgorithms.java:92:44:92:70 | PaddingAlgorithm | +| jca/AdditionalSymmetricAlgorithms.java:94:38:94:39 | RandomNumberGeneration | +| jca/AdditionalSymmetricAlgorithms.java:95:42:95:44 | Key | +| jca/AdditionalSymmetricAlgorithms.java:95:47:95:69 | Nonce | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | EncryptOperation | +| jca/AdditionalSymmetricAlgorithms.java:96:16:96:40 | KeyOperationOutput | +| jca/AdditionalSymmetricAlgorithms.java:96:31:96:39 | Message | | jca/AesWrapAndPBEWith.java:58:52:58:56 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:59:17:59:19 | Constant | | jca/AesWrapAndPBEWith.java:60:33:60:48 | Key | @@ -76,6 +156,7 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:87:16:87:36 | KeyGeneration | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | EllipticCurve | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:94:61:94:68 | KeyAgreementAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:95:24:95:26 | Constant | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:96:16:96:36 | Key | @@ -340,9 +421,11 @@ | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | | jca/EllipticCurve1.java:67:16:67:36 | Key | | jca/EllipticCurve1.java:67:16:67:36 | KeyGeneration | +| jca/EllipticCurve1.java:74:61:74:68 | EllipticCurve | | jca/EllipticCurve1.java:74:61:74:68 | KeyAgreementAlgorithm | | jca/EllipticCurve1.java:76:16:76:36 | Key | | jca/EllipticCurve1.java:76:16:76:36 | KeyGeneration | +| jca/EllipticCurve1.java:83:61:83:66 | EllipticCurve | | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | | jca/EllipticCurve1.java:84:16:84:36 | Key | | jca/EllipticCurve1.java:84:16:84:36 | KeyGeneration | @@ -352,9 +435,23 @@ | jca/EllipticCurve1.java:105:66:105:76 | Constant | | jca/EllipticCurve1.java:106:16:106:36 | Key | | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | +| jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | Key | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | +| jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | +| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:123:16:123:36 | Key | +| jca/EllipticCurve1.java:123:16:123:36 | KeyGeneration | +| jca/EllipticCurve1.java:131:66:131:72 | EllipticCurve | +| jca/EllipticCurve1.java:132:16:132:36 | Key | +| jca/EllipticCurve1.java:132:16:132:36 | KeyGeneration | +| jca/EllipticCurve1.java:140:66:140:72 | EllipticCurve | +| jca/EllipticCurve1.java:141:16:141:36 | Key | +| jca/EllipticCurve1.java:141:16:141:36 | KeyGeneration | +| jca/EllipticCurve1.java:149:66:149:72 | EllipticCurve | +| jca/EllipticCurve1.java:150:16:150:36 | Key | +| jca/EllipticCurve1.java:150:16:150:36 | KeyGeneration | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | | jca/EllipticCurve2.java:47:16:47:36 | Key | | jca/EllipticCurve2.java:47:16:47:36 | KeyGeneration | @@ -364,9 +461,11 @@ | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | | jca/EllipticCurve2.java:65:16:65:36 | Key | | jca/EllipticCurve2.java:65:16:65:36 | KeyGeneration | +| jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | | jca/EllipticCurve2.java:73:16:73:36 | Key | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | +| jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:81:16:81:36 | Key | | jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | @@ -726,6 +825,7 @@ | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | Key | | jca/KeyAgreementHybridCryptosystem.java:51:16:51:36 | KeyGeneration | +| jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | EllipticCurve | | jca/KeyAgreementHybridCryptosystem.java:58:61:58:68 | KeyAgreementAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:59:24:59:26 | Constant | | jca/KeyAgreementHybridCryptosystem.java:60:16:60:36 | Key | @@ -838,6 +938,7 @@ | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:78:39:78:53 | Parameter | | jca/KeyDerivation1.java:80:42:80:63 | Message | @@ -1048,6 +1149,7 @@ | jca/KeyExchange.java:138:20:138:28 | Key | | jca/KeyExchange.java:139:16:139:34 | KeyAgreementOperation | | jca/KeyExchange.java:139:16:139:34 | SharedSecret | +| jca/KeyExchange.java:156:61:156:68 | EllipticCurve | | jca/KeyExchange.java:156:61:156:68 | KeyAgreementAlgorithm | | jca/KeyExchange.java:158:24:158:26 | Constant | | jca/KeyExchange.java:159:16:159:36 | Key | @@ -1057,6 +1159,7 @@ | jca/KeyExchange.java:175:20:175:28 | Key | | jca/KeyExchange.java:176:16:176:34 | KeyAgreementOperation | | jca/KeyExchange.java:176:16:176:34 | SharedSecret | +| jca/KeyExchange.java:193:61:193:66 | EllipticCurve | | jca/KeyExchange.java:193:61:193:66 | KeyAgreementAlgorithm | | jca/KeyExchange.java:195:24:195:26 | Constant | | jca/KeyExchange.java:196:16:196:36 | Key | @@ -1286,6 +1389,7 @@ | jca/SignatureOperation.java:117:26:117:29 | Message | | jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | +| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | | jca/SignatureOperation.java:133:16:133:36 | Key | | jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | @@ -1493,6 +1597,37 @@ | jca/SymmetricModesTest.java:128:17:128:19 | Constant | | jca/SymmetricModesTest.java:129:16:129:31 | Key | | jca/SymmetricModesTest.java:129:16:129:31 | KeyGeneration | +| jca/SymmetricModesTest.java:138:39:138:51 | Parameter | +| jca/SymmetricModesTest.java:138:54:138:69 | Parameter | +| jca/SymmetricModesTest.java:139:44:139:65 | KeyOperationAlgorithm | +| jca/SymmetricModesTest.java:139:44:139:65 | ModeOfOperation | +| jca/SymmetricModesTest.java:139:44:139:65 | PaddingAlgorithm | +| jca/SymmetricModesTest.java:140:42:140:44 | Key | +| jca/SymmetricModesTest.java:141:16:141:40 | EncryptOperation | +| jca/SymmetricModesTest.java:141:16:141:40 | KeyOperationOutput | +| jca/SymmetricModesTest.java:141:31:141:39 | Message | +| jca/SymmetricModesTest.java:147:33:147:45 | Parameter | +| jca/SymmetricModesTest.java:147:48:147:63 | Parameter | +| jca/SymmetricModesTest.java:148:44:148:62 | KeyOperationAlgorithm | +| jca/SymmetricModesTest.java:148:44:148:62 | ModeOfOperation | +| jca/SymmetricModesTest.java:148:44:148:62 | PaddingAlgorithm | +| jca/SymmetricModesTest.java:150:38:150:39 | RandomNumberGeneration | +| jca/SymmetricModesTest.java:151:42:151:44 | Key | +| jca/SymmetricModesTest.java:151:47:151:69 | Nonce | +| jca/SymmetricModesTest.java:152:16:152:40 | EncryptOperation | +| jca/SymmetricModesTest.java:152:16:152:40 | KeyOperationOutput | +| jca/SymmetricModesTest.java:152:31:152:39 | Message | +| jca/SymmetricModesTest.java:158:33:158:45 | Parameter | +| jca/SymmetricModesTest.java:158:48:158:63 | Parameter | +| jca/SymmetricModesTest.java:159:44:159:62 | KeyOperationAlgorithm | +| jca/SymmetricModesTest.java:159:44:159:62 | ModeOfOperation | +| jca/SymmetricModesTest.java:159:44:159:62 | PaddingAlgorithm | +| jca/SymmetricModesTest.java:161:38:161:39 | RandomNumberGeneration | +| jca/SymmetricModesTest.java:162:42:162:44 | Key | +| jca/SymmetricModesTest.java:162:47:162:69 | Nonce | +| jca/SymmetricModesTest.java:163:16:163:40 | EncryptOperation | +| jca/SymmetricModesTest.java:163:16:163:40 | KeyOperationOutput | +| jca/SymmetricModesTest.java:163:31:163:39 | Message | | jca/UniversalFlowTest.java:19:28:19:32 | KeyOperationAlgorithm | | jca/UniversalFlowTest.java:26:21:26:23 | Constant | | jca/UniversalFlowTest.java:27:25:27:44 | Key | diff --git a/shared/quantum/codeql/quantum/experimental/Standardization.qll b/shared/quantum/codeql/quantum/experimental/Standardization.qll index cc43fcec6e2f..8f8bbe4eab21 100644 --- a/shared/quantum/codeql/quantum/experimental/Standardization.qll +++ b/shared/quantum/codeql/quantum/experimental/Standardization.qll @@ -40,6 +40,8 @@ module Types { SEED() or SM4() or SKIPJACK() or + TWOFISH() or + SALSA20() or OtherSymmetricCipherType() newtype TAsymmetricCipherType = @@ -121,6 +123,10 @@ module Types { or type = SKIPJACK() and name = "Skipjack" and s = Block() or + type = TWOFISH() and name = "Twofish" and s = Block() + or + type = SALSA20() and name = "Salsa20" and s = Stream() + or type = OtherSymmetricCipherType() and name = "UnknownSymmetricCipher" and s = OtherCipherStructureType() @@ -218,6 +224,7 @@ module Types { SIV() or // Misuse-resistant encryption, used in secure storage OCB() or // Efficient AEAD mode KWP() or + LRW() or // Insecure tweakable block cipher mode OFB() or PCBC() or OtherMode() @@ -242,6 +249,8 @@ module Types { or this = CFB() and result = "CFB" or + this = LRW() and result = "LRW" + or this = OFB() and result = "OFB" } } @@ -469,15 +478,21 @@ module Types { or curveName = "CURVE448" and keySize = 448 and curveFamily = CURVE448() or - // TODO: separate these into key agreement logic or sign/verify (ECDSA / ECDH) - // or - // curveName = "X25519" and keySize = 255 and curveFamily = CURVE25519() - // or - // curveName = "ED25519" and keySize = 255 and curveFamily = CURVE25519() - // or - // curveName = "ED448" and keySize = 448 and curveFamily = CURVE448() - // or - // curveName = "X448" and keySize = 448 and curveFamily = CURVE448() + curveName = "X25519" and keySize = 255 and curveFamily = CURVE25519() + or + curveName = "ED25519" and keySize = 255 and curveFamily = CURVE25519() + or + curveName = "ED448" and keySize = 448 and curveFamily = CURVE448() + or + curveName = "X448" and keySize = 448 and curveFamily = CURVE448() + or + // NIST P-curve aliases + curveName = "P-256" and keySize = 256 and curveFamily = SEC() + or + curveName = "P-384" and keySize = 384 and curveFamily = SEC() + or + curveName = "P-521" and keySize = 521 and curveFamily = SEC() + or curveName = "SM2" and keySize in [256, 512] and curveFamily = SM2() ) } From 4c23111cebc85a4c615bc74636e0c1c71fa485e7 Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Sun, 22 Feb 2026 17:53:28 +0100 Subject: [PATCH 2/6] Update JCA.qll to fix overly specific barrier Fix generic creation/init/use flow barrier logic: the barrier was previously cipher-specific inside a generic module, and other instances would therefore get no re-init barrier. --- java/ql/lib/experimental/quantum/JCA.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index b95af21b0b8e..f14bb1886567 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -631,7 +631,7 @@ module JCAModel { } predicate isBarrier(DataFlow::Node node, FlowState state) { - exists(CipherInitCall call | node.asExpr() = call.getQualifier() | + exists(Init call | node.asExpr() = call.(MethodCall).getQualifier() | state instanceof UninitializedFlowState or state.(InitializedFlowState).getInitCall() != call From 9176564c81859250907f4bc7dd1aacd2eb4c00db Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Mon, 23 Feb 2026 00:23:47 +0100 Subject: [PATCH 3/6] Add ECMQV, PSS, MFG1 logic, fix tests --- java/ql/lib/experimental/quantum/JCA.qll | 282 ++++++++++++- .../quantum/jca/KeyExchange.java | 35 +- .../quantum/jca/SignatureOperation.java | 114 +++++ .../library-tests/quantum/node_edges.expected | 389 ++++++++++-------- .../quantum/node_properties.expected | 333 ++++++++++----- .../library-tests/quantum/nodes.expected | 263 ++++++++---- .../WeakSymmetricCipher.expected | 4 +- .../codeql/quantum/experimental/Model.qll | 44 ++ .../quantum/experimental/Standardization.qll | 3 + 9 files changed, 1111 insertions(+), 356 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index f14bb1886567..a5af0b9e173a 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -107,7 +107,7 @@ module JCAModel { bindingset[name] predicate key_agreement_names(string name) { name.toUpperCase() - .matches(["DH", "EDH", "ECDH", "X25519", "X448", "ML-KEM%", "XDH"].toUpperCase()) + .matches(["DH", "EDH", "ECDH", "ECMQV", "X25519", "X448", "ML-KEM%", "XDH"].toUpperCase()) } bindingset[name] @@ -265,6 +265,9 @@ module JCAModel { type = Crypto::ECDH() and name.toUpperCase() in ["ECDH", "X25519", "X448", "XDH"] or + type = Crypto::ECMQV() and + name.toUpperCase() = "ECMQV" + or type = Crypto::OtherKeyAgreementType() and name.toUpperCase().matches("ML-KEM%") } @@ -1876,7 +1879,16 @@ module JCAModel { override Crypto::ModeOfOperationAlgorithmInstance getModeOfOperationAlgorithm() { none() } - override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { none() } + override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { + result = this + } + + override predicate shouldHaveModeOfOperation() { none() } + + override predicate shouldHavePaddingScheme() { + // Only RSA-based signatures have a meaningful padding concept (PSS or PKCS1v1.5) + signature_name_to_type_known(KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()), super.getValue()) + } } class SignatureHashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof SignatureStringLiteralAlgorithmInstance @@ -1895,6 +1907,201 @@ module JCAModel { override int getFixedDigestLength() { result = digestLength } } + /** + * Determines if a signature algorithm name implies PSS padding. + */ + bindingset[name] + private predicate signatureImpliesPss(string name) { + name.toUpperCase().matches("%RSASSA-PSS%") or + name.toUpperCase().matches("%WITHRSA%MGF1%") or + name.toUpperCase().matches("%WITHRSA/PSS%") + } + + /** + * Base class for PSS padding derived from signature algorithm names. + * Provides getPaddingType() on PaddingAlgorithmInstance to break the non-monotonic + * recursion that would occur if the derived PssPaddingAlgorithmInstance class + * defined getPaddingType() itself (since PssPaddingAlgorithmInstance's charpred + * calls getPaddingType()). + * Follows the same two-class pattern used for OAEP: + * CipherStringLiteralPaddingAlgorithmInstance → OaepPaddingAlgorithmInstance. + */ + private class SignaturePssPaddingBase extends SignatureStringLiteralAlgorithmInstance, + Crypto::PaddingAlgorithmInstance instanceof SignatureStringLiteral + { + SignaturePssPaddingBase() { signatureImpliesPss(super.getValue()) } + + override string getRawPaddingAlgorithmName() { result = "PSS" } + + override KeyOpAlg::PaddingSchemeType getPaddingType() { result instanceof KeyOpAlg::PSS } + } + + /** + * A PSS padding algorithm instance derived from a signature algorithm literal. + * Extends PssPaddingAlgorithmInstance (whose charpred evaluates through + * SignaturePssPaddingBase.getPaddingType()) to produce MD and MGF1Hash edges. + * + * For name-implied PSS (e.g., "SHA256withRSAandMGF1"), the same literal element + * is also a SignatureHashAlgorithmInstance, so `result = this` yields the hash. + * For bare "RSASSA-PSS", `result = this` has no result (this is not a + * HashAlgorithmInstance), so the graph falls back to self-referencing (unknown). + * When a PSSParameterSpec is connected via setParameter(), the explicit hash + * from the spec is used instead. + */ + class SignaturePssPaddingAlgorithmInstance extends Crypto::PssPaddingAlgorithmInstance, + SignaturePssPaddingBase instanceof SignatureStringLiteral + { + override Crypto::HashAlgorithmInstance getHashAlgorithm() { + // Name-implied hash (e.g., SHA256withRSAandMGF1 → SHA-256) + result = this + or + // Explicit PSS hash from PSSParameterSpec via Signature.setParameter() + exists(PSSParameterSpecInstantiation spec | + pssSpecForSignatureLiteral(spec, this) and + result.(PSSParameterSpecDigestHashAlgorithmInstance).getSpec() = spec + ) + } + + override Crypto::HashAlgorithmInstance getMgf1HashAlgorithm() { + // Name-implied MGF1 hash (defaults to same hash as digest) + result = this + or + // Explicit MGF1 hash from PSSParameterSpec via Signature.setParameter() + exists(PSSParameterSpecInstantiation spec | + pssSpecForSignatureLiteral(spec, this) and + result.(PSSParameterSpecMgf1HashAlgorithmInstance).getSpec() = spec + ) + } + } + + /** + * A PSSParameterSpec instantiation, e.g., + * new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1) + */ + class PSSParameterSpecInstantiation extends ClassInstanceExpr { + PSSParameterSpecInstantiation() { + this.getConstructedType().hasQualifiedName("java.security.spec", "PSSParameterSpec") + } + + /** Gets the digest algorithm name argument (arg 0). */ + Expr getDigestAlgorithmArg() { + result = this.getArgument(0) + } + + /** Gets the MGF algorithm name argument (arg 1). */ + Expr getMgfAlgorithmArg() { + result = this.getArgument(1) + } + + /** Gets the salt length argument (arg 3). */ + Expr getSaltLengthArg() { + result = this.getArgument(3) + } + + /** Gets the MGF parameter spec argument (arg 2), e.g., MGF1ParameterSpec.SHA256. */ + Expr getMgfSpecArg() { + result = this.getArgument(2) + } + } + + /** + * A static field access on `java.security.spec.MGF1ParameterSpec`, e.g., + * `MGF1ParameterSpec.SHA256`. These fields represent well-known MGF1 hash + * algorithm configurations. + */ + class MGF1ParameterSpecFieldAccess extends FieldAccess { + MGF1ParameterSpecFieldAccess() { + this.getField() + .getDeclaringType() + .hasQualifiedName("java.security.spec", "MGF1ParameterSpec") and + this.getField().isStatic() + } + + /** Gets the hash algorithm name corresponding to this MGF1 field. */ + string getHashAlgorithmName() { + this.getField().getName() = "SHA1" and result = "SHA-1" + or + this.getField().getName() = "SHA224" and result = "SHA-224" + or + this.getField().getName() = "SHA256" and result = "SHA-256" + or + this.getField().getName() = "SHA384" and result = "SHA-384" + or + this.getField().getName() = "SHA512" and result = "SHA-512" + or + this.getField().getName() = "SHA512_224" and result = "SHA-512/224" + or + this.getField().getName() = "SHA512_256" and result = "SHA-512/256" + } + } + + /** + * A hash algorithm instance for the digest algorithm argument (arg 0) of a + * PSSParameterSpec instantiation, e.g., "SHA-256" in: + * new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1) + * + * Type resolution delegates to hash_name_to_type_known from Standardization. + */ + class PSSParameterSpecDigestHashAlgorithmInstance extends Crypto::HashAlgorithmInstance + instanceof JavaConstant + { + PSSParameterSpecInstantiation spec; + + PSSParameterSpecDigestHashAlgorithmInstance() { + this = spec.getDigestAlgorithmArg() and + // Only instantiate when the value resolves to a known hash type + exists(hash_name_to_type_known(super.getValue(), _)) + } + + /** Gets the PSSParameterSpec this digest hash belongs to. */ + PSSParameterSpecInstantiation getSpec() { result = spec } + + override string getRawHashAlgorithmName() { result = super.getValue() } + + override Crypto::THashType getHashType() { + result = hash_name_to_type_known(super.getValue(), _) + } + + override int getFixedDigestLength() { + exists(hash_name_to_type_known(super.getValue(), result)) + } + } + + /** + * A hash algorithm instance for the MGF1 parameter spec argument (arg 2) of a + * PSSParameterSpec instantiation, e.g., MGF1ParameterSpec.SHA256 in: + * new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1) + * + * The field name is normalized to a standard hash algorithm name (e.g., + * SHA256 -> SHA-256), then type resolution delegates to hash_name_to_type_known. + */ + class PSSParameterSpecMgf1HashAlgorithmInstance extends Crypto::HashAlgorithmInstance + instanceof MGF1ParameterSpecFieldAccess + { + PSSParameterSpecInstantiation spec; + string normalizedName; + + PSSParameterSpecMgf1HashAlgorithmInstance() { + this = spec.getMgfSpecArg() and + normalizedName = super.getHashAlgorithmName() and + // Only instantiate when the normalized name resolves to a known hash type + exists(hash_name_to_type_known(normalizedName, _)) + } + + /** Gets the PSSParameterSpec this MGF1 hash belongs to. */ + PSSParameterSpecInstantiation getSpec() { result = spec } + + override string getRawHashAlgorithmName() { result = super.getField().getName() } + + override Crypto::THashType getHashType() { + result = hash_name_to_type_known(normalizedName, _) + } + + override int getFixedDigestLength() { + exists(hash_name_to_type_known(normalizedName, result)) + } + } + class SignatureInitCall extends MethodCall { SignatureInitCall() { this.getCallee().hasQualifiedName("java.security", "Signature", ["initSign", "initVerify"]) @@ -1906,6 +2113,21 @@ module JCAModel { } } + /** + * A call to `Signature.setParameter(AlgorithmParameterSpec)`, used to + * configure algorithm parameters such as PSSParameterSpec on a Signature instance. + */ + class SignatureSetParameterCall extends MethodCall { + SignatureSetParameterCall() { + this.getMethod() + .hasQualifiedName("java.security", "Signature", "setParameter") and + this.getMethod().getParameterType(0).(RefType).hasQualifiedName("java.security.spec", "AlgorithmParameterSpec") + } + + /** Gets the AlgorithmParameterSpec argument. */ + Expr getParameterSpecArg() { result = this.getArgument(0) } + } + class SignatureOperationCall extends MethodCall { SignatureOperationCall() { this.getMethod().hasQualifiedName("java.security", "Signature", ["update", "sign", "verify"]) @@ -1970,7 +2192,6 @@ module JCAModel { } override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { - // TODO: RSASSA-PSS literal sets hashes differently, through a ParameterSpec result = this.getInstantiationCall().getAlgorithmArg() } @@ -1997,6 +2218,61 @@ module JCAModel { GetInstanceInitUseFlowAnalysis; + /** + * Flow from `Signature.getInstance()` return value to `Signature.setParameter()` qualifier. + * Used to connect a signature algorithm literal to its PSSParameterSpec configuration. + */ + module SignatureToSetParameterConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { src.asExpr() instanceof SignatureGetInstanceCall } + + predicate isSink(DataFlow::Node sink) { + exists(SignatureSetParameterCall c | sink.asExpr() = c.getQualifier()) + } + } + + module SignatureToSetParameterFlow = DataFlow::Global; + + /** + * Flow from `PSSParameterSpec` instantiation to `Signature.setParameter()` argument. + */ + module PSSSpecToSetParameterConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { + src.asExpr() instanceof PSSParameterSpecInstantiation + } + + predicate isSink(DataFlow::Node sink) { + exists(SignatureSetParameterCall c | sink.asExpr() = c.getParameterSpecArg()) + } + } + + module PSSSpecToSetParameterFlow = DataFlow::Global; + + /** + * Connects a PSSParameterSpec instantiation to the signature PSS padding literal + * for which it provides configuration, via `Signature.setParameter()`. + * + * The connection requires: + * 1. The padding literal flows (via its consumer) to a `Signature.getInstance()` call + * 2. That getInstance call flows to a `Signature.setParameter()` qualifier + * 3. The PSSParameterSpec flows to the same setParameter's argument + */ + private predicate pssSpecForSignatureLiteral( + PSSParameterSpecInstantiation spec, SignaturePssPaddingAlgorithmInstance literal + ) { + exists( + SignatureSetParameterCall setParam, + SignatureGetInstanceCall getInstance, + SignatureGetInstanceAlgorithmValueConsumer consumer + | + consumer = literal.getConsumer() and + consumer = getInstance.getAlgorithmArg() and + SignatureToSetParameterFlow::flow(DataFlow::exprNode(getInstance), + DataFlow::exprNode(setParam.getQualifier())) and + PSSSpecToSetParameterFlow::flow(DataFlow::exprNode(spec), + DataFlow::exprNode(setParam.getParameterSpecArg())) + ) + } + /* * Elliptic Curves (EC) */ diff --git a/java/ql/test/experimental/library-tests/quantum/jca/KeyExchange.java b/java/ql/test/experimental/library-tests/quantum/jca/KeyExchange.java index ef4d5b94c86f..50424a321062 100644 --- a/java/ql/test/experimental/library-tests/quantum/jca/KeyExchange.java +++ b/java/ql/test/experimental/library-tests/quantum/jca/KeyExchange.java @@ -214,7 +214,40 @@ public byte[] deriveX448Secret(PrivateKey privateKey, PublicKey publicKey) throw } ////////////////////////////////////////// - // 5. Nuanced Insecure Key Exchange Example + // 5. ECMQV (Elliptic Curve Menezes-Qu-Vanstone) + ////////////////////////////////////////// + + /** + * Generates an ECMQV key pair. + * + * CBOM/SAST Classification: + * - Parent: Elliptic Curve Key Agreement (ECMQV). + * - ECMQV is quantum-vulnerable. + * + * @return An ECMQV KeyPair. + */ + public KeyPair generateECMQVKeyPair() throws Exception { + KeyPairGenerator ecmqvKpg = KeyPairGenerator.getInstance("ECMQV"); + ecmqvKpg.initialize(256); + return ecmqvKpg.generateKeyPair(); + } + + /** + * Derives a shared secret using the ECMQV key agreement. + * + * @param privateKey The ECMQV private key. + * @param publicKey The corresponding public key. + * @return The derived ECMQV shared secret. + */ + public byte[] deriveECMQVSecret(PrivateKey privateKey, PublicKey publicKey) throws Exception { + KeyAgreement ka = KeyAgreement.getInstance("ECMQV"); + ka.init(privateKey); + ka.doPhase(publicKey, true); + return ka.generateSecret(); + } + + ////////////////////////////////////////// + // 6. Nuanced Insecure Key Exchange Example ////////////////////////////////////////// /** diff --git a/java/ql/test/experimental/library-tests/quantum/jca/SignatureOperation.java b/java/ql/test/experimental/library-tests/quantum/jca/SignatureOperation.java index 2efba7c5c770..d781e487956d 100644 --- a/java/ql/test/experimental/library-tests/quantum/jca/SignatureOperation.java +++ b/java/ql/test/experimental/library-tests/quantum/jca/SignatureOperation.java @@ -3,6 +3,8 @@ // import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.*; import java.security.spec.ECGenParameterSpec; +import java.security.spec.MGF1ParameterSpec; +import java.security.spec.PSSParameterSpec; import java.util.Base64; import java.util.Properties; @@ -205,6 +207,118 @@ public boolean verifySHA1withRSA(PublicKey publicKey, byte[] data, byte[] sigByt // Nuanced Edge-Case Examples /////////////////////////////////////// + /////////////////////////////////////// + // 5. SHA{n}withRSA (RS256, RS384, RS512 equivalents) + /////////////////////////////////////// + + /** + * Sign using SHA256withRSA (RS256 equivalent). + */ + public byte[] signSHA256withRSA(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("SHA256withRSA"); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /** + * Sign using SHA384withRSA (RS384 equivalent). + */ + public byte[] signSHA384withRSA(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("SHA384withRSA"); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /** + * Sign using SHA512withRSA (RS512 equivalent). + */ + public byte[] signSHA512withRSA(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("SHA512withRSA"); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /////////////////////////////////////// + // 6. RSASSA-PSS with PSSParameterSpec (PS256, PS384, PS512 equivalents) + /////////////////////////////////////// + + /** + * Sign using RSASSA-PSS with SHA-256 (PS256 equivalent). + */ + public byte[] signRSASSA_PSS_SHA256(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("RSASSA-PSS"); + signature.setParameter( + new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1)); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /** + * Sign using RSASSA-PSS with SHA-384 (PS384 equivalent). + */ + public byte[] signRSASSA_PSS_SHA384(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("RSASSA-PSS"); + signature.setParameter( + new PSSParameterSpec("SHA-384", "MGF1", MGF1ParameterSpec.SHA384, 48, 1)); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /** + * Sign using RSASSA-PSS with SHA-512 (PS512 equivalent). + */ + public byte[] signRSASSA_PSS_SHA512(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("RSASSA-PSS"); + signature.setParameter( + new PSSParameterSpec("SHA-512", "MGF1", MGF1ParameterSpec.SHA512, 64, 1)); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /** + * Verify using RSASSA-PSS with SHA-256. + */ + public boolean verifyRSASSA_PSS_SHA256(PublicKey publicKey, byte[] data, byte[] sigBytes) + throws Exception { + Signature signature = Signature.getInstance("RSASSA-PSS"); + signature.setParameter( + new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1)); + signature.initVerify(publicKey); + signature.update(data); + return signature.verify(sigBytes); + } + + /////////////////////////////////////// + // 7. SHA256withRSAandMGF1 (PSS implied by name) + /////////////////////////////////////// + + /** + * Sign using SHA256withRSAandMGF1. + */ + public byte[] signSHA256withRSAandMGF1(PrivateKey privateKey, byte[] data) throws Exception { + Signature signature = Signature.getInstance("SHA256withRSAandMGF1"); + signature.initSign(privateKey); + signature.update(data); + return signature.sign(); + } + + /** + * Verify using SHA256withRSAandMGF1. + */ + public boolean verifySHA256withRSAandMGF1(PublicKey publicKey, byte[] data, byte[] sigBytes) + throws Exception { + Signature signature = Signature.getInstance("SHA256withRSAandMGF1"); + signature.initVerify(publicKey); + signature.update(data); + return signature.verify(sigBytes); + } + /** * Demonstrates signing and verifying an empty message. * diff --git a/java/ql/test/experimental/library-tests/quantum/node_edges.expected b/java/ql/test/experimental/library-tests/quantum/node_edges.expected index 6afaf9d8d873..58f53b09b869 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -466,15 +466,11 @@ | jca/EllipticCurve1.java:106:16:106:36 | Key | Algorithm | jca/EllipticCurve1.java:105:66:105:76 | Constant | | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:105:66:105:76 | Constant | | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | Output | jca/EllipticCurve1.java:106:16:106:36 | Key | -| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | -| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | Key | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | | jca/EllipticCurve1.java:115:16:115:36 | Key | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | EllipticCurve | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Output | jca/EllipticCurve1.java:115:16:115:36 | Key | -| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | Mode | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | -| jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | Padding | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:123:16:123:36 | Key | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | | jca/EllipticCurve1.java:123:16:123:36 | Key | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:123:16:123:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:122:61:122:67 | EllipticCurve | @@ -503,8 +499,6 @@ | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | EllipticCurve | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Output | jca/EllipticCurve2.java:73:16:73:36 | Key | -| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | -| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:81:16:81:36 | Key | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | | jca/EllipticCurve2.java:81:16:81:36 | Key | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | EllipticCurve | @@ -524,8 +518,6 @@ | jca/EllipticCurve2.java:122:16:122:34 | KeyAgreementOperation | PeerKey | jca/EllipticCurve2.java:121:20:121:39 | Key | | jca/EllipticCurve2.java:122:16:122:34 | KeyAgreementOperation | ServerKey | jca/EllipticCurve2.java:120:17:120:37 | Key | | jca/EllipticCurve2.java:122:16:122:34 | SharedSecret | Source | jca/EllipticCurve2.java:122:16:122:34 | SharedSecret | -| jca/EllipticCurve2.java:136:53:136:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:136:53:136:69 | KeyOperationAlgorithm | -| jca/EllipticCurve2.java:136:53:136:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:136:53:136:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:137:28:137:42 | Key | Source | jca/EllipticCurve2.java:47:16:47:36 | Key | | jca/EllipticCurve2.java:138:26:138:32 | Message | Source | jca/EllipticCurve2.java:245:30:245:53 | Constant | | jca/EllipticCurve2.java:139:16:139:31 | SignOperation | Algorithm | jca/EllipticCurve2.java:136:53:136:69 | KeyOperationAlgorithm | @@ -533,8 +525,6 @@ | jca/EllipticCurve2.java:139:16:139:31 | SignOperation | Input | jca/EllipticCurve2.java:138:26:138:32 | Message | | jca/EllipticCurve2.java:139:16:139:31 | SignOperation | Key | jca/EllipticCurve2.java:137:28:137:42 | Key | | jca/EllipticCurve2.java:139:16:139:31 | SignOperation | Output | jca/EllipticCurve2.java:139:16:139:31 | SignatureOutput | -| jca/EllipticCurve2.java:151:53:151:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:151:53:151:69 | KeyOperationAlgorithm | -| jca/EllipticCurve2.java:151:53:151:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:151:53:151:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:152:30:152:43 | Key | Source | jca/EllipticCurve2.java:47:16:47:36 | Key | | jca/EllipticCurve2.java:153:26:153:32 | Message | Source | jca/EllipticCurve2.java:245:30:245:53 | Constant | | jca/EllipticCurve2.java:154:16:154:47 | VerifyOperation | Algorithm | jca/EllipticCurve2.java:151:53:151:69 | KeyOperationAlgorithm | @@ -543,8 +533,6 @@ | jca/EllipticCurve2.java:154:16:154:47 | VerifyOperation | Key | jca/EllipticCurve2.java:152:30:152:43 | Key | | jca/EllipticCurve2.java:154:16:154:47 | VerifyOperation | Signature | jca/EllipticCurve2.java:154:33:154:46 | SignatureInput | | jca/EllipticCurve2.java:154:33:154:46 | SignatureInput | Source | jca/EllipticCurve2.java:139:16:139:31 | SignatureOutput | -| jca/EllipticCurve2.java:166:53:166:61 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:166:53:166:61 | KeyOperationAlgorithm | -| jca/EllipticCurve2.java:166:53:166:61 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:166:53:166:61 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:167:28:167:42 | Key | Source | jca/EllipticCurve2.java:81:16:81:36 | Key | | jca/EllipticCurve2.java:168:26:168:32 | Message | Source | jca/EllipticCurve2.java:245:30:245:53 | Constant | | jca/EllipticCurve2.java:169:16:169:31 | SignOperation | Algorithm | jca/EllipticCurve2.java:166:53:166:61 | KeyOperationAlgorithm | @@ -552,8 +540,6 @@ | jca/EllipticCurve2.java:169:16:169:31 | SignOperation | Input | jca/EllipticCurve2.java:168:26:168:32 | Message | | jca/EllipticCurve2.java:169:16:169:31 | SignOperation | Key | jca/EllipticCurve2.java:167:28:167:42 | Key | | jca/EllipticCurve2.java:169:16:169:31 | SignOperation | Output | jca/EllipticCurve2.java:169:16:169:31 | SignatureOutput | -| jca/EllipticCurve2.java:181:53:181:61 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:181:53:181:61 | KeyOperationAlgorithm | -| jca/EllipticCurve2.java:181:53:181:61 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:181:53:181:61 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:182:30:182:43 | Key | Source | jca/EllipticCurve2.java:81:16:81:36 | Key | | jca/EllipticCurve2.java:183:26:183:32 | Message | Source | jca/EllipticCurve2.java:245:30:245:53 | Constant | | jca/EllipticCurve2.java:184:16:184:47 | VerifyOperation | Algorithm | jca/EllipticCurve2.java:181:53:181:61 | KeyOperationAlgorithm | @@ -721,7 +707,6 @@ | jca/Hash.java:89:23:89:70 | HashOperation | Digest | jca/Hash.java:89:23:89:70 | Digest | | jca/Hash.java:89:23:89:70 | HashOperation | Message | jca/Hash.java:89:40:89:69 | Message | | jca/Hash.java:89:40:89:69 | Message | Source | jca/Hash.java:89:40:89:58 | Constant | -| jca/Hash.java:134:53:134:67 | KeyOperationAlgorithm | Mode | jca/Hash.java:134:53:134:67 | KeyOperationAlgorithm | | jca/Hash.java:134:53:134:67 | KeyOperationAlgorithm | Padding | jca/Hash.java:134:53:134:67 | KeyOperationAlgorithm | | jca/Hash.java:135:28:135:37 | Key | Source | jca/Hash.java:133:43:133:63 | Parameter | | jca/Hash.java:136:26:136:41 | Message | Source | jca/Hash.java:133:29:133:40 | Parameter | @@ -730,7 +715,6 @@ | jca/Hash.java:137:29:137:44 | SignOperation | Input | jca/Hash.java:136:26:136:41 | Message | | jca/Hash.java:137:29:137:44 | SignOperation | Key | jca/Hash.java:135:28:135:37 | Key | | jca/Hash.java:137:29:137:44 | SignOperation | Output | jca/Hash.java:137:29:137:44 | SignatureOutput | -| jca/Hash.java:155:53:155:67 | KeyOperationAlgorithm | Mode | jca/Hash.java:155:53:155:67 | KeyOperationAlgorithm | | jca/Hash.java:155:53:155:67 | KeyOperationAlgorithm | Padding | jca/Hash.java:155:53:155:67 | KeyOperationAlgorithm | | jca/Hash.java:156:30:156:38 | Key | Source | jca/Hash.java:154:73:154:91 | Parameter | | jca/Hash.java:157:26:157:41 | Message | Source | jca/Hash.java:154:40:154:51 | Parameter | @@ -1052,8 +1036,6 @@ | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:45:78:53 | EllipticCurve | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Output | jca/KeyArtifact.java:73:16:73:43 | Key | -| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Mode | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | -| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Padding | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:80:42:80:63 | Message | Source | jca/KeyDerivation1.java:78:39:78:53 | Parameter | | jca/KeyDerivation1.java:80:66:80:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:81:65:81:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:81:65:81:86 | HashAlgorithm | @@ -1287,6 +1269,16 @@ | jca/KeyExchange.java:213:16:213:34 | KeyAgreementOperation | PeerKey | jca/KeyExchange.java:212:20:212:28 | Key | | jca/KeyExchange.java:213:16:213:34 | KeyAgreementOperation | ServerKey | jca/KeyExchange.java:211:17:211:26 | Key | | jca/KeyExchange.java:213:16:213:34 | SharedSecret | Source | jca/KeyExchange.java:213:16:213:34 | SharedSecret | +| jca/KeyExchange.java:232:16:232:41 | Key | Algorithm | jca/KeyExchange.java:230:66:230:72 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:232:16:232:41 | KeyGeneration | Algorithm | jca/KeyExchange.java:230:66:230:72 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:232:16:232:41 | KeyGeneration | Output | jca/KeyExchange.java:232:16:232:41 | Key | +| jca/KeyExchange.java:244:17:244:26 | Key | Source | jca/KeyExchange.java:242:37:242:57 | Parameter | +| jca/KeyExchange.java:245:20:245:28 | Key | Source | jca/KeyExchange.java:242:60:242:78 | Parameter | +| jca/KeyExchange.java:246:16:246:34 | KeyAgreementOperation | Algorithm | jca/KeyExchange.java:243:52:243:58 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:246:16:246:34 | KeyAgreementOperation | Output | jca/KeyExchange.java:246:16:246:34 | SharedSecret | +| jca/KeyExchange.java:246:16:246:34 | KeyAgreementOperation | PeerKey | jca/KeyExchange.java:245:20:245:28 | Key | +| jca/KeyExchange.java:246:16:246:34 | KeyAgreementOperation | ServerKey | jca/KeyExchange.java:244:17:244:26 | Key | +| jca/KeyExchange.java:246:16:246:34 | SharedSecret | Source | jca/KeyExchange.java:246:16:246:34 | SharedSecret | | jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | H | jca/MACOperation.java:60:35:60:46 | HashAlgorithm | | jca/MACOperation.java:62:18:62:26 | Key | Source | jca/MACOperation.java:59:52:59:61 | Parameter | | jca/MACOperation.java:63:16:63:46 | MACOperation | Algorithm | jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | @@ -1462,8 +1454,6 @@ | jca/SignEncryptCombinations.java:53:16:53:38 | Key | Algorithm | jca/SignEncryptCombinations.java:52:49:52:59 | EllipticCurve | | jca/SignEncryptCombinations.java:53:16:53:38 | KeyGeneration | Algorithm | jca/SignEncryptCombinations.java:52:49:52:59 | EllipticCurve | | jca/SignEncryptCombinations.java:53:16:53:38 | KeyGeneration | Output | jca/SignEncryptCombinations.java:53:16:53:38 | Key | -| jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | -| jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:62:28:62:34 | Key | Source | jca/SignEncryptCombinations.java:53:16:53:38 | Key | | jca/SignEncryptCombinations.java:63:26:63:29 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | | jca/SignEncryptCombinations.java:63:26:63:29 | Message | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | @@ -1473,8 +1463,6 @@ | jca/SignEncryptCombinations.java:64:16:64:31 | SignOperation | Input | jca/SignEncryptCombinations.java:63:26:63:29 | Message | | jca/SignEncryptCombinations.java:64:16:64:31 | SignOperation | Key | jca/SignEncryptCombinations.java:62:28:62:34 | Key | | jca/SignEncryptCombinations.java:64:16:64:31 | SignOperation | Output | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | -| jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | -| jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:69:30:69:35 | Key | Source | jca/SignEncryptCombinations.java:53:16:53:38 | Key | | jca/SignEncryptCombinations.java:70:26:70:29 | Message | Source | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | | jca/SignEncryptCombinations.java:70:26:70:29 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | @@ -1533,148 +1521,221 @@ | jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:113:16:113:41 | KeyOperationOutput | | jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | | jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | -| jca/SignatureOperation.java:54:16:54:36 | Key | Algorithm | jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:54:16:54:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:54:16:54:36 | KeyGeneration | Output | jca/SignatureOperation.java:54:16:54:36 | Key | -| jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:64:28:64:37 | Key | Source | jca/SignatureOperation.java:54:16:54:36 | Key | -| jca/SignatureOperation.java:65:26:65:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | Algorithm | jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:63:53:63:74 | HashAlgorithm | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | Input | jca/SignatureOperation.java:65:26:65:29 | Message | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | Key | jca/SignatureOperation.java:64:28:64:37 | Key | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | Output | jca/SignatureOperation.java:66:16:66:31 | SignatureOutput | -| jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:76:30:76:38 | Key | Source | jca/SignatureOperation.java:54:16:54:36 | Key | -| jca/SignatureOperation.java:77:26:77:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:75:53:75:74 | HashAlgorithm | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | Input | jca/SignatureOperation.java:77:26:77:29 | Message | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | Key | jca/SignatureOperation.java:76:30:76:38 | Key | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | Signature | jca/SignatureOperation.java:78:33:78:40 | SignatureInput | -| jca/SignatureOperation.java:78:33:78:40 | SignatureInput | Source | jca/SignatureOperation.java:66:16:66:31 | SignatureOutput | -| jca/SignatureOperation.java:94:16:94:38 | Key | Algorithm | jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | -| jca/SignatureOperation.java:94:16:94:38 | KeyGeneration | Algorithm | jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | -| jca/SignatureOperation.java:94:16:94:38 | KeyGeneration | Output | jca/SignatureOperation.java:94:16:94:38 | Key | -| jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:104:28:104:37 | Key | Source | jca/SignatureOperation.java:94:16:94:38 | Key | -| jca/SignatureOperation.java:105:26:105:29 | Message | Source | jca/SignatureOperation.java:231:26:231:44 | Constant | -| jca/SignatureOperation.java:105:26:105:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | Algorithm | jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:103:53:103:69 | HashAlgorithm | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | Input | jca/SignatureOperation.java:105:26:105:29 | Message | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | Key | jca/SignatureOperation.java:104:28:104:37 | Key | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | Output | jca/SignatureOperation.java:106:16:106:31 | SignatureOutput | -| jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:116:30:116:38 | Key | Source | jca/SignatureOperation.java:94:16:94:38 | Key | -| jca/SignatureOperation.java:117:26:117:29 | Message | Source | jca/SignatureOperation.java:231:26:231:44 | Constant | -| jca/SignatureOperation.java:117:26:117:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:115:53:115:69 | HashAlgorithm | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | Input | jca/SignatureOperation.java:117:26:117:29 | Message | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | Key | jca/SignatureOperation.java:116:30:116:38 | Key | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | Signature | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | -| jca/SignatureOperation.java:118:33:118:40 | SignatureInput | Source | jca/SignatureOperation.java:106:16:106:31 | SignatureOutput | -| jca/SignatureOperation.java:118:33:118:40 | SignatureInput | Source | jca/SignatureOperation.java:236:27:236:30 | Constant | -| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:133:16:133:36 | Key | Algorithm | jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | -| jca/SignatureOperation.java:133:16:133:36 | Key | Algorithm | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | -| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Output | jca/SignatureOperation.java:133:16:133:36 | Key | -| jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:143:28:143:37 | Key | Source | jca/SignatureOperation.java:133:16:133:36 | Key | -| jca/SignatureOperation.java:144:26:144:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | Algorithm | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:145:16:145:31 | SignOperation | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | Input | jca/SignatureOperation.java:144:26:144:29 | Message | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | Key | jca/SignatureOperation.java:143:28:143:37 | Key | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | Output | jca/SignatureOperation.java:145:16:145:31 | SignatureOutput | -| jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:155:30:155:38 | Key | Source | jca/SignatureOperation.java:133:16:133:36 | Key | -| jca/SignatureOperation.java:156:26:156:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | Input | jca/SignatureOperation.java:156:26:156:29 | Message | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | Key | jca/SignatureOperation.java:155:30:155:38 | Key | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | Signature | jca/SignatureOperation.java:157:33:157:40 | SignatureInput | -| jca/SignatureOperation.java:157:33:157:40 | SignatureInput | Source | jca/SignatureOperation.java:145:16:145:31 | SignatureOutput | -| jca/SignatureOperation.java:175:16:175:36 | Key | Algorithm | jca/SignatureOperation.java:173:61:173:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:175:16:175:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:173:61:173:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:175:16:175:36 | KeyGeneration | Output | jca/SignatureOperation.java:175:16:175:36 | Key | -| jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:186:28:186:37 | Key | Source | jca/SignatureOperation.java:175:16:175:36 | Key | -| jca/SignatureOperation.java:187:26:187:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | Algorithm | jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:185:53:185:65 | HashAlgorithm | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | Input | jca/SignatureOperation.java:187:26:187:29 | Message | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | Key | jca/SignatureOperation.java:186:28:186:37 | Key | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | Output | jca/SignatureOperation.java:188:16:188:31 | SignatureOutput | -| jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:199:30:199:38 | Key | Source | jca/SignatureOperation.java:175:16:175:36 | Key | -| jca/SignatureOperation.java:200:26:200:29 | Message | Source | jca/SignatureOperation.java:311:26:311:49 | Constant | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:198:53:198:65 | HashAlgorithm | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | Input | jca/SignatureOperation.java:200:26:200:29 | Message | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | Key | jca/SignatureOperation.java:199:30:199:38 | Key | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | Signature | jca/SignatureOperation.java:201:33:201:40 | SignatureInput | -| jca/SignatureOperation.java:201:33:201:40 | SignatureInput | Source | jca/SignatureOperation.java:188:16:188:31 | SignatureOutput | -| jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:283:28:283:42 | Key | Source | jca/SignatureOperation.java:54:16:54:36 | Key | -| jca/SignatureOperation.java:283:28:283:42 | Key | Source | jca/SignatureOperation.java:94:16:94:38 | Key | -| jca/SignatureOperation.java:283:28:283:42 | Key | Source | jca/SignatureOperation.java:133:16:133:36 | Key | -| jca/SignatureOperation.java:283:28:283:42 | Key | Source | jca/SignatureOperation.java:175:16:175:36 | Key | -| jca/SignatureOperation.java:284:26:284:32 | Message | Source | jca/SignatureOperation.java:282:26:282:49 | Constant | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Algorithm | jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Algorithm | jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Algorithm | jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Algorithm | jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Algorithm | jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:266:47:266:68 | HashAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:269:47:269:63 | HashAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:275:47:275:59 | HashAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:279:47:279:68 | HashAlgorithm | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Input | jca/SignatureOperation.java:284:26:284:32 | Message | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Key | jca/SignatureOperation.java:283:28:283:42 | Key | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | Output | jca/SignatureOperation.java:285:27:285:42 | SignatureOutput | -| jca/SignatureOperation.java:287:30:287:43 | Key | Source | jca/SignatureOperation.java:54:16:54:36 | Key | -| jca/SignatureOperation.java:287:30:287:43 | Key | Source | jca/SignatureOperation.java:94:16:94:38 | Key | -| jca/SignatureOperation.java:287:30:287:43 | Key | Source | jca/SignatureOperation.java:133:16:133:36 | Key | -| jca/SignatureOperation.java:287:30:287:43 | Key | Source | jca/SignatureOperation.java:175:16:175:36 | Key | -| jca/SignatureOperation.java:288:26:288:32 | Message | Source | jca/SignatureOperation.java:288:26:288:32 | Message | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:266:47:266:68 | HashAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:269:47:269:63 | HashAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:275:47:275:59 | HashAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:279:47:279:68 | HashAlgorithm | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Input | jca/SignatureOperation.java:284:26:284:32 | Message | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Input | jca/SignatureOperation.java:288:26:288:32 | Message | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Key | jca/SignatureOperation.java:283:28:283:42 | Key | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Key | jca/SignatureOperation.java:287:30:287:43 | Key | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | Signature | jca/SignatureOperation.java:289:45:289:52 | SignatureInput | -| jca/SignatureOperation.java:289:45:289:52 | SignatureInput | Source | jca/SignatureOperation.java:285:27:285:42 | SignatureOutput | +| jca/SignatureOperation.java:56:16:56:36 | Key | Algorithm | jca/SignatureOperation.java:54:61:54:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:56:16:56:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:54:61:54:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:56:16:56:36 | KeyGeneration | Output | jca/SignatureOperation.java:56:16:56:36 | Key | +| jca/SignatureOperation.java:65:53:65:74 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:65:53:65:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:65:53:65:74 | PaddingAlgorithm | MD | jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | +| jca/SignatureOperation.java:65:53:65:74 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | +| jca/SignatureOperation.java:66:28:66:37 | Key | Source | jca/SignatureOperation.java:56:16:56:36 | Key | +| jca/SignatureOperation.java:67:26:67:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | Algorithm | jca/SignatureOperation.java:65:53:65:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | Input | jca/SignatureOperation.java:67:26:67:29 | Message | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | Key | jca/SignatureOperation.java:66:28:66:37 | Key | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | Output | jca/SignatureOperation.java:68:16:68:31 | SignatureOutput | +| jca/SignatureOperation.java:77:53:77:74 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:77:53:77:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:77:53:77:74 | PaddingAlgorithm | MD | jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | +| jca/SignatureOperation.java:77:53:77:74 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | +| jca/SignatureOperation.java:78:30:78:38 | Key | Source | jca/SignatureOperation.java:56:16:56:36 | Key | +| jca/SignatureOperation.java:79:26:79:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:77:53:77:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | Input | jca/SignatureOperation.java:79:26:79:29 | Message | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | Key | jca/SignatureOperation.java:78:30:78:38 | Key | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | Signature | jca/SignatureOperation.java:80:33:80:40 | SignatureInput | +| jca/SignatureOperation.java:80:33:80:40 | SignatureInput | Source | jca/SignatureOperation.java:68:16:68:31 | SignatureOutput | +| jca/SignatureOperation.java:96:16:96:38 | Key | Algorithm | jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | +| jca/SignatureOperation.java:96:16:96:38 | KeyGeneration | Algorithm | jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | +| jca/SignatureOperation.java:96:16:96:38 | KeyGeneration | Output | jca/SignatureOperation.java:96:16:96:38 | Key | +| jca/SignatureOperation.java:106:28:106:37 | Key | Source | jca/SignatureOperation.java:96:16:96:38 | Key | +| jca/SignatureOperation.java:107:26:107:29 | Message | Source | jca/SignatureOperation.java:345:26:345:44 | Constant | +| jca/SignatureOperation.java:107:26:107:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | Algorithm | jca/SignatureOperation.java:105:53:105:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:105:53:105:69 | HashAlgorithm | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | Input | jca/SignatureOperation.java:107:26:107:29 | Message | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | Key | jca/SignatureOperation.java:106:28:106:37 | Key | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | Output | jca/SignatureOperation.java:108:16:108:31 | SignatureOutput | +| jca/SignatureOperation.java:118:30:118:38 | Key | Source | jca/SignatureOperation.java:96:16:96:38 | Key | +| jca/SignatureOperation.java:119:26:119:29 | Message | Source | jca/SignatureOperation.java:345:26:345:44 | Constant | +| jca/SignatureOperation.java:119:26:119:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:117:53:117:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:117:53:117:69 | HashAlgorithm | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | Input | jca/SignatureOperation.java:119:26:119:29 | Message | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | Key | jca/SignatureOperation.java:118:30:118:38 | Key | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | Signature | jca/SignatureOperation.java:120:33:120:40 | SignatureInput | +| jca/SignatureOperation.java:120:33:120:40 | SignatureInput | Source | jca/SignatureOperation.java:108:16:108:31 | SignatureOutput | +| jca/SignatureOperation.java:120:33:120:40 | SignatureInput | Source | jca/SignatureOperation.java:350:27:350:30 | Constant | +| jca/SignatureOperation.java:135:16:135:36 | Key | Algorithm | jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | +| jca/SignatureOperation.java:135:16:135:36 | Key | Algorithm | jca/SignatureOperation.java:134:61:134:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:135:16:135:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | +| jca/SignatureOperation.java:135:16:135:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:134:61:134:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:135:16:135:36 | KeyGeneration | Output | jca/SignatureOperation.java:135:16:135:36 | Key | +| jca/SignatureOperation.java:145:28:145:37 | Key | Source | jca/SignatureOperation.java:135:16:135:36 | Key | +| jca/SignatureOperation.java:146:26:146:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | Algorithm | jca/SignatureOperation.java:144:53:144:61 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:147:16:147:31 | SignOperation | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | Input | jca/SignatureOperation.java:146:26:146:29 | Message | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | Key | jca/SignatureOperation.java:145:28:145:37 | Key | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | Output | jca/SignatureOperation.java:147:16:147:31 | SignatureOutput | +| jca/SignatureOperation.java:157:30:157:38 | Key | Source | jca/SignatureOperation.java:135:16:135:36 | Key | +| jca/SignatureOperation.java:158:26:158:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:156:53:156:61 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | Input | jca/SignatureOperation.java:158:26:158:29 | Message | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | Key | jca/SignatureOperation.java:157:30:157:38 | Key | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | Signature | jca/SignatureOperation.java:159:33:159:40 | SignatureInput | +| jca/SignatureOperation.java:159:33:159:40 | SignatureInput | Source | jca/SignatureOperation.java:147:16:147:31 | SignatureOutput | +| jca/SignatureOperation.java:177:16:177:36 | Key | Algorithm | jca/SignatureOperation.java:175:61:175:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:177:16:177:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:175:61:175:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:177:16:177:36 | KeyGeneration | Output | jca/SignatureOperation.java:177:16:177:36 | Key | +| jca/SignatureOperation.java:187:53:187:65 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:187:53:187:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:188:28:188:37 | Key | Source | jca/SignatureOperation.java:177:16:177:36 | Key | +| jca/SignatureOperation.java:189:26:189:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | Algorithm | jca/SignatureOperation.java:187:53:187:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:187:53:187:65 | HashAlgorithm | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | Input | jca/SignatureOperation.java:189:26:189:29 | Message | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | Key | jca/SignatureOperation.java:188:28:188:37 | Key | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | Output | jca/SignatureOperation.java:190:16:190:31 | SignatureOutput | +| jca/SignatureOperation.java:200:53:200:65 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:200:53:200:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:201:30:201:38 | Key | Source | jca/SignatureOperation.java:177:16:177:36 | Key | +| jca/SignatureOperation.java:202:26:202:29 | Message | Source | jca/SignatureOperation.java:425:26:425:49 | Constant | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:200:53:200:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:200:53:200:65 | HashAlgorithm | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | Input | jca/SignatureOperation.java:202:26:202:29 | Message | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | Key | jca/SignatureOperation.java:201:30:201:38 | Key | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | Signature | jca/SignatureOperation.java:203:33:203:40 | SignatureInput | +| jca/SignatureOperation.java:203:33:203:40 | SignatureInput | Source | jca/SignatureOperation.java:190:16:190:31 | SignatureOutput | +| jca/SignatureOperation.java:218:53:218:67 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:218:53:218:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:219:28:219:37 | Key | Source | jca/SignatureOperation.java:217:37:217:57 | Parameter | +| jca/SignatureOperation.java:220:26:220:29 | Message | Source | jca/SignatureOperation.java:217:60:217:70 | Parameter | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | Algorithm | jca/SignatureOperation.java:218:53:218:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:218:53:218:67 | HashAlgorithm | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | Input | jca/SignatureOperation.java:220:26:220:29 | Message | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | Key | jca/SignatureOperation.java:219:28:219:37 | Key | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | Output | jca/SignatureOperation.java:221:16:221:31 | SignatureOutput | +| jca/SignatureOperation.java:228:53:228:67 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:228:53:228:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:229:28:229:37 | Key | Source | jca/SignatureOperation.java:227:37:227:57 | Parameter | +| jca/SignatureOperation.java:230:26:230:29 | Message | Source | jca/SignatureOperation.java:227:60:227:70 | Parameter | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | Algorithm | jca/SignatureOperation.java:228:53:228:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:228:53:228:67 | HashAlgorithm | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | Input | jca/SignatureOperation.java:230:26:230:29 | Message | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | Key | jca/SignatureOperation.java:229:28:229:37 | Key | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | Output | jca/SignatureOperation.java:231:16:231:31 | SignatureOutput | +| jca/SignatureOperation.java:238:53:238:67 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:238:53:238:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:239:28:239:37 | Key | Source | jca/SignatureOperation.java:237:37:237:57 | Parameter | +| jca/SignatureOperation.java:240:26:240:29 | Message | Source | jca/SignatureOperation.java:237:60:237:70 | Parameter | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | Algorithm | jca/SignatureOperation.java:238:53:238:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:238:53:238:67 | HashAlgorithm | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | Input | jca/SignatureOperation.java:240:26:240:29 | Message | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | Key | jca/SignatureOperation.java:239:28:239:37 | Key | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | Output | jca/SignatureOperation.java:241:16:241:31 | SignatureOutput | +| jca/SignatureOperation.java:252:53:252:64 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:252:53:252:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:252:53:252:64 | PaddingAlgorithm | MD | jca/SignatureOperation.java:254:34:254:42 | HashAlgorithm | +| jca/SignatureOperation.java:252:53:252:64 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:254:53:254:76 | HashAlgorithm | +| jca/SignatureOperation.java:255:28:255:37 | Key | Source | jca/SignatureOperation.java:251:41:251:61 | Parameter | +| jca/SignatureOperation.java:256:26:256:29 | Message | Source | jca/SignatureOperation.java:251:64:251:74 | Parameter | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | Algorithm | jca/SignatureOperation.java:252:53:252:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:257:16:257:31 | SignOperation | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | Input | jca/SignatureOperation.java:256:26:256:29 | Message | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | Key | jca/SignatureOperation.java:255:28:255:37 | Key | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | Output | jca/SignatureOperation.java:257:16:257:31 | SignatureOutput | +| jca/SignatureOperation.java:264:53:264:64 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:264:53:264:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:264:53:264:64 | PaddingAlgorithm | MD | jca/SignatureOperation.java:266:34:266:42 | HashAlgorithm | +| jca/SignatureOperation.java:264:53:264:64 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:266:53:266:76 | HashAlgorithm | +| jca/SignatureOperation.java:267:28:267:37 | Key | Source | jca/SignatureOperation.java:263:41:263:61 | Parameter | +| jca/SignatureOperation.java:268:26:268:29 | Message | Source | jca/SignatureOperation.java:263:64:263:74 | Parameter | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | Algorithm | jca/SignatureOperation.java:264:53:264:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:269:16:269:31 | SignOperation | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | Input | jca/SignatureOperation.java:268:26:268:29 | Message | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | Key | jca/SignatureOperation.java:267:28:267:37 | Key | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | Output | jca/SignatureOperation.java:269:16:269:31 | SignatureOutput | +| jca/SignatureOperation.java:276:53:276:64 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:276:53:276:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:276:53:276:64 | PaddingAlgorithm | MD | jca/SignatureOperation.java:278:34:278:42 | HashAlgorithm | +| jca/SignatureOperation.java:276:53:276:64 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:278:53:278:76 | HashAlgorithm | +| jca/SignatureOperation.java:279:28:279:37 | Key | Source | jca/SignatureOperation.java:275:41:275:61 | Parameter | +| jca/SignatureOperation.java:280:26:280:29 | Message | Source | jca/SignatureOperation.java:275:64:275:74 | Parameter | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | Algorithm | jca/SignatureOperation.java:276:53:276:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:281:16:281:31 | SignOperation | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | Input | jca/SignatureOperation.java:280:26:280:29 | Message | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | Key | jca/SignatureOperation.java:279:28:279:37 | Key | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | Output | jca/SignatureOperation.java:281:16:281:31 | SignatureOutput | +| jca/SignatureOperation.java:289:53:289:64 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:289:53:289:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:289:53:289:64 | PaddingAlgorithm | MD | jca/SignatureOperation.java:291:34:291:42 | HashAlgorithm | +| jca/SignatureOperation.java:289:53:289:64 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:291:53:291:76 | HashAlgorithm | +| jca/SignatureOperation.java:292:30:292:38 | Key | Source | jca/SignatureOperation.java:287:44:287:62 | Parameter | +| jca/SignatureOperation.java:293:26:293:29 | Message | Source | jca/SignatureOperation.java:287:65:287:75 | Parameter | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:289:53:289:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | Input | jca/SignatureOperation.java:293:26:293:29 | Message | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | Key | jca/SignatureOperation.java:292:30:292:38 | Key | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | Signature | jca/SignatureOperation.java:294:33:294:40 | SignatureInput | +| jca/SignatureOperation.java:294:33:294:40 | SignatureInput | Source | jca/SignatureOperation.java:287:78:287:92 | Parameter | +| jca/SignatureOperation.java:305:53:305:74 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:305:53:305:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:305:53:305:74 | PaddingAlgorithm | MD | jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | +| jca/SignatureOperation.java:305:53:305:74 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | +| jca/SignatureOperation.java:306:28:306:37 | Key | Source | jca/SignatureOperation.java:304:44:304:64 | Parameter | +| jca/SignatureOperation.java:307:26:307:29 | Message | Source | jca/SignatureOperation.java:304:67:304:77 | Parameter | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | Algorithm | jca/SignatureOperation.java:305:53:305:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | Input | jca/SignatureOperation.java:307:26:307:29 | Message | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | Key | jca/SignatureOperation.java:306:28:306:37 | Key | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | Output | jca/SignatureOperation.java:308:16:308:31 | SignatureOutput | +| jca/SignatureOperation.java:316:53:316:74 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:316:53:316:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:316:53:316:74 | PaddingAlgorithm | MD | jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | +| jca/SignatureOperation.java:316:53:316:74 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | +| jca/SignatureOperation.java:317:30:317:38 | Key | Source | jca/SignatureOperation.java:314:47:314:65 | Parameter | +| jca/SignatureOperation.java:318:26:318:29 | Message | Source | jca/SignatureOperation.java:314:68:314:78 | Parameter | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | Algorithm | jca/SignatureOperation.java:316:53:316:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | Input | jca/SignatureOperation.java:318:26:318:29 | Message | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | Key | jca/SignatureOperation.java:317:30:317:38 | Key | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | Signature | jca/SignatureOperation.java:319:33:319:40 | SignatureInput | +| jca/SignatureOperation.java:319:33:319:40 | SignatureInput | Source | jca/SignatureOperation.java:314:81:314:95 | Parameter | +| jca/SignatureOperation.java:380:47:380:68 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:380:47:380:68 | PaddingAlgorithm | +| jca/SignatureOperation.java:380:47:380:68 | PaddingAlgorithm | MD | jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | +| jca/SignatureOperation.java:380:47:380:68 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | +| jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:393:47:393:68 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:393:47:393:68 | PaddingAlgorithm | +| jca/SignatureOperation.java:393:47:393:68 | PaddingAlgorithm | MD | jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | +| jca/SignatureOperation.java:393:47:393:68 | PaddingAlgorithm | MGF1Hash | jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | +| jca/SignatureOperation.java:397:28:397:42 | Key | Source | jca/SignatureOperation.java:56:16:56:36 | Key | +| jca/SignatureOperation.java:397:28:397:42 | Key | Source | jca/SignatureOperation.java:96:16:96:38 | Key | +| jca/SignatureOperation.java:397:28:397:42 | Key | Source | jca/SignatureOperation.java:135:16:135:36 | Key | +| jca/SignatureOperation.java:397:28:397:42 | Key | Source | jca/SignatureOperation.java:177:16:177:36 | Key | +| jca/SignatureOperation.java:398:26:398:32 | Message | Source | jca/SignatureOperation.java:396:26:396:49 | Constant | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Algorithm | jca/SignatureOperation.java:380:47:380:68 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Algorithm | jca/SignatureOperation.java:383:47:383:63 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Algorithm | jca/SignatureOperation.java:386:47:386:55 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Algorithm | jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Algorithm | jca/SignatureOperation.java:393:47:393:68 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:383:47:383:63 | HashAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:389:47:389:59 | HashAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | HashAlgorithm | jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Input | jca/SignatureOperation.java:398:26:398:32 | Message | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Key | jca/SignatureOperation.java:397:28:397:42 | Key | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | Output | jca/SignatureOperation.java:399:27:399:42 | SignatureOutput | +| jca/SignatureOperation.java:401:30:401:43 | Key | Source | jca/SignatureOperation.java:56:16:56:36 | Key | +| jca/SignatureOperation.java:401:30:401:43 | Key | Source | jca/SignatureOperation.java:96:16:96:38 | Key | +| jca/SignatureOperation.java:401:30:401:43 | Key | Source | jca/SignatureOperation.java:135:16:135:36 | Key | +| jca/SignatureOperation.java:401:30:401:43 | Key | Source | jca/SignatureOperation.java:177:16:177:36 | Key | +| jca/SignatureOperation.java:402:26:402:32 | Message | Source | jca/SignatureOperation.java:402:26:402:32 | Message | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:380:47:380:68 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:383:47:383:63 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:386:47:386:55 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Algorithm | jca/SignatureOperation.java:393:47:393:68 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:383:47:383:63 | HashAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:389:47:389:59 | HashAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | HashAlgorithm | jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Input | jca/SignatureOperation.java:398:26:398:32 | Message | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Input | jca/SignatureOperation.java:402:26:402:32 | Message | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Key | jca/SignatureOperation.java:397:28:397:42 | Key | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Key | jca/SignatureOperation.java:401:30:401:43 | Key | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | Signature | jca/SignatureOperation.java:403:45:403:52 | SignatureInput | +| jca/SignatureOperation.java:403:45:403:52 | SignatureInput | Source | jca/SignatureOperation.java:399:27:399:42 | SignatureOutput | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:51:44:51:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:51:44:51:62 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:55:42:55:44 | Key | Source | jca/SymmetricAlgorithm.java:244:64:244:76 | Parameter | diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index f456b93cf997..d6d7c6b9c037 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -1428,6 +1428,16 @@ | jca/KeyExchange.java:210:52:210:57 | KeyAgreementAlgorithm | RawName | X448 | jca/KeyExchange.java:210:52:210:57 | jca/KeyExchange.java:210:52:210:57 | | jca/KeyExchange.java:211:17:211:26 | Key | KeyType | Unknown | jca/KeyExchange.java:211:17:211:26 | jca/KeyExchange.java:211:17:211:26 | | jca/KeyExchange.java:212:20:212:28 | Key | KeyType | Unknown | jca/KeyExchange.java:212:20:212:28 | jca/KeyExchange.java:212:20:212:28 | +| jca/KeyExchange.java:230:66:230:72 | KeyAgreementAlgorithm | Name | ECMQV | jca/KeyExchange.java:230:66:230:72 | jca/KeyExchange.java:230:66:230:72 | +| jca/KeyExchange.java:230:66:230:72 | KeyAgreementAlgorithm | RawName | ECMQV | jca/KeyExchange.java:230:66:230:72 | jca/KeyExchange.java:230:66:230:72 | +| jca/KeyExchange.java:231:29:231:31 | Constant | Description | 256 | jca/KeyExchange.java:231:29:231:31 | jca/KeyExchange.java:231:29:231:31 | +| jca/KeyExchange.java:232:16:232:41 | Key | KeyType | Asymmetric | jca/KeyExchange.java:232:16:232:41 | jca/KeyExchange.java:232:16:232:41 | +| jca/KeyExchange.java:242:37:242:57 | Parameter | Description | privateKey | jca/KeyExchange.java:242:37:242:57 | jca/KeyExchange.java:242:37:242:57 | +| jca/KeyExchange.java:242:60:242:78 | Parameter | Description | publicKey | jca/KeyExchange.java:242:60:242:78 | jca/KeyExchange.java:242:60:242:78 | +| jca/KeyExchange.java:243:52:243:58 | KeyAgreementAlgorithm | Name | ECMQV | jca/KeyExchange.java:243:52:243:58 | jca/KeyExchange.java:243:52:243:58 | +| jca/KeyExchange.java:243:52:243:58 | KeyAgreementAlgorithm | RawName | ECMQV | jca/KeyExchange.java:243:52:243:58 | jca/KeyExchange.java:243:52:243:58 | +| jca/KeyExchange.java:244:17:244:26 | Key | KeyType | Unknown | jca/KeyExchange.java:244:17:244:26 | jca/KeyExchange.java:244:17:244:26 | +| jca/KeyExchange.java:245:20:245:28 | Key | KeyType | Unknown | jca/KeyExchange.java:245:20:245:28 | jca/KeyExchange.java:245:20:245:28 | | jca/MACOperation.java:59:36:59:49 | Parameter | Description | message | jca/MACOperation.java:59:36:59:49 | jca/MACOperation.java:59:36:59:49 | | jca/MACOperation.java:59:52:59:61 | Parameter | Description | key | jca/MACOperation.java:59:52:59:61 | jca/MACOperation.java:59:52:59:61 | | jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | Name | HMAC | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | @@ -1641,110 +1651,225 @@ | jca/SignEncryptCombinations.java:122:18:122:20 | Key | KeyType | Unknown | jca/SignEncryptCombinations.java:122:18:122:20 | jca/SignEncryptCombinations.java:122:18:122:20 | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | KeyOperationSubtype | Mac | jca/SignEncryptCombinations.java:123:16:123:32 | jca/SignEncryptCombinations.java:123:16:123:32 | | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | Description | "Hello, combinations!" | jca/SignEncryptCombinations.java:335:26:335:47 | jca/SignEncryptCombinations.java:335:26:335:47 | -| jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | KeySize | Constant:2048 | jca/SignatureOperation.java:53:24:53:27 | jca/SignatureOperation.java:53:24:53:27 | -| jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:52:61:52:65 | jca/SignatureOperation.java:52:61:52:65 | -| jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | RawName | RSA | jca/SignatureOperation.java:52:61:52:65 | jca/SignatureOperation.java:52:61:52:65 | -| jca/SignatureOperation.java:53:24:53:27 | Constant | Description | 2048 | jca/SignatureOperation.java:53:24:53:27 | jca/SignatureOperation.java:53:24:53:27 | -| jca/SignatureOperation.java:54:16:54:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:54:16:54:36 | jca/SignatureOperation.java:54:16:54:36 | -| jca/SignatureOperation.java:63:53:63:74 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:63:53:63:74 | jca/SignatureOperation.java:63:53:63:74 | -| jca/SignatureOperation.java:63:53:63:74 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:63:53:63:74 | jca/SignatureOperation.java:63:53:63:74 | -| jca/SignatureOperation.java:63:53:63:74 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:63:53:63:74 | jca/SignatureOperation.java:63:53:63:74 | -| jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:63:53:63:74 | jca/SignatureOperation.java:63:53:63:74 | -| jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:63:53:63:74 | jca/SignatureOperation.java:63:53:63:74 | -| jca/SignatureOperation.java:64:28:64:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:64:28:64:37 | jca/SignatureOperation.java:64:28:64:37 | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:66:16:66:31 | jca/SignatureOperation.java:66:16:66:31 | -| jca/SignatureOperation.java:75:53:75:74 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:75:53:75:74 | jca/SignatureOperation.java:75:53:75:74 | -| jca/SignatureOperation.java:75:53:75:74 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:75:53:75:74 | jca/SignatureOperation.java:75:53:75:74 | -| jca/SignatureOperation.java:75:53:75:74 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:75:53:75:74 | jca/SignatureOperation.java:75:53:75:74 | -| jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:75:53:75:74 | jca/SignatureOperation.java:75:53:75:74 | -| jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:75:53:75:74 | jca/SignatureOperation.java:75:53:75:74 | -| jca/SignatureOperation.java:76:30:76:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:76:30:76:38 | jca/SignatureOperation.java:76:30:76:38 | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:78:16:78:41 | jca/SignatureOperation.java:78:16:78:41 | -| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | CurveType | SEC | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | -| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | KeySize | 256 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | -| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | Name | secp256r1 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | -| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | ParsedName | secp256r1 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | -| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | RawName | secp256r1 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | -| jca/SignatureOperation.java:94:16:94:38 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:94:16:94:38 | jca/SignatureOperation.java:94:16:94:38 | -| jca/SignatureOperation.java:103:53:103:69 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:103:53:103:69 | jca/SignatureOperation.java:103:53:103:69 | -| jca/SignatureOperation.java:103:53:103:69 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:103:53:103:69 | jca/SignatureOperation.java:103:53:103:69 | -| jca/SignatureOperation.java:103:53:103:69 | HashAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:103:53:103:69 | jca/SignatureOperation.java:103:53:103:69 | -| jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | Name | ECDSA | jca/SignatureOperation.java:103:53:103:69 | jca/SignatureOperation.java:103:53:103:69 | -| jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:103:53:103:69 | jca/SignatureOperation.java:103:53:103:69 | -| jca/SignatureOperation.java:104:28:104:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:104:28:104:37 | jca/SignatureOperation.java:104:28:104:37 | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:106:16:106:31 | jca/SignatureOperation.java:106:16:106:31 | -| jca/SignatureOperation.java:115:53:115:69 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | -| jca/SignatureOperation.java:115:53:115:69 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | -| jca/SignatureOperation.java:115:53:115:69 | HashAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | -| jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | Name | ECDSA | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | -| jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | -| jca/SignatureOperation.java:116:30:116:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:116:30:116:38 | jca/SignatureOperation.java:116:30:116:38 | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:118:16:118:41 | jca/SignatureOperation.java:118:16:118:41 | -| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | CurveType | CURVE25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | KeySize | 255 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | Name | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | ParsedName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | RawName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | -| jca/SignatureOperation.java:133:16:133:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:133:16:133:36 | jca/SignatureOperation.java:133:16:133:36 | -| jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:142:53:142:61 | jca/SignatureOperation.java:142:53:142:61 | -| jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:142:53:142:61 | jca/SignatureOperation.java:142:53:142:61 | -| jca/SignatureOperation.java:143:28:143:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:143:28:143:37 | jca/SignatureOperation.java:143:28:143:37 | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:145:16:145:31 | jca/SignatureOperation.java:145:16:145:31 | -| jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:154:53:154:61 | jca/SignatureOperation.java:154:53:154:61 | -| jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:154:53:154:61 | jca/SignatureOperation.java:154:53:154:61 | -| jca/SignatureOperation.java:155:30:155:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:155:30:155:38 | jca/SignatureOperation.java:155:30:155:38 | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:157:16:157:41 | jca/SignatureOperation.java:157:16:157:41 | -| jca/SignatureOperation.java:173:61:173:65 | KeyOperationAlgorithm | KeySize | Constant:1024 | jca/SignatureOperation.java:174:24:174:27 | jca/SignatureOperation.java:174:24:174:27 | -| jca/SignatureOperation.java:173:61:173:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:173:61:173:65 | jca/SignatureOperation.java:173:61:173:65 | -| jca/SignatureOperation.java:173:61:173:65 | KeyOperationAlgorithm | RawName | RSA | jca/SignatureOperation.java:173:61:173:65 | jca/SignatureOperation.java:173:61:173:65 | -| jca/SignatureOperation.java:174:24:174:27 | Constant | Description | 1024 | jca/SignatureOperation.java:174:24:174:27 | jca/SignatureOperation.java:174:24:174:27 | -| jca/SignatureOperation.java:175:16:175:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:175:16:175:36 | jca/SignatureOperation.java:175:16:175:36 | -| jca/SignatureOperation.java:185:53:185:65 | HashAlgorithm | DigestSize | 160 | jca/SignatureOperation.java:185:53:185:65 | jca/SignatureOperation.java:185:53:185:65 | -| jca/SignatureOperation.java:185:53:185:65 | HashAlgorithm | Name | SHA1 | jca/SignatureOperation.java:185:53:185:65 | jca/SignatureOperation.java:185:53:185:65 | -| jca/SignatureOperation.java:185:53:185:65 | HashAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:185:53:185:65 | jca/SignatureOperation.java:185:53:185:65 | -| jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:185:53:185:65 | jca/SignatureOperation.java:185:53:185:65 | -| jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:185:53:185:65 | jca/SignatureOperation.java:185:53:185:65 | -| jca/SignatureOperation.java:186:28:186:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:186:28:186:37 | jca/SignatureOperation.java:186:28:186:37 | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:188:16:188:31 | jca/SignatureOperation.java:188:16:188:31 | -| jca/SignatureOperation.java:198:53:198:65 | HashAlgorithm | DigestSize | 160 | jca/SignatureOperation.java:198:53:198:65 | jca/SignatureOperation.java:198:53:198:65 | -| jca/SignatureOperation.java:198:53:198:65 | HashAlgorithm | Name | SHA1 | jca/SignatureOperation.java:198:53:198:65 | jca/SignatureOperation.java:198:53:198:65 | -| jca/SignatureOperation.java:198:53:198:65 | HashAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:198:53:198:65 | jca/SignatureOperation.java:198:53:198:65 | -| jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:198:53:198:65 | jca/SignatureOperation.java:198:53:198:65 | -| jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:198:53:198:65 | jca/SignatureOperation.java:198:53:198:65 | -| jca/SignatureOperation.java:199:30:199:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:199:30:199:38 | jca/SignatureOperation.java:199:30:199:38 | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:201:16:201:41 | jca/SignatureOperation.java:201:16:201:41 | -| jca/SignatureOperation.java:231:26:231:44 | Constant | Description | "Important Message" | jca/SignatureOperation.java:231:26:231:44 | jca/SignatureOperation.java:231:26:231:44 | -| jca/SignatureOperation.java:236:27:236:30 | Constant | Description | 0x01 | jca/SignatureOperation.java:236:27:236:30 | jca/SignatureOperation.java:236:27:236:30 | -| jca/SignatureOperation.java:266:47:266:68 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:266:47:266:68 | jca/SignatureOperation.java:266:47:266:68 | -| jca/SignatureOperation.java:266:47:266:68 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:266:47:266:68 | jca/SignatureOperation.java:266:47:266:68 | -| jca/SignatureOperation.java:266:47:266:68 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:266:47:266:68 | jca/SignatureOperation.java:266:47:266:68 | -| jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:266:47:266:68 | jca/SignatureOperation.java:266:47:266:68 | -| jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:266:47:266:68 | jca/SignatureOperation.java:266:47:266:68 | -| jca/SignatureOperation.java:269:47:269:63 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:269:47:269:63 | jca/SignatureOperation.java:269:47:269:63 | -| jca/SignatureOperation.java:269:47:269:63 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:269:47:269:63 | jca/SignatureOperation.java:269:47:269:63 | -| jca/SignatureOperation.java:269:47:269:63 | HashAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:269:47:269:63 | jca/SignatureOperation.java:269:47:269:63 | -| jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | Name | ECDSA | jca/SignatureOperation.java:269:47:269:63 | jca/SignatureOperation.java:269:47:269:63 | -| jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:269:47:269:63 | jca/SignatureOperation.java:269:47:269:63 | -| jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:272:47:272:55 | jca/SignatureOperation.java:272:47:272:55 | -| jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:272:47:272:55 | jca/SignatureOperation.java:272:47:272:55 | -| jca/SignatureOperation.java:275:47:275:59 | HashAlgorithm | DigestSize | 160 | jca/SignatureOperation.java:275:47:275:59 | jca/SignatureOperation.java:275:47:275:59 | -| jca/SignatureOperation.java:275:47:275:59 | HashAlgorithm | Name | SHA1 | jca/SignatureOperation.java:275:47:275:59 | jca/SignatureOperation.java:275:47:275:59 | -| jca/SignatureOperation.java:275:47:275:59 | HashAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:275:47:275:59 | jca/SignatureOperation.java:275:47:275:59 | -| jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:275:47:275:59 | jca/SignatureOperation.java:275:47:275:59 | -| jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:275:47:275:59 | jca/SignatureOperation.java:275:47:275:59 | -| jca/SignatureOperation.java:279:47:279:68 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:279:47:279:68 | jca/SignatureOperation.java:279:47:279:68 | -| jca/SignatureOperation.java:279:47:279:68 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:279:47:279:68 | jca/SignatureOperation.java:279:47:279:68 | -| jca/SignatureOperation.java:279:47:279:68 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:279:47:279:68 | jca/SignatureOperation.java:279:47:279:68 | -| jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:279:47:279:68 | jca/SignatureOperation.java:279:47:279:68 | -| jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:279:47:279:68 | jca/SignatureOperation.java:279:47:279:68 | -| jca/SignatureOperation.java:282:26:282:49 | Constant | Description | "Dynamic Signature Demo" | jca/SignatureOperation.java:282:26:282:49 | jca/SignatureOperation.java:282:26:282:49 | -| jca/SignatureOperation.java:283:28:283:42 | Key | KeyType | Unknown | jca/SignatureOperation.java:283:28:283:42 | jca/SignatureOperation.java:283:28:283:42 | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:285:27:285:42 | jca/SignatureOperation.java:285:27:285:42 | -| jca/SignatureOperation.java:287:30:287:43 | Key | KeyType | Unknown | jca/SignatureOperation.java:287:30:287:43 | jca/SignatureOperation.java:287:30:287:43 | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:289:28:289:53 | jca/SignatureOperation.java:289:28:289:53 | -| jca/SignatureOperation.java:311:26:311:49 | Constant | Description | "Hello Signature World!" | jca/SignatureOperation.java:311:26:311:49 | jca/SignatureOperation.java:311:26:311:49 | +| jca/SignatureOperation.java:54:61:54:65 | KeyOperationAlgorithm | KeySize | Constant:2048 | jca/SignatureOperation.java:55:24:55:27 | jca/SignatureOperation.java:55:24:55:27 | +| jca/SignatureOperation.java:54:61:54:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:54:61:54:65 | jca/SignatureOperation.java:54:61:54:65 | +| jca/SignatureOperation.java:54:61:54:65 | KeyOperationAlgorithm | RawName | RSA | jca/SignatureOperation.java:54:61:54:65 | jca/SignatureOperation.java:54:61:54:65 | +| jca/SignatureOperation.java:55:24:55:27 | Constant | Description | 2048 | jca/SignatureOperation.java:55:24:55:27 | jca/SignatureOperation.java:55:24:55:27 | +| jca/SignatureOperation.java:56:16:56:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:56:16:56:36 | jca/SignatureOperation.java:56:16:56:36 | +| jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:65:53:65:74 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:65:53:65:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:65:53:65:74 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:65:53:65:74 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:65:53:65:74 | jca/SignatureOperation.java:65:53:65:74 | +| jca/SignatureOperation.java:66:28:66:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:66:28:66:37 | jca/SignatureOperation.java:66:28:66:37 | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:68:16:68:31 | jca/SignatureOperation.java:68:16:68:31 | +| jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:77:53:77:74 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:77:53:77:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:77:53:77:74 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:77:53:77:74 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:77:53:77:74 | jca/SignatureOperation.java:77:53:77:74 | +| jca/SignatureOperation.java:78:30:78:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:78:30:78:38 | jca/SignatureOperation.java:78:30:78:38 | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:80:16:80:41 | jca/SignatureOperation.java:80:16:80:41 | +| jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | CurveType | SEC | jca/SignatureOperation.java:95:49:95:59 | jca/SignatureOperation.java:95:49:95:59 | +| jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | KeySize | 256 | jca/SignatureOperation.java:95:49:95:59 | jca/SignatureOperation.java:95:49:95:59 | +| jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | Name | secp256r1 | jca/SignatureOperation.java:95:49:95:59 | jca/SignatureOperation.java:95:49:95:59 | +| jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | ParsedName | secp256r1 | jca/SignatureOperation.java:95:49:95:59 | jca/SignatureOperation.java:95:49:95:59 | +| jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | RawName | secp256r1 | jca/SignatureOperation.java:95:49:95:59 | jca/SignatureOperation.java:95:49:95:59 | +| jca/SignatureOperation.java:96:16:96:38 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:96:16:96:38 | jca/SignatureOperation.java:96:16:96:38 | +| jca/SignatureOperation.java:105:53:105:69 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:105:53:105:69 | jca/SignatureOperation.java:105:53:105:69 | +| jca/SignatureOperation.java:105:53:105:69 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:105:53:105:69 | jca/SignatureOperation.java:105:53:105:69 | +| jca/SignatureOperation.java:105:53:105:69 | HashAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:105:53:105:69 | jca/SignatureOperation.java:105:53:105:69 | +| jca/SignatureOperation.java:105:53:105:69 | KeyOperationAlgorithm | Name | ECDSA | jca/SignatureOperation.java:105:53:105:69 | jca/SignatureOperation.java:105:53:105:69 | +| jca/SignatureOperation.java:105:53:105:69 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:105:53:105:69 | jca/SignatureOperation.java:105:53:105:69 | +| jca/SignatureOperation.java:106:28:106:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:106:28:106:37 | jca/SignatureOperation.java:106:28:106:37 | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:108:16:108:31 | jca/SignatureOperation.java:108:16:108:31 | +| jca/SignatureOperation.java:117:53:117:69 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:117:53:117:69 | jca/SignatureOperation.java:117:53:117:69 | +| jca/SignatureOperation.java:117:53:117:69 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:117:53:117:69 | jca/SignatureOperation.java:117:53:117:69 | +| jca/SignatureOperation.java:117:53:117:69 | HashAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:117:53:117:69 | jca/SignatureOperation.java:117:53:117:69 | +| jca/SignatureOperation.java:117:53:117:69 | KeyOperationAlgorithm | Name | ECDSA | jca/SignatureOperation.java:117:53:117:69 | jca/SignatureOperation.java:117:53:117:69 | +| jca/SignatureOperation.java:117:53:117:69 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:117:53:117:69 | jca/SignatureOperation.java:117:53:117:69 | +| jca/SignatureOperation.java:118:30:118:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:118:30:118:38 | jca/SignatureOperation.java:118:30:118:38 | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:120:16:120:41 | jca/SignatureOperation.java:120:16:120:41 | +| jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | CurveType | CURVE25519 | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | KeySize | 255 | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | Name | Ed25519 | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | ParsedName | Ed25519 | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | RawName | Ed25519 | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:134:61:134:69 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:134:61:134:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:134:61:134:69 | jca/SignatureOperation.java:134:61:134:69 | +| jca/SignatureOperation.java:135:16:135:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:135:16:135:36 | jca/SignatureOperation.java:135:16:135:36 | +| jca/SignatureOperation.java:144:53:144:61 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:144:53:144:61 | jca/SignatureOperation.java:144:53:144:61 | +| jca/SignatureOperation.java:144:53:144:61 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:144:53:144:61 | jca/SignatureOperation.java:144:53:144:61 | +| jca/SignatureOperation.java:145:28:145:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:145:28:145:37 | jca/SignatureOperation.java:145:28:145:37 | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:147:16:147:31 | jca/SignatureOperation.java:147:16:147:31 | +| jca/SignatureOperation.java:156:53:156:61 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:156:53:156:61 | jca/SignatureOperation.java:156:53:156:61 | +| jca/SignatureOperation.java:156:53:156:61 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:156:53:156:61 | jca/SignatureOperation.java:156:53:156:61 | +| jca/SignatureOperation.java:157:30:157:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:157:30:157:38 | jca/SignatureOperation.java:157:30:157:38 | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:159:16:159:41 | jca/SignatureOperation.java:159:16:159:41 | +| jca/SignatureOperation.java:175:61:175:65 | KeyOperationAlgorithm | KeySize | Constant:1024 | jca/SignatureOperation.java:176:24:176:27 | jca/SignatureOperation.java:176:24:176:27 | +| jca/SignatureOperation.java:175:61:175:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:175:61:175:65 | jca/SignatureOperation.java:175:61:175:65 | +| jca/SignatureOperation.java:175:61:175:65 | KeyOperationAlgorithm | RawName | RSA | jca/SignatureOperation.java:175:61:175:65 | jca/SignatureOperation.java:175:61:175:65 | +| jca/SignatureOperation.java:176:24:176:27 | Constant | Description | 1024 | jca/SignatureOperation.java:176:24:176:27 | jca/SignatureOperation.java:176:24:176:27 | +| jca/SignatureOperation.java:177:16:177:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:177:16:177:36 | jca/SignatureOperation.java:177:16:177:36 | +| jca/SignatureOperation.java:187:53:187:65 | HashAlgorithm | DigestSize | 160 | jca/SignatureOperation.java:187:53:187:65 | jca/SignatureOperation.java:187:53:187:65 | +| jca/SignatureOperation.java:187:53:187:65 | HashAlgorithm | Name | SHA1 | jca/SignatureOperation.java:187:53:187:65 | jca/SignatureOperation.java:187:53:187:65 | +| jca/SignatureOperation.java:187:53:187:65 | HashAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:187:53:187:65 | jca/SignatureOperation.java:187:53:187:65 | +| jca/SignatureOperation.java:187:53:187:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:187:53:187:65 | jca/SignatureOperation.java:187:53:187:65 | +| jca/SignatureOperation.java:187:53:187:65 | KeyOperationAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:187:53:187:65 | jca/SignatureOperation.java:187:53:187:65 | +| jca/SignatureOperation.java:188:28:188:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:188:28:188:37 | jca/SignatureOperation.java:188:28:188:37 | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:190:16:190:31 | jca/SignatureOperation.java:190:16:190:31 | +| jca/SignatureOperation.java:200:53:200:65 | HashAlgorithm | DigestSize | 160 | jca/SignatureOperation.java:200:53:200:65 | jca/SignatureOperation.java:200:53:200:65 | +| jca/SignatureOperation.java:200:53:200:65 | HashAlgorithm | Name | SHA1 | jca/SignatureOperation.java:200:53:200:65 | jca/SignatureOperation.java:200:53:200:65 | +| jca/SignatureOperation.java:200:53:200:65 | HashAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:200:53:200:65 | jca/SignatureOperation.java:200:53:200:65 | +| jca/SignatureOperation.java:200:53:200:65 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:200:53:200:65 | jca/SignatureOperation.java:200:53:200:65 | +| jca/SignatureOperation.java:200:53:200:65 | KeyOperationAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:200:53:200:65 | jca/SignatureOperation.java:200:53:200:65 | +| jca/SignatureOperation.java:201:30:201:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:201:30:201:38 | jca/SignatureOperation.java:201:30:201:38 | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:203:16:203:41 | jca/SignatureOperation.java:203:16:203:41 | +| jca/SignatureOperation.java:217:37:217:57 | Parameter | Description | privateKey | jca/SignatureOperation.java:217:37:217:57 | jca/SignatureOperation.java:217:37:217:57 | +| jca/SignatureOperation.java:217:60:217:70 | Parameter | Description | data | jca/SignatureOperation.java:217:60:217:70 | jca/SignatureOperation.java:217:60:217:70 | +| jca/SignatureOperation.java:218:53:218:67 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:218:53:218:67 | jca/SignatureOperation.java:218:53:218:67 | +| jca/SignatureOperation.java:218:53:218:67 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:218:53:218:67 | jca/SignatureOperation.java:218:53:218:67 | +| jca/SignatureOperation.java:218:53:218:67 | HashAlgorithm | RawName | SHA256withRSA | jca/SignatureOperation.java:218:53:218:67 | jca/SignatureOperation.java:218:53:218:67 | +| jca/SignatureOperation.java:218:53:218:67 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:218:53:218:67 | jca/SignatureOperation.java:218:53:218:67 | +| jca/SignatureOperation.java:218:53:218:67 | KeyOperationAlgorithm | RawName | SHA256withRSA | jca/SignatureOperation.java:218:53:218:67 | jca/SignatureOperation.java:218:53:218:67 | +| jca/SignatureOperation.java:219:28:219:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:219:28:219:37 | jca/SignatureOperation.java:219:28:219:37 | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:221:16:221:31 | jca/SignatureOperation.java:221:16:221:31 | +| jca/SignatureOperation.java:227:37:227:57 | Parameter | Description | privateKey | jca/SignatureOperation.java:227:37:227:57 | jca/SignatureOperation.java:227:37:227:57 | +| jca/SignatureOperation.java:227:60:227:70 | Parameter | Description | data | jca/SignatureOperation.java:227:60:227:70 | jca/SignatureOperation.java:227:60:227:70 | +| jca/SignatureOperation.java:228:53:228:67 | HashAlgorithm | DigestSize | 384 | jca/SignatureOperation.java:228:53:228:67 | jca/SignatureOperation.java:228:53:228:67 | +| jca/SignatureOperation.java:228:53:228:67 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:228:53:228:67 | jca/SignatureOperation.java:228:53:228:67 | +| jca/SignatureOperation.java:228:53:228:67 | HashAlgorithm | RawName | SHA384withRSA | jca/SignatureOperation.java:228:53:228:67 | jca/SignatureOperation.java:228:53:228:67 | +| jca/SignatureOperation.java:228:53:228:67 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:228:53:228:67 | jca/SignatureOperation.java:228:53:228:67 | +| jca/SignatureOperation.java:228:53:228:67 | KeyOperationAlgorithm | RawName | SHA384withRSA | jca/SignatureOperation.java:228:53:228:67 | jca/SignatureOperation.java:228:53:228:67 | +| jca/SignatureOperation.java:229:28:229:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:229:28:229:37 | jca/SignatureOperation.java:229:28:229:37 | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:231:16:231:31 | jca/SignatureOperation.java:231:16:231:31 | +| jca/SignatureOperation.java:237:37:237:57 | Parameter | Description | privateKey | jca/SignatureOperation.java:237:37:237:57 | jca/SignatureOperation.java:237:37:237:57 | +| jca/SignatureOperation.java:237:60:237:70 | Parameter | Description | data | jca/SignatureOperation.java:237:60:237:70 | jca/SignatureOperation.java:237:60:237:70 | +| jca/SignatureOperation.java:238:53:238:67 | HashAlgorithm | DigestSize | 512 | jca/SignatureOperation.java:238:53:238:67 | jca/SignatureOperation.java:238:53:238:67 | +| jca/SignatureOperation.java:238:53:238:67 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:238:53:238:67 | jca/SignatureOperation.java:238:53:238:67 | +| jca/SignatureOperation.java:238:53:238:67 | HashAlgorithm | RawName | SHA512withRSA | jca/SignatureOperation.java:238:53:238:67 | jca/SignatureOperation.java:238:53:238:67 | +| jca/SignatureOperation.java:238:53:238:67 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:238:53:238:67 | jca/SignatureOperation.java:238:53:238:67 | +| jca/SignatureOperation.java:238:53:238:67 | KeyOperationAlgorithm | RawName | SHA512withRSA | jca/SignatureOperation.java:238:53:238:67 | jca/SignatureOperation.java:238:53:238:67 | +| jca/SignatureOperation.java:239:28:239:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:239:28:239:37 | jca/SignatureOperation.java:239:28:239:37 | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:241:16:241:31 | jca/SignatureOperation.java:241:16:241:31 | +| jca/SignatureOperation.java:251:41:251:61 | Parameter | Description | privateKey | jca/SignatureOperation.java:251:41:251:61 | jca/SignatureOperation.java:251:41:251:61 | +| jca/SignatureOperation.java:251:64:251:74 | Parameter | Description | data | jca/SignatureOperation.java:251:64:251:74 | jca/SignatureOperation.java:251:64:251:74 | +| jca/SignatureOperation.java:252:53:252:64 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:252:53:252:64 | jca/SignatureOperation.java:252:53:252:64 | +| jca/SignatureOperation.java:252:53:252:64 | KeyOperationAlgorithm | RawName | RSASSA-PSS | jca/SignatureOperation.java:252:53:252:64 | jca/SignatureOperation.java:252:53:252:64 | +| jca/SignatureOperation.java:252:53:252:64 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:252:53:252:64 | jca/SignatureOperation.java:252:53:252:64 | +| jca/SignatureOperation.java:252:53:252:64 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:252:53:252:64 | jca/SignatureOperation.java:252:53:252:64 | +| jca/SignatureOperation.java:254:34:254:42 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:254:34:254:42 | jca/SignatureOperation.java:254:34:254:42 | +| jca/SignatureOperation.java:254:34:254:42 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:254:34:254:42 | jca/SignatureOperation.java:254:34:254:42 | +| jca/SignatureOperation.java:254:34:254:42 | HashAlgorithm | RawName | SHA-256 | jca/SignatureOperation.java:254:34:254:42 | jca/SignatureOperation.java:254:34:254:42 | +| jca/SignatureOperation.java:254:53:254:76 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:254:53:254:76 | jca/SignatureOperation.java:254:53:254:76 | +| jca/SignatureOperation.java:254:53:254:76 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:254:53:254:76 | jca/SignatureOperation.java:254:53:254:76 | +| jca/SignatureOperation.java:254:53:254:76 | HashAlgorithm | RawName | SHA256 | jca/SignatureOperation.java:254:53:254:76 | jca/SignatureOperation.java:254:53:254:76 | +| jca/SignatureOperation.java:255:28:255:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:255:28:255:37 | jca/SignatureOperation.java:255:28:255:37 | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:257:16:257:31 | jca/SignatureOperation.java:257:16:257:31 | +| jca/SignatureOperation.java:263:41:263:61 | Parameter | Description | privateKey | jca/SignatureOperation.java:263:41:263:61 | jca/SignatureOperation.java:263:41:263:61 | +| jca/SignatureOperation.java:263:64:263:74 | Parameter | Description | data | jca/SignatureOperation.java:263:64:263:74 | jca/SignatureOperation.java:263:64:263:74 | +| jca/SignatureOperation.java:264:53:264:64 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:264:53:264:64 | jca/SignatureOperation.java:264:53:264:64 | +| jca/SignatureOperation.java:264:53:264:64 | KeyOperationAlgorithm | RawName | RSASSA-PSS | jca/SignatureOperation.java:264:53:264:64 | jca/SignatureOperation.java:264:53:264:64 | +| jca/SignatureOperation.java:264:53:264:64 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:264:53:264:64 | jca/SignatureOperation.java:264:53:264:64 | +| jca/SignatureOperation.java:264:53:264:64 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:264:53:264:64 | jca/SignatureOperation.java:264:53:264:64 | +| jca/SignatureOperation.java:266:34:266:42 | HashAlgorithm | DigestSize | 384 | jca/SignatureOperation.java:266:34:266:42 | jca/SignatureOperation.java:266:34:266:42 | +| jca/SignatureOperation.java:266:34:266:42 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:266:34:266:42 | jca/SignatureOperation.java:266:34:266:42 | +| jca/SignatureOperation.java:266:34:266:42 | HashAlgorithm | RawName | SHA-384 | jca/SignatureOperation.java:266:34:266:42 | jca/SignatureOperation.java:266:34:266:42 | +| jca/SignatureOperation.java:266:53:266:76 | HashAlgorithm | DigestSize | 384 | jca/SignatureOperation.java:266:53:266:76 | jca/SignatureOperation.java:266:53:266:76 | +| jca/SignatureOperation.java:266:53:266:76 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:266:53:266:76 | jca/SignatureOperation.java:266:53:266:76 | +| jca/SignatureOperation.java:266:53:266:76 | HashAlgorithm | RawName | SHA384 | jca/SignatureOperation.java:266:53:266:76 | jca/SignatureOperation.java:266:53:266:76 | +| jca/SignatureOperation.java:267:28:267:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:267:28:267:37 | jca/SignatureOperation.java:267:28:267:37 | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:269:16:269:31 | jca/SignatureOperation.java:269:16:269:31 | +| jca/SignatureOperation.java:275:41:275:61 | Parameter | Description | privateKey | jca/SignatureOperation.java:275:41:275:61 | jca/SignatureOperation.java:275:41:275:61 | +| jca/SignatureOperation.java:275:64:275:74 | Parameter | Description | data | jca/SignatureOperation.java:275:64:275:74 | jca/SignatureOperation.java:275:64:275:74 | +| jca/SignatureOperation.java:276:53:276:64 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:276:53:276:64 | jca/SignatureOperation.java:276:53:276:64 | +| jca/SignatureOperation.java:276:53:276:64 | KeyOperationAlgorithm | RawName | RSASSA-PSS | jca/SignatureOperation.java:276:53:276:64 | jca/SignatureOperation.java:276:53:276:64 | +| jca/SignatureOperation.java:276:53:276:64 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:276:53:276:64 | jca/SignatureOperation.java:276:53:276:64 | +| jca/SignatureOperation.java:276:53:276:64 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:276:53:276:64 | jca/SignatureOperation.java:276:53:276:64 | +| jca/SignatureOperation.java:278:34:278:42 | HashAlgorithm | DigestSize | 512 | jca/SignatureOperation.java:278:34:278:42 | jca/SignatureOperation.java:278:34:278:42 | +| jca/SignatureOperation.java:278:34:278:42 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:278:34:278:42 | jca/SignatureOperation.java:278:34:278:42 | +| jca/SignatureOperation.java:278:34:278:42 | HashAlgorithm | RawName | SHA-512 | jca/SignatureOperation.java:278:34:278:42 | jca/SignatureOperation.java:278:34:278:42 | +| jca/SignatureOperation.java:278:53:278:76 | HashAlgorithm | DigestSize | 512 | jca/SignatureOperation.java:278:53:278:76 | jca/SignatureOperation.java:278:53:278:76 | +| jca/SignatureOperation.java:278:53:278:76 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:278:53:278:76 | jca/SignatureOperation.java:278:53:278:76 | +| jca/SignatureOperation.java:278:53:278:76 | HashAlgorithm | RawName | SHA512 | jca/SignatureOperation.java:278:53:278:76 | jca/SignatureOperation.java:278:53:278:76 | +| jca/SignatureOperation.java:279:28:279:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:279:28:279:37 | jca/SignatureOperation.java:279:28:279:37 | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:281:16:281:31 | jca/SignatureOperation.java:281:16:281:31 | +| jca/SignatureOperation.java:287:44:287:62 | Parameter | Description | publicKey | jca/SignatureOperation.java:287:44:287:62 | jca/SignatureOperation.java:287:44:287:62 | +| jca/SignatureOperation.java:287:65:287:75 | Parameter | Description | data | jca/SignatureOperation.java:287:65:287:75 | jca/SignatureOperation.java:287:65:287:75 | +| jca/SignatureOperation.java:287:78:287:92 | Parameter | Description | sigBytes | jca/SignatureOperation.java:287:78:287:92 | jca/SignatureOperation.java:287:78:287:92 | +| jca/SignatureOperation.java:289:53:289:64 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:289:53:289:64 | jca/SignatureOperation.java:289:53:289:64 | +| jca/SignatureOperation.java:289:53:289:64 | KeyOperationAlgorithm | RawName | RSASSA-PSS | jca/SignatureOperation.java:289:53:289:64 | jca/SignatureOperation.java:289:53:289:64 | +| jca/SignatureOperation.java:289:53:289:64 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:289:53:289:64 | jca/SignatureOperation.java:289:53:289:64 | +| jca/SignatureOperation.java:289:53:289:64 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:289:53:289:64 | jca/SignatureOperation.java:289:53:289:64 | +| jca/SignatureOperation.java:291:34:291:42 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:291:34:291:42 | jca/SignatureOperation.java:291:34:291:42 | +| jca/SignatureOperation.java:291:34:291:42 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:291:34:291:42 | jca/SignatureOperation.java:291:34:291:42 | +| jca/SignatureOperation.java:291:34:291:42 | HashAlgorithm | RawName | SHA-256 | jca/SignatureOperation.java:291:34:291:42 | jca/SignatureOperation.java:291:34:291:42 | +| jca/SignatureOperation.java:291:53:291:76 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:291:53:291:76 | jca/SignatureOperation.java:291:53:291:76 | +| jca/SignatureOperation.java:291:53:291:76 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:291:53:291:76 | jca/SignatureOperation.java:291:53:291:76 | +| jca/SignatureOperation.java:291:53:291:76 | HashAlgorithm | RawName | SHA256 | jca/SignatureOperation.java:291:53:291:76 | jca/SignatureOperation.java:291:53:291:76 | +| jca/SignatureOperation.java:292:30:292:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:292:30:292:38 | jca/SignatureOperation.java:292:30:292:38 | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:294:16:294:41 | jca/SignatureOperation.java:294:16:294:41 | +| jca/SignatureOperation.java:304:44:304:64 | Parameter | Description | privateKey | jca/SignatureOperation.java:304:44:304:64 | jca/SignatureOperation.java:304:44:304:64 | +| jca/SignatureOperation.java:304:67:304:77 | Parameter | Description | data | jca/SignatureOperation.java:304:67:304:77 | jca/SignatureOperation.java:304:67:304:77 | +| jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:305:53:305:74 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:305:53:305:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:305:53:305:74 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:305:53:305:74 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:305:53:305:74 | jca/SignatureOperation.java:305:53:305:74 | +| jca/SignatureOperation.java:306:28:306:37 | Key | KeyType | Unknown | jca/SignatureOperation.java:306:28:306:37 | jca/SignatureOperation.java:306:28:306:37 | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:308:16:308:31 | jca/SignatureOperation.java:308:16:308:31 | +| jca/SignatureOperation.java:314:47:314:65 | Parameter | Description | publicKey | jca/SignatureOperation.java:314:47:314:65 | jca/SignatureOperation.java:314:47:314:65 | +| jca/SignatureOperation.java:314:68:314:78 | Parameter | Description | data | jca/SignatureOperation.java:314:68:314:78 | jca/SignatureOperation.java:314:68:314:78 | +| jca/SignatureOperation.java:314:81:314:95 | Parameter | Description | sigBytes | jca/SignatureOperation.java:314:81:314:95 | jca/SignatureOperation.java:314:81:314:95 | +| jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:316:53:316:74 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:316:53:316:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:316:53:316:74 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:316:53:316:74 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:316:53:316:74 | jca/SignatureOperation.java:316:53:316:74 | +| jca/SignatureOperation.java:317:30:317:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:317:30:317:38 | jca/SignatureOperation.java:317:30:317:38 | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:319:16:319:41 | jca/SignatureOperation.java:319:16:319:41 | +| jca/SignatureOperation.java:345:26:345:44 | Constant | Description | "Important Message" | jca/SignatureOperation.java:345:26:345:44 | jca/SignatureOperation.java:345:26:345:44 | +| jca/SignatureOperation.java:350:27:350:30 | Constant | Description | 0x01 | jca/SignatureOperation.java:350:27:350:30 | jca/SignatureOperation.java:350:27:350:30 | +| jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:380:47:380:68 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:380:47:380:68 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:380:47:380:68 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:380:47:380:68 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:380:47:380:68 | jca/SignatureOperation.java:380:47:380:68 | +| jca/SignatureOperation.java:383:47:383:63 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:383:47:383:63 | jca/SignatureOperation.java:383:47:383:63 | +| jca/SignatureOperation.java:383:47:383:63 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:383:47:383:63 | jca/SignatureOperation.java:383:47:383:63 | +| jca/SignatureOperation.java:383:47:383:63 | HashAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:383:47:383:63 | jca/SignatureOperation.java:383:47:383:63 | +| jca/SignatureOperation.java:383:47:383:63 | KeyOperationAlgorithm | Name | ECDSA | jca/SignatureOperation.java:383:47:383:63 | jca/SignatureOperation.java:383:47:383:63 | +| jca/SignatureOperation.java:383:47:383:63 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:383:47:383:63 | jca/SignatureOperation.java:383:47:383:63 | +| jca/SignatureOperation.java:386:47:386:55 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:386:47:386:55 | jca/SignatureOperation.java:386:47:386:55 | +| jca/SignatureOperation.java:386:47:386:55 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:386:47:386:55 | jca/SignatureOperation.java:386:47:386:55 | +| jca/SignatureOperation.java:389:47:389:59 | HashAlgorithm | DigestSize | 160 | jca/SignatureOperation.java:389:47:389:59 | jca/SignatureOperation.java:389:47:389:59 | +| jca/SignatureOperation.java:389:47:389:59 | HashAlgorithm | Name | SHA1 | jca/SignatureOperation.java:389:47:389:59 | jca/SignatureOperation.java:389:47:389:59 | +| jca/SignatureOperation.java:389:47:389:59 | HashAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:389:47:389:59 | jca/SignatureOperation.java:389:47:389:59 | +| jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:389:47:389:59 | jca/SignatureOperation.java:389:47:389:59 | +| jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | RawName | SHA1withRSA | jca/SignatureOperation.java:389:47:389:59 | jca/SignatureOperation.java:389:47:389:59 | +| jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | DigestSize | 256 | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | Name | SHA2 | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:393:47:393:68 | KeyOperationAlgorithm | Name | RSA | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:393:47:393:68 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:393:47:393:68 | PaddingAlgorithm | Name | PSS | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:393:47:393:68 | PaddingAlgorithm | RawName | PSS | jca/SignatureOperation.java:393:47:393:68 | jca/SignatureOperation.java:393:47:393:68 | +| jca/SignatureOperation.java:396:26:396:49 | Constant | Description | "Dynamic Signature Demo" | jca/SignatureOperation.java:396:26:396:49 | jca/SignatureOperation.java:396:26:396:49 | +| jca/SignatureOperation.java:397:28:397:42 | Key | KeyType | Unknown | jca/SignatureOperation.java:397:28:397:42 | jca/SignatureOperation.java:397:28:397:42 | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | KeyOperationSubtype | Sign | jca/SignatureOperation.java:399:27:399:42 | jca/SignatureOperation.java:399:27:399:42 | +| jca/SignatureOperation.java:401:30:401:43 | Key | KeyType | Unknown | jca/SignatureOperation.java:401:30:401:43 | jca/SignatureOperation.java:401:30:401:43 | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:403:28:403:53 | jca/SignatureOperation.java:403:28:403:53 | +| jca/SignatureOperation.java:425:26:425:49 | Constant | Description | "Hello Signature World!" | jca/SignatureOperation.java:425:26:425:49 | jca/SignatureOperation.java:425:26:425:49 | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | Name | AES | jca/SymmetricAlgorithm.java:51:44:51:62 | jca/SymmetricAlgorithm.java:51:44:51:62 | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | RawName | AES/GCM/NoPadding | jca/SymmetricAlgorithm.java:51:44:51:62 | jca/SymmetricAlgorithm.java:51:44:51:62 | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricAlgorithm.java:51:44:51:62 | jca/SymmetricAlgorithm.java:51:44:51:62 | diff --git a/java/ql/test/experimental/library-tests/quantum/nodes.expected b/java/ql/test/experimental/library-tests/quantum/nodes.expected index 30ef5332664f..d460011a0374 100644 --- a/java/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/java/ql/test/experimental/library-tests/quantum/nodes.expected @@ -1169,6 +1169,17 @@ | jca/KeyExchange.java:212:20:212:28 | Key | | jca/KeyExchange.java:213:16:213:34 | KeyAgreementOperation | | jca/KeyExchange.java:213:16:213:34 | SharedSecret | +| jca/KeyExchange.java:230:66:230:72 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:231:29:231:31 | Constant | +| jca/KeyExchange.java:232:16:232:41 | Key | +| jca/KeyExchange.java:232:16:232:41 | KeyGeneration | +| jca/KeyExchange.java:242:37:242:57 | Parameter | +| jca/KeyExchange.java:242:60:242:78 | Parameter | +| jca/KeyExchange.java:243:52:243:58 | KeyAgreementAlgorithm | +| jca/KeyExchange.java:244:17:244:26 | Key | +| jca/KeyExchange.java:245:20:245:28 | Key | +| jca/KeyExchange.java:246:16:246:34 | KeyAgreementOperation | +| jca/KeyExchange.java:246:16:246:34 | SharedSecret | | jca/MACOperation.java:59:36:59:49 | Parameter | | jca/MACOperation.java:59:52:59:61 | Parameter | | jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | @@ -1358,88 +1369,176 @@ | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | | jca/SignEncryptCombinations.java:123:28:123:31 | Message | | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | -| jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:53:24:53:27 | Constant | -| jca/SignatureOperation.java:54:16:54:36 | Key | -| jca/SignatureOperation.java:54:16:54:36 | KeyGeneration | -| jca/SignatureOperation.java:63:53:63:74 | HashAlgorithm | -| jca/SignatureOperation.java:63:53:63:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:64:28:64:37 | Key | -| jca/SignatureOperation.java:65:26:65:29 | Message | -| jca/SignatureOperation.java:66:16:66:31 | SignOperation | -| jca/SignatureOperation.java:66:16:66:31 | SignatureOutput | -| jca/SignatureOperation.java:75:53:75:74 | HashAlgorithm | -| jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:76:30:76:38 | Key | -| jca/SignatureOperation.java:77:26:77:29 | Message | -| jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | -| jca/SignatureOperation.java:78:33:78:40 | SignatureInput | -| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | -| jca/SignatureOperation.java:94:16:94:38 | Key | -| jca/SignatureOperation.java:94:16:94:38 | KeyGeneration | -| jca/SignatureOperation.java:103:53:103:69 | HashAlgorithm | -| jca/SignatureOperation.java:103:53:103:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:104:28:104:37 | Key | -| jca/SignatureOperation.java:105:26:105:29 | Message | -| jca/SignatureOperation.java:106:16:106:31 | SignOperation | -| jca/SignatureOperation.java:106:16:106:31 | SignatureOutput | -| jca/SignatureOperation.java:115:53:115:69 | HashAlgorithm | -| jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:116:30:116:38 | Key | -| jca/SignatureOperation.java:117:26:117:29 | Message | -| jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | -| jca/SignatureOperation.java:118:33:118:40 | SignatureInput | -| jca/SignatureOperation.java:132:61:132:69 | EllipticCurve | -| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:133:16:133:36 | Key | -| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | -| jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:143:28:143:37 | Key | -| jca/SignatureOperation.java:144:26:144:29 | Message | -| jca/SignatureOperation.java:145:16:145:31 | SignOperation | -| jca/SignatureOperation.java:145:16:145:31 | SignatureOutput | -| jca/SignatureOperation.java:154:53:154:61 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:155:30:155:38 | Key | -| jca/SignatureOperation.java:156:26:156:29 | Message | -| jca/SignatureOperation.java:157:16:157:41 | VerifyOperation | -| jca/SignatureOperation.java:157:33:157:40 | SignatureInput | -| jca/SignatureOperation.java:173:61:173:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:174:24:174:27 | Constant | -| jca/SignatureOperation.java:175:16:175:36 | Key | -| jca/SignatureOperation.java:175:16:175:36 | KeyGeneration | -| jca/SignatureOperation.java:185:53:185:65 | HashAlgorithm | -| jca/SignatureOperation.java:185:53:185:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:186:28:186:37 | Key | -| jca/SignatureOperation.java:187:26:187:29 | Message | -| jca/SignatureOperation.java:188:16:188:31 | SignOperation | -| jca/SignatureOperation.java:188:16:188:31 | SignatureOutput | -| jca/SignatureOperation.java:198:53:198:65 | HashAlgorithm | -| jca/SignatureOperation.java:198:53:198:65 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:199:30:199:38 | Key | -| jca/SignatureOperation.java:200:26:200:29 | Message | -| jca/SignatureOperation.java:201:16:201:41 | VerifyOperation | -| jca/SignatureOperation.java:201:33:201:40 | SignatureInput | -| jca/SignatureOperation.java:231:26:231:44 | Constant | -| jca/SignatureOperation.java:236:27:236:30 | Constant | -| jca/SignatureOperation.java:266:47:266:68 | HashAlgorithm | -| jca/SignatureOperation.java:266:47:266:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:269:47:269:63 | HashAlgorithm | -| jca/SignatureOperation.java:269:47:269:63 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:272:47:272:55 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:275:47:275:59 | HashAlgorithm | -| jca/SignatureOperation.java:275:47:275:59 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:279:47:279:68 | HashAlgorithm | -| jca/SignatureOperation.java:279:47:279:68 | KeyOperationAlgorithm | -| jca/SignatureOperation.java:282:26:282:49 | Constant | -| jca/SignatureOperation.java:283:28:283:42 | Key | -| jca/SignatureOperation.java:284:26:284:32 | Message | -| jca/SignatureOperation.java:285:27:285:42 | SignOperation | -| jca/SignatureOperation.java:285:27:285:42 | SignatureOutput | -| jca/SignatureOperation.java:287:30:287:43 | Key | -| jca/SignatureOperation.java:288:26:288:32 | Message | -| jca/SignatureOperation.java:289:28:289:53 | VerifyOperation | -| jca/SignatureOperation.java:289:45:289:52 | SignatureInput | -| jca/SignatureOperation.java:311:26:311:49 | Constant | +| jca/SignatureOperation.java:54:61:54:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:55:24:55:27 | Constant | +| jca/SignatureOperation.java:56:16:56:36 | Key | +| jca/SignatureOperation.java:56:16:56:36 | KeyGeneration | +| jca/SignatureOperation.java:65:53:65:74 | HashAlgorithm | +| jca/SignatureOperation.java:65:53:65:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:65:53:65:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:66:28:66:37 | Key | +| jca/SignatureOperation.java:67:26:67:29 | Message | +| jca/SignatureOperation.java:68:16:68:31 | SignOperation | +| jca/SignatureOperation.java:68:16:68:31 | SignatureOutput | +| jca/SignatureOperation.java:77:53:77:74 | HashAlgorithm | +| jca/SignatureOperation.java:77:53:77:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:77:53:77:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:78:30:78:38 | Key | +| jca/SignatureOperation.java:79:26:79:29 | Message | +| jca/SignatureOperation.java:80:16:80:41 | VerifyOperation | +| jca/SignatureOperation.java:80:33:80:40 | SignatureInput | +| jca/SignatureOperation.java:95:49:95:59 | EllipticCurve | +| jca/SignatureOperation.java:96:16:96:38 | Key | +| jca/SignatureOperation.java:96:16:96:38 | KeyGeneration | +| jca/SignatureOperation.java:105:53:105:69 | HashAlgorithm | +| jca/SignatureOperation.java:105:53:105:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:106:28:106:37 | Key | +| jca/SignatureOperation.java:107:26:107:29 | Message | +| jca/SignatureOperation.java:108:16:108:31 | SignOperation | +| jca/SignatureOperation.java:108:16:108:31 | SignatureOutput | +| jca/SignatureOperation.java:117:53:117:69 | HashAlgorithm | +| jca/SignatureOperation.java:117:53:117:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:118:30:118:38 | Key | +| jca/SignatureOperation.java:119:26:119:29 | Message | +| jca/SignatureOperation.java:120:16:120:41 | VerifyOperation | +| jca/SignatureOperation.java:120:33:120:40 | SignatureInput | +| jca/SignatureOperation.java:134:61:134:69 | EllipticCurve | +| jca/SignatureOperation.java:134:61:134:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:135:16:135:36 | Key | +| jca/SignatureOperation.java:135:16:135:36 | KeyGeneration | +| jca/SignatureOperation.java:144:53:144:61 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:145:28:145:37 | Key | +| jca/SignatureOperation.java:146:26:146:29 | Message | +| jca/SignatureOperation.java:147:16:147:31 | SignOperation | +| jca/SignatureOperation.java:147:16:147:31 | SignatureOutput | +| jca/SignatureOperation.java:156:53:156:61 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:157:30:157:38 | Key | +| jca/SignatureOperation.java:158:26:158:29 | Message | +| jca/SignatureOperation.java:159:16:159:41 | VerifyOperation | +| jca/SignatureOperation.java:159:33:159:40 | SignatureInput | +| jca/SignatureOperation.java:175:61:175:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:176:24:176:27 | Constant | +| jca/SignatureOperation.java:177:16:177:36 | Key | +| jca/SignatureOperation.java:177:16:177:36 | KeyGeneration | +| jca/SignatureOperation.java:187:53:187:65 | HashAlgorithm | +| jca/SignatureOperation.java:187:53:187:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:188:28:188:37 | Key | +| jca/SignatureOperation.java:189:26:189:29 | Message | +| jca/SignatureOperation.java:190:16:190:31 | SignOperation | +| jca/SignatureOperation.java:190:16:190:31 | SignatureOutput | +| jca/SignatureOperation.java:200:53:200:65 | HashAlgorithm | +| jca/SignatureOperation.java:200:53:200:65 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:201:30:201:38 | Key | +| jca/SignatureOperation.java:202:26:202:29 | Message | +| jca/SignatureOperation.java:203:16:203:41 | VerifyOperation | +| jca/SignatureOperation.java:203:33:203:40 | SignatureInput | +| jca/SignatureOperation.java:217:37:217:57 | Parameter | +| jca/SignatureOperation.java:217:60:217:70 | Parameter | +| jca/SignatureOperation.java:218:53:218:67 | HashAlgorithm | +| jca/SignatureOperation.java:218:53:218:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:219:28:219:37 | Key | +| jca/SignatureOperation.java:220:26:220:29 | Message | +| jca/SignatureOperation.java:221:16:221:31 | SignOperation | +| jca/SignatureOperation.java:221:16:221:31 | SignatureOutput | +| jca/SignatureOperation.java:227:37:227:57 | Parameter | +| jca/SignatureOperation.java:227:60:227:70 | Parameter | +| jca/SignatureOperation.java:228:53:228:67 | HashAlgorithm | +| jca/SignatureOperation.java:228:53:228:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:229:28:229:37 | Key | +| jca/SignatureOperation.java:230:26:230:29 | Message | +| jca/SignatureOperation.java:231:16:231:31 | SignOperation | +| jca/SignatureOperation.java:231:16:231:31 | SignatureOutput | +| jca/SignatureOperation.java:237:37:237:57 | Parameter | +| jca/SignatureOperation.java:237:60:237:70 | Parameter | +| jca/SignatureOperation.java:238:53:238:67 | HashAlgorithm | +| jca/SignatureOperation.java:238:53:238:67 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:239:28:239:37 | Key | +| jca/SignatureOperation.java:240:26:240:29 | Message | +| jca/SignatureOperation.java:241:16:241:31 | SignOperation | +| jca/SignatureOperation.java:241:16:241:31 | SignatureOutput | +| jca/SignatureOperation.java:251:41:251:61 | Parameter | +| jca/SignatureOperation.java:251:64:251:74 | Parameter | +| jca/SignatureOperation.java:252:53:252:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:252:53:252:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:254:34:254:42 | HashAlgorithm | +| jca/SignatureOperation.java:254:53:254:76 | HashAlgorithm | +| jca/SignatureOperation.java:255:28:255:37 | Key | +| jca/SignatureOperation.java:256:26:256:29 | Message | +| jca/SignatureOperation.java:257:16:257:31 | SignOperation | +| jca/SignatureOperation.java:257:16:257:31 | SignatureOutput | +| jca/SignatureOperation.java:263:41:263:61 | Parameter | +| jca/SignatureOperation.java:263:64:263:74 | Parameter | +| jca/SignatureOperation.java:264:53:264:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:264:53:264:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:266:34:266:42 | HashAlgorithm | +| jca/SignatureOperation.java:266:53:266:76 | HashAlgorithm | +| jca/SignatureOperation.java:267:28:267:37 | Key | +| jca/SignatureOperation.java:268:26:268:29 | Message | +| jca/SignatureOperation.java:269:16:269:31 | SignOperation | +| jca/SignatureOperation.java:269:16:269:31 | SignatureOutput | +| jca/SignatureOperation.java:275:41:275:61 | Parameter | +| jca/SignatureOperation.java:275:64:275:74 | Parameter | +| jca/SignatureOperation.java:276:53:276:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:276:53:276:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:278:34:278:42 | HashAlgorithm | +| jca/SignatureOperation.java:278:53:278:76 | HashAlgorithm | +| jca/SignatureOperation.java:279:28:279:37 | Key | +| jca/SignatureOperation.java:280:26:280:29 | Message | +| jca/SignatureOperation.java:281:16:281:31 | SignOperation | +| jca/SignatureOperation.java:281:16:281:31 | SignatureOutput | +| jca/SignatureOperation.java:287:44:287:62 | Parameter | +| jca/SignatureOperation.java:287:65:287:75 | Parameter | +| jca/SignatureOperation.java:287:78:287:92 | Parameter | +| jca/SignatureOperation.java:289:53:289:64 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:289:53:289:64 | PaddingAlgorithm | +| jca/SignatureOperation.java:291:34:291:42 | HashAlgorithm | +| jca/SignatureOperation.java:291:53:291:76 | HashAlgorithm | +| jca/SignatureOperation.java:292:30:292:38 | Key | +| jca/SignatureOperation.java:293:26:293:29 | Message | +| jca/SignatureOperation.java:294:16:294:41 | VerifyOperation | +| jca/SignatureOperation.java:294:33:294:40 | SignatureInput | +| jca/SignatureOperation.java:304:44:304:64 | Parameter | +| jca/SignatureOperation.java:304:67:304:77 | Parameter | +| jca/SignatureOperation.java:305:53:305:74 | HashAlgorithm | +| jca/SignatureOperation.java:305:53:305:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:305:53:305:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:306:28:306:37 | Key | +| jca/SignatureOperation.java:307:26:307:29 | Message | +| jca/SignatureOperation.java:308:16:308:31 | SignOperation | +| jca/SignatureOperation.java:308:16:308:31 | SignatureOutput | +| jca/SignatureOperation.java:314:47:314:65 | Parameter | +| jca/SignatureOperation.java:314:68:314:78 | Parameter | +| jca/SignatureOperation.java:314:81:314:95 | Parameter | +| jca/SignatureOperation.java:316:53:316:74 | HashAlgorithm | +| jca/SignatureOperation.java:316:53:316:74 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:316:53:316:74 | PaddingAlgorithm | +| jca/SignatureOperation.java:317:30:317:38 | Key | +| jca/SignatureOperation.java:318:26:318:29 | Message | +| jca/SignatureOperation.java:319:16:319:41 | VerifyOperation | +| jca/SignatureOperation.java:319:33:319:40 | SignatureInput | +| jca/SignatureOperation.java:345:26:345:44 | Constant | +| jca/SignatureOperation.java:350:27:350:30 | Constant | +| jca/SignatureOperation.java:380:47:380:68 | HashAlgorithm | +| jca/SignatureOperation.java:380:47:380:68 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:380:47:380:68 | PaddingAlgorithm | +| jca/SignatureOperation.java:383:47:383:63 | HashAlgorithm | +| jca/SignatureOperation.java:383:47:383:63 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:386:47:386:55 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:389:47:389:59 | HashAlgorithm | +| jca/SignatureOperation.java:389:47:389:59 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:393:47:393:68 | HashAlgorithm | +| jca/SignatureOperation.java:393:47:393:68 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:393:47:393:68 | PaddingAlgorithm | +| jca/SignatureOperation.java:396:26:396:49 | Constant | +| jca/SignatureOperation.java:397:28:397:42 | Key | +| jca/SignatureOperation.java:398:26:398:32 | Message | +| jca/SignatureOperation.java:399:27:399:42 | SignOperation | +| jca/SignatureOperation.java:399:27:399:42 | SignatureOutput | +| jca/SignatureOperation.java:401:30:401:43 | Key | +| jca/SignatureOperation.java:402:26:402:32 | Message | +| jca/SignatureOperation.java:403:28:403:53 | VerifyOperation | +| jca/SignatureOperation.java:403:45:403:52 | SignatureInput | +| jca/SignatureOperation.java:425:26:425:49 | Constant | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:51:44:51:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:51:44:51:62 | PaddingAlgorithm | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected index 3ba5071e0264..27c883998ec9 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected @@ -1,7 +1,7 @@ | Test.java:13:59:13:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | | Test.java:15:47:15:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | -| Test.java:20:62:20:69 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | -| Test.java:22:50:22:57 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:20:62:20:69 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: TripleDES. | +| Test.java:22:50:22:57 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: TripleDES. | | Test.java:27:64:27:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | | Test.java:29:52:29:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | | Test.java:34:59:34:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index f5ab5190e1ff..b2d0e519ac08 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -775,6 +775,20 @@ module CryptographyBase Input> { abstract HashAlgorithmInstance getMgf1HashAlgorithm(); } + abstract class PssPaddingAlgorithmInstance extends PaddingAlgorithmInstance { + PssPaddingAlgorithmInstance() { this.getPaddingType() instanceof KeyOpAlg::PSS } + + /** + * Gets the hash algorithm used for message digesting in this PSS scheme. + */ + abstract HashAlgorithmInstance getHashAlgorithm(); + + /** + * Gets the hash algorithm used by MGF1 in this PSS scheme. + */ + abstract HashAlgorithmInstance getMgf1HashAlgorithm(); + } + /** * A parent class for signature and MAC operations. * Signatures and macs are the asymmetric and symmetric analogs of each other, @@ -2171,6 +2185,36 @@ module CryptographyBase Input> { } } + class PSSPaddingAlgorithmNode extends PaddingAlgorithmNode { + override PssPaddingAlgorithmInstance instance; + + PSSPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } + + HashAlgorithmNode getPSSHashAlgorithm() { + result.asElement() = instance.getHashAlgorithm() + } + + HashAlgorithmNode getMGF1HashAlgorithm() { + result.asElement() = instance.getMgf1HashAlgorithm() + } + + override NodeBase getChild(string edgeName) { + result = super.getChild(edgeName) + or + // [KNOWN_OR_UNKNOWN] + edgeName = "MD" and + if exists(this.getPSSHashAlgorithm()) + then result = this.getPSSHashAlgorithm() + else result = this + or + // [KNOWN_OR_UNKNOWN] + edgeName = "MGF1Hash" and + if exists(this.getMGF1HashAlgorithm()) + then result = this.getMGF1HashAlgorithm() + else result = this + } + } + class KeyOperationAlgorithmNode extends AlgorithmNode, TKeyOperationAlgorithm { KeyOperationAlgorithmInstanceOrValueConsumer instance; diff --git a/shared/quantum/codeql/quantum/experimental/Standardization.qll b/shared/quantum/codeql/quantum/experimental/Standardization.qll index 8f8bbe4eab21..e0f5243738ae 100644 --- a/shared/quantum/codeql/quantum/experimental/Standardization.qll +++ b/shared/quantum/codeql/quantum/experimental/Standardization.qll @@ -338,6 +338,7 @@ module Types { DH() or // Diffie-Hellman EDH() or // Ephemeral Diffie-Hellman ECDH() or // Elliptic Curve Diffie-Hellman + ECMQV() or // Elliptic Curve Menezes-Qu-Vanstone // NOTE: for now ESDH is considered simply EDH //ESDH() or // Ephemeral-Static Diffie-Hellman // Note: x25519 and x448 are applications of ECDH @@ -351,6 +352,8 @@ module Types { or this = ECDH() and result = "ECDH" or + this = ECMQV() and result = "ECMQV" + or this = OtherKeyAgreementType() and result = "UnknownKeyAgreementType" } } From 24e5c4c6c068f3c3b719a581f8d305a6daa2c07e Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Mon, 23 Feb 2026 00:24:06 +0100 Subject: [PATCH 4/6] Add demos and tests for example deployment --- .../Examples/Demo/AllClassifications.ql | 119 ++++++ .../Examples/Demo/InsecureBlockMode.ql | 17 + .../quantum/Examples/Demo/InsecureCipher.ql | 18 + .../quantum/Examples/Demo/InsecureHash.ql | 16 + .../Examples/Demo/InventoryAlgorithms.ql | 26 ++ .../quantum/Examples/Demo/InventoryCurves.ql | 27 ++ .../quantum/Examples/Demo/InventoryHashes.ql | 21 + .../Examples/Demo/InventoryKeySizes.ql | 19 + .../quantum/Examples/Demo/InventoryModes.ql | 14 + .../quantum/Examples/Demo/InventoryPadding.ql | 14 + .../quantum/Examples/Demo/ProtocolJWS_PS.ql | 32 ++ .../quantum/Examples/Demo/ProtocolJWS_RS.ql | 29 ++ .../quantum/Examples/Demo/ProtocolRSA_OAEP.ql | 19 + .../Examples/Demo/ProtocolRSA_PKCS1v15.ql | 27 ++ .../quantum/Examples/Demo/ProtocolRSA_PSS.ql | 19 + .../Demo/QuantumCryptoClassification.qll | 162 ++++++++ .../Demo/QuantumVulnerableAlgorithm.ql | 28 ++ .../Examples/Demo/QuantumVulnerableCurve.ql | 19 + .../Examples/Demo/QuantumVulnerableKeySize.ql | 28 ++ .../Examples/Demo/QuantumVulnerablePadding.ql | 27 ++ .../quantum/Examples/Demo/SecureCipher.ql | 25 ++ .../quantum/Examples/Demo/SecureHash.ql | 24 ++ .../Demo/UnknownAlgorithmRemoteSource.ql | 26 ++ .../Demo/CryptoClassificationTest.java | 369 ++++++++++++++++++ .../examples/Demo/InsecureBlockMode.expected | 5 + .../examples/Demo/InsecureBlockMode.qlref | 4 + .../examples/Demo/InsecureCipher.expected | 10 + .../examples/Demo/InsecureCipher.qlref | 4 + .../examples/Demo/InsecureHash.expected | 1 + .../quantum/examples/Demo/InsecureHash.qlref | 4 + .../Demo/InventoryAlgorithms.expected | 57 +++ .../examples/Demo/InventoryAlgorithms.qlref | 4 + .../examples/Demo/InventoryCurves.expected | 10 + .../examples/Demo/InventoryCurves.qlref | 4 + .../examples/Demo/InventoryHashes.expected | 17 + .../examples/Demo/InventoryHashes.qlref | 4 + .../examples/Demo/InventoryKeySizes.expected | 13 + .../examples/Demo/InventoryKeySizes.qlref | 4 + .../examples/Demo/InventoryModes.expected | 9 + .../examples/Demo/InventoryModes.qlref | 4 + .../examples/Demo/InventoryPadding.expected | 13 + .../examples/Demo/InventoryPadding.qlref | 4 + .../examples/Demo/ProtocolJWS_PS.expected | 1 + .../examples/Demo/ProtocolJWS_PS.qlref | 4 + .../examples/Demo/ProtocolJWS_RS.expected | 0 .../examples/Demo/ProtocolJWS_RS.qlref | 4 + .../examples/Demo/ProtocolRSA_OAEP.expected | 1 + .../examples/Demo/ProtocolRSA_OAEP.qlref | 4 + .../Demo/ProtocolRSA_PKCS1v15.expected | 1 + .../examples/Demo/ProtocolRSA_PKCS1v15.qlref | 4 + .../examples/Demo/ProtocolRSA_PSS.expected | 4 + .../examples/Demo/ProtocolRSA_PSS.qlref | 4 + .../Demo/QuantumVulnerableAlgorithm.expected | 35 ++ .../Demo/QuantumVulnerableAlgorithm.qlref | 4 + .../Demo/QuantumVulnerableCurve.expected | 10 + .../Demo/QuantumVulnerableCurve.qlref | 4 + .../Demo/QuantumVulnerableKeySize.expected | 10 + .../Demo/QuantumVulnerableKeySize.qlref | 4 + .../Demo/QuantumVulnerablePadding.expected | 6 + .../Demo/QuantumVulnerablePadding.qlref | 4 + .../examples/Demo/SecureCipher.expected | 12 + .../quantum/examples/Demo/SecureCipher.qlref | 4 + .../quantum/examples/Demo/SecureHash.expected | 16 + .../quantum/examples/Demo/SecureHash.qlref | 4 + .../UnknownAlgorithmRemoteSource.expected | 0 .../Demo/UnknownAlgorithmRemoteSource.qlref | 4 + 66 files changed, 1440 insertions(+) create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/AllClassifications.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InsecureBlockMode.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InsecureCipher.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InsecureHash.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InventoryAlgorithms.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InventoryHashes.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InventoryModes.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/InventoryPadding.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/QuantumCryptoClassification.qll create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableCurve.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/SecureCipher.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/SecureHash.ql create mode 100644 java/ql/src/experimental/quantum/Examples/Demo/UnknownAlgorithmRemoteSource.ql create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/CryptoClassificationTest.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.qlref diff --git a/java/ql/src/experimental/quantum/Examples/Demo/AllClassifications.ql b/java/ql/src/experimental/quantum/Examples/Demo/AllClassifications.ql new file mode 100644 index 000000000000..4d0edf33eaa0 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/AllClassifications.ql @@ -0,0 +1,119 @@ +/** + * @name All cryptographic classifications + * @description Reports every cryptographic element classified as quantum-vulnerable, insecure, or secure + * using all predicates in the QuantumCryptoClassification library. + * @id java/quantum/examples/demo/all-classifications + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +/** + * Gets a short label for logical grouping of each finding category. + */ +string categoryLabel(string cat) { + cat = "Algorithm" and result = "Algorithm" + or + cat = "KeyAgreement" and result = "KeyAgreement" + or + cat = "Curve" and result = "Curve" + or + cat = "Padding" and result = "Padding" + or + cat = "Mode" and result = "Mode" + or + cat = "Hash" and result = "Hash" + or + cat = "KeySize" and result = "KeySize" +} + +from Crypto::NodeBase node, string category, string classification, string detail +where + // ---- Key-operation algorithms (quantum-vulnerable / insecure / secure) ---- + exists(Crypto::KeyOperationAlgorithmNode alg | + node = alg and + category = "Algorithm" and + classification = classifyAlgorithmType(alg.getAlgorithmType()) and + classification != "other" and + detail = alg.getAlgorithmName() + ) + or + // ---- Key-agreement algorithms (quantum-vulnerable) ---- + exists(Crypto::KeyAgreementAlgorithmNode kaAlg | + node = kaAlg and + category = "KeyAgreement" and + classification = classifyKeyAgreementType(kaAlg.getKeyAgreementType()) and + classification != "other" and + detail = kaAlg.getAlgorithmName() + ) + or + // ---- Elliptic curves (quantum-vulnerable) ---- + exists(Crypto::EllipticCurveNode curve | + node = curve and + category = "Curve" and + isQuantumVulnerableCurveType(curve.getEllipticCurveType()) and + classification = "quantum-vulnerable" and + detail = curve.getAlgorithmName() + " (" + curve.getEllipticCurveType().toString() + ")" + ) + or + // ---- Padding (quantum-vulnerable) ---- + exists(Crypto::PaddingAlgorithmNode pad | + node = pad and + category = "Padding" and + isQuantumVulnerablePaddingType(pad.getPaddingType()) and + classification = "quantum-vulnerable" and + detail = pad.getPaddingType().toString() + ) + or + // ---- Block modes (insecure) ---- + exists(Crypto::ModeOfOperationAlgorithmNode mode | + node = mode and + category = "Mode" and + isInsecureModeType(mode.getModeType()) and + classification = "insecure" and + detail = mode.getModeType().toString() + ) + or + // ---- Hash algorithms (insecure / secure) ---- + exists(Crypto::HashAlgorithmNode hash | + node = hash and + category = "Hash" and + ( + isInsecureHashType(hash.getHashType()) and + classification = "insecure" and + detail = hash.getHashType().toString() + or + isSecureHashType(hash.getHashType()) and + classification = "secure" and + detail = + hash.getHashType().toString() + + any(string s | + if exists(hash.getDigestLength()) + then s = " (" + hash.getDigestLength().toString() + "-bit)" + else s = "" + ) + ) + ) + or + // ---- Key sizes with quantum-vulnerable algorithms ---- + exists(Crypto::KeyCreationOperationNode keygen, Crypto::AlgorithmNode alg, int keySize | + node = keygen and + category = "KeySize" and + classification = "quantum-vulnerable" and + alg = keygen.getAKnownAlgorithm() and + keygen.getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize and + ( + exists(Crypto::KeyOperationAlgorithmNode keyAlg | + keyAlg = alg and isQuantumVulnerableAlgorithmType(keyAlg.getAlgorithmType()) + ) + or + exists(Crypto::KeyAgreementAlgorithmNode kaAlg | + kaAlg = alg and isQuantumVulnerableKeyAgreementType(kaAlg.getKeyAgreementType()) + ) + ) and + detail = keySize.toString() + "-bit key for " + alg.getAlgorithmName() + ) +select node, "[" + classification + "] " + categoryLabel(category) + ": " + detail diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InsecureBlockMode.ql b/java/ql/src/experimental/quantum/Examples/Demo/InsecureBlockMode.ql new file mode 100644 index 000000000000..99f8849cebee --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InsecureBlockMode.ql @@ -0,0 +1,17 @@ +/** + * @name Insecure block mode + * @description Detects use of insecure block cipher modes of operation. + * @id java/quantum/examples/demo/insecure-block-mode + * @kind problem + * @problem.severity error + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::KeyOperationAlgorithmNode alg, Crypto::ModeOfOperationAlgorithmNode mode +where + mode = alg.getModeOfOperation() and + isInsecureModeType(mode.getModeType()) +select alg, "Insecure block mode $@ detected.", mode, mode.getModeType().toString() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InsecureCipher.ql b/java/ql/src/experimental/quantum/Examples/Demo/InsecureCipher.ql new file mode 100644 index 000000000000..7f3497680bdf --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InsecureCipher.ql @@ -0,0 +1,18 @@ +/** + * @name Insecure symmetric cipher + * @description Detects use of classically insecure symmetric cipher algorithms. + * @id java/quantum/examples/demo/insecure-cipher + * @kind problem + * @problem.severity error + * @tags external/cwe/cwe-327 + * quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::TSymmetricCipherType cipherType +where + alg.getAlgorithmType() = KeyOpAlg::TSymmetricCipher(cipherType) and + isInsecureCipherType(cipherType) +select alg, "Insecure symmetric cipher: " + alg.getAlgorithmName() + "." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InsecureHash.ql b/java/ql/src/experimental/quantum/Examples/Demo/InsecureHash.ql new file mode 100644 index 000000000000..04921065f89e --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InsecureHash.ql @@ -0,0 +1,16 @@ +/** + * @name Insecure hash algorithm + * @description Detects use of classically insecure hash algorithms. + * @id java/quantum/examples/demo/insecure-hash + * @kind problem + * @problem.severity error + * @tags external/cwe/cwe-327 + * quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::HashAlgorithmNode alg +where isInsecureHashType(alg.getHashType()) +select alg, "Insecure hash algorithm: " + alg.getHashType().toString() + "." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryAlgorithms.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryAlgorithms.ql new file mode 100644 index 000000000000..a2851f3669ba --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryAlgorithms.ql @@ -0,0 +1,26 @@ +/** + * @name Inventory of cryptographic algorithms + * @description Lists all detected key operation algorithms with their security classification. + * @id java/quantum/examples/demo/inventory-algorithms + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::AlgorithmNode alg, string name, string classification +where + exists(Crypto::KeyOperationAlgorithmNode keyAlg | + keyAlg = alg and + name = keyAlg.getAlgorithmName() and + classification = classifyAlgorithmType(keyAlg.getAlgorithmType()) + ) + or + exists(Crypto::KeyAgreementAlgorithmNode kaAlg | + kaAlg = alg and + name = kaAlg.getAlgorithmName() and + classification = classifyKeyAgreementType(kaAlg.getKeyAgreementType()) + ) +select alg, "Algorithm: " + name + " [" + classification + "]." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql new file mode 100644 index 000000000000..e2952f934371 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql @@ -0,0 +1,27 @@ +/** + * @name Inventory of elliptic curves + * @description Lists all detected elliptic curve algorithms with their family and key size. + * @id java/quantum/examples/demo/inventory-curves + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::EllipticCurveNode c, string detail +where + if exists(string ks | c.properties("KeySize", ks, _)) + then + exists(string ks | + c.properties("KeySize", ks, _) and + detail = + "Elliptic curve: " + c.getAlgorithmName() + " (" + c.getEllipticCurveType().toString() + + " family, " + ks + "-bit)." + ) + else + detail = + "Elliptic curve: " + c.getAlgorithmName() + " (" + c.getEllipticCurveType().toString() + + " family)." +select c, detail diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryHashes.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryHashes.ql new file mode 100644 index 000000000000..eb1323248c9f --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryHashes.ql @@ -0,0 +1,21 @@ +/** + * @name Inventory of hash algorithms + * @description Lists all detected hash algorithms with their digest length. + * @id java/quantum/examples/demo/inventory-hashes + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::HashAlgorithmNode h, string detail +where + if exists(h.getDigestLength()) + then + detail = + "Hash algorithm: " + h.getHashType().toString() + " (" + h.getDigestLength().toString() + + "-bit digest)." + else detail = "Hash algorithm: " + h.getHashType().toString() + "." +select h, detail diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql new file mode 100644 index 000000000000..3a3cb2058ab9 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql @@ -0,0 +1,19 @@ +/** + * @name Inventory of cryptographic key sizes + * @description Lists all detected key creation operations with their algorithm and key size. + * @id java/quantum/examples/demo/inventory-key-sizes + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::KeyCreationOperationNode keygen, Crypto::AlgorithmNode alg, int keySize +where + alg = keygen.getAKnownAlgorithm() and + keygen.getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize +select keygen, + "Key creation with algorithm $@ using " + keySize.toString() + "-bit key.", alg, + alg.getAlgorithmName() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryModes.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryModes.ql new file mode 100644 index 000000000000..eb1fe5bac1f0 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryModes.ql @@ -0,0 +1,14 @@ +/** + * @name Inventory of block cipher modes + * @description Lists all detected modes of operation for block ciphers. + * @id java/quantum/examples/demo/inventory-modes + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::ModeOfOperationAlgorithmNode m +select m, "Mode of operation: " + m.getModeType().toString() + "." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryPadding.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryPadding.ql new file mode 100644 index 000000000000..5827d3073e02 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryPadding.ql @@ -0,0 +1,14 @@ +/** + * @name Inventory of padding schemes + * @description Lists all detected padding scheme algorithms. + * @id java/quantum/examples/demo/inventory-padding + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::PaddingAlgorithmNode pad +select pad, "Padding scheme: " + pad.getPaddingType().toString() + "." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql new file mode 100644 index 000000000000..f0a3061cd0b0 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql @@ -0,0 +1,32 @@ +/** + * @name JWS PS protocol detected (PS256/PS384/PS512) + * @description Detects RSA-PSS signature with SHA-2 hash, corresponding to JWS PS256/PS384/PS512. + * @id java/quantum/examples/demo/protocol-jws-ps + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +from + Crypto::SignatureOperationNode sigOp, Crypto::KeyOperationAlgorithmNode alg, + Crypto::PSSPaddingAlgorithmNode pss, Crypto::HashAlgorithmNode hash, int digestLen +where + alg = sigOp.getAKnownAlgorithm() and + alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and + pss = alg.getPaddingAlgorithm() and + // Get hash from the PSS padding or from the signature operation + ( + hash = pss.getPSSHashAlgorithm() + or + hash = sigOp.getHashAlgorithm() and not exists(pss.getPSSHashAlgorithm()) + ) and + hash.getHashType() = Crypto::SHA2() and + digestLen = hash.getDigestLength() and + digestLen in [256, 384, 512] +select alg, + "JWS PS" + digestLen.toString() + " protocol detected (RSA-PSS + SHA-" + digestLen.toString() + + ")." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql new file mode 100644 index 000000000000..e918b976db6c --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql @@ -0,0 +1,29 @@ +/** + * @name JWS RS protocol detected (RS256/RS384/RS512) + * @description Detects RSA PKCS#1 v1.5 signature with SHA-2 hash, corresponding to JWS RS256/RS384/RS512. + * @id java/quantum/examples/demo/protocol-jws-rs + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +from + Crypto::SignatureOperationNode sigOp, Crypto::KeyOperationAlgorithmNode alg, + Crypto::HashAlgorithmNode hash, int digestLen +where + alg = sigOp.getAKnownAlgorithm() and + alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and + // No PSS padding — implies PKCS#1 v1.5 + not alg.getPaddingAlgorithm() instanceof Crypto::PSSPaddingAlgorithmNode and + // Hash is SHA-2 with standard JWS digest lengths + hash = sigOp.getHashAlgorithm() and + hash.getHashType() = Crypto::SHA2() and + digestLen = hash.getDigestLength() and + digestLen in [256, 384, 512] +select alg, + "JWS RS" + digestLen.toString() + " protocol detected (RSA PKCS#1 v1.5 + SHA-" + + digestLen.toString() + ")." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql new file mode 100644 index 000000000000..a02fd2bb1fb2 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql @@ -0,0 +1,19 @@ +/** + * @name RSA-OAEP protocol detected + * @description Detects RSA encryption with OAEP padding, a quantum-vulnerable protocol composition. + * @id java/quantum/examples/demo/protocol-rsa-oaep + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +from + Crypto::KeyOperationAlgorithmNode alg, Crypto::OAEPPaddingAlgorithmNode pad +where + alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and + pad = alg.getPaddingAlgorithm() +select alg, "RSA-OAEP protocol detected with OAEP padding $@.", pad, pad.toString() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql new file mode 100644 index 000000000000..6b9d7a01c329 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql @@ -0,0 +1,27 @@ +/** + * @name RSA PKCS#1 v1.5 protocol detected + * @description Detects RSA operations using PKCS#1 v1.5 padding, a quantum-vulnerable protocol composition. + * @id java/quantum/examples/demo/protocol-rsa-pkcs1v15 + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +from Crypto::KeyOperationAlgorithmNode alg, string variant +where + alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and + ( + // Explicit PKCS#1 v1.5 padding on a cipher operation + alg.getPaddingAlgorithm().getPaddingType() = KeyOpAlg::PKCS1_V1_5() and + variant = "explicit PKCS#1 v1.5 padding" + or + // RSA signature without PSS — implies PKCS#1 v1.5 (e.g., SHA256withRSA) + exists(Crypto::SignatureOperationNode sigOp | alg = sigOp.getAKnownAlgorithm()) and + not alg.getPaddingAlgorithm() instanceof Crypto::PSSPaddingAlgorithmNode and + variant = "implicit PKCS#1 v1.5 (RSA signature without PSS)" + ) +select alg, "RSA PKCS#1 v1.5 protocol detected: " + variant + "." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql new file mode 100644 index 000000000000..01665d7f527d --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql @@ -0,0 +1,19 @@ +/** + * @name RSA-PSS protocol detected + * @description Detects RSA signature with PSS padding, a quantum-vulnerable protocol composition. + * @id java/quantum/examples/demo/protocol-rsa-pss + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +from + Crypto::KeyOperationAlgorithmNode alg, Crypto::PSSPaddingAlgorithmNode pss +where + alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and + pss = alg.getPaddingAlgorithm() +select alg, "RSA-PSS (RSASSA-PSS) protocol detected with PSS padding $@.", pss, pss.toString() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumCryptoClassification.qll b/java/ql/src/experimental/quantum/Examples/Demo/QuantumCryptoClassification.qll new file mode 100644 index 000000000000..ee48f2899275 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumCryptoClassification.qll @@ -0,0 +1,162 @@ +/** + * Shared predicates for classifying cryptographic algorithms, modes, padding, + * hashes, curves, and key sizes into quantum-vulnerable, insecure, and + * secure/quantum-proof categories. + */ + +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +/** + * Holds when the key operation algorithm type is quantum-vulnerable. + * Covers RSA (asymmetric cipher), DSA, ECDSA, and EdDSA (signatures). + */ +predicate isQuantumVulnerableAlgorithmType(KeyOpAlg::AlgorithmType t) { + t = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) + or + t = KeyOpAlg::TSignature(KeyOpAlg::DSA()) + or + t = KeyOpAlg::TSignature(KeyOpAlg::ECDSA()) + or + t = KeyOpAlg::TSignature(KeyOpAlg::EDDSA()) +} + +/** + * Holds when the key agreement type is quantum-vulnerable. + * Covers DH, EDH, ECDH, and ECMQV. + */ +predicate isQuantumVulnerableKeyAgreementType(Crypto::TKeyAgreementType t) { + t = Crypto::DH() + or + t = Crypto::EDH() + or + t = Crypto::ECDH() + or + t = Crypto::ECMQV() +} + +/** + * Holds when the elliptic curve type is quantum-vulnerable. + * All classical elliptic curves are broken by quantum computers. + */ +predicate isQuantumVulnerableCurveType(Crypto::EllipticCurveType t) { + t = Crypto::NIST() + or + t = Crypto::SEC() + or + t = Crypto::CURVE25519() + or + t = Crypto::CURVE448() + or + t = Crypto::BRAINPOOL() + or + t = Crypto::PRIME() + or + t = Crypto::SM2() + or + t = Crypto::ES() + or + t = Crypto::C2() +} + +/** + * Holds when the padding scheme type is quantum-vulnerable + * (used only with asymmetric algorithms that are quantum-vulnerable). + */ +predicate isQuantumVulnerablePaddingType(KeyOpAlg::PaddingSchemeType t) { + t = KeyOpAlg::PKCS1_V1_5() + or + t = KeyOpAlg::PSS() + or + t = KeyOpAlg::OAEP() +} + +/** + * Holds when the symmetric cipher type is classically insecure + * (broken regardless of quantum computing). + */ +predicate isInsecureCipherType(KeyOpAlg::TSymmetricCipherType t) { + t = KeyOpAlg::DES() + or + t = KeyOpAlg::DOUBLE_DES() + or + t = KeyOpAlg::TRIPLE_DES() + or + t = KeyOpAlg::IDEA() + or + t = KeyOpAlg::BLOWFISH() + or + t = KeyOpAlg::SEED() +} + +/** + * Holds when the mode of operation is insecure. + */ +predicate isInsecureModeType(KeyOpAlg::ModeOfOperationType t) { + t = KeyOpAlg::ECB() + or + t = KeyOpAlg::LRW() + or + t = KeyOpAlg::CFB() + or + t = KeyOpAlg::OFB() +} + +/** + * Holds when the hash type is classically insecure. + */ +predicate isInsecureHashType(Crypto::HashType t) { t = Crypto::SHA1() } + +/** + * Holds when the symmetric cipher type is considered secure and quantum-proof. + */ +predicate isSecureCipherType(KeyOpAlg::TSymmetricCipherType t) { + t = KeyOpAlg::AES() + or + t = KeyOpAlg::TWOFISH() + or + t = KeyOpAlg::ARIA() + or + t = KeyOpAlg::CAMELLIA() + or + t = KeyOpAlg::CHACHA20() + or + t = KeyOpAlg::SALSA20() +} + +/** + * Holds when the hash type is considered secure and quantum-proof. + */ +predicate isSecureHashType(Crypto::HashType t) { + t = Crypto::SHA2() + or + t = Crypto::SHA3() +} + +/** + * Gets a classification label for a key operation algorithm type. + */ +string classifyAlgorithmType(KeyOpAlg::AlgorithmType t) { + isQuantumVulnerableAlgorithmType(t) and result = "quantum-vulnerable" + or + exists(KeyOpAlg::TSymmetricCipherType st | t = KeyOpAlg::TSymmetricCipher(st) | + isInsecureCipherType(st) and result = "insecure" + or + isSecureCipherType(st) and result = "secure" + or + not isInsecureCipherType(st) and not isSecureCipherType(st) and result = "other" + ) + or + not isQuantumVulnerableAlgorithmType(t) and + not t instanceof KeyOpAlg::TSymmetricCipher and + result = "other" +} + +/** + * Gets a classification label for a key agreement type. + */ +string classifyKeyAgreementType(Crypto::TKeyAgreementType t) { + isQuantumVulnerableKeyAgreementType(t) and result = "quantum-vulnerable" + or + not isQuantumVulnerableKeyAgreementType(t) and result = "other" +} diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql new file mode 100644 index 000000000000..1d2f82f12c08 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql @@ -0,0 +1,28 @@ +/** + * @name Quantum-vulnerable algorithm + * @description Detects use of cryptographic algorithms that are vulnerable to quantum computing attacks. + * @id java/quantum/examples/demo/quantum-vulnerable-algorithm + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::AlgorithmNode alg, string msg +where + exists(Crypto::KeyOperationAlgorithmNode keyAlg | + keyAlg = alg and + isQuantumVulnerableAlgorithmType(keyAlg.getAlgorithmType()) and + msg = + "Quantum-vulnerable key operation algorithm: " + keyAlg.getAlgorithmName() + "." + ) + or + exists(Crypto::KeyAgreementAlgorithmNode kaAlg | + kaAlg = alg and + isQuantumVulnerableKeyAgreementType(kaAlg.getKeyAgreementType()) and + msg = + "Quantum-vulnerable key agreement algorithm: " + kaAlg.getAlgorithmName() + "." + ) +select alg, msg diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableCurve.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableCurve.ql new file mode 100644 index 000000000000..c39267903039 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableCurve.ql @@ -0,0 +1,19 @@ +/** + * @name Quantum-vulnerable elliptic curve + * @description Detects use of elliptic curves that are vulnerable to quantum computing attacks. + * @id java/quantum/examples/demo/quantum-vulnerable-curve + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::EllipticCurveNode curve, string msg +where + isQuantumVulnerableCurveType(curve.getEllipticCurveType()) and + msg = + "Quantum-vulnerable elliptic curve: " + curve.getAlgorithmName() + " (" + + curve.getEllipticCurveType().toString() + " family)." +select curve, msg diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql new file mode 100644 index 000000000000..b1d9d4a869b4 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql @@ -0,0 +1,28 @@ +/** + * @name Quantum-vulnerable key size + * @description Detects key sizes used with quantum-vulnerable algorithms, reporting the specific size in use. + * @id java/quantum/examples/demo/quantum-vulnerable-key-size + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::KeyCreationOperationNode keygen, Crypto::AlgorithmNode alg, int keySize +where + alg = keygen.getAKnownAlgorithm() and + keygen.getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize and + ( + exists(Crypto::KeyOperationAlgorithmNode keyAlg | + keyAlg = alg and isQuantumVulnerableAlgorithmType(keyAlg.getAlgorithmType()) + ) + or + exists(Crypto::KeyAgreementAlgorithmNode kaAlg | + kaAlg = alg and isQuantumVulnerableKeyAgreementType(kaAlg.getKeyAgreementType()) + ) + ) +select keygen, + "Quantum-vulnerable key size (" + keySize.toString() + " bits) for algorithm $@.", alg, + alg.getAlgorithmName() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql new file mode 100644 index 000000000000..49b49aa00729 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql @@ -0,0 +1,27 @@ +/** + * @name Quantum-vulnerable padding scheme + * @description Detects use of padding schemes associated with quantum-vulnerable asymmetric algorithms. + * @id java/quantum/examples/demo/quantum-vulnerable-padding + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::PaddingAlgorithmNode pad, string msg +where + isQuantumVulnerablePaddingType(pad.getPaddingType()) and + ( + pad instanceof Crypto::PSSPaddingAlgorithmNode and + msg = "Quantum-vulnerable PSS padding scheme detected." + or + pad instanceof Crypto::OAEPPaddingAlgorithmNode and + msg = "Quantum-vulnerable OAEP padding scheme detected." + or + not pad instanceof Crypto::PSSPaddingAlgorithmNode and + not pad instanceof Crypto::OAEPPaddingAlgorithmNode and + msg = "Quantum-vulnerable padding scheme: " + pad.getPaddingType().toString() + "." + ) +select pad, msg diff --git a/java/ql/src/experimental/quantum/Examples/Demo/SecureCipher.ql b/java/ql/src/experimental/quantum/Examples/Demo/SecureCipher.ql new file mode 100644 index 000000000000..54fd4524f176 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/SecureCipher.ql @@ -0,0 +1,25 @@ +/** + * @name Secure and quantum-proof symmetric cipher + * @description Detects use of symmetric cipher algorithms considered secure and quantum-proof. + * @id java/quantum/examples/demo/secure-cipher + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::TSymmetricCipherType cipherType, string detail +where + alg.getAlgorithmType() = KeyOpAlg::TSymmetricCipher(cipherType) and + isSecureCipherType(cipherType) and + ( + if exists(alg.getKeySizeFixed()) + then + detail = + "Secure symmetric cipher: " + alg.getAlgorithmType().toString() + " (" + + alg.getKeySizeFixed().toString() + "-bit key)." + else detail = "Secure symmetric cipher: " + alg.getAlgorithmType().toString() + "." + ) +select alg, detail diff --git a/java/ql/src/experimental/quantum/Examples/Demo/SecureHash.ql b/java/ql/src/experimental/quantum/Examples/Demo/SecureHash.ql new file mode 100644 index 000000000000..9e5cc426fb99 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/SecureHash.ql @@ -0,0 +1,24 @@ +/** + * @name Secure and quantum-proof hash algorithm + * @description Detects use of hash algorithms considered secure and quantum-proof. + * @id java/quantum/examples/demo/secure-hash + * @kind problem + * @problem.severity recommendation + * @tags quantum + * experimental + */ + +import QuantumCryptoClassification + +from Crypto::HashAlgorithmNode alg, string detail +where + isSecureHashType(alg.getHashType()) and + ( + if exists(alg.getDigestLength()) + then + detail = + "Secure hash algorithm: " + alg.getHashType().toString() + " (" + + alg.getDigestLength().toString() + "-bit digest)." + else detail = "Secure hash algorithm: " + alg.getHashType().toString() + "." + ) +select alg, detail diff --git a/java/ql/src/experimental/quantum/Examples/Demo/UnknownAlgorithmRemoteSource.ql b/java/ql/src/experimental/quantum/Examples/Demo/UnknownAlgorithmRemoteSource.ql new file mode 100644 index 000000000000..cc0519f7c6e7 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/Demo/UnknownAlgorithmRemoteSource.ql @@ -0,0 +1,26 @@ +/** + * @name Unknown algorithm from remote or external source + * @description Detects cryptographic operations where the algorithm comes from a remote, external, or unknown source. + * @id java/quantum/examples/demo/unknown-algorithm-remote-source + * @kind problem + * @problem.severity warning + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +from Crypto::OperationNode op, Crypto::GenericSourceNode src, string sourceKind +where + src = op.getAnAlgorithmOrGenericSource() and + ( + src.getInternalType() = "RemoteData" and sourceKind = "remote data source" + or + src.getInternalType() = "Parameter" and sourceKind = "unreferenced parameter" + or + src.getInternalType() = "ExternalCall" and sourceKind = "external call" + or + src.getInternalType() = "LocalData" and sourceKind = "local data source" + ) +select op, "Operation uses algorithm from " + sourceKind + ": $@.", src, src.toString() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/CryptoClassificationTest.java b/java/ql/test/experimental/query-tests/quantum/examples/Demo/CryptoClassificationTest.java new file mode 100644 index 000000000000..be182bac012f --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/CryptoClassificationTest.java @@ -0,0 +1,369 @@ +import java.security.*; +import java.security.spec.ECGenParameterSpec; +import java.security.spec.PSSParameterSpec; +import java.security.spec.MGF1ParameterSpec; +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.KeyAgreement; +import javax.servlet.http.HttpServletRequest; + +/** + * Comprehensive test source exercising ALL crypto algorithm/mode/padding/hash/curve/key-size + * classifications defined in QuantumCryptoClassification.qll. + * + * Each JCA API call is annotated with expected query alerts via inline expectations. + */ +public class CryptoClassificationTest { + + // ================================================================ + // QUANTUM-VULNERABLE ALGORITHMS + // ================================================================ + + public void quantumVulnerableAlgorithms() throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // RSA cipher with PKCS1Padding (quantum-vulnerable algorithm + padding + protocol) + Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/quantum-vulnerable-padding] Alert[java/quantum/examples/demo/protocol-rsa-pkcs1v15] Alert[java/quantum/examples/demo/insecure-block-mode] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + rsaCipher.init(Cipher.ENCRYPT_MODE, KeyPairGenerator.getInstance("RSA").generateKeyPair().getPublic()); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + byte[] rsaEncrypted = rsaCipher.doFinal(data); + + // RSA-OAEP cipher (quantum-vulnerable algorithm + padding + protocol) + Cipher rsaOaepCipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/quantum-vulnerable-padding] Alert[java/quantum/examples/demo/protocol-rsa-oaep] Alert[java/quantum/examples/demo/insecure-block-mode] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] Alert[java/quantum/examples/demo/secure-hash] + rsaOaepCipher.init(Cipher.ENCRYPT_MODE, KeyPairGenerator.getInstance("RSA").generateKeyPair().getPublic()); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + byte[] rsaOaepEncrypted = rsaOaepCipher.doFinal(data); + + // DSA signature (quantum-vulnerable) + Signature dsaSig = Signature.getInstance("SHA256withDSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/secure-hash] + dsaSig.initSign(KeyPairGenerator.getInstance("DSA").generateKeyPair().getPrivate()); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + dsaSig.update(data); + byte[] dsaSignature = dsaSig.sign(); + + // ECDSA signature (quantum-vulnerable) + Signature ecdsaSig = Signature.getInstance("SHA256withECDSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/secure-hash] + ecdsaSig.initSign(KeyPairGenerator.getInstance("EC").generateKeyPair().getPrivate()); + ecdsaSig.update(data); + byte[] ecdsaSignature = ecdsaSig.sign(); + + // EdDSA Ed25519 signature (quantum-vulnerable) + Signature ed25519Sig = Signature.getInstance("Ed25519"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + ed25519Sig.initSign(KeyPairGenerator.getInstance("Ed25519").generateKeyPair().getPrivate()); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/inventory-curves] + ed25519Sig.update(data); + byte[] ed25519Signature = ed25519Sig.sign(); + + // EdDSA Ed448 signature (quantum-vulnerable) + Signature ed448Sig = Signature.getInstance("Ed448"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + ed448Sig.initSign(KeyPairGenerator.getInstance("Ed448").generateKeyPair().getPrivate()); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/inventory-curves] + ed448Sig.update(data); + byte[] ed448Signature = ed448Sig.sign(); + } + + // ================================================================ + // QUANTUM-VULNERABLE PROTOCOLS — RSA-PSS (RSASSA-PSS) + // ================================================================ + + public void rsaPssProtocol() throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // RSA-PSS with explicit PSSParameterSpec + Signature rsaPssSig = Signature.getInstance("RSASSA-PSS"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/quantum-vulnerable-padding] Alert[java/quantum/examples/demo/protocol-rsa-pss] Alert[java/quantum/examples/demo/protocol-jws-ps] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-padding] + PSSParameterSpec pssSpec = new PSSParameterSpec( + "SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1); // $ Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/secure-hash] Alert[java/quantum/examples/demo/secure-hash] + rsaPssSig.setParameter(pssSpec); + KeyPairGenerator rsaKpg = KeyPairGenerator.getInstance("RSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + rsaKpg.initialize(2048); + rsaPssSig.initSign(rsaKpg.generateKeyPair().getPrivate()); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + rsaPssSig.update(data); + byte[] pssSigBytes = rsaPssSig.sign(); + } + + // ================================================================ + // QUANTUM-VULNERABLE PROTOCOLS — RSA PKCS#1 v1.5 signing (JWS RS) + // ================================================================ + + public void rsaPkcs1v15SigningProtocol() throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // RS256: RSA PKCS#1 v1.5 + SHA-256 + Signature rs256 = Signature.getInstance("SHA256withRSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/secure-hash] + + // RS384: RSA PKCS#1 v1.5 + SHA-384 + Signature rs384 = Signature.getInstance("SHA384withRSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/secure-hash] + + // RS512: RSA PKCS#1 v1.5 + SHA-512 + Signature rs512 = Signature.getInstance("SHA512withRSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/secure-hash] + } + + // ================================================================ + // QUANTUM-VULNERABLE PROTOCOLS — RSA-PSS signing (JWS PS) + // ================================================================ + + public void rsaPssSigningProtocol() throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // PS256: RSA-PSS + SHA-256 + Signature ps256 = Signature.getInstance("SHA256withRSAandMGF1"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/quantum-vulnerable-padding] Alert[java/quantum/examples/demo/protocol-rsa-pss] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/inventory-padding] Alert[java/quantum/examples/demo/secure-hash] + + // PS384: RSA-PSS + SHA-384 + Signature ps384 = Signature.getInstance("SHA384withRSAandMGF1"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/quantum-vulnerable-padding] Alert[java/quantum/examples/demo/protocol-rsa-pss] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/inventory-padding] Alert[java/quantum/examples/demo/secure-hash] + + // PS512: RSA-PSS + SHA-512 + Signature ps512 = Signature.getInstance("SHA512withRSAandMGF1"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/quantum-vulnerable-padding] Alert[java/quantum/examples/demo/protocol-rsa-pss] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-hashes] Alert[java/quantum/examples/demo/inventory-padding] Alert[java/quantum/examples/demo/secure-hash] + } + + // ================================================================ + // QUANTUM-VULNERABLE KEY AGREEMENTS + // ================================================================ + + public void quantumVulnerableKeyAgreements() throws Exception { + // DH key agreement (quantum-vulnerable) + KeyAgreement dhKA = KeyAgreement.getInstance("DH"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + + // ECDH key agreement (quantum-vulnerable) + KeyAgreement ecdhKA = KeyAgreement.getInstance("ECDH"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + + // ECMQV key agreement (quantum-vulnerable) + KeyAgreement ecmqvKA = KeyAgreement.getInstance("ECMQV"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + } + + // ================================================================ + // QUANTUM-VULNERABLE KEY SIZES + // ================================================================ + + public void quantumVulnerableKeySizes() throws Exception { + // RSA key sizes + KeyPairGenerator rsaKpg1 = KeyPairGenerator.getInstance("RSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + rsaKpg1.initialize(1024); + rsaKpg1.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + KeyPairGenerator rsaKpg2 = KeyPairGenerator.getInstance("RSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + rsaKpg2.initialize(2048); + rsaKpg2.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + KeyPairGenerator rsaKpg3 = KeyPairGenerator.getInstance("RSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + rsaKpg3.initialize(3072); + rsaKpg3.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + KeyPairGenerator rsaKpg4 = KeyPairGenerator.getInstance("RSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + rsaKpg4.initialize(4096); + rsaKpg4.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + // DSA key sizes + KeyPairGenerator dsaKpg1 = KeyPairGenerator.getInstance("DSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + dsaKpg1.initialize(1024); + dsaKpg1.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + KeyPairGenerator dsaKpg2 = KeyPairGenerator.getInstance("DSA"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + dsaKpg2.initialize(2048); + dsaKpg2.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + // DH key sizes + KeyPairGenerator dhKpg1 = KeyPairGenerator.getInstance("DH"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + dhKpg1.initialize(1024); + dhKpg1.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + KeyPairGenerator dhKpg2 = KeyPairGenerator.getInstance("DH"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + dhKpg2.initialize(2048); + dhKpg2.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + + KeyPairGenerator dhKpg3 = KeyPairGenerator.getInstance("DH"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] + dhKpg3.initialize(4096); + dhKpg3.generateKeyPair(); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-key-size] Alert[java/quantum/examples/demo/inventory-key-sizes] + } + + // ================================================================ + // QUANTUM-VULNERABLE CURVES + // ================================================================ + + public void quantumVulnerableCurves() throws Exception { + // NIST/SEC curves + KeyPairGenerator ecKpg1 = KeyPairGenerator.getInstance("EC"); + ecKpg1.initialize(new ECGenParameterSpec("secp256r1")); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/inventory-curves] + ecKpg1.generateKeyPair(); + + KeyPairGenerator ecKpg2 = KeyPairGenerator.getInstance("EC"); + ecKpg2.initialize(new ECGenParameterSpec("secp384r1")); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/inventory-curves] + ecKpg2.generateKeyPair(); + + KeyPairGenerator ecKpg3 = KeyPairGenerator.getInstance("EC"); + ecKpg3.initialize(new ECGenParameterSpec("secp521r1")); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/inventory-curves] + ecKpg3.generateKeyPair(); + + KeyPairGenerator ecKpg4 = KeyPairGenerator.getInstance("EC"); + ecKpg4.initialize(new ECGenParameterSpec("secp256k1")); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/inventory-curves] + ecKpg4.generateKeyPair(); + + // Curve25519/448 via KeyPairGenerator + KeyPairGenerator x25519Kpg = KeyPairGenerator.getInstance("X25519"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-curves] + x25519Kpg.generateKeyPair(); + + KeyPairGenerator x448Kpg = KeyPairGenerator.getInstance("X448"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-curves] + x448Kpg.generateKeyPair(); + + // Ed25519/Ed448 curves + KeyPairGenerator ed25519Kpg = KeyPairGenerator.getInstance("Ed25519"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-curves] + ed25519Kpg.generateKeyPair(); + + KeyPairGenerator ed448Kpg = KeyPairGenerator.getInstance("Ed448"); // $ Alert[java/quantum/examples/demo/quantum-vulnerable-curve] Alert[java/quantum/examples/demo/quantum-vulnerable-algorithm] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-curves] + ed448Kpg.generateKeyPair(); + } + + // ================================================================ + // INSECURE CIPHERS + // ================================================================ + + public void insecureCiphers() throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // DES (insecure) + Cipher desCipher = Cipher.getInstance("DES"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + KeyGenerator desKg = KeyGenerator.getInstance("DES"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + SecretKey desKey = desKg.generateKey(); + desCipher.init(Cipher.ENCRYPT_MODE, desKey); + byte[] desEncrypted = desCipher.doFinal(data); + + // DESede / Triple DES (insecure) + Cipher desedeCipher = Cipher.getInstance("DESede"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + KeyGenerator desedeKg = KeyGenerator.getInstance("DESede"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + SecretKey desedeKey = desedeKg.generateKey(); + desedeCipher.init(Cipher.ENCRYPT_MODE, desedeKey); + byte[] desedeEncrypted = desedeCipher.doFinal(data); + + // Blowfish (insecure) + Cipher blowfishCipher = Cipher.getInstance("Blowfish"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + KeyGenerator blowfishKg = KeyGenerator.getInstance("Blowfish"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + SecretKey blowfishKey = blowfishKg.generateKey(); + blowfishCipher.init(Cipher.ENCRYPT_MODE, blowfishKey); + byte[] blowfishEncrypted = blowfishCipher.doFinal(data); + + // IDEA (insecure) + Cipher ideaCipher = Cipher.getInstance("IDEA"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + KeyGenerator ideaKg = KeyGenerator.getInstance("IDEA"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + SecretKey ideaKey = ideaKg.generateKey(); + ideaCipher.init(Cipher.ENCRYPT_MODE, ideaKey); + byte[] ideaEncrypted = ideaCipher.doFinal(data); + + // SEED (insecure) + Cipher seedCipher = Cipher.getInstance("SEED"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + KeyGenerator seedKg = KeyGenerator.getInstance("SEED"); // $ Alert[java/quantum/examples/demo/insecure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + SecretKey seedKey = seedKg.generateKey(); + seedCipher.init(Cipher.ENCRYPT_MODE, seedKey); + byte[] seedEncrypted = seedCipher.doFinal(data); + } + + // ================================================================ + // INSECURE BLOCK MODES + // ================================================================ + + public void insecureBlockModes() throws Exception { + SecretKey aesKey = KeyGenerator.getInstance("AES").generateKey(); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + byte[] data = "Sensitive Data".getBytes(); + + // ECB mode (insecure) + Cipher ecbCipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); // $ Alert[java/quantum/examples/demo/insecure-block-mode] Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + ecbCipher.init(Cipher.ENCRYPT_MODE, aesKey); + byte[] ecbEncrypted = ecbCipher.doFinal(data); + + // CFB mode (insecure) + Cipher cfbCipher = Cipher.getInstance("AES/CFB/NoPadding"); // $ Alert[java/quantum/examples/demo/insecure-block-mode] Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + cfbCipher.init(Cipher.ENCRYPT_MODE, aesKey); + byte[] cfbEncrypted = cfbCipher.doFinal(data); + + // OFB mode (insecure) + Cipher ofbCipher = Cipher.getInstance("AES/OFB/NoPadding"); // $ Alert[java/quantum/examples/demo/insecure-block-mode] Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + ofbCipher.init(Cipher.ENCRYPT_MODE, aesKey); + byte[] ofbEncrypted = ofbCipher.doFinal(data); + } + + // ================================================================ + // INSECURE HASH + // ================================================================ + + public void insecureHash() throws Exception { + // SHA-1 (insecure) + MessageDigest sha1 = MessageDigest.getInstance("SHA-1"); // $ Alert[java/quantum/examples/demo/insecure-hash] Alert[java/quantum/examples/demo/inventory-hashes] + byte[] sha1Digest = sha1.digest("data".getBytes()); + } + + // ================================================================ + // SECURE & QUANTUM-PROOF CIPHERS (should NOT trigger insecure/QV alerts) + // ================================================================ + + public void secureCiphers() throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // AES-128 GCM (secure) + KeyGenerator aesKg128 = KeyGenerator.getInstance("AES"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + aesKg128.init(128); + SecretKey aes128Key = aesKg128.generateKey(); // $ Alert[java/quantum/examples/demo/inventory-key-sizes] + Cipher aes128Gcm = Cipher.getInstance("AES/GCM/NoPadding"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + aes128Gcm.init(Cipher.ENCRYPT_MODE, aes128Key); + byte[] aes128Encrypted = aes128Gcm.doFinal(data); + + // AES-192 GCM (secure) + KeyGenerator aesKg192 = KeyGenerator.getInstance("AES"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + aesKg192.init(192); + SecretKey aes192Key = aesKg192.generateKey(); // $ Alert[java/quantum/examples/demo/inventory-key-sizes] + Cipher aes192Gcm = Cipher.getInstance("AES/GCM/NoPadding"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + aes192Gcm.init(Cipher.ENCRYPT_MODE, aes192Key); + byte[] aes192Encrypted = aes192Gcm.doFinal(data); + + // AES-256 GCM (secure) + KeyGenerator aesKg256 = KeyGenerator.getInstance("AES"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + aesKg256.init(256); + SecretKey aes256Key = aesKg256.generateKey(); // $ Alert[java/quantum/examples/demo/inventory-key-sizes] + Cipher aes256Gcm = Cipher.getInstance("AES/GCM/NoPadding"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + aes256Gcm.init(Cipher.ENCRYPT_MODE, aes256Key); + byte[] aes256Encrypted = aes256Gcm.doFinal(data); + + // ChaCha20 (secure) + Cipher chacha20 = Cipher.getInstance("ChaCha20"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] + // ChaCha20 key is always 256 bits + + // AES CBC (secure cipher, but mode/padding is separate concern) + Cipher aesCbc = Cipher.getInstance("AES/CBC/PKCS5Padding"); // $ Alert[java/quantum/examples/demo/secure-cipher] Alert[java/quantum/examples/demo/inventory-algorithms] Alert[java/quantum/examples/demo/inventory-modes] Alert[java/quantum/examples/demo/inventory-padding] + aesCbc.init(Cipher.ENCRYPT_MODE, aes128Key); + byte[] aesCbcEncrypted = aesCbc.doFinal(data); + } + + // ================================================================ + // SECURE & QUANTUM-PROOF HASHES (should NOT trigger insecure alerts) + // ================================================================ + + public void secureHashes() throws Exception { + // SHA-256 (secure) + MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); // $ Alert[java/quantum/examples/demo/secure-hash] Alert[java/quantum/examples/demo/inventory-hashes] + byte[] sha256Digest = sha256.digest("data".getBytes()); + + // SHA-384 (secure) + MessageDigest sha384 = MessageDigest.getInstance("SHA-384"); // $ Alert[java/quantum/examples/demo/secure-hash] Alert[java/quantum/examples/demo/inventory-hashes] + byte[] sha384Digest = sha384.digest("data".getBytes()); + + // SHA-512 (secure) + MessageDigest sha512 = MessageDigest.getInstance("SHA-512"); // $ Alert[java/quantum/examples/demo/secure-hash] Alert[java/quantum/examples/demo/inventory-hashes] + byte[] sha512Digest = sha512.digest("data".getBytes()); + + // SHA3-256 (secure) + MessageDigest sha3_256 = MessageDigest.getInstance("SHA3-256"); // $ Alert[java/quantum/examples/demo/secure-hash] Alert[java/quantum/examples/demo/inventory-hashes] + byte[] sha3_256Digest = sha3_256.digest("data".getBytes()); + + // SHA3-512 (secure) + MessageDigest sha3_512 = MessageDigest.getInstance("SHA3-512"); // $ Alert[java/quantum/examples/demo/secure-hash] Alert[java/quantum/examples/demo/inventory-hashes] + byte[] sha3_512Digest = sha3_512.digest("data".getBytes()); + } + + // ================================================================ + // KNOWN UNKNOWNS — Algorithm from remote/external source + // ================================================================ + + public void unknownAlgorithmFromRemoteSource(HttpServletRequest request) throws Exception { + // Remote source: algorithm from HTTP request parameter + String algo = request.getParameter("algo"); + Cipher remoteCipher = Cipher.getInstance(algo); + } + + public void unknownAlgorithmFromParameter(String algo) throws Exception { + // Parameter source: algorithm from method parameter + Cipher paramCipher = Cipher.getInstance(algo); + } +} diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.expected new file mode 100644 index 000000000000..428060ef7f76 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.expected @@ -0,0 +1,5 @@ +| CryptoClassificationTest.java:27:47:27:68 | KeyOperationAlgorithm | Insecure block mode $@ detected. | CryptoClassificationTest.java:27:47:27:68 | ModeOfOperation | ECB | +| CryptoClassificationTest.java:32:51:32:89 | KeyOperationAlgorithm | Insecure block mode $@ detected. | CryptoClassificationTest.java:32:51:32:89 | ModeOfOperation | ECB | +| CryptoClassificationTest.java:263:47:263:68 | KeyOperationAlgorithm | Insecure block mode $@ detected. | CryptoClassificationTest.java:263:47:263:68 | ModeOfOperation | ECB | +| CryptoClassificationTest.java:268:47:268:65 | KeyOperationAlgorithm | Insecure block mode $@ detected. | CryptoClassificationTest.java:268:47:268:65 | ModeOfOperation | CFB | +| CryptoClassificationTest.java:273:47:273:65 | KeyOperationAlgorithm | Insecure block mode $@ detected. | CryptoClassificationTest.java:273:47:273:65 | ModeOfOperation | OFB | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.qlref new file mode 100644 index 000000000000..91d81406b857 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureBlockMode.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InsecureBlockMode.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.expected new file mode 100644 index 000000000000..674ab02eb224 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.expected @@ -0,0 +1,10 @@ +| CryptoClassificationTest.java:219:47:219:51 | KeyOperationAlgorithm | Insecure symmetric cipher: DES. | +| CryptoClassificationTest.java:220:55:220:59 | KeyOperationAlgorithm | Insecure symmetric cipher: DES. | +| CryptoClassificationTest.java:226:50:226:57 | KeyOperationAlgorithm | Insecure symmetric cipher: TripleDES. | +| CryptoClassificationTest.java:227:58:227:65 | KeyOperationAlgorithm | Insecure symmetric cipher: TripleDES. | +| CryptoClassificationTest.java:233:52:233:61 | KeyOperationAlgorithm | Insecure symmetric cipher: Blowfish. | +| CryptoClassificationTest.java:234:60:234:69 | KeyOperationAlgorithm | Insecure symmetric cipher: Blowfish. | +| CryptoClassificationTest.java:240:48:240:53 | KeyOperationAlgorithm | Insecure symmetric cipher: IDEA. | +| CryptoClassificationTest.java:241:56:241:61 | KeyOperationAlgorithm | Insecure symmetric cipher: IDEA. | +| CryptoClassificationTest.java:247:48:247:53 | KeyOperationAlgorithm | Insecure symmetric cipher: SEED. | +| CryptoClassificationTest.java:248:56:248:61 | KeyOperationAlgorithm | Insecure symmetric cipher: SEED. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.qlref new file mode 100644 index 000000000000..00f9623f2881 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureCipher.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InsecureCipher.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.expected new file mode 100644 index 000000000000..bfc9325445dc --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.expected @@ -0,0 +1 @@ +| CryptoClassificationTest.java:284:56:284:62 | HashAlgorithm | Insecure hash algorithm: SHA1. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.qlref new file mode 100644 index 000000000000..6dfcbead13b6 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InsecureHash.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InsecureHash.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.expected new file mode 100644 index 000000000000..7b102158d2d6 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.expected @@ -0,0 +1,57 @@ +| CryptoClassificationTest.java:27:47:27:68 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:28:74:28:78 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:32:51:32:89 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:33:78:33:82 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:37:50:37:64 | KeyOperationAlgorithm | Algorithm: DSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:38:54:38:58 | KeyOperationAlgorithm | Algorithm: DSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:43:52:43:68 | KeyOperationAlgorithm | Algorithm: ECDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:49:54:49:62 | KeyOperationAlgorithm | Algorithm: EDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:50:58:50:66 | KeyOperationAlgorithm | Algorithm: EDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:55:52:55:58 | KeyOperationAlgorithm | Algorithm: EDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:56:56:56:62 | KeyOperationAlgorithm | Algorithm: EDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:69:53:69:64 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:73:64:73:68 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:88:49:88:63 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:91:49:91:63 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:94:49:94:63 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:105:49:105:70 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:108:49:108:70 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:111:49:111:70 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:120:54:120:57 | KeyAgreementAlgorithm | Algorithm: DH [quantum-vulnerable]. | +| CryptoClassificationTest.java:123:56:123:61 | KeyAgreementAlgorithm | Algorithm: ECDH [quantum-vulnerable]. | +| CryptoClassificationTest.java:126:57:126:63 | KeyAgreementAlgorithm | Algorithm: ECMQV [quantum-vulnerable]. | +| CryptoClassificationTest.java:135:65:135:69 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:139:65:139:69 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:143:65:143:69 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:147:65:147:69 | KeyOperationAlgorithm | Algorithm: RSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:152:65:152:69 | KeyOperationAlgorithm | Algorithm: DSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:156:65:156:69 | KeyOperationAlgorithm | Algorithm: DSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:161:64:161:67 | KeyAgreementAlgorithm | Algorithm: DH [quantum-vulnerable]. | +| CryptoClassificationTest.java:165:64:165:67 | KeyAgreementAlgorithm | Algorithm: DH [quantum-vulnerable]. | +| CryptoClassificationTest.java:169:64:169:67 | KeyAgreementAlgorithm | Algorithm: DH [quantum-vulnerable]. | +| CryptoClassificationTest.java:197:67:197:74 | KeyAgreementAlgorithm | Algorithm: X25519 [quantum-vulnerable]. | +| CryptoClassificationTest.java:200:65:200:70 | KeyAgreementAlgorithm | Algorithm: X448 [quantum-vulnerable]. | +| CryptoClassificationTest.java:204:68:204:76 | KeyOperationAlgorithm | Algorithm: EDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:207:66:207:72 | KeyOperationAlgorithm | Algorithm: EDSA [quantum-vulnerable]. | +| CryptoClassificationTest.java:219:47:219:51 | KeyOperationAlgorithm | Algorithm: DES [insecure]. | +| CryptoClassificationTest.java:220:55:220:59 | KeyOperationAlgorithm | Algorithm: DES [insecure]. | +| CryptoClassificationTest.java:226:50:226:57 | KeyOperationAlgorithm | Algorithm: TripleDES [insecure]. | +| CryptoClassificationTest.java:227:58:227:65 | KeyOperationAlgorithm | Algorithm: TripleDES [insecure]. | +| CryptoClassificationTest.java:233:52:233:61 | KeyOperationAlgorithm | Algorithm: Blowfish [insecure]. | +| CryptoClassificationTest.java:234:60:234:69 | KeyOperationAlgorithm | Algorithm: Blowfish [insecure]. | +| CryptoClassificationTest.java:240:48:240:53 | KeyOperationAlgorithm | Algorithm: IDEA [insecure]. | +| CryptoClassificationTest.java:241:56:241:61 | KeyOperationAlgorithm | Algorithm: IDEA [insecure]. | +| CryptoClassificationTest.java:247:48:247:53 | KeyOperationAlgorithm | Algorithm: SEED [insecure]. | +| CryptoClassificationTest.java:248:56:248:61 | KeyOperationAlgorithm | Algorithm: SEED [insecure]. | +| CryptoClassificationTest.java:259:53:259:57 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:263:47:263:68 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:268:47:268:65 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:273:47:273:65 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:296:58:296:62 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:299:47:299:65 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:304:58:304:62 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:307:47:307:65 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:312:58:312:62 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:315:47:315:65 | KeyOperationAlgorithm | Algorithm: AES [secure]. | +| CryptoClassificationTest.java:320:46:320:55 | KeyOperationAlgorithm | Algorithm: ChaCha20 [secure]. | +| CryptoClassificationTest.java:324:44:324:65 | KeyOperationAlgorithm | Algorithm: AES [secure]. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.qlref new file mode 100644 index 000000000000..a2b93b1b8c75 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryAlgorithms.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InventoryAlgorithms.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.expected new file mode 100644 index 000000000000..14117de0d728 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.expected @@ -0,0 +1,10 @@ +| CryptoClassificationTest.java:50:58:50:66 | EllipticCurve | Elliptic curve: Ed25519 (CURVE25519 family, 255-bit). | +| CryptoClassificationTest.java:56:56:56:62 | EllipticCurve | Elliptic curve: Ed448 (CURVE448 family, 448-bit). | +| CryptoClassificationTest.java:181:50:181:60 | EllipticCurve | Elliptic curve: secp256r1 (SEC family, 256-bit). | +| CryptoClassificationTest.java:185:50:185:60 | EllipticCurve | Elliptic curve: secp384r1 (SEC family, 384-bit). | +| CryptoClassificationTest.java:189:50:189:60 | EllipticCurve | Elliptic curve: secp521r1 (SEC family, 521-bit). | +| CryptoClassificationTest.java:193:50:193:60 | EllipticCurve | Elliptic curve: secp256k1 (SEC family, 256-bit). | +| CryptoClassificationTest.java:197:67:197:74 | EllipticCurve | Elliptic curve: X25519 (CURVE25519 family, 255-bit). | +| CryptoClassificationTest.java:200:65:200:70 | EllipticCurve | Elliptic curve: X448 (CURVE448 family, 448-bit). | +| CryptoClassificationTest.java:204:68:204:76 | EllipticCurve | Elliptic curve: Ed25519 (CURVE25519 family, 255-bit). | +| CryptoClassificationTest.java:207:66:207:72 | EllipticCurve | Elliptic curve: Ed448 (CURVE448 family, 448-bit). | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.qlref new file mode 100644 index 000000000000..627648df1489 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryCurves.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InventoryCurves.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.expected new file mode 100644 index 000000000000..c2f6387e60fd --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.expected @@ -0,0 +1,17 @@ +| CryptoClassificationTest.java:32:51:32:89 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:37:50:37:64 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:43:52:43:68 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:71:17:71:25 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:71:36:71:59 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:88:49:88:63 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:91:49:91:63 | HashAlgorithm | Hash algorithm: SHA2 (384-bit digest). | +| CryptoClassificationTest.java:94:49:94:63 | HashAlgorithm | Hash algorithm: SHA2 (512-bit digest). | +| CryptoClassificationTest.java:105:49:105:70 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:108:49:108:70 | HashAlgorithm | Hash algorithm: SHA2 (384-bit digest). | +| CryptoClassificationTest.java:111:49:111:70 | HashAlgorithm | Hash algorithm: SHA2 (512-bit digest). | +| CryptoClassificationTest.java:284:56:284:62 | HashAlgorithm | Hash algorithm: SHA1 (160-bit digest). | +| CryptoClassificationTest.java:335:58:335:66 | HashAlgorithm | Hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:339:58:339:66 | HashAlgorithm | Hash algorithm: SHA2 (384-bit digest). | +| CryptoClassificationTest.java:343:58:343:66 | HashAlgorithm | Hash algorithm: SHA2 (512-bit digest). | +| CryptoClassificationTest.java:347:60:347:69 | HashAlgorithm | Hash algorithm: SHA3 (256-bit digest). | +| CryptoClassificationTest.java:351:60:351:69 | HashAlgorithm | Hash algorithm: SHA3 (512-bit digest). | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.qlref new file mode 100644 index 000000000000..fd878ae78338 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryHashes.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InventoryHashes.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.expected new file mode 100644 index 000000000000..9cb491a6dcdd --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.expected @@ -0,0 +1,13 @@ +| CryptoClassificationTest.java:75:28:75:51 | KeyGeneration | Key creation with algorithm $@ using 2048-bit key. | CryptoClassificationTest.java:73:64:73:68 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:137:9:137:33 | KeyGeneration | Key creation with algorithm $@ using 1024-bit key. | CryptoClassificationTest.java:135:65:135:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:141:9:141:33 | KeyGeneration | Key creation with algorithm $@ using 2048-bit key. | CryptoClassificationTest.java:139:65:139:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:145:9:145:33 | KeyGeneration | Key creation with algorithm $@ using 3072-bit key. | CryptoClassificationTest.java:143:65:143:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:149:9:149:33 | KeyGeneration | Key creation with algorithm $@ using 4096-bit key. | CryptoClassificationTest.java:147:65:147:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:154:9:154:33 | KeyGeneration | Key creation with algorithm $@ using 1024-bit key. | CryptoClassificationTest.java:152:65:152:69 | KeyOperationAlgorithm | DSA | +| CryptoClassificationTest.java:158:9:158:33 | KeyGeneration | Key creation with algorithm $@ using 2048-bit key. | CryptoClassificationTest.java:156:65:156:69 | KeyOperationAlgorithm | DSA | +| CryptoClassificationTest.java:163:9:163:32 | KeyGeneration | Key creation with algorithm $@ using 1024-bit key. | CryptoClassificationTest.java:161:64:161:67 | KeyAgreementAlgorithm | DH | +| CryptoClassificationTest.java:167:9:167:32 | KeyGeneration | Key creation with algorithm $@ using 2048-bit key. | CryptoClassificationTest.java:165:64:165:67 | KeyAgreementAlgorithm | DH | +| CryptoClassificationTest.java:171:9:171:32 | KeyGeneration | Key creation with algorithm $@ using 4096-bit key. | CryptoClassificationTest.java:169:64:169:67 | KeyAgreementAlgorithm | DH | +| CryptoClassificationTest.java:298:31:298:52 | KeyGeneration | Key creation with algorithm $@ using 128-bit key. | CryptoClassificationTest.java:296:58:296:62 | KeyOperationAlgorithm | AES | +| CryptoClassificationTest.java:306:31:306:52 | KeyGeneration | Key creation with algorithm $@ using 192-bit key. | CryptoClassificationTest.java:304:58:304:62 | KeyOperationAlgorithm | AES | +| CryptoClassificationTest.java:314:31:314:52 | KeyGeneration | Key creation with algorithm $@ using 256-bit key. | CryptoClassificationTest.java:312:58:312:62 | KeyOperationAlgorithm | AES | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.qlref new file mode 100644 index 000000000000..d105d954b4b2 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryKeySizes.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InventoryKeySizes.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.expected new file mode 100644 index 000000000000..15002624c61f --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.expected @@ -0,0 +1,9 @@ +| CryptoClassificationTest.java:27:47:27:68 | ModeOfOperation | Mode of operation: ECB. | +| CryptoClassificationTest.java:32:51:32:89 | ModeOfOperation | Mode of operation: ECB. | +| CryptoClassificationTest.java:263:47:263:68 | ModeOfOperation | Mode of operation: ECB. | +| CryptoClassificationTest.java:268:47:268:65 | ModeOfOperation | Mode of operation: CFB. | +| CryptoClassificationTest.java:273:47:273:65 | ModeOfOperation | Mode of operation: OFB. | +| CryptoClassificationTest.java:299:47:299:65 | ModeOfOperation | Mode of operation: GCM. | +| CryptoClassificationTest.java:307:47:307:65 | ModeOfOperation | Mode of operation: GCM. | +| CryptoClassificationTest.java:315:47:315:65 | ModeOfOperation | Mode of operation: GCM. | +| CryptoClassificationTest.java:324:44:324:65 | ModeOfOperation | Mode of operation: CBC. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.qlref new file mode 100644 index 000000000000..fd0cdaef1645 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryModes.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InventoryModes.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.expected new file mode 100644 index 000000000000..58bf1d9296a5 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.expected @@ -0,0 +1,13 @@ +| CryptoClassificationTest.java:27:47:27:68 | PaddingAlgorithm | Padding scheme: PKCS1_v1_5. | +| CryptoClassificationTest.java:32:51:32:89 | PaddingAlgorithm | Padding scheme: OAEP. | +| CryptoClassificationTest.java:69:53:69:64 | PaddingAlgorithm | Padding scheme: PSS. | +| CryptoClassificationTest.java:105:49:105:70 | PaddingAlgorithm | Padding scheme: PSS. | +| CryptoClassificationTest.java:108:49:108:70 | PaddingAlgorithm | Padding scheme: PSS. | +| CryptoClassificationTest.java:111:49:111:70 | PaddingAlgorithm | Padding scheme: PSS. | +| CryptoClassificationTest.java:263:47:263:68 | PaddingAlgorithm | Padding scheme: PKCS7. | +| CryptoClassificationTest.java:268:47:268:65 | PaddingAlgorithm | Padding scheme: UnknownPadding. | +| CryptoClassificationTest.java:273:47:273:65 | PaddingAlgorithm | Padding scheme: UnknownPadding. | +| CryptoClassificationTest.java:299:47:299:65 | PaddingAlgorithm | Padding scheme: UnknownPadding. | +| CryptoClassificationTest.java:307:47:307:65 | PaddingAlgorithm | Padding scheme: UnknownPadding. | +| CryptoClassificationTest.java:315:47:315:65 | PaddingAlgorithm | Padding scheme: UnknownPadding. | +| CryptoClassificationTest.java:324:44:324:65 | PaddingAlgorithm | Padding scheme: PKCS7. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.qlref new file mode 100644 index 000000000000..8286007fd21a --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/InventoryPadding.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/InventoryPadding.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.expected new file mode 100644 index 000000000000..ed9ea3858e34 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.expected @@ -0,0 +1 @@ +| CryptoClassificationTest.java:69:53:69:64 | KeyOperationAlgorithm | JWS PS256 protocol detected (RSA-PSS + SHA-256). | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.qlref new file mode 100644 index 000000000000..c3bfcfdb0d64 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_PS.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.qlref new file mode 100644 index 000000000000..9bfe34965323 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolJWS_RS.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.expected new file mode 100644 index 000000000000..bc9f6313883a --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.expected @@ -0,0 +1 @@ +| CryptoClassificationTest.java:32:51:32:89 | KeyOperationAlgorithm | RSA-OAEP protocol detected with OAEP padding $@. | CryptoClassificationTest.java:32:51:32:89 | PaddingAlgorithm | PaddingAlgorithm | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.qlref new file mode 100644 index 000000000000..f1c56f3325bb --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_OAEP.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.expected new file mode 100644 index 000000000000..e272ae7e53d2 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.expected @@ -0,0 +1 @@ +| CryptoClassificationTest.java:27:47:27:68 | KeyOperationAlgorithm | RSA PKCS#1 v1.5 protocol detected: explicit PKCS#1 v1.5 padding. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.qlref new file mode 100644 index 000000000000..c2a600e9f3e1 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PKCS1v15.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.expected new file mode 100644 index 000000000000..d6819f2456da --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.expected @@ -0,0 +1,4 @@ +| CryptoClassificationTest.java:69:53:69:64 | KeyOperationAlgorithm | RSA-PSS (RSASSA-PSS) protocol detected with PSS padding $@. | CryptoClassificationTest.java:69:53:69:64 | PaddingAlgorithm | PaddingAlgorithm | +| CryptoClassificationTest.java:105:49:105:70 | KeyOperationAlgorithm | RSA-PSS (RSASSA-PSS) protocol detected with PSS padding $@. | CryptoClassificationTest.java:105:49:105:70 | PaddingAlgorithm | PaddingAlgorithm | +| CryptoClassificationTest.java:108:49:108:70 | KeyOperationAlgorithm | RSA-PSS (RSASSA-PSS) protocol detected with PSS padding $@. | CryptoClassificationTest.java:108:49:108:70 | PaddingAlgorithm | PaddingAlgorithm | +| CryptoClassificationTest.java:111:49:111:70 | KeyOperationAlgorithm | RSA-PSS (RSASSA-PSS) protocol detected with PSS padding $@. | CryptoClassificationTest.java:111:49:111:70 | PaddingAlgorithm | PaddingAlgorithm | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.qlref new file mode 100644 index 000000000000..01c8e23b6a70 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/ProtocolRSA_PSS.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.expected new file mode 100644 index 000000000000..599015900258 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.expected @@ -0,0 +1,35 @@ +| CryptoClassificationTest.java:27:47:27:68 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:28:74:28:78 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:32:51:32:89 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:33:78:33:82 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:37:50:37:64 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: DSA. | +| CryptoClassificationTest.java:38:54:38:58 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: DSA. | +| CryptoClassificationTest.java:43:52:43:68 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: ECDSA. | +| CryptoClassificationTest.java:49:54:49:62 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: EDSA. | +| CryptoClassificationTest.java:50:58:50:66 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: EDSA. | +| CryptoClassificationTest.java:55:52:55:58 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: EDSA. | +| CryptoClassificationTest.java:56:56:56:62 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: EDSA. | +| CryptoClassificationTest.java:69:53:69:64 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:73:64:73:68 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:88:49:88:63 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:91:49:91:63 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:94:49:94:63 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:105:49:105:70 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:108:49:108:70 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:111:49:111:70 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:120:54:120:57 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: DH. | +| CryptoClassificationTest.java:123:56:123:61 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: ECDH. | +| CryptoClassificationTest.java:126:57:126:63 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: ECMQV. | +| CryptoClassificationTest.java:135:65:135:69 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:139:65:139:69 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:143:65:143:69 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:147:65:147:69 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: RSA. | +| CryptoClassificationTest.java:152:65:152:69 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: DSA. | +| CryptoClassificationTest.java:156:65:156:69 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: DSA. | +| CryptoClassificationTest.java:161:64:161:67 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: DH. | +| CryptoClassificationTest.java:165:64:165:67 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: DH. | +| CryptoClassificationTest.java:169:64:169:67 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: DH. | +| CryptoClassificationTest.java:197:67:197:74 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: X25519. | +| CryptoClassificationTest.java:200:65:200:70 | KeyAgreementAlgorithm | Quantum-vulnerable key agreement algorithm: X448. | +| CryptoClassificationTest.java:204:68:204:76 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: EDSA. | +| CryptoClassificationTest.java:207:66:207:72 | KeyOperationAlgorithm | Quantum-vulnerable key operation algorithm: EDSA. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.qlref new file mode 100644 index 000000000000..56cb0797c9c0 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableAlgorithm.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.expected new file mode 100644 index 000000000000..4db07ccfd143 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.expected @@ -0,0 +1,10 @@ +| CryptoClassificationTest.java:50:58:50:66 | EllipticCurve | Quantum-vulnerable elliptic curve: Ed25519 (CURVE25519 family). | +| CryptoClassificationTest.java:56:56:56:62 | EllipticCurve | Quantum-vulnerable elliptic curve: Ed448 (CURVE448 family). | +| CryptoClassificationTest.java:181:50:181:60 | EllipticCurve | Quantum-vulnerable elliptic curve: secp256r1 (SEC family). | +| CryptoClassificationTest.java:185:50:185:60 | EllipticCurve | Quantum-vulnerable elliptic curve: secp384r1 (SEC family). | +| CryptoClassificationTest.java:189:50:189:60 | EllipticCurve | Quantum-vulnerable elliptic curve: secp521r1 (SEC family). | +| CryptoClassificationTest.java:193:50:193:60 | EllipticCurve | Quantum-vulnerable elliptic curve: secp256k1 (SEC family). | +| CryptoClassificationTest.java:197:67:197:74 | EllipticCurve | Quantum-vulnerable elliptic curve: X25519 (CURVE25519 family). | +| CryptoClassificationTest.java:200:65:200:70 | EllipticCurve | Quantum-vulnerable elliptic curve: X448 (CURVE448 family). | +| CryptoClassificationTest.java:204:68:204:76 | EllipticCurve | Quantum-vulnerable elliptic curve: Ed25519 (CURVE25519 family). | +| CryptoClassificationTest.java:207:66:207:72 | EllipticCurve | Quantum-vulnerable elliptic curve: Ed448 (CURVE448 family). | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.qlref new file mode 100644 index 000000000000..1df5503913f3 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableCurve.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/QuantumVulnerableCurve.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.expected new file mode 100644 index 000000000000..0a8470854ea8 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.expected @@ -0,0 +1,10 @@ +| CryptoClassificationTest.java:75:28:75:51 | KeyGeneration | Quantum-vulnerable key size (2048 bits) for algorithm $@. | CryptoClassificationTest.java:73:64:73:68 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:137:9:137:33 | KeyGeneration | Quantum-vulnerable key size (1024 bits) for algorithm $@. | CryptoClassificationTest.java:135:65:135:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:141:9:141:33 | KeyGeneration | Quantum-vulnerable key size (2048 bits) for algorithm $@. | CryptoClassificationTest.java:139:65:139:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:145:9:145:33 | KeyGeneration | Quantum-vulnerable key size (3072 bits) for algorithm $@. | CryptoClassificationTest.java:143:65:143:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:149:9:149:33 | KeyGeneration | Quantum-vulnerable key size (4096 bits) for algorithm $@. | CryptoClassificationTest.java:147:65:147:69 | KeyOperationAlgorithm | RSA | +| CryptoClassificationTest.java:154:9:154:33 | KeyGeneration | Quantum-vulnerable key size (1024 bits) for algorithm $@. | CryptoClassificationTest.java:152:65:152:69 | KeyOperationAlgorithm | DSA | +| CryptoClassificationTest.java:158:9:158:33 | KeyGeneration | Quantum-vulnerable key size (2048 bits) for algorithm $@. | CryptoClassificationTest.java:156:65:156:69 | KeyOperationAlgorithm | DSA | +| CryptoClassificationTest.java:163:9:163:32 | KeyGeneration | Quantum-vulnerable key size (1024 bits) for algorithm $@. | CryptoClassificationTest.java:161:64:161:67 | KeyAgreementAlgorithm | DH | +| CryptoClassificationTest.java:167:9:167:32 | KeyGeneration | Quantum-vulnerable key size (2048 bits) for algorithm $@. | CryptoClassificationTest.java:165:64:165:67 | KeyAgreementAlgorithm | DH | +| CryptoClassificationTest.java:171:9:171:32 | KeyGeneration | Quantum-vulnerable key size (4096 bits) for algorithm $@. | CryptoClassificationTest.java:169:64:169:67 | KeyAgreementAlgorithm | DH | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.qlref new file mode 100644 index 000000000000..d1c959e40ce3 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerableKeySize.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.expected new file mode 100644 index 000000000000..973027ddb6d8 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.expected @@ -0,0 +1,6 @@ +| CryptoClassificationTest.java:27:47:27:68 | PaddingAlgorithm | Quantum-vulnerable padding scheme: PKCS1_v1_5. | +| CryptoClassificationTest.java:32:51:32:89 | PaddingAlgorithm | Quantum-vulnerable OAEP padding scheme detected. | +| CryptoClassificationTest.java:69:53:69:64 | PaddingAlgorithm | Quantum-vulnerable PSS padding scheme detected. | +| CryptoClassificationTest.java:105:49:105:70 | PaddingAlgorithm | Quantum-vulnerable PSS padding scheme detected. | +| CryptoClassificationTest.java:108:49:108:70 | PaddingAlgorithm | Quantum-vulnerable PSS padding scheme detected. | +| CryptoClassificationTest.java:111:49:111:70 | PaddingAlgorithm | Quantum-vulnerable PSS padding scheme detected. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.qlref new file mode 100644 index 000000000000..8a4d4c9c232b --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/QuantumVulnerablePadding.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.expected new file mode 100644 index 000000000000..cea0223ccc5f --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.expected @@ -0,0 +1,12 @@ +| CryptoClassificationTest.java:259:53:259:57 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:263:47:263:68 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:268:47:268:65 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:273:47:273:65 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:296:58:296:62 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:299:47:299:65 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:304:58:304:62 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:307:47:307:65 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:312:58:312:62 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:315:47:315:65 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | +| CryptoClassificationTest.java:320:46:320:55 | KeyOperationAlgorithm | Secure symmetric cipher: ChaCha20 (256-bit key). | +| CryptoClassificationTest.java:324:44:324:65 | KeyOperationAlgorithm | Secure symmetric cipher: AES. | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.qlref new file mode 100644 index 000000000000..b408cb446f9e --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureCipher.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/SecureCipher.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.expected new file mode 100644 index 000000000000..ed502fea5828 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.expected @@ -0,0 +1,16 @@ +| CryptoClassificationTest.java:32:51:32:89 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:37:50:37:64 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:43:52:43:68 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:71:17:71:25 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:71:36:71:59 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:88:49:88:63 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:91:49:91:63 | HashAlgorithm | Secure hash algorithm: SHA2 (384-bit digest). | +| CryptoClassificationTest.java:94:49:94:63 | HashAlgorithm | Secure hash algorithm: SHA2 (512-bit digest). | +| CryptoClassificationTest.java:105:49:105:70 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:108:49:108:70 | HashAlgorithm | Secure hash algorithm: SHA2 (384-bit digest). | +| CryptoClassificationTest.java:111:49:111:70 | HashAlgorithm | Secure hash algorithm: SHA2 (512-bit digest). | +| CryptoClassificationTest.java:335:58:335:66 | HashAlgorithm | Secure hash algorithm: SHA2 (256-bit digest). | +| CryptoClassificationTest.java:339:58:339:66 | HashAlgorithm | Secure hash algorithm: SHA2 (384-bit digest). | +| CryptoClassificationTest.java:343:58:343:66 | HashAlgorithm | Secure hash algorithm: SHA2 (512-bit digest). | +| CryptoClassificationTest.java:347:60:347:69 | HashAlgorithm | Secure hash algorithm: SHA3 (256-bit digest). | +| CryptoClassificationTest.java:351:60:351:69 | HashAlgorithm | Secure hash algorithm: SHA3 (512-bit digest). | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.qlref new file mode 100644 index 000000000000..52a374838342 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/SecureHash.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/SecureHash.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.expected b/java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.qlref b/java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.qlref new file mode 100644 index 000000000000..5e6708eeb106 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/Demo/UnknownAlgorithmRemoteSource.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/Demo/UnknownAlgorithmRemoteSource.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql From 61ec2aaa0851ef5e670dfaa8ff0e286d5116d16a Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Mon, 23 Feb 2026 00:32:57 +0100 Subject: [PATCH 5/6] Autoformat QL files --- java/ql/lib/experimental/quantum/JCA.qll | 61 +++++++------------ .../Examples/Demo/InventoryKeySizes.ql | 3 +- .../quantum/Examples/Demo/ProtocolRSA_OAEP.ql | 3 +- .../quantum/Examples/Demo/ProtocolRSA_PSS.ql | 3 +- .../Demo/QuantumVulnerableAlgorithm.ql | 6 +- .../Examples/Demo/QuantumVulnerableKeySize.ql | 5 +- .../codeql/quantum/experimental/Model.qll | 4 +- 7 files changed, 29 insertions(+), 56 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index a5af0b9e173a..2c1db4e3abb0 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -27,10 +27,9 @@ module JCAModel { predicate cipher_names(string algo) { algo.toUpperCase() .matches([ - "AES", "AESWrap", "AESWrapPad", "ARCFOUR", "ARIA", "Blowfish", "Camellia", - "ChaCha20", "ChaCha20-Poly1305", "DES", "DESede", "DESedeWrap", "ECIES", - "PBEWith%", "RC2", "RC4", "RC5", "RSA", "Salsa20", "SEED", "Skipjack", "Idea", - "Twofish" + "AES", "AESWrap", "AESWrapPad", "ARCFOUR", "ARIA", "Blowfish", "Camellia", "ChaCha20", + "ChaCha20-Poly1305", "DES", "DESede", "DESedeWrap", "ECIES", "PBEWith%", "RC2", "RC4", + "RC5", "RSA", "Salsa20", "SEED", "Skipjack", "Idea", "Twofish" ].toUpperCase()) } @@ -204,7 +203,8 @@ module JCAModel { upper.matches("DESEDE%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or - not upper.matches("DESEDE%") and upper.matches("DES%") and + not upper.matches("DESEDE%") and + upper.matches("DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or upper = "TRIPLEDES" and @@ -1879,9 +1879,7 @@ module JCAModel { override Crypto::ModeOfOperationAlgorithmInstance getModeOfOperationAlgorithm() { none() } - override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { - result = this - } + override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { result = this } override predicate shouldHaveModeOfOperation() { none() } @@ -1984,24 +1982,16 @@ module JCAModel { } /** Gets the digest algorithm name argument (arg 0). */ - Expr getDigestAlgorithmArg() { - result = this.getArgument(0) - } + Expr getDigestAlgorithmArg() { result = this.getArgument(0) } /** Gets the MGF algorithm name argument (arg 1). */ - Expr getMgfAlgorithmArg() { - result = this.getArgument(1) - } + Expr getMgfAlgorithmArg() { result = this.getArgument(1) } /** Gets the salt length argument (arg 3). */ - Expr getSaltLengthArg() { - result = this.getArgument(3) - } + Expr getSaltLengthArg() { result = this.getArgument(3) } /** Gets the MGF parameter spec argument (arg 2), e.g., MGF1ParameterSpec.SHA256. */ - Expr getMgfSpecArg() { - result = this.getArgument(2) - } + Expr getMgfSpecArg() { result = this.getArgument(2) } } /** @@ -2011,9 +2001,7 @@ module JCAModel { */ class MGF1ParameterSpecFieldAccess extends FieldAccess { MGF1ParameterSpecFieldAccess() { - this.getField() - .getDeclaringType() - .hasQualifiedName("java.security.spec", "MGF1ParameterSpec") and + this.getField().getDeclaringType().hasQualifiedName("java.security.spec", "MGF1ParameterSpec") and this.getField().isStatic() } @@ -2042,8 +2030,7 @@ module JCAModel { * * Type resolution delegates to hash_name_to_type_known from Standardization. */ - class PSSParameterSpecDigestHashAlgorithmInstance extends Crypto::HashAlgorithmInstance - instanceof JavaConstant + class PSSParameterSpecDigestHashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof JavaConstant { PSSParameterSpecInstantiation spec; @@ -2075,8 +2062,7 @@ module JCAModel { * The field name is normalized to a standard hash algorithm name (e.g., * SHA256 -> SHA-256), then type resolution delegates to hash_name_to_type_known. */ - class PSSParameterSpecMgf1HashAlgorithmInstance extends Crypto::HashAlgorithmInstance - instanceof MGF1ParameterSpecFieldAccess + class PSSParameterSpecMgf1HashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof MGF1ParameterSpecFieldAccess { PSSParameterSpecInstantiation spec; string normalizedName; @@ -2093,13 +2079,9 @@ module JCAModel { override string getRawHashAlgorithmName() { result = super.getField().getName() } - override Crypto::THashType getHashType() { - result = hash_name_to_type_known(normalizedName, _) - } + override Crypto::THashType getHashType() { result = hash_name_to_type_known(normalizedName, _) } - override int getFixedDigestLength() { - exists(hash_name_to_type_known(normalizedName, result)) - } + override int getFixedDigestLength() { exists(hash_name_to_type_known(normalizedName, result)) } } class SignatureInitCall extends MethodCall { @@ -2119,9 +2101,11 @@ module JCAModel { */ class SignatureSetParameterCall extends MethodCall { SignatureSetParameterCall() { + this.getMethod().hasQualifiedName("java.security", "Signature", "setParameter") and this.getMethod() - .hasQualifiedName("java.security", "Signature", "setParameter") and - this.getMethod().getParameterType(0).(RefType).hasQualifiedName("java.security.spec", "AlgorithmParameterSpec") + .getParameterType(0) + .(RefType) + .hasQualifiedName("java.security.spec", "AlgorithmParameterSpec") } /** Gets the AlgorithmParameterSpec argument. */ @@ -2236,9 +2220,7 @@ module JCAModel { * Flow from `PSSParameterSpec` instantiation to `Signature.setParameter()` argument. */ module PSSSpecToSetParameterConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { - src.asExpr() instanceof PSSParameterSpecInstantiation - } + predicate isSource(DataFlow::Node src) { src.asExpr() instanceof PSSParameterSpecInstantiation } predicate isSink(DataFlow::Node sink) { exists(SignatureSetParameterCall c | sink.asExpr() = c.getParameterSpecArg()) @@ -2260,8 +2242,7 @@ module JCAModel { PSSParameterSpecInstantiation spec, SignaturePssPaddingAlgorithmInstance literal ) { exists( - SignatureSetParameterCall setParam, - SignatureGetInstanceCall getInstance, + SignatureSetParameterCall setParam, SignatureGetInstanceCall getInstance, SignatureGetInstanceAlgorithmValueConsumer consumer | consumer = literal.getConsumer() and diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql index 3a3cb2058ab9..5bfc3155fb2a 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryKeySizes.ql @@ -14,6 +14,5 @@ from Crypto::KeyCreationOperationNode keygen, Crypto::AlgorithmNode alg, int key where alg = keygen.getAKnownAlgorithm() and keygen.getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize -select keygen, - "Key creation with algorithm $@ using " + keySize.toString() + "-bit key.", alg, +select keygen, "Key creation with algorithm $@ using " + keySize.toString() + "-bit key.", alg, alg.getAlgorithmName() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql index a02fd2bb1fb2..0c55a0b22b68 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql @@ -11,8 +11,7 @@ import experimental.quantum.Language import Crypto::KeyOpAlg as KeyOpAlg -from - Crypto::KeyOperationAlgorithmNode alg, Crypto::OAEPPaddingAlgorithmNode pad +from Crypto::KeyOperationAlgorithmNode alg, Crypto::OAEPPaddingAlgorithmNode pad where alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and pad = alg.getPaddingAlgorithm() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql index 01665d7f527d..932198d9ed5d 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql @@ -11,8 +11,7 @@ import experimental.quantum.Language import Crypto::KeyOpAlg as KeyOpAlg -from - Crypto::KeyOperationAlgorithmNode alg, Crypto::PSSPaddingAlgorithmNode pss +from Crypto::KeyOperationAlgorithmNode alg, Crypto::PSSPaddingAlgorithmNode pss where alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and pss = alg.getPaddingAlgorithm() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql index 1d2f82f12c08..b0af7cfe717f 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableAlgorithm.ql @@ -15,14 +15,12 @@ where exists(Crypto::KeyOperationAlgorithmNode keyAlg | keyAlg = alg and isQuantumVulnerableAlgorithmType(keyAlg.getAlgorithmType()) and - msg = - "Quantum-vulnerable key operation algorithm: " + keyAlg.getAlgorithmName() + "." + msg = "Quantum-vulnerable key operation algorithm: " + keyAlg.getAlgorithmName() + "." ) or exists(Crypto::KeyAgreementAlgorithmNode kaAlg | kaAlg = alg and isQuantumVulnerableKeyAgreementType(kaAlg.getKeyAgreementType()) and - msg = - "Quantum-vulnerable key agreement algorithm: " + kaAlg.getAlgorithmName() + "." + msg = "Quantum-vulnerable key agreement algorithm: " + kaAlg.getAlgorithmName() + "." ) select alg, msg diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql index b1d9d4a869b4..6a82dac29bc2 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerableKeySize.ql @@ -23,6 +23,5 @@ where kaAlg = alg and isQuantumVulnerableKeyAgreementType(kaAlg.getKeyAgreementType()) ) ) -select keygen, - "Quantum-vulnerable key size (" + keySize.toString() + " bits) for algorithm $@.", alg, - alg.getAlgorithmName() +select keygen, "Quantum-vulnerable key size (" + keySize.toString() + " bits) for algorithm $@.", + alg, alg.getAlgorithmName() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index b2d0e519ac08..7b83d132c1a6 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -2190,9 +2190,7 @@ module CryptographyBase Input> { PSSPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } - HashAlgorithmNode getPSSHashAlgorithm() { - result.asElement() = instance.getHashAlgorithm() - } + HashAlgorithmNode getPSSHashAlgorithm() { result.asElement() = instance.getHashAlgorithm() } HashAlgorithmNode getMGF1HashAlgorithm() { result.asElement() = instance.getMgf1HashAlgorithm() From e277b6338af18f1302718ca2f5611610aca9fb70 Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Mon, 23 Feb 2026 00:41:05 +0100 Subject: [PATCH 6/6] Fix QL-for-QL alerts --- java/ql/lib/experimental/quantum/JCA.qll | 42 +++++++++---------- .../quantum/Examples/Demo/InventoryCurves.ql | 2 +- .../quantum/Examples/Demo/ProtocolJWS_PS.ql | 6 +-- .../quantum/Examples/Demo/ProtocolJWS_RS.ql | 2 +- .../quantum/Examples/Demo/ProtocolRSA_OAEP.ql | 2 +- .../Examples/Demo/ProtocolRSA_PKCS1v15.ql | 2 +- .../quantum/Examples/Demo/ProtocolRSA_PSS.ql | 2 +- .../Examples/Demo/QuantumVulnerablePadding.ql | 8 ++-- .../codeql/quantum/experimental/Model.qll | 32 +++++++------- 9 files changed, 49 insertions(+), 49 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index 2c1db4e3abb0..75b59e3ece78 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -1954,9 +1954,9 @@ module JCAModel { result = this or // Explicit PSS hash from PSSParameterSpec via Signature.setParameter() - exists(PSSParameterSpecInstantiation spec | + exists(PssParameterSpecInstantiation spec | pssSpecForSignatureLiteral(spec, this) and - result.(PSSParameterSpecDigestHashAlgorithmInstance).getSpec() = spec + result.(PssParameterSpecDigestHashAlgorithmInstance).getSpec() = spec ) } @@ -1965,9 +1965,9 @@ module JCAModel { result = this or // Explicit MGF1 hash from PSSParameterSpec via Signature.setParameter() - exists(PSSParameterSpecInstantiation spec | + exists(PssParameterSpecInstantiation spec | pssSpecForSignatureLiteral(spec, this) and - result.(PSSParameterSpecMgf1HashAlgorithmInstance).getSpec() = spec + result.(PssParameterSpecMgf1HashAlgorithmInstance).getSpec() = spec ) } } @@ -1976,8 +1976,8 @@ module JCAModel { * A PSSParameterSpec instantiation, e.g., * new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1) */ - class PSSParameterSpecInstantiation extends ClassInstanceExpr { - PSSParameterSpecInstantiation() { + class PssParameterSpecInstantiation extends ClassInstanceExpr { + PssParameterSpecInstantiation() { this.getConstructedType().hasQualifiedName("java.security.spec", "PSSParameterSpec") } @@ -1999,8 +1999,8 @@ module JCAModel { * `MGF1ParameterSpec.SHA256`. These fields represent well-known MGF1 hash * algorithm configurations. */ - class MGF1ParameterSpecFieldAccess extends FieldAccess { - MGF1ParameterSpecFieldAccess() { + class Mgf1ParameterSpecFieldAccess extends FieldAccess { + Mgf1ParameterSpecFieldAccess() { this.getField().getDeclaringType().hasQualifiedName("java.security.spec", "MGF1ParameterSpec") and this.getField().isStatic() } @@ -2030,18 +2030,18 @@ module JCAModel { * * Type resolution delegates to hash_name_to_type_known from Standardization. */ - class PSSParameterSpecDigestHashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof JavaConstant + class PssParameterSpecDigestHashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof JavaConstant { - PSSParameterSpecInstantiation spec; + PssParameterSpecInstantiation spec; - PSSParameterSpecDigestHashAlgorithmInstance() { + PssParameterSpecDigestHashAlgorithmInstance() { this = spec.getDigestAlgorithmArg() and // Only instantiate when the value resolves to a known hash type exists(hash_name_to_type_known(super.getValue(), _)) } /** Gets the PSSParameterSpec this digest hash belongs to. */ - PSSParameterSpecInstantiation getSpec() { result = spec } + PssParameterSpecInstantiation getSpec() { result = spec } override string getRawHashAlgorithmName() { result = super.getValue() } @@ -2062,12 +2062,12 @@ module JCAModel { * The field name is normalized to a standard hash algorithm name (e.g., * SHA256 -> SHA-256), then type resolution delegates to hash_name_to_type_known. */ - class PSSParameterSpecMgf1HashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof MGF1ParameterSpecFieldAccess + class PssParameterSpecMgf1HashAlgorithmInstance extends Crypto::HashAlgorithmInstance instanceof Mgf1ParameterSpecFieldAccess { - PSSParameterSpecInstantiation spec; + PssParameterSpecInstantiation spec; string normalizedName; - PSSParameterSpecMgf1HashAlgorithmInstance() { + PssParameterSpecMgf1HashAlgorithmInstance() { this = spec.getMgfSpecArg() and normalizedName = super.getHashAlgorithmName() and // Only instantiate when the normalized name resolves to a known hash type @@ -2075,7 +2075,7 @@ module JCAModel { } /** Gets the PSSParameterSpec this MGF1 hash belongs to. */ - PSSParameterSpecInstantiation getSpec() { result = spec } + PssParameterSpecInstantiation getSpec() { result = spec } override string getRawHashAlgorithmName() { result = super.getField().getName() } @@ -2219,15 +2219,15 @@ module JCAModel { /** * Flow from `PSSParameterSpec` instantiation to `Signature.setParameter()` argument. */ - module PSSSpecToSetParameterConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src.asExpr() instanceof PSSParameterSpecInstantiation } + module PssSpecToSetParameterConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { src.asExpr() instanceof PssParameterSpecInstantiation } predicate isSink(DataFlow::Node sink) { exists(SignatureSetParameterCall c | sink.asExpr() = c.getParameterSpecArg()) } } - module PSSSpecToSetParameterFlow = DataFlow::Global; + module PssSpecToSetParameterFlow = DataFlow::Global; /** * Connects a PSSParameterSpec instantiation to the signature PSS padding literal @@ -2239,7 +2239,7 @@ module JCAModel { * 3. The PSSParameterSpec flows to the same setParameter's argument */ private predicate pssSpecForSignatureLiteral( - PSSParameterSpecInstantiation spec, SignaturePssPaddingAlgorithmInstance literal + PssParameterSpecInstantiation spec, SignaturePssPaddingAlgorithmInstance literal ) { exists( SignatureSetParameterCall setParam, SignatureGetInstanceCall getInstance, @@ -2249,7 +2249,7 @@ module JCAModel { consumer = getInstance.getAlgorithmArg() and SignatureToSetParameterFlow::flow(DataFlow::exprNode(getInstance), DataFlow::exprNode(setParam.getQualifier())) and - PSSSpecToSetParameterFlow::flow(DataFlow::exprNode(spec), + PssSpecToSetParameterFlow::flow(DataFlow::exprNode(spec), DataFlow::exprNode(setParam.getParameterSpecArg())) ) } diff --git a/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql b/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql index e2952f934371..35e93fef6eff 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/InventoryCurves.ql @@ -12,7 +12,7 @@ import experimental.quantum.Language from Crypto::EllipticCurveNode c, string detail where - if exists(string ks | c.properties("KeySize", ks, _)) + if c.properties("KeySize", _, _) then exists(string ks | c.properties("KeySize", ks, _) and diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql index f0a3061cd0b0..d87fee862823 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_PS.ql @@ -13,16 +13,16 @@ import Crypto::KeyOpAlg as KeyOpAlg from Crypto::SignatureOperationNode sigOp, Crypto::KeyOperationAlgorithmNode alg, - Crypto::PSSPaddingAlgorithmNode pss, Crypto::HashAlgorithmNode hash, int digestLen + Crypto::PssPaddingAlgorithmNode pss, Crypto::HashAlgorithmNode hash, int digestLen where alg = sigOp.getAKnownAlgorithm() and alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and pss = alg.getPaddingAlgorithm() and // Get hash from the PSS padding or from the signature operation ( - hash = pss.getPSSHashAlgorithm() + hash = pss.getPssHashAlgorithm() or - hash = sigOp.getHashAlgorithm() and not exists(pss.getPSSHashAlgorithm()) + hash = sigOp.getHashAlgorithm() and not exists(pss.getPssHashAlgorithm()) ) and hash.getHashType() = Crypto::SHA2() and digestLen = hash.getDigestLength() and diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql index e918b976db6c..c85192960085 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolJWS_RS.ql @@ -18,7 +18,7 @@ where alg = sigOp.getAKnownAlgorithm() and alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and // No PSS padding — implies PKCS#1 v1.5 - not alg.getPaddingAlgorithm() instanceof Crypto::PSSPaddingAlgorithmNode and + not alg.getPaddingAlgorithm() instanceof Crypto::PssPaddingAlgorithmNode and // Hash is SHA-2 with standard JWS digest lengths hash = sigOp.getHashAlgorithm() and hash.getHashType() = Crypto::SHA2() and diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql index 0c55a0b22b68..c5cfbb76c046 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_OAEP.ql @@ -11,7 +11,7 @@ import experimental.quantum.Language import Crypto::KeyOpAlg as KeyOpAlg -from Crypto::KeyOperationAlgorithmNode alg, Crypto::OAEPPaddingAlgorithmNode pad +from Crypto::KeyOperationAlgorithmNode alg, Crypto::OaepPaddingAlgorithmNode pad where alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and pad = alg.getPaddingAlgorithm() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql index 6b9d7a01c329..b3a17b152b46 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PKCS1v15.ql @@ -21,7 +21,7 @@ where or // RSA signature without PSS — implies PKCS#1 v1.5 (e.g., SHA256withRSA) exists(Crypto::SignatureOperationNode sigOp | alg = sigOp.getAKnownAlgorithm()) and - not alg.getPaddingAlgorithm() instanceof Crypto::PSSPaddingAlgorithmNode and + not alg.getPaddingAlgorithm() instanceof Crypto::PssPaddingAlgorithmNode and variant = "implicit PKCS#1 v1.5 (RSA signature without PSS)" ) select alg, "RSA PKCS#1 v1.5 protocol detected: " + variant + "." diff --git a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql index 932198d9ed5d..6c1f97a9247e 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/ProtocolRSA_PSS.ql @@ -11,7 +11,7 @@ import experimental.quantum.Language import Crypto::KeyOpAlg as KeyOpAlg -from Crypto::KeyOperationAlgorithmNode alg, Crypto::PSSPaddingAlgorithmNode pss +from Crypto::KeyOperationAlgorithmNode alg, Crypto::PssPaddingAlgorithmNode pss where alg.getAlgorithmType() = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) and pss = alg.getPaddingAlgorithm() diff --git a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql index 49b49aa00729..cf998470c301 100644 --- a/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql +++ b/java/ql/src/experimental/quantum/Examples/Demo/QuantumVulnerablePadding.ql @@ -14,14 +14,14 @@ from Crypto::PaddingAlgorithmNode pad, string msg where isQuantumVulnerablePaddingType(pad.getPaddingType()) and ( - pad instanceof Crypto::PSSPaddingAlgorithmNode and + pad instanceof Crypto::PssPaddingAlgorithmNode and msg = "Quantum-vulnerable PSS padding scheme detected." or - pad instanceof Crypto::OAEPPaddingAlgorithmNode and + pad instanceof Crypto::OaepPaddingAlgorithmNode and msg = "Quantum-vulnerable OAEP padding scheme detected." or - not pad instanceof Crypto::PSSPaddingAlgorithmNode and - not pad instanceof Crypto::OAEPPaddingAlgorithmNode and + not pad instanceof Crypto::PssPaddingAlgorithmNode and + not pad instanceof Crypto::OaepPaddingAlgorithmNode and msg = "Quantum-vulnerable padding scheme: " + pad.getPaddingType().toString() + "." ) select pad, msg diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 7b83d132c1a6..753ef814db01 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -2155,16 +2155,16 @@ module CryptographyBase Input> { override string getRawAlgorithmName() { result = instance.getRawPaddingAlgorithmName() } } - class OAEPPaddingAlgorithmNode extends PaddingAlgorithmNode { + class OaepPaddingAlgorithmNode extends PaddingAlgorithmNode { override OaepPaddingAlgorithmInstance instance; - OAEPPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } + OaepPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } - HashAlgorithmNode getOAEPEncodingHashAlgorithm() { + HashAlgorithmNode getOaepEncodingHashAlgorithm() { result.asElement() = instance.getOaepEncodingHashAlgorithm() } - HashAlgorithmNode getMGF1HashAlgorithm() { + HashAlgorithmNode getMgf1HashAlgorithm() { result.asElement() = instance.getMgf1HashAlgorithm() } @@ -2173,26 +2173,26 @@ module CryptographyBase Input> { or // [KNOWN_OR_UNKNOWN] edgeName = "MD" and - if exists(this.getOAEPEncodingHashAlgorithm()) - then result = this.getOAEPEncodingHashAlgorithm() + if exists(this.getOaepEncodingHashAlgorithm()) + then result = this.getOaepEncodingHashAlgorithm() else result = this or // [KNOWN_OR_UNKNOWN] edgeName = "MGF1Hash" and - if exists(this.getMGF1HashAlgorithm()) - then result = this.getMGF1HashAlgorithm() + if exists(this.getMgf1HashAlgorithm()) + then result = this.getMgf1HashAlgorithm() else result = this } } - class PSSPaddingAlgorithmNode extends PaddingAlgorithmNode { + class PssPaddingAlgorithmNode extends PaddingAlgorithmNode { override PssPaddingAlgorithmInstance instance; - PSSPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } + PssPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } - HashAlgorithmNode getPSSHashAlgorithm() { result.asElement() = instance.getHashAlgorithm() } + HashAlgorithmNode getPssHashAlgorithm() { result.asElement() = instance.getHashAlgorithm() } - HashAlgorithmNode getMGF1HashAlgorithm() { + HashAlgorithmNode getMgf1HashAlgorithm() { result.asElement() = instance.getMgf1HashAlgorithm() } @@ -2201,14 +2201,14 @@ module CryptographyBase Input> { or // [KNOWN_OR_UNKNOWN] edgeName = "MD" and - if exists(this.getPSSHashAlgorithm()) - then result = this.getPSSHashAlgorithm() + if exists(this.getPssHashAlgorithm()) + then result = this.getPssHashAlgorithm() else result = this or // [KNOWN_OR_UNKNOWN] edgeName = "MGF1Hash" and - if exists(this.getMGF1HashAlgorithm()) - then result = this.getMGF1HashAlgorithm() + if exists(this.getMgf1HashAlgorithm()) + then result = this.getMgf1HashAlgorithm() else result = this } }