Crypto: Fixed issues in CBOM representations (gaps in the underlying model) and simplified unit tests in terms of the graph complexity to aid visual assessments of model correctness.

This commit is contained in:
REDMOND\brodes
2025-08-21 15:05:45 -04:00
parent 65ff72719e
commit ec7e41cb30
12 changed files with 814 additions and 412 deletions

View File

@@ -171,7 +171,10 @@ class KnownOpenSslKeyAgreementAlgorithmExpr extends Expr instanceof KnownOpenSsl
}
predicate knownOpenSslAlgorithmOperationCall(Call c, string normalized, string algType) {
c.getTarget().getName() in ["EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "RSA_new"] and
c.getTarget().getName() in [
"EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "RSA_new", "RSA_sign", "RSA_verify",
"EVP_PKEY_get1_RSA"
] and
normalized = "RSA" and
algType = "ASYMMETRIC_ENCRYPTION"
}

View File

@@ -87,3 +87,20 @@ class EvpDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer {
exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i)
}
}
class RsaSignOrVerifyHashAlgorithmValueConsumer extends HashAlgorithmValueConsumer {
DataFlow::Node valueArgNode;
RsaSignOrVerifyHashAlgorithmValueConsumer() {
this.(Call).getTarget().getName() in ["RSA_sign", "RSA_verify"] and
valueArgNode.asExpr() = this.(Call).getArgument(0)
}
override DataFlow::Node getResultNode() { none() }
override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode }
override Crypto::AlgorithmInstance getAKnownAlgorithmSource() {
exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i)
}
}

View File

@@ -14,7 +14,7 @@ class Evp_PKey_Ctx_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorit
DataFlow::Node resultNode;
Evp_PKey_Ctx_set_rsa_padding_AlgorithmValueConsumer() {
resultNode.asExpr() = this and
resultNode.asExpr() = this.(Call).getArgument(0) and
this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" and
valueArgNode.asExpr() = this.(Call).getArgument(1)
}

View File

@@ -18,7 +18,7 @@ class EvpSignatureAlgorithmValueConsumer extends SignatureAlgorithmValueConsumer
this.(Call).getTarget().getName() = "EVP_SIGNATURE_fetch" and
valueArgNode.asExpr() = this.(Call).getArgument(1)
// EVP_PKEY_get1_DSA, EVP_PKEY_get1_RSA
// DSA_SIG_new, DSA_SIG_get0, RSA_sign ?
// DSA_SIG_new, DSA_SIG_get0 ?
)
}

View File

@@ -1,5 +1,10 @@
/**
* Initializers for EVP PKey
* These are used to create a Pkey context or set properties on a Pkey context
* e.g., key size, hash algorithms, curves, padding schemes, etc.
* Meant to capture more general purpose initializers that aren't necessarily
* tied to a specific operation. If tied to an operation (i.e., in the docs)
* we recommend defining defining all together in the same operation definition qll.
* including:
* https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/
* https://docs.openssl.org/3.0/man3/EVP_EncryptInit/#synopsis
@@ -195,3 +200,26 @@ class EvpCtxSetSaltLengthInitializer extends OperationStep {
override OperationStepType getStepType() { result = InitializerStep() }
}
/**
* A call to `EVP_PKEY_get1_RSA` or `EVP_PKEY_get1_DSA`
* - RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
* - DSA *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
*/
class EvpPkeyGet1RsaOrDsa extends OperationStep {
EvpPkeyGet1RsaOrDsa() { this.getTarget().getName() = ["EVP_PKEY_get1_RSA", "EVP_PKEY_get1_DSA"] }
override DataFlow::Node getOutput(IOType type) { result.asExpr() = this and type = KeyIO() }
override DataFlow::Node getInput(IOType type) {
// Key being loaded or created from another location
result.asExpr() = this.getArgument(0) and type = KeyIO()
}
/**
* Consider this to be an intialization step. A key is accepted and a different key is produced.
* It doesn't create a new context or new key. It isn't quite an initialiation for an operaiton
* either.
*/
override OperationStepType getStepType() { result = InitializerStep() }
}

View File

@@ -149,21 +149,16 @@ class EvpNewMacKey extends KeyGenFinalOperationStep {
EvpNewMacKey() { this.getTarget().getName() = "EVP_PKEY_new_mac_key" }
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
or
// the raw key that is configured into the output key
result.asExpr() = this.getArgument(2) and type = KeyIO()
or
result.asExpr() = this.getArgument(3) and type = KeySizeIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this and type = KeyIO()
or
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
override DataFlow::Node getOutput(IOType type) { result.asExpr() = this and type = KeyIO() }
}
/// TODO: https://docs.openssl.org/3.0/man3/EVP_PKEY_new/#synopsis
/**
* An `KeyGenerationOperationInstance` for the for all key gen final operation steps.

View File

@@ -75,11 +75,13 @@ newtype TIOType =
PaddingAlgorithmIO() or
// Plaintext also includes a message for digest, signature, verification, and mac generation
PlaintextIO() or
PlaintextSizeIO() or
PrimaryAlgorithmIO() or
RandomSourceIO() or
SaltLengthIO() or
SeedIO() or
SignatureIO()
SignatureIO() or
SignatureSizeIO()
private string ioTypeToString(TIOType t) {
t = CiphertextIO() and result = "CiphertextIO"
@@ -108,6 +110,8 @@ private string ioTypeToString(TIOType t) {
or
t = PlaintextIO() and result = "PlaintextIO"
or
t = PlaintextSizeIO() and result = "PlaintextSizeIO"
or
t = PrimaryAlgorithmIO() and result = "PrimaryAlgorithmIO"
or
t = RandomSourceIO() and result = "RandomSourceIO"
@@ -117,6 +121,8 @@ private string ioTypeToString(TIOType t) {
t = SeedIO() and result = "SeedIO"
or
t = SignatureIO() and result = "SignatureIO"
or
t = SignatureSizeIO() and result = "SignatureSizeIO"
}
class IOType extends TIOType {
@@ -131,8 +137,9 @@ class IOType extends TIOType {
* The type of step in an `OperationStep`.
* - `ContextCreationStep`: the creation of a context from an algorithm or key.
* for example `EVP_MD_CTX_create(EVP_sha256())` or `EVP_PKEY_CTX_new(pkey, NULL)`
* - `InitializerStep`: the initialization of an operation through some sort of shared/accumulated context
* for example `EVP_DigestInit_ex(ctx, EVP_sha256(), NULL)`
* - `InitializerStep`: the initialization of an operation or state through some sort of shared/accumulated context
* for example `EVP_DigestInit_ex(ctx, EVP_sha256(), NULL)`, may also be used for pass through
* configuration, for example `EVP_PKEY_get1_RSA(key)` where a pkey is input into an RSA key return.
* - `UpdateStep`: any operation that has and update/final paradigm, the update represents an intermediate step in an operation,
* such as `EVP_DigestUpdate(ctx, data, len)`
* - `FinalStep`: an ultimate operation step. This may be an explicit 'final' in an update/final paradigm, but not necessarily.
@@ -249,8 +256,9 @@ abstract class OperationStep extends Call {
/**
* Gets an AVC for the primary algorithm for this operation.
* A primary algorithm is an AVC that either:
* 0) `this` is an AVC (consider direct algorithm consumers like RSA_sign (algorithm is implicit) or EVP_PKEY_new_mac_key (NID is first arg) )
* 1) flows to a ctx input directly or
* 2) flows to a primary algorithm input directly
* 2) flows to a primary algorithm input directly or
* 3) flows to a key input directly (algorithm held in a key will be considered primary)
* See `AvcContextCreationStep` for details about resetting scenarios.
* Gets the first OperationStep an AVC flows to. If a context input,
@@ -259,6 +267,8 @@ abstract class OperationStep extends Call {
* operation step (dominating operation step, see `getDominatingInitializersToStep`).
*/
Crypto::AlgorithmValueConsumer getPrimaryAlgorithmValueConsumer() {
this instanceof Crypto::AlgorithmValueConsumer and result = this
or
exists(DataFlow::Node src, DataFlow::Node sink, IOType t, OperationStep avcConsumingPred |
(t = PrimaryAlgorithmIO() or t = ContextIO() or t = KeyIO()) and
avcConsumingPred.flowsToOperationStep(this) and

View File

@@ -11,7 +11,7 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmI
/**
* A base class for final signature operations.
* The operation must be known to always be a signature operation,
* and not a MAC operation.
* and not a MAC operation. Used for both verification and signing.
* NOTE: even an operation that may be a mac or signature but is known to take in
* only signature configurations should extend `SignatureOrMacFinalOperation`.
*/
@@ -22,6 +22,7 @@ abstract class SignatureFinalOperation extends OperationStep {
/**
* A base class for final signature or MAC operations.
* The operation must be known to always be a signature or MAC operation.
* Used for both verification or signing.
*/
abstract class SignatureOrMacFinalOperation extends OperationStep {
override OperationStepType getStepType() { result = FinalStep() }
@@ -227,8 +228,6 @@ class EvpPkeySignFinal extends SignatureFinalOperation {
or
result.asExpr() = this.getArgument(1) and type = SignatureIO()
}
override OperationStepType getStepType() { result = FinalStep() }
}
/**
@@ -345,6 +344,161 @@ class EvpDigestVerify extends SignatureFinalOperation {
}
}
/**
* A call to `EVP_PKEY_verify_init`, `EVP_PKEY_verify_init_ex`,
* `EVP_PKEY_verify_init_ex2`, or `EVP_PKEY_verify_message_init`
* https://docs.openssl.org/master/man3/EVP_PKEY_verify/#synopsis
*/
class EvpVerifyInit extends OperationStep {
EvpVerifyInit() {
this.getTarget().getName() in [
"EVP_PKEY_verify_init", "EVP_PKEY_verify_init_ex", "EVP_PKEY_verify_init_ex2",
"EVP_PKEY_verify_message_init"
]
}
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
or
this.getTarget().getName() = "EVP_PKEY_verify_init_ex" and
result.asExpr() = this.getArgument(1) and
type = OsslParamIO()
or
this.getTarget().getName() in ["EVP_PKEY_verify_init_ex2", "EVP_PKEY_verify_message_init"] and
result.asExpr() = this.getArgument(1) and
type = PrimaryAlgorithmIO()
or
this.getTarget().getName() in ["EVP_PKEY_verify_init_ex2", "EVP_PKEY_verify_message_init"] and
result.asExpr() = this.getArgument(2) and
type = OsslParamIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
override OperationStepType getStepType() { result = InitializerStep() }
}
/**
* A call to `EVP_PKEY_CTX_set_signature`
* https://docs.openssl.org/master/man3/EVP_PKEY_verify/
*/
class EvpCtxSetSignatureInitializer extends OperationStep {
EvpCtxSetSignatureInitializer() { this.getTarget().getName() = "EVP_PKEY_CTX_set_signature" }
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
or
result.asExpr() = this.getArgument(1) and type = SignatureIO()
or
result.asExpr() = this.getArgument(2) and type = SignatureSizeIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
override OperationStepType getStepType() { result = InitializerStep() }
}
/**
* A call to `EVP_PKEY_verify_message_update`.
*/
class EvpVerifyMessageUpdate extends OperationStep {
EvpVerifyMessageUpdate() { this.getTarget().getName() = "EVP_PKEY_verify_message_update" }
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
or
result.asExpr() = this.getArgument(1) and type = PlaintextIO()
or
result.asExpr() = this.getArgument(2) and type = PlaintextSizeIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
override OperationStepType getStepType() { result = UpdateStep() }
}
/**
* A call to `EVP_PKEY_verify_message_final`.
*/
class EvpVerifyMessageFinal extends SignatureFinalOperation {
EvpVerifyMessageFinal() { this.getTarget().getName() = "EVP_PKEY_verify_message_final" }
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
}
/**
* A call to `EVP_PKEY_verify`
*/
class EvpVerify extends SignatureFinalOperation {
EvpVerify() { this.getTarget().getName() = "EVP_PKEY_verify" }
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
or
result.asExpr() = this.getArgument(1) and type = SignatureIO()
or
result.asExpr() = this.getArgument(2) and type = SignatureSizeIO()
or
result.asExpr() = this.getArgument(3) and type = PlaintextIO()
or
result.asExpr() = this.getArgument(4) and type = PlaintextSizeIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
}
}
/**
* A call to `RSA_sign` or `RSA_verify`.
* https://docs.openssl.org/3.0/man3/RSA_sign/
*/
class RsaSign extends SignatureFinalOperation {
RsaSign() { this.getTarget().getName() in ["RSA_sign", "RSA_verify"] }
override DataFlow::Node getInput(IOType type) {
result.asExpr() = this.getArgument(0) and type = HashAlgorithmIO()
or
result.asExpr() = this.getArgument(1) and type = PlaintextIO()
or
result.asExpr() = this.getArgument(2) and type = PlaintextSizeIO()
or
this.getTarget().getName() = "RSA_verify" and
result.asExpr() = this.getArgument(3) and
type = SignatureIO()
or
this.getTarget().getName() = "RSA_verify" and
result.asExpr() = this.getArgument(4) and
type = SignatureSizeIO()
or
result.asExpr() = this.getArgument(5) and type = KeyIO()
}
override DataFlow::Node getOutput(IOType type) {
result.asExpr() = this.getArgument(0) and type = ContextIO()
or
this.getTarget().getName() = "RSA_sign" and
result.asDefiningArgument() = this.getArgument(3) and
type = SignatureIO()
or
this.getTarget().getName() = "RSA_sign" and
type = SignatureSizeIO() and
result.asDefiningArgument() = this.getArgument(4)
}
}
/**
* An instance of a signature operation.
* This is an OpenSSL specific class that extends the base SignatureOperationInstance.
@@ -393,6 +547,17 @@ class OpenSslSignatureOperationInstance extends Crypto::SignatureOperationInstan
super
.getDominatingInitializersToStep(HashAlgorithmIO())
.getAlgorithmValueConsumerForInput(HashAlgorithmIO()) = result
or
// Handle cases where the hash is set through the primary algorithm
// RSA-SHA256 for example
// NOTE: assuming the hash would not be overridden, or if it is it is undefined
// i.e., if the above dominating initializer exists and the primary algorithm
// specifies a hash, consider both valid hash AVCs.
// TODO: can this behavior be build into the get dominating initializers?
super.getPrimaryAlgorithmValueConsumer() = result and
exists(OpenSslAlgorithmInstance i |
i.getAvc() = result and i instanceof Crypto::HashAlgorithmInstance
)
}
override predicate hasHashAlgorithmConsumer() {
@@ -438,6 +603,17 @@ class OpenSslSignatureOrMacOperationInstance extends Crypto::SignatureOrMacOpera
super
.getDominatingInitializersToStep(HashAlgorithmIO())
.getAlgorithmValueConsumerForInput(HashAlgorithmIO()) = result
or
// Handle cases where the hash is set through the primary algorithm
// RSA-SHA256 for example
// NOTE: assuming the hash would not be overridden, or if it is it is undefined
// i.e., if the above dominating initializer exists and the primary algorithm
// specifies a hash, consider both valid hash AVCs.
// TODO: can this behavior be build into the get dominating initializers?
super.getPrimaryAlgorithmValueConsumer() = result and
exists(OpenSslAlgorithmInstance i |
i.getAvc() = result and i instanceof Crypto::HashAlgorithmInstance
)
}
override predicate hasHashAlgorithmConsumer() {

View File

@@ -30,8 +30,8 @@
| openssl_basic.c:144:13:144:22 | HashOperation | Message | openssl_basic.c:144:24:144:30 | Message |
| openssl_basic.c:144:24:144:30 | Message | Source | openssl_basic.c:181:49:181:87 | Constant |
| openssl_basic.c:144:46:144:51 | Digest | Source | openssl_basic.c:144:46:144:51 | Digest |
| openssl_basic.c:155:22:155:41 | Key | Algorithm | openssl_basic.c:155:22:155:41 | Key |
| openssl_basic.c:155:22:155:41 | KeyGeneration | Algorithm | openssl_basic.c:155:22:155:41 | KeyGeneration |
| openssl_basic.c:155:22:155:41 | Key | Algorithm | openssl_basic.c:155:43:155:55 | HMACAlgorithm |
| openssl_basic.c:155:22:155:41 | KeyGeneration | Algorithm | openssl_basic.c:155:43:155:55 | HMACAlgorithm |
| openssl_basic.c:155:22:155:41 | KeyGeneration | KeyInput | openssl_basic.c:155:64:155:66 | Key |
| openssl_basic.c:155:22:155:41 | KeyGeneration | Output | openssl_basic.c:155:22:155:41 | Key |
| openssl_basic.c:155:43:155:55 | HMACAlgorithm | H | openssl_basic.c:160:39:160:48 | HashAlgorithm |
@@ -58,11 +58,11 @@
| openssl_basic.c:262:24:262:39 | EncryptOperation | Nonce | openssl_basic.c:262:24:262:39 | EncryptOperation |
| openssl_basic.c:262:24:262:39 | EncryptOperation | Output | openssl_basic.c:262:54:262:63 | KeyOperationOutput |
| openssl_basic.c:263:64:263:70 | Message | Source | openssl_basic.c:231:27:231:49 | Constant |
| openssl_pkey.c:21:10:21:28 | KeyGeneration | Algorithm | openssl_pkey.c:21:10:21:28 | KeyGeneration |
| openssl_pkey.c:21:10:21:28 | KeyGeneration | Algorithm | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm |
| openssl_pkey.c:21:10:21:28 | KeyGeneration | Output | openssl_pkey.c:21:30:21:32 | Key |
| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Mode | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm |
| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Padding | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm |
| openssl_pkey.c:21:30:21:32 | Key | Algorithm | openssl_pkey.c:21:30:21:32 | Key |
| openssl_pkey.c:21:30:21:32 | Key | Algorithm | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm |
| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Mode | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm |
| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Padding | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm |
| openssl_pkey.c:55:9:55:23 | KeyGeneration | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm |
@@ -75,135 +75,185 @@
| openssl_pkey.c:64:9:64:24 | EncryptOperation | Nonce | openssl_pkey.c:64:9:64:24 | EncryptOperation |
| openssl_pkey.c:64:9:64:24 | EncryptOperation | Output | openssl_pkey.c:64:31:64:39 | KeyOperationOutput |
| openssl_pkey.c:64:58:64:66 | Message | Source | openssl_pkey.c:45:49:45:65 | Constant |
| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:685:37:685:77 | Constant |
| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:741:37:741:77 | Constant |
| openssl_signature.c:23:9:23:26 | HashOperation | Algorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:23:9:23:26 | HashOperation | Algorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:23:9:23:26 | HashOperation | Digest | openssl_signature.c:23:36:23:41 | Digest |
| openssl_signature.c:23:9:23:26 | HashOperation | Message | openssl_signature.c:22:34:22:40 | Message |
| openssl_signature.c:23:36:23:41 | Digest | Source | openssl_signature.c:23:36:23:41 | Digest |
| openssl_signature.c:70:32:70:38 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:75:28:75:36 | Message | Source | openssl_signature.c:75:28:75:36 | Message |
| openssl_signature.c:80:9:80:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:80:9:80:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:80:9:80:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:80:9:80:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:80:9:80:21 | SignOperation | Input | openssl_signature.c:70:32:70:38 | Message |
| openssl_signature.c:80:9:80:21 | SignOperation | Input | openssl_signature.c:75:28:75:36 | Message |
| openssl_signature.c:80:9:80:21 | SignOperation | Key | openssl_signature.c:80:53:80:56 | Key |
| openssl_signature.c:80:9:80:21 | SignOperation | Output | openssl_signature.c:80:31:80:40 | SignatureOutput |
| openssl_signature.c:80:53:80:56 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:80:53:80:56 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:133:52:133:55 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:133:52:133:55 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:134:38:134:44 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Input | openssl_signature.c:134:38:134:44 | Message |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Key | openssl_signature.c:133:52:133:55 | Key |
| openssl_signature.c:25:34:25:40 | Message | Source | openssl_signature.c:574:37:574:74 | Constant |
| openssl_signature.c:25:34:25:40 | Message | Source | openssl_signature.c:624:37:624:74 | Constant |
| openssl_signature.c:25:34:25:40 | Message | Source | openssl_signature.c:741:37:741:66 | Constant |
| openssl_signature.c:26:9:26:26 | HashOperation | Algorithm | openssl_signature.c:575:24:575:30 | HashAlgorithm |
| openssl_signature.c:26:9:26:26 | HashOperation | Algorithm | openssl_signature.c:625:24:625:33 | HashAlgorithm |
| openssl_signature.c:26:9:26:26 | HashOperation | Algorithm | openssl_signature.c:742:24:742:31 | HashAlgorithm |
| openssl_signature.c:26:9:26:26 | HashOperation | Digest | openssl_signature.c:26:36:26:41 | Digest |
| openssl_signature.c:26:9:26:26 | HashOperation | Message | openssl_signature.c:25:34:25:40 | Message |
| openssl_signature.c:26:36:26:41 | Digest | Source | openssl_signature.c:26:36:26:41 | Digest |
| openssl_signature.c:63:32:63:38 | Message | Source | openssl_signature.c:660:37:660:61 | Constant |
| openssl_signature.c:68:28:68:36 | Message | Source | openssl_signature.c:68:28:68:36 | Message |
| openssl_signature.c:73:9:73:21 | SignOperation | Algorithm | openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm |
| openssl_signature.c:73:9:73:21 | SignOperation | HashAlgorithm | openssl_signature.c:661:24:661:33 | HashAlgorithm |
| openssl_signature.c:73:9:73:21 | SignOperation | Input | openssl_signature.c:63:32:63:38 | Message |
| openssl_signature.c:73:9:73:21 | SignOperation | Input | openssl_signature.c:68:28:68:36 | Message |
| openssl_signature.c:73:9:73:21 | SignOperation | Key | openssl_signature.c:73:53:73:56 | Key |
| openssl_signature.c:73:9:73:21 | SignOperation | Output | openssl_signature.c:73:31:73:40 | SignatureOutput |
| openssl_signature.c:73:53:73:56 | Key | Source | openssl_signature.c:675:34:675:37 | Key |
| openssl_signature.c:126:52:126:55 | Key | Source | openssl_signature.c:716:34:716:37 | Key |
| openssl_signature.c:127:38:127:44 | Message | Source | openssl_signature.c:701:37:701:67 | Constant |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:702:24:702:33 | HashAlgorithm |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | Input | openssl_signature.c:127:38:127:44 | Message |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | Key | openssl_signature.c:126:52:126:55 | Key |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:128:9:128:27 | SignatureOrMACOperation |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | Output | openssl_signature.c:128:37:128:40 | SignatureOutput |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:702:24:702:33 | HashAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Input | openssl_signature.c:127:38:127:44 | Message |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Key | openssl_signature.c:126:52:126:55 | Key |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:135:9:135:27 | SignatureOrMACOperation |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Output | openssl_signature.c:135:37:135:40 | SignatureOutput |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | Input | openssl_signature.c:134:38:134:44 | Message |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | Key | openssl_signature.c:133:52:133:55 | Key |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:142:9:142:27 | SignatureOrMACOperation |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | Output | openssl_signature.c:142:37:142:46 | SignatureOutput |
| openssl_signature.c:165:54:165:57 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:165:54:165:57 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:166:40:166:46 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:167:9:167:29 | VerifyOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:167:9:167:29 | VerifyOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Input | openssl_signature.c:134:38:134:44 | Message |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Input | openssl_signature.c:166:40:166:46 | Message |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Key | openssl_signature.c:133:52:133:55 | Key |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Key | openssl_signature.c:165:54:165:57 | Key |
| openssl_signature.c:167:9:167:29 | VerifyOperation | Signature | openssl_signature.c:167:39:167:47 | SignatureInput |
| openssl_signature.c:167:39:167:47 | SignatureInput | Source | openssl_signature.c:142:37:142:46 | SignatureOutput |
| openssl_signature.c:190:57:190:60 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:190:57:190:60 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:196:38:196:44 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | Input | openssl_signature.c:196:38:196:44 | Message |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | Key | openssl_signature.c:190:57:190:60 | Key |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:197:9:197:27 | SignatureOrMACOperation |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | Output | openssl_signature.c:197:37:197:40 | SignatureOutput |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | Input | openssl_signature.c:196:38:196:44 | Message |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | Key | openssl_signature.c:190:57:190:60 | Key |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:204:9:204:27 | SignatureOrMACOperation |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | Output | openssl_signature.c:204:37:204:46 | SignatureOutput |
| openssl_signature.c:228:59:228:62 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:228:59:228:62 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:234:40:234:46 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:235:9:235:29 | VerifyOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:235:9:235:29 | VerifyOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Input | openssl_signature.c:196:38:196:44 | Message |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Input | openssl_signature.c:234:40:234:46 | Message |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Key | openssl_signature.c:190:57:190:60 | Key |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Key | openssl_signature.c:228:59:228:62 | Key |
| openssl_signature.c:235:9:235:29 | VerifyOperation | Signature | openssl_signature.c:235:39:235:47 | SignatureInput |
| openssl_signature.c:235:39:235:47 | SignatureInput | Source | openssl_signature.c:204:37:204:46 | SignatureOutput |
| openssl_signature.c:260:39:260:42 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:260:39:260:42 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:263:9:263:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:263:9:263:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:263:9:263:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:263:9:263:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:263:9:263:21 | SignOperation | Input | openssl_signature.c:263:54:263:59 | Message |
| openssl_signature.c:263:9:263:21 | SignOperation | Key | openssl_signature.c:260:39:260:42 | Key |
| openssl_signature.c:263:9:263:21 | SignOperation | Output | openssl_signature.c:263:33:263:36 | SignatureOutput |
| openssl_signature.c:263:54:263:59 | Message | Source | openssl_signature.c:263:54:263:59 | Message |
| openssl_signature.c:270:9:270:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:270:9:270:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:270:9:270:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm |
| openssl_signature.c:270:9:270:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:270:9:270:21 | SignOperation | Input | openssl_signature.c:270:60:270:65 | Message |
| openssl_signature.c:270:9:270:21 | SignOperation | Key | openssl_signature.c:260:39:260:42 | Key |
| openssl_signature.c:270:9:270:21 | SignOperation | Output | openssl_signature.c:270:33:270:42 | SignatureOutput |
| openssl_signature.c:270:60:270:65 | Message | Source | openssl_signature.c:270:60:270:65 | Message |
| openssl_signature.c:321:39:321:42 | Key | Source | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:321:39:321:42 | Key | Source | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:326:48:326:54 | Message | Source | openssl_signature.c:602:37:602:77 | Constant |
| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm |
| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm |
| openssl_signature.c:327:9:327:35 | SignOperation | HashAlgorithm | openssl_signature.c:327:9:327:35 | SignOperation |
| openssl_signature.c:327:9:327:35 | SignOperation | Input | openssl_signature.c:326:48:326:54 | Message |
| openssl_signature.c:327:9:327:35 | SignOperation | Key | openssl_signature.c:321:39:321:42 | Key |
| openssl_signature.c:327:9:327:35 | SignOperation | Output | openssl_signature.c:327:47:327:50 | SignatureOutput |
| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm |
| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm |
| openssl_signature.c:334:9:334:35 | SignOperation | HashAlgorithm | openssl_signature.c:334:9:334:35 | SignOperation |
| openssl_signature.c:334:9:334:35 | SignOperation | Input | openssl_signature.c:326:48:326:54 | Message |
| openssl_signature.c:334:9:334:35 | SignOperation | Key | openssl_signature.c:321:39:321:42 | Key |
| openssl_signature.c:334:9:334:35 | SignOperation | Output | openssl_signature.c:334:47:334:56 | SignatureOutput |
| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:548:9:548:23 | KeyGeneration | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:548:9:548:23 | KeyGeneration | Output | openssl_signature.c:548:34:548:37 | Key |
| openssl_signature.c:548:34:548:37 | Key | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:575:32:575:37 | Key | Source | openssl_signature.c:575:32:575:37 | Key |
| openssl_signature.c:578:9:578:23 | KeyGeneration | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:578:9:578:23 | KeyGeneration | KeyInput | openssl_signature.c:575:32:575:37 | Key |
| openssl_signature.c:578:9:578:23 | KeyGeneration | Output | openssl_signature.c:578:34:578:37 | Key |
| openssl_signature.c:578:34:578:37 | Key | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm |
| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | Padding | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | Output | openssl_signature.c:135:37:135:46 | SignatureOutput |
| openssl_signature.c:158:54:158:57 | Key | Source | openssl_signature.c:716:34:716:37 | Key |
| openssl_signature.c:159:40:159:46 | Message | Source | openssl_signature.c:701:37:701:67 | Constant |
| openssl_signature.c:160:9:160:29 | VerifyOperation | Algorithm | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:160:9:160:29 | VerifyOperation | HashAlgorithm | openssl_signature.c:702:24:702:33 | HashAlgorithm |
| openssl_signature.c:160:9:160:29 | VerifyOperation | Input | openssl_signature.c:127:38:127:44 | Message |
| openssl_signature.c:160:9:160:29 | VerifyOperation | Input | openssl_signature.c:159:40:159:46 | Message |
| openssl_signature.c:160:9:160:29 | VerifyOperation | Key | openssl_signature.c:126:52:126:55 | Key |
| openssl_signature.c:160:9:160:29 | VerifyOperation | Key | openssl_signature.c:158:54:158:57 | Key |
| openssl_signature.c:160:9:160:29 | VerifyOperation | Signature | openssl_signature.c:160:39:160:47 | SignatureInput |
| openssl_signature.c:160:39:160:47 | SignatureInput | Source | openssl_signature.c:135:37:135:46 | SignatureOutput |
| openssl_signature.c:182:57:182:60 | Key | Source | openssl_signature.c:800:34:800:37 | Key |
| openssl_signature.c:187:38:187:44 | Message | Source | openssl_signature.c:786:37:786:73 | Constant |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:787:24:787:31 | HashAlgorithm |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | Input | openssl_signature.c:187:38:187:44 | Message |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | Key | openssl_signature.c:182:57:182:60 | Key |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:188:9:188:27 | SignatureOrMACOperation |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | Output | openssl_signature.c:188:37:188:40 | SignatureOutput |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | Algorithm | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | HashAlgorithm | openssl_signature.c:787:24:787:31 | HashAlgorithm |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | Input | openssl_signature.c:187:38:187:44 | Message |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | Key | openssl_signature.c:182:57:182:60 | Key |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | Nonce | openssl_signature.c:195:9:195:27 | SignatureOrMACOperation |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | Output | openssl_signature.c:195:37:195:46 | SignatureOutput |
| openssl_signature.c:218:59:218:62 | Key | Source | openssl_signature.c:800:34:800:37 | Key |
| openssl_signature.c:224:40:224:46 | Message | Source | openssl_signature.c:786:37:786:73 | Constant |
| openssl_signature.c:225:9:225:29 | VerifyOperation | Algorithm | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:225:9:225:29 | VerifyOperation | HashAlgorithm | openssl_signature.c:787:24:787:31 | HashAlgorithm |
| openssl_signature.c:225:9:225:29 | VerifyOperation | Input | openssl_signature.c:187:38:187:44 | Message |
| openssl_signature.c:225:9:225:29 | VerifyOperation | Input | openssl_signature.c:224:40:224:46 | Message |
| openssl_signature.c:225:9:225:29 | VerifyOperation | Key | openssl_signature.c:182:57:182:60 | Key |
| openssl_signature.c:225:9:225:29 | VerifyOperation | Key | openssl_signature.c:218:59:218:62 | Key |
| openssl_signature.c:225:9:225:29 | VerifyOperation | Signature | openssl_signature.c:225:39:225:47 | SignatureInput |
| openssl_signature.c:225:39:225:47 | SignatureInput | Source | openssl_signature.c:195:37:195:46 | SignatureOutput |
| openssl_signature.c:250:39:250:42 | Key | Source | openssl_signature.c:760:34:760:37 | Key |
| openssl_signature.c:253:9:253:21 | SignOperation | Algorithm | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:253:9:253:21 | SignOperation | HashAlgorithm | openssl_signature.c:742:24:742:31 | HashAlgorithm |
| openssl_signature.c:253:9:253:21 | SignOperation | Input | openssl_signature.c:253:54:253:59 | Message |
| openssl_signature.c:253:9:253:21 | SignOperation | Key | openssl_signature.c:250:39:250:42 | Key |
| openssl_signature.c:253:9:253:21 | SignOperation | Output | openssl_signature.c:253:33:253:36 | SignatureOutput |
| openssl_signature.c:253:54:253:59 | Message | Source | openssl_signature.c:253:54:253:59 | Message |
| openssl_signature.c:260:9:260:21 | SignOperation | Algorithm | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:260:9:260:21 | SignOperation | HashAlgorithm | openssl_signature.c:742:24:742:31 | HashAlgorithm |
| openssl_signature.c:260:9:260:21 | SignOperation | Input | openssl_signature.c:260:60:260:65 | Message |
| openssl_signature.c:260:9:260:21 | SignOperation | Key | openssl_signature.c:250:39:250:42 | Key |
| openssl_signature.c:260:9:260:21 | SignOperation | Output | openssl_signature.c:260:33:260:42 | SignatureOutput |
| openssl_signature.c:260:60:260:65 | Message | Source | openssl_signature.c:260:60:260:65 | Message |
| openssl_signature.c:282:39:282:42 | Key | Source | openssl_signature.c:760:34:760:37 | Key |
| openssl_signature.c:285:9:285:23 | VerifyOperation | Algorithm | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:285:9:285:23 | VerifyOperation | HashAlgorithm | openssl_signature.c:742:24:742:31 | HashAlgorithm |
| openssl_signature.c:285:9:285:23 | VerifyOperation | Input | openssl_signature.c:285:61:285:66 | Message |
| openssl_signature.c:285:9:285:23 | VerifyOperation | Key | openssl_signature.c:250:39:250:42 | Key |
| openssl_signature.c:285:9:285:23 | VerifyOperation | Key | openssl_signature.c:282:39:282:42 | Key |
| openssl_signature.c:285:9:285:23 | VerifyOperation | Signature | openssl_signature.c:285:35:285:43 | SignatureInput |
| openssl_signature.c:285:35:285:43 | SignatureInput | Source | openssl_signature.c:260:33:260:42 | SignatureOutput |
| openssl_signature.c:285:61:285:66 | Message | Source | openssl_signature.c:285:61:285:66 | Message |
| openssl_signature.c:311:39:311:42 | Key | Source | openssl_signature.c:838:34:838:37 | Key |
| openssl_signature.c:316:48:316:54 | Message | Source | openssl_signature.c:826:37:826:63 | Constant |
| openssl_signature.c:317:9:317:35 | SignOperation | Algorithm | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:317:9:317:35 | SignOperation | Algorithm | openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm |
| openssl_signature.c:317:9:317:35 | SignOperation | HashAlgorithm | openssl_signature.c:847:85:847:96 | HashAlgorithm |
| openssl_signature.c:317:9:317:35 | SignOperation | Input | openssl_signature.c:316:48:316:54 | Message |
| openssl_signature.c:317:9:317:35 | SignOperation | Key | openssl_signature.c:311:39:311:42 | Key |
| openssl_signature.c:317:9:317:35 | SignOperation | Output | openssl_signature.c:317:47:317:50 | SignatureOutput |
| openssl_signature.c:324:9:324:35 | SignOperation | Algorithm | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:324:9:324:35 | SignOperation | Algorithm | openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm |
| openssl_signature.c:324:9:324:35 | SignOperation | HashAlgorithm | openssl_signature.c:847:85:847:96 | HashAlgorithm |
| openssl_signature.c:324:9:324:35 | SignOperation | Input | openssl_signature.c:316:48:316:54 | Message |
| openssl_signature.c:324:9:324:35 | SignOperation | Key | openssl_signature.c:311:39:311:42 | Key |
| openssl_signature.c:324:9:324:35 | SignOperation | Output | openssl_signature.c:324:47:324:56 | SignatureOutput |
| openssl_signature.c:347:39:347:42 | Key | Source | openssl_signature.c:838:34:838:37 | Key |
| openssl_signature.c:353:42:353:50 | SignatureInput | Source | openssl_signature.c:324:47:324:56 | SignatureOutput |
| openssl_signature.c:355:50:355:56 | Message | Source | openssl_signature.c:826:37:826:63 | Constant |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Algorithm | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Algorithm | openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Algorithm | openssl_signature.c:848:87:848:98 | KeyOperationAlgorithm |
| openssl_signature.c:356:9:356:37 | VerifyOperation | HashAlgorithm | openssl_signature.c:847:85:847:96 | HashAlgorithm |
| openssl_signature.c:356:9:356:37 | VerifyOperation | HashAlgorithm | openssl_signature.c:848:87:848:98 | HashAlgorithm |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Input | openssl_signature.c:316:48:316:54 | Message |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Input | openssl_signature.c:355:50:355:56 | Message |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Key | openssl_signature.c:311:39:311:42 | Key |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Key | openssl_signature.c:347:39:347:42 | Key |
| openssl_signature.c:356:9:356:37 | VerifyOperation | Signature | openssl_signature.c:353:42:353:50 | SignatureInput |
| openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm | Mode | openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm |
| openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm | Padding | openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm |
| openssl_signature.c:388:9:388:16 | SignOperation | Algorithm | openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm |
| openssl_signature.c:388:9:388:16 | SignOperation | Algorithm | openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm |
| openssl_signature.c:388:9:388:16 | SignOperation | Algorithm | openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm |
| openssl_signature.c:388:9:388:16 | SignOperation | HashAlgorithm | openssl_signature.c:604:37:604:46 | HashAlgorithm |
| openssl_signature.c:388:9:388:16 | SignOperation | Input | openssl_signature.c:388:28:388:33 | Message |
| openssl_signature.c:388:9:388:16 | SignOperation | Key | openssl_signature.c:389:48:389:54 | Key |
| openssl_signature.c:388:9:388:16 | SignOperation | Output | openssl_signature.c:388:48:388:57 | SignatureOutput |
| openssl_signature.c:388:28:388:33 | Message | Source | openssl_signature.c:388:28:388:33 | Message |
| openssl_signature.c:389:48:389:54 | Key | Source | openssl_signature.c:389:48:389:54 | Key |
| openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm | Mode | openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm |
| openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm | Padding | openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm |
| openssl_signature.c:411:12:411:21 | VerifyOperation | Algorithm | openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm |
| openssl_signature.c:411:12:411:21 | VerifyOperation | Algorithm | openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm |
| openssl_signature.c:411:12:411:21 | VerifyOperation | Algorithm | openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm |
| openssl_signature.c:411:12:411:21 | VerifyOperation | HashAlgorithm | openssl_signature.c:606:41:606:50 | HashAlgorithm |
| openssl_signature.c:411:12:411:21 | VerifyOperation | Input | openssl_signature.c:411:33:411:38 | Message |
| openssl_signature.c:411:12:411:21 | VerifyOperation | Key | openssl_signature.c:412:51:412:57 | Key |
| openssl_signature.c:411:12:411:21 | VerifyOperation | Signature | openssl_signature.c:411:53:411:61 | SignatureInput |
| openssl_signature.c:411:33:411:38 | Message | Source | openssl_signature.c:411:33:411:38 | Message |
| openssl_signature.c:411:53:411:61 | SignatureInput | Source | openssl_signature.c:411:53:411:61 | SignatureInput |
| openssl_signature.c:412:51:412:57 | Key | Source | openssl_signature.c:412:51:412:57 | Key |
| openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm |
| openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm |
| openssl_signature.c:524:9:524:23 | KeyGeneration | Algorithm | openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm |
| openssl_signature.c:524:9:524:23 | KeyGeneration | Output | openssl_signature.c:524:34:524:37 | Key |
| openssl_signature.c:524:34:524:37 | Key | Algorithm | openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm |
| openssl_signature.c:551:32:551:37 | Key | Source | openssl_signature.c:551:32:551:37 | Key |
| openssl_signature.c:554:9:554:23 | KeyGeneration | Algorithm | openssl_signature.c:541:50:541:54 | KeyOperationAlgorithm |
| openssl_signature.c:554:9:554:23 | KeyGeneration | KeyInput | openssl_signature.c:551:32:551:37 | Key |
| openssl_signature.c:554:9:554:23 | KeyGeneration | Output | openssl_signature.c:554:34:554:37 | Key |
| openssl_signature.c:554:34:554:37 | Key | Algorithm | openssl_signature.c:541:50:541:54 | KeyOperationAlgorithm |
| openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm |
| openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm |
| openssl_signature.c:588:9:588:23 | KeyGeneration | Algorithm | openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm |
| openssl_signature.c:588:9:588:23 | KeyGeneration | Output | openssl_signature.c:588:34:588:37 | Key |
| openssl_signature.c:588:34:588:37 | Key | Algorithm | openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm |
| openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm | Mode | openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm |
| openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm | Padding | openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm |
| openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm |
| openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm |
| openssl_signature.c:675:9:675:23 | KeyGeneration | Algorithm | openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm |
| openssl_signature.c:675:9:675:23 | KeyGeneration | Output | openssl_signature.c:675:34:675:37 | Key |
| openssl_signature.c:675:34:675:37 | Key | Algorithm | openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm |
| openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:716:9:716:23 | KeyGeneration | Algorithm | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:716:9:716:23 | KeyGeneration | Output | openssl_signature.c:716:34:716:37 | Key |
| openssl_signature.c:716:34:716:37 | Key | Algorithm | openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm |
| openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:760:9:760:23 | KeyGeneration | Algorithm | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:760:9:760:23 | KeyGeneration | Output | openssl_signature.c:760:34:760:37 | Key |
| openssl_signature.c:760:34:760:37 | Key | Algorithm | openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm |
| openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:800:9:800:23 | KeyGeneration | Algorithm | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:800:9:800:23 | KeyGeneration | Output | openssl_signature.c:800:34:800:37 | Key |
| openssl_signature.c:800:34:800:37 | Key | Algorithm | openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm |
| openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:838:9:838:23 | KeyGeneration | Algorithm | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:838:9:838:23 | KeyGeneration | Output | openssl_signature.c:838:34:838:37 | Key |
| openssl_signature.c:838:34:838:37 | Key | Algorithm | openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm |
| openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm | Padding | openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm |
| openssl_signature.c:848:87:848:98 | KeyOperationAlgorithm | Padding | openssl_signature.c:848:87:848:98 | KeyOperationAlgorithm |

View File

@@ -59,52 +59,117 @@
| openssl_pkey.c:55:30:55:34 | Key | KeyType | Asymmetric | openssl_pkey.c:55:30:55:34 | openssl_pkey.c:55:30:55:34 |
| openssl_pkey.c:60:28:60:31 | Key | KeyType | Unknown | openssl_pkey.c:60:28:60:31 | openssl_pkey.c:60:28:60:31 |
| openssl_pkey.c:64:9:64:24 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_pkey.c:64:9:64:24 | openssl_pkey.c:64:9:64:24 |
| openssl_signature.c:80:9:80:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:80:9:80:21 | openssl_signature.c:80:9:80:21 |
| openssl_signature.c:80:53:80:56 | Key | KeyType | Unknown | openssl_signature.c:80:53:80:56 | openssl_signature.c:80:53:80:56 |
| openssl_signature.c:133:52:133:55 | Key | KeyType | Unknown | openssl_signature.c:133:52:133:55 | openssl_signature.c:133:52:133:55 |
| openssl_signature.c:73:9:73:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:73:9:73:21 | openssl_signature.c:73:9:73:21 |
| openssl_signature.c:73:53:73:56 | Key | KeyType | Unknown | openssl_signature.c:73:53:73:56 | openssl_signature.c:73:53:73:56 |
| openssl_signature.c:126:52:126:55 | Key | KeyType | Unknown | openssl_signature.c:126:52:126:55 | openssl_signature.c:126:52:126:55 |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:128:9:128:27 | openssl_signature.c:128:9:128:27 |
| openssl_signature.c:128:9:128:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:128:9:128:27 | openssl_signature.c:128:9:128:27 |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:135:9:135:27 | openssl_signature.c:135:9:135:27 |
| openssl_signature.c:135:9:135:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:135:9:135:27 | openssl_signature.c:135:9:135:27 |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:142:9:142:27 | openssl_signature.c:142:9:142:27 |
| openssl_signature.c:142:9:142:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:142:9:142:27 | openssl_signature.c:142:9:142:27 |
| openssl_signature.c:165:54:165:57 | Key | KeyType | Unknown | openssl_signature.c:165:54:165:57 | openssl_signature.c:165:54:165:57 |
| openssl_signature.c:167:9:167:29 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:167:9:167:29 | openssl_signature.c:167:9:167:29 |
| openssl_signature.c:190:57:190:60 | Key | KeyType | Unknown | openssl_signature.c:190:57:190:60 | openssl_signature.c:190:57:190:60 |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:197:9:197:27 | openssl_signature.c:197:9:197:27 |
| openssl_signature.c:197:9:197:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:197:9:197:27 | openssl_signature.c:197:9:197:27 |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:204:9:204:27 | openssl_signature.c:204:9:204:27 |
| openssl_signature.c:204:9:204:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:204:9:204:27 | openssl_signature.c:204:9:204:27 |
| openssl_signature.c:228:59:228:62 | Key | KeyType | Unknown | openssl_signature.c:228:59:228:62 | openssl_signature.c:228:59:228:62 |
| openssl_signature.c:235:9:235:29 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:235:9:235:29 | openssl_signature.c:235:9:235:29 |
| openssl_signature.c:260:39:260:42 | Key | KeyType | Unknown | openssl_signature.c:260:39:260:42 | openssl_signature.c:260:39:260:42 |
| openssl_signature.c:263:9:263:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:263:9:263:21 | openssl_signature.c:263:9:263:21 |
| openssl_signature.c:270:9:270:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:270:9:270:21 | openssl_signature.c:270:9:270:21 |
| openssl_signature.c:321:39:321:42 | Key | KeyType | Unknown | openssl_signature.c:321:39:321:42 | openssl_signature.c:321:39:321:42 |
| openssl_signature.c:327:9:327:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:327:9:327:35 | openssl_signature.c:327:9:327:35 |
| openssl_signature.c:334:9:334:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:334:9:334:35 | openssl_signature.c:334:9:334:35 |
| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | Name | PSS | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 |
| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | RawName | 6 | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 |
| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 |
| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 |
| openssl_signature.c:547:51:547:54 | Constant | Description | 2048 | openssl_signature.c:547:51:547:54 | openssl_signature.c:547:51:547:54 |
| openssl_signature.c:548:34:548:37 | Key | KeyType | Asymmetric | openssl_signature.c:548:34:548:37 | openssl_signature.c:548:34:548:37 |
| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:565:50:565:54 | openssl_signature.c:565:50:565:54 |
| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:565:50:565:54 | openssl_signature.c:565:50:565:54 |
| openssl_signature.c:569:55:569:58 | Constant | Description | 2048 | openssl_signature.c:569:55:569:58 | openssl_signature.c:569:55:569:58 |
| openssl_signature.c:575:32:575:37 | Key | KeyType | Unknown | openssl_signature.c:575:32:575:37 | openssl_signature.c:575:32:575:37 |
| openssl_signature.c:578:34:578:37 | Key | KeyType | Asymmetric | openssl_signature.c:578:34:578:37 | openssl_signature.c:578:34:578:37 |
| openssl_signature.c:602:37:602:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:602:37:602:77 | openssl_signature.c:602:37:602:77 |
| openssl_signature.c:684:24:684:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 |
| openssl_signature.c:684:24:684:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 |
| openssl_signature.c:684:24:684:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 |
| openssl_signature.c:685:37:685:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:685:37:685:77 | openssl_signature.c:685:37:685:77 |
| openssl_signature.c:702:60:702:71 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 |
| openssl_signature.c:702:60:702:71 | HashAlgorithm | Name | SHA2 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 |
| openssl_signature.c:702:60:702:71 | HashAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 |
| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 |
| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 |
| openssl_signature.c:740:24:740:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 |
| openssl_signature.c:740:24:740:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 |
| openssl_signature.c:740:24:740:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 |
| openssl_signature.c:741:37:741:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:741:37:741:77 | openssl_signature.c:741:37:741:77 |
| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:758:60:758:64 | openssl_signature.c:758:60:758:64 |
| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:758:60:758:64 | openssl_signature.c:758:60:758:64 |
| openssl_signature.c:158:54:158:57 | Key | KeyType | Unknown | openssl_signature.c:158:54:158:57 | openssl_signature.c:158:54:158:57 |
| openssl_signature.c:160:9:160:29 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:160:9:160:29 | openssl_signature.c:160:9:160:29 |
| openssl_signature.c:182:57:182:60 | Key | KeyType | Unknown | openssl_signature.c:182:57:182:60 | openssl_signature.c:182:57:182:60 |
| openssl_signature.c:185:44:185:64 | PaddingAlgorithm | Name | PSS | openssl_signature.c:185:44:185:64 | openssl_signature.c:185:44:185:64 |
| openssl_signature.c:185:44:185:64 | PaddingAlgorithm | RawName | 6 | openssl_signature.c:185:44:185:64 | openssl_signature.c:185:44:185:64 |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:188:9:188:27 | openssl_signature.c:188:9:188:27 |
| openssl_signature.c:188:9:188:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:188:9:188:27 | openssl_signature.c:188:9:188:27 |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | KeyOperationSubtype | Mac | openssl_signature.c:195:9:195:27 | openssl_signature.c:195:9:195:27 |
| openssl_signature.c:195:9:195:27 | SignatureOrMACOperation | KeyOperationSubtype | Sign | openssl_signature.c:195:9:195:27 | openssl_signature.c:195:9:195:27 |
| openssl_signature.c:218:59:218:62 | Key | KeyType | Unknown | openssl_signature.c:218:59:218:62 | openssl_signature.c:218:59:218:62 |
| openssl_signature.c:222:44:222:64 | PaddingAlgorithm | Name | PSS | openssl_signature.c:222:44:222:64 | openssl_signature.c:222:44:222:64 |
| openssl_signature.c:222:44:222:64 | PaddingAlgorithm | RawName | 6 | openssl_signature.c:222:44:222:64 | openssl_signature.c:222:44:222:64 |
| openssl_signature.c:225:9:225:29 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:225:9:225:29 | openssl_signature.c:225:9:225:29 |
| openssl_signature.c:250:39:250:42 | Key | KeyType | Unknown | openssl_signature.c:250:39:250:42 | openssl_signature.c:250:39:250:42 |
| openssl_signature.c:253:9:253:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:253:9:253:21 | openssl_signature.c:253:9:253:21 |
| openssl_signature.c:260:9:260:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:260:9:260:21 | openssl_signature.c:260:9:260:21 |
| openssl_signature.c:282:39:282:42 | Key | KeyType | Unknown | openssl_signature.c:282:39:282:42 | openssl_signature.c:282:39:282:42 |
| openssl_signature.c:285:9:285:23 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:285:9:285:23 | openssl_signature.c:285:9:285:23 |
| openssl_signature.c:311:39:311:42 | Key | KeyType | Unknown | openssl_signature.c:311:39:311:42 | openssl_signature.c:311:39:311:42 |
| openssl_signature.c:317:9:317:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:317:9:317:35 | openssl_signature.c:317:9:317:35 |
| openssl_signature.c:324:9:324:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:324:9:324:35 | openssl_signature.c:324:9:324:35 |
| openssl_signature.c:347:39:347:42 | Key | KeyType | Unknown | openssl_signature.c:347:39:347:42 | openssl_signature.c:347:39:347:42 |
| openssl_signature.c:356:9:356:37 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:356:9:356:37 | openssl_signature.c:356:9:356:37 |
| openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:388:9:388:16 | openssl_signature.c:388:9:388:16 |
| openssl_signature.c:388:9:388:16 | KeyOperationAlgorithm | RawName | RSA_sign | openssl_signature.c:388:9:388:16 | openssl_signature.c:388:9:388:16 |
| openssl_signature.c:388:9:388:16 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:388:9:388:16 | openssl_signature.c:388:9:388:16 |
| openssl_signature.c:389:48:389:54 | Key | KeyType | Unknown | openssl_signature.c:389:48:389:54 | openssl_signature.c:389:48:389:54 |
| openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:411:12:411:21 | openssl_signature.c:411:12:411:21 |
| openssl_signature.c:411:12:411:21 | KeyOperationAlgorithm | RawName | RSA_verify | openssl_signature.c:411:12:411:21 | openssl_signature.c:411:12:411:21 |
| openssl_signature.c:411:12:411:21 | VerifyOperation | KeyOperationSubtype | Verify | openssl_signature.c:411:12:411:21 | openssl_signature.c:411:12:411:21 |
| openssl_signature.c:412:51:412:57 | Key | KeyType | Unknown | openssl_signature.c:412:51:412:57 | openssl_signature.c:412:51:412:57 |
| openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:519:35:519:46 | openssl_signature.c:519:35:519:46 |
| openssl_signature.c:519:35:519:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:519:35:519:46 | openssl_signature.c:519:35:519:46 |
| openssl_signature.c:523:51:523:54 | Constant | Description | 2048 | openssl_signature.c:523:51:523:54 | openssl_signature.c:523:51:523:54 |
| openssl_signature.c:524:34:524:37 | Key | KeyType | Asymmetric | openssl_signature.c:524:34:524:37 | openssl_signature.c:524:34:524:37 |
| openssl_signature.c:541:50:541:54 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:541:50:541:54 | openssl_signature.c:541:50:541:54 |
| openssl_signature.c:541:50:541:54 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:541:50:541:54 | openssl_signature.c:541:50:541:54 |
| openssl_signature.c:545:55:545:58 | Constant | Description | 2048 | openssl_signature.c:545:55:545:58 | openssl_signature.c:545:55:545:58 |
| openssl_signature.c:551:32:551:37 | Key | KeyType | Unknown | openssl_signature.c:551:32:551:37 | openssl_signature.c:551:32:551:37 |
| openssl_signature.c:554:34:554:37 | Key | KeyType | Asymmetric | openssl_signature.c:554:34:554:37 | openssl_signature.c:554:34:554:37 |
| openssl_signature.c:574:37:574:74 | Constant | Description | testLowLevelRSASignAndVerify message | openssl_signature.c:574:37:574:74 | openssl_signature.c:574:37:574:74 |
| openssl_signature.c:575:24:575:30 | HashAlgorithm | DigestSize | 128 | openssl_signature.c:575:24:575:30 | openssl_signature.c:575:24:575:30 |
| openssl_signature.c:575:24:575:30 | HashAlgorithm | Name | MD5 | openssl_signature.c:575:24:575:30 | openssl_signature.c:575:24:575:30 |
| openssl_signature.c:575:24:575:30 | HashAlgorithm | RawName | EVP_md5 | openssl_signature.c:575:24:575:30 | openssl_signature.c:575:24:575:30 |
| openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:583:35:583:46 | openssl_signature.c:583:35:583:46 |
| openssl_signature.c:583:35:583:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:583:35:583:46 | openssl_signature.c:583:35:583:46 |
| openssl_signature.c:587:51:587:54 | Constant | Description | 2048 | openssl_signature.c:587:51:587:54 | openssl_signature.c:587:51:587:54 |
| openssl_signature.c:588:34:588:37 | Key | KeyType | Asymmetric | openssl_signature.c:588:34:588:37 | openssl_signature.c:588:34:588:37 |
| openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:596:15:596:31 | openssl_signature.c:596:15:596:31 |
| openssl_signature.c:596:15:596:31 | KeyOperationAlgorithm | RawName | EVP_PKEY_get1_RSA | openssl_signature.c:596:15:596:31 | openssl_signature.c:596:15:596:31 |
| openssl_signature.c:604:37:604:46 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:604:37:604:46 | openssl_signature.c:604:37:604:46 |
| openssl_signature.c:604:37:604:46 | HashAlgorithm | Name | SHA2 | openssl_signature.c:604:37:604:46 | openssl_signature.c:604:37:604:46 |
| openssl_signature.c:604:37:604:46 | HashAlgorithm | RawName | 672 | openssl_signature.c:604:37:604:46 | openssl_signature.c:604:37:604:46 |
| openssl_signature.c:606:41:606:50 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:606:41:606:50 | openssl_signature.c:606:41:606:50 |
| openssl_signature.c:606:41:606:50 | HashAlgorithm | Name | SHA2 | openssl_signature.c:606:41:606:50 | openssl_signature.c:606:41:606:50 |
| openssl_signature.c:606:41:606:50 | HashAlgorithm | RawName | 672 | openssl_signature.c:606:41:606:50 | openssl_signature.c:606:41:606:50 |
| openssl_signature.c:624:37:624:74 | Constant | Description | testLowLevelDSASignAndVerify message | openssl_signature.c:624:37:624:74 | openssl_signature.c:624:37:624:74 |
| openssl_signature.c:625:24:625:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:625:24:625:33 | openssl_signature.c:625:24:625:33 |
| openssl_signature.c:625:24:625:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:625:24:625:33 | openssl_signature.c:625:24:625:33 |
| openssl_signature.c:625:24:625:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:625:24:625:33 | openssl_signature.c:625:24:625:33 |
| openssl_signature.c:660:37:660:61 | Constant | Description | testEVP_SignAPI message | openssl_signature.c:660:37:660:61 | openssl_signature.c:660:37:660:61 |
| openssl_signature.c:661:24:661:33 | HashAlgorithm | DigestSize | 224 | openssl_signature.c:661:24:661:33 | openssl_signature.c:661:24:661:33 |
| openssl_signature.c:661:24:661:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:661:24:661:33 | openssl_signature.c:661:24:661:33 |
| openssl_signature.c:661:24:661:33 | HashAlgorithm | RawName | EVP_sha224 | openssl_signature.c:661:24:661:33 | openssl_signature.c:661:24:661:33 |
| openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:670:35:670:46 | openssl_signature.c:670:35:670:46 |
| openssl_signature.c:670:35:670:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:670:35:670:46 | openssl_signature.c:670:35:670:46 |
| openssl_signature.c:674:51:674:54 | Constant | Description | 2048 | openssl_signature.c:674:51:674:54 | openssl_signature.c:674:51:674:54 |
| openssl_signature.c:675:34:675:37 | Key | KeyType | Asymmetric | openssl_signature.c:675:34:675:37 | openssl_signature.c:675:34:675:37 |
| openssl_signature.c:701:37:701:67 | Constant | Description | testEVP_DigestSignAPI message | openssl_signature.c:701:37:701:67 | openssl_signature.c:701:37:701:67 |
| openssl_signature.c:702:24:702:33 | HashAlgorithm | DigestSize | 224 | openssl_signature.c:702:24:702:33 | openssl_signature.c:702:24:702:33 |
| openssl_signature.c:702:24:702:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:702:24:702:33 | openssl_signature.c:702:24:702:33 |
| openssl_signature.c:702:24:702:33 | HashAlgorithm | RawName | EVP_sha224 | openssl_signature.c:702:24:702:33 | openssl_signature.c:702:24:702:33 |
| openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:711:35:711:46 | openssl_signature.c:711:35:711:46 |
| openssl_signature.c:711:35:711:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:711:35:711:46 | openssl_signature.c:711:35:711:46 |
| openssl_signature.c:715:51:715:54 | Constant | Description | 2048 | openssl_signature.c:715:51:715:54 | openssl_signature.c:715:51:715:54 |
| openssl_signature.c:716:34:716:37 | Key | KeyType | Asymmetric | openssl_signature.c:716:34:716:37 | openssl_signature.c:716:34:716:37 |
| openssl_signature.c:741:37:741:66 | Constant | Description | testEVP_PKEY_signAPI message | openssl_signature.c:741:37:741:66 | openssl_signature.c:741:37:741:66 |
| openssl_signature.c:742:24:742:31 | HashAlgorithm | DigestSize | 160 | openssl_signature.c:742:24:742:31 | openssl_signature.c:742:24:742:31 |
| openssl_signature.c:742:24:742:31 | HashAlgorithm | Name | SHA1 | openssl_signature.c:742:24:742:31 | openssl_signature.c:742:24:742:31 |
| openssl_signature.c:742:24:742:31 | HashAlgorithm | RawName | EVP_sha1 | openssl_signature.c:742:24:742:31 | openssl_signature.c:742:24:742:31 |
| openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:755:35:755:46 | openssl_signature.c:755:35:755:46 |
| openssl_signature.c:755:35:755:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:755:35:755:46 | openssl_signature.c:755:35:755:46 |
| openssl_signature.c:759:51:759:54 | Constant | Description | 2048 | openssl_signature.c:759:51:759:54 | openssl_signature.c:759:51:759:54 |
| openssl_signature.c:760:34:760:37 | Key | KeyType | Asymmetric | openssl_signature.c:760:34:760:37 | openssl_signature.c:760:34:760:37 |
| openssl_signature.c:786:37:786:73 | Constant | Description | testEVP_DigestSign_with_ctx message | openssl_signature.c:786:37:786:73 | openssl_signature.c:786:37:786:73 |
| openssl_signature.c:787:24:787:31 | HashAlgorithm | DigestSize | 160 | openssl_signature.c:787:24:787:31 | openssl_signature.c:787:24:787:31 |
| openssl_signature.c:787:24:787:31 | HashAlgorithm | Name | SHA1 | openssl_signature.c:787:24:787:31 | openssl_signature.c:787:24:787:31 |
| openssl_signature.c:787:24:787:31 | HashAlgorithm | RawName | EVP_sha1 | openssl_signature.c:787:24:787:31 | openssl_signature.c:787:24:787:31 |
| openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:795:35:795:46 | openssl_signature.c:795:35:795:46 |
| openssl_signature.c:795:35:795:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:795:35:795:46 | openssl_signature.c:795:35:795:46 |
| openssl_signature.c:799:51:799:54 | Constant | Description | 2048 | openssl_signature.c:799:51:799:54 | openssl_signature.c:799:51:799:54 |
| openssl_signature.c:800:34:800:37 | Key | KeyType | Asymmetric | openssl_signature.c:800:34:800:37 | openssl_signature.c:800:34:800:37 |
| openssl_signature.c:826:37:826:63 | Constant | Description | testEVP_PKEY_sign_message | openssl_signature.c:826:37:826:63 | openssl_signature.c:826:37:826:63 |
| openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:833:35:833:46 | openssl_signature.c:833:35:833:46 |
| openssl_signature.c:833:35:833:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:833:35:833:46 | openssl_signature.c:833:35:833:46 |
| openssl_signature.c:837:51:837:54 | Constant | Description | 2048 | openssl_signature.c:837:51:837:54 | openssl_signature.c:837:51:837:54 |
| openssl_signature.c:838:34:838:37 | Key | KeyType | Asymmetric | openssl_signature.c:838:34:838:37 | openssl_signature.c:838:34:838:37 |
| openssl_signature.c:847:85:847:96 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:847:85:847:96 | openssl_signature.c:847:85:847:96 |
| openssl_signature.c:847:85:847:96 | HashAlgorithm | Name | SHA2 | openssl_signature.c:847:85:847:96 | openssl_signature.c:847:85:847:96 |
| openssl_signature.c:847:85:847:96 | HashAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:847:85:847:96 | openssl_signature.c:847:85:847:96 |
| openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:847:85:847:96 | openssl_signature.c:847:85:847:96 |
| openssl_signature.c:847:85:847:96 | KeyOperationAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:847:85:847:96 | openssl_signature.c:847:85:847:96 |
| openssl_signature.c:848:87:848:98 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:848:87:848:98 | openssl_signature.c:848:87:848:98 |
| openssl_signature.c:848:87:848:98 | HashAlgorithm | Name | SHA2 | openssl_signature.c:848:87:848:98 | openssl_signature.c:848:87:848:98 |
| openssl_signature.c:848:87:848:98 | HashAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:848:87:848:98 | openssl_signature.c:848:87:848:98 |
| openssl_signature.c:848:87:848:98 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:848:87:848:98 | openssl_signature.c:848:87:848:98 |
| openssl_signature.c:848:87:848:98 | KeyOperationAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:848:87:848:98 | openssl_signature.c:848:87:848:98 |

View File

@@ -94,12 +94,30 @@
| openssl_signature.c:270:9:270:21 | SignOperation |
| openssl_signature.c:270:33:270:42 | SignatureOutput |
| openssl_signature.c:270:60:270:65 | Message |
| openssl_signature.c:292:39:292:42 | Key |
| openssl_signature.c:295:9:295:23 | VerifyOperation |
| openssl_signature.c:295:35:295:43 | SignatureInput |
| openssl_signature.c:295:61:295:66 | Message |
| openssl_signature.c:321:39:321:42 | Key |
| openssl_signature.c:326:48:326:54 | Message |
| openssl_signature.c:327:9:327:35 | SignOperation |
| openssl_signature.c:327:47:327:50 | SignatureOutput |
| openssl_signature.c:334:9:334:35 | SignOperation |
| openssl_signature.c:334:47:334:56 | SignatureOutput |
| openssl_signature.c:357:39:357:42 | Key |
| openssl_signature.c:363:42:363:50 | SignatureInput |
| openssl_signature.c:365:50:365:56 | Message |
| openssl_signature.c:366:9:366:37 | VerifyOperation |
| openssl_signature.c:398:9:398:16 | KeyOperationAlgorithm |
| openssl_signature.c:398:9:398:16 | SignOperation |
| openssl_signature.c:398:28:398:33 | Message |
| openssl_signature.c:398:48:398:57 | SignatureOutput |
| openssl_signature.c:399:48:399:54 | Key |
| openssl_signature.c:421:12:421:21 | KeyOperationAlgorithm |
| openssl_signature.c:421:12:421:21 | VerifyOperation |
| openssl_signature.c:421:33:421:38 | Message |
| openssl_signature.c:421:53:421:61 | SignatureInput |
| openssl_signature.c:422:51:422:57 | Key |
| openssl_signature.c:521:46:521:66 | PaddingAlgorithm |
| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm |
| openssl_signature.c:547:51:547:54 | Constant |
@@ -115,6 +133,8 @@
| openssl_signature.c:685:37:685:77 | Constant |
| openssl_signature.c:702:60:702:71 | HashAlgorithm |
| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm |
| openssl_signature.c:709:37:709:46 | HashAlgorithm |
| openssl_signature.c:711:41:711:50 | HashAlgorithm |
| openssl_signature.c:740:24:740:33 | HashAlgorithm |
| openssl_signature.c:741:37:741:77 | Constant |
| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm |

View File

@@ -4,6 +4,9 @@
#include <openssl/dsa.h>
#include <openssl/obj_mac.h>
/* =============================================================================
* UTILITY FUNCTIONS - Common operations shared across signature APIs
* =============================================================================
@@ -38,16 +41,6 @@ static unsigned char* allocate_signature_buffer(size_t *sig_len, const EVP_PKEY
return OPENSSL_malloc(*sig_len);
}
/**
* Helper to extract key from EVP_PKEY
*/
static RSA* get_rsa_from_pkey(EVP_PKEY *pkey) {
return EVP_PKEY_get1_RSA(pkey);
}
static DSA* get_dsa_from_pkey(EVP_PKEY *pkey) {
return EVP_PKEY_get1_DSA(pkey);
}
/* =============================================================================
* EVP_SIGN/VERIFY API - Legacy high-level API (older, simpler)
@@ -180,8 +173,7 @@ cleanup:
*/
int sign_using_digestsign_with_ctx(const unsigned char *message, size_t message_len,
unsigned char **signature, size_t *signature_len,
EVP_PKEY *pkey, const EVP_MD *md,
int (*param_setter)(EVP_PKEY_CTX *ctx)) {
EVP_PKEY *pkey, const EVP_MD *md) {
EVP_MD_CTX *md_ctx = NULL;
EVP_PKEY_CTX *pkey_ctx = NULL;
int ret = 0;
@@ -190,8 +182,7 @@ int sign_using_digestsign_with_ctx(const unsigned char *message, size_t message_
EVP_DigestSignInit(md_ctx, &pkey_ctx, md, NULL, pkey) != 1) {
goto cleanup;
}
if (param_setter && param_setter(pkey_ctx) != 1) goto cleanup;
EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING);
if (EVP_DigestSignUpdate(md_ctx, message, message_len) != 1 ||
EVP_DigestSignFinal(md_ctx, NULL, signature_len) != 1) {
@@ -218,8 +209,7 @@ cleanup:
*/
int verify_using_digestverify_with_ctx(const unsigned char *message, size_t message_len,
const unsigned char *signature, size_t signature_len,
EVP_PKEY *pkey, const EVP_MD *md,
int (*param_setter)(EVP_PKEY_CTX *ctx)) {
EVP_PKEY *pkey, const EVP_MD *md) {
EVP_MD_CTX *md_ctx = NULL;
EVP_PKEY_CTX *pkey_ctx = NULL;
int ret = 0;
@@ -228,9 +218,9 @@ int verify_using_digestverify_with_ctx(const unsigned char *message, size_t mess
EVP_DigestVerifyInit(md_ctx, &pkey_ctx, md, NULL, pkey) != 1) {
goto cleanup;
}
if (param_setter && param_setter(pkey_ctx) != 1) goto cleanup;
EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING);
if (EVP_DigestVerifyUpdate(md_ctx, message, message_len) != 1 ||
EVP_DigestVerifyFinal(md_ctx, signature, signature_len) != 1) {
goto cleanup;
@@ -313,7 +303,7 @@ cleanup:
*/
int sign_using_evp_pkey_sign_message(const unsigned char *message, size_t message_len,
unsigned char **signature, size_t *signature_len,
EVP_PKEY *pkey, const EVP_MD *md, const char *alg_name) {
EVP_PKEY *pkey, const char *alg_name) {
EVP_PKEY_CTX *pkey_ctx = NULL;
EVP_SIGNATURE *alg = NULL;
int ret = 0;
@@ -349,7 +339,7 @@ cleanup:
*/
int verify_using_evp_pkey_verify_message(const unsigned char *message, size_t message_len,
const unsigned char *signature, size_t signature_len,
EVP_PKEY *pkey, const EVP_MD *md, const char *alg_name) {
EVP_PKEY *pkey, const char *alg_name) {
EVP_PKEY_CTX *pkey_ctx = NULL;
EVP_SIGNATURE *alg = NULL;
int ret = 0;
@@ -514,20 +504,6 @@ cleanup:
* =============================================================================
*/
/**
* Set RSA PSS padding mode
*/
int set_rsa_pss_padding(EVP_PKEY_CTX *ctx) {
return EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING);
}
/**
* No-op parameter setter for default behavior
*/
int no_parameter_setter(EVP_PKEY_CTX *ctx) {
return 1;
}
/* =============================================================================
* KEY GENERATION HELPERS
* =============================================================================
@@ -592,228 +568,290 @@ cleanup:
* =============================================================================
*/
/**
* Test all signature APIs with a given key and algorithm
* Demonstrates the 6 different signature API approaches
*/
int test_signature_apis(EVP_PKEY *key, const EVP_MD *md,
int (*param_setter)(EVP_PKEY_CTX *ctx),
const char *algo_name) {
const unsigned char message[] = "Test message for OpenSSL signature APIs";
const size_t message_len = strlen((char *)message);
unsigned char *sig1 = NULL, *sig2 = NULL, *sig3 = NULL,
*sig4 = NULL, *sig6 = NULL;
size_t sig_len1 = 0, sig_len2 = 0, sig_len3 = 0, sig_len4 = 0, sig_len6 = 0;
unsigned char digest[EVP_MAX_MD_SIZE];
unsigned int digest_len;
int success = 1;
printf("\nTesting signature APIs with %s:\n", algo_name);
/* Test 1: EVP_Sign API */
printf("1. EVP_Sign API: ");
if (sign_using_evp_sign(message, message_len, &sig1, &sig_len1, key, md) &&
verify_using_evp_verify(message, message_len, sig1, sig_len1, key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
/* Test 2: EVP_DigestSign API */
printf("2. EVP_DigestSign API: ");
if (sign_using_evp_digestsign(message, message_len, &sig2, &sig_len2, key, md) &&
verify_using_evp_digestverify(message, message_len, sig2, sig_len2, key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
/* Test 3: EVP_PKEY_sign API (requires pre-hashed input) */
printf("3. EVP_PKEY_sign API: ");
if (create_digest(message, message_len, md, digest, &digest_len) &&
sign_using_evp_pkey_sign(digest, digest_len, &sig3, &sig_len3, key, md) &&
verify_using_evp_pkey_verify(digest, digest_len, sig3, sig_len3, key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
/* Test 4: EVP_DigestSign with explicit PKEY_CTX */
printf("4. EVP_DigestSign with explicit PKEY_CTX: ");
if (sign_using_digestsign_with_ctx(message, message_len, &sig4, &sig_len4,
key, md, param_setter) &&
verify_using_digestverify_with_ctx(message, message_len, sig4, sig_len4,
key, md, param_setter)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
/* Test 6: EVP_PKEY_sign_message API */
printf("6. EVP_PKEY_sign_message API: ");
if (sign_using_evp_pkey_sign_message(message, message_len, &sig6, &sig_len6, key, md, algo_name) &&
verify_using_evp_pkey_verify_message(message, message_len, sig6, sig_len6, key, md, algo_name)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
/* Cleanup */
OPENSSL_free(sig1);
OPENSSL_free(sig2);
OPENSSL_free(sig3);
OPENSSL_free(sig4);
OPENSSL_free(sig6);
return success;
}
/**
* Test RSA-specific signature APIs including low-level RSA functions
*/
int test_signature_apis_rsa(void) {
int testLowLevelRSASignAndVerify(){
EVP_PKEY *key = NULL;
RSA *rsa_key = NULL;
const EVP_MD *md = EVP_sha256();
const unsigned char message[] = "Test message for OpenSSL signature APIs";
const unsigned char message[] = "testLowLevelRSASignAndVerify message";
const EVP_MD *md = EVP_md5();
const size_t message_len = strlen((char *)message);
unsigned char *sig5 = NULL;
size_t sig_len5 = 0;
unsigned char *sig = NULL;
size_t sig_len = 0;
int success = 1;
EVP_PKEY_CTX *key_ctx = NULL;
key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
if (!key_ctx) return NULL;
printf("\nGenerating RSA key pair...\n");
key = generate_rsa_key();
if (EVP_PKEY_keygen_init(key_ctx) <= 0 ||
EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 ||
EVP_PKEY_keygen(key_ctx, &key) <= 0) {
EVP_PKEY_free(key);
key = NULL;
}
EVP_PKEY_CTX_free(key_ctx);
if (!key) return 0;
rsa_key = get_rsa_from_pkey(key);
rsa_key = EVP_PKEY_get1_RSA(key);
if (!rsa_key) {
EVP_PKEY_free(key);
return 0;
}
/* Test generic APIs */
if (!test_signature_apis(key, md, set_rsa_pss_padding, "RSA-SHA256")) {
success = 0;
}
/* Test 5: Low-level RSA API */
printf("5. Low-level RSA API: ");
if (sign_using_rsa_sign(message, message_len, &sig5, &sig_len5,
if (sign_using_rsa_sign(message, message_len, &sig, &sig_len,
rsa_key, NID_sha256, md) &&
verify_using_rsa_verify(message, message_len, sig5, sig_len5,
verify_using_rsa_verify(message, message_len, sig, sig_len,
rsa_key, NID_sha256, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
printf("\nRSA API Summary:\n");
printf("1. EVP_Sign API: Legacy, simple\n");
printf("2. EVP_DigestSign API: Modern, recommended\n");
printf("3. EVP_PKEY_sign API: Lower-level, pre-hashed input\n");
printf("4. EVP_DigestSign with PKEY_CTX: Fine-grained control\n");
printf("5. Low-level RSA API: Deprecated, algorithm-specific\n");
printf("6. EVP_PKEY_sign_message API: Streamlined message signing\n");
/* Cleanup */
OPENSSL_free(sig5);
RSA_free(rsa_key);
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}
/**
* Test DSA-specific signature APIs including low-level DSA functions
*/
int test_signature_apis_dsa(void) {
int testLowLevelDSASignAndVerify(){
EVP_PKEY *key = NULL;
DSA *dsa_key = NULL;
const unsigned char message[] = "testLowLevelDSASignAndVerify message";
const EVP_MD *md = EVP_sha256();
const unsigned char message[] = "Test message for OpenSSL signature APIs";
const size_t message_len = strlen((char *)message);
unsigned char *sig5 = NULL;
size_t sig_len5 = 0;
int success = 1;
EVP_PKEY_CTX *param_ctx = NULL, *key_ctx = NULL;
EVP_PKEY *params = NULL;
const size_t message_len = strlen((char *)message);
unsigned char *sig = NULL;
size_t sig_len = 0;
printf("\nGenerating DSA key pair...\n");
key = generate_dsa_key();
if (!key) return 0;
dsa_key = get_dsa_from_pkey(key);
dsa_key = EVP_PKEY_get1_DSA(key);
if (!dsa_key) {
EVP_PKEY_free(key);
return 0;
}
/* Test generic APIs */
if (!test_signature_apis(key, md, no_parameter_setter, "dsa")) {
success = 0;
}
/* Test 5: Low-level DSA API */
printf("5. Low-level DSA API: ");
if (sign_using_dsa_sign(message, message_len, &sig5, &sig_len5, dsa_key, md) &&
verify_using_dsa_verify(message, message_len, sig5, sig_len5, dsa_key, md)) {
if (sign_using_dsa_sign(message, message_len, &sig, &sig_len, dsa_key, md) &&
verify_using_dsa_verify(message, message_len, sig, sig_len, dsa_key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
printf("\nDSA API Summary:\n");
printf("1. EVP_Sign API: Legacy, simple\n");
printf("2. EVP_DigestSign API: Modern, recommended\n");
printf("3. EVP_PKEY_sign API: Lower-level, pre-hashed input\n");
printf("4. EVP_DigestSign with PKEY_CTX: Fine-grained control\n");
printf("5. Low-level DSA API: Deprecated, algorithm-specific\n");
printf("6. EVP_PKEY_sign_message API: Streamlined message signing\n");
/* Cleanup */
OPENSSL_free(sig5);
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}
/* =============================================================================
* MAIN FUNCTION - Entry point for testing all signature APIs
* =============================================================================
*/
int testEVP_SignAPI(){
EVP_PKEY *key = NULL;
const unsigned char message[] = "testEVP_SignAPI message";
const EVP_MD *md = EVP_sha224();
// /**
// * Main function demonstrating all OpenSSL signature APIs
// * Tests both RSA and DSA algorithms with all 6 API approaches
// */
// int main(void) {
// /* Initialize OpenSSL */
// OpenSSL_add_all_algorithms();
// ERR_load_crypto_strings();
const size_t message_len = strlen((char *)message);
unsigned char *sig = NULL;
size_t sig_len = 0;
int success = 1;
EVP_PKEY_CTX *key_ctx = NULL;
key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
if (!key_ctx) return NULL;
// printf("=================================================================\n");
// printf("OpenSSL Signature API Demonstration\n");
// printf("=================================================================\n");
if (EVP_PKEY_keygen_init(key_ctx) <= 0 ||
EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 ||
EVP_PKEY_keygen(key_ctx, &key) <= 0) {
EVP_PKEY_free(key);
key = NULL;
}
// printf("\n-------- TESTING RSA SIGNATURES --------\n");
// int rsa_result = test_signature_apis_rsa();
EVP_PKEY_CTX_free(key_ctx);
if (!key) return 0;
/* Test 1: EVP_Sign API */
printf("1. EVP_Sign API: ");
if (sign_using_evp_sign(message, message_len, &sig, &sig_len, key, md) &&
verify_using_evp_verify(message, message_len, sig, sig_len, key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}
int testEVP_DigestSignAPI(){
EVP_PKEY *key = NULL;
const unsigned char message[] = "testEVP_DigestSignAPI message";
const EVP_MD *md = EVP_sha224();
const size_t message_len = strlen((char *)message);
// printf("\n-------- TESTING DSA SIGNATURES --------\n");
// int dsa_result = test_signature_apis_dsa();
unsigned char *sig = NULL;
size_t sig_len = 0;
int success = 1;
EVP_PKEY_CTX *key_ctx = NULL;
key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
if (!key_ctx) return NULL;
// printf("\n=================================================================\n");
// if (rsa_result && dsa_result) {
// printf("All tests completed successfully.\n");
// return 0;
// } else {
// printf("Some tests failed.\n");
// return 1;
// }
// }
if (EVP_PKEY_keygen_init(key_ctx) <= 0 ||
EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 ||
EVP_PKEY_keygen(key_ctx, &key) <= 0) {
EVP_PKEY_free(key);
key = NULL;
}
EVP_PKEY_CTX_free(key_ctx);
if (!key) return 0;
/* Test 2: EVP_DigestSign API */
printf("2. EVP_DigestSign API: ");
if (sign_using_evp_digestsign(message, message_len, &sig, &sig_len, key, md) &&
verify_using_evp_digestverify(message, message_len, sig, sig_len, key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}
int testEVP_PKEY_signAPI(){
EVP_PKEY *key = NULL;
const unsigned char message[] = "testEVP_PKEY_signAPI message";
const EVP_MD *md = EVP_sha1();
const size_t message_len = strlen((char *)message);
unsigned char *sig = NULL;
size_t sig_len = 0;
int success = 1;
EVP_PKEY_CTX *key_ctx = NULL;
unsigned char digest[EVP_MAX_MD_SIZE];
unsigned int digest_len;
key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
if (!key_ctx) return NULL;
if (EVP_PKEY_keygen_init(key_ctx) <= 0 ||
EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 ||
EVP_PKEY_keygen(key_ctx, &key) <= 0) {
EVP_PKEY_free(key);
key = NULL;
}
EVP_PKEY_CTX_free(key_ctx);
if (!key) return 0;
/* Test 3: EVP_PKEY_sign API (requires pre-hashed input) */
printf("3. EVP_PKEY_sign API: ");
if (create_digest(message, message_len, md, digest, &digest_len) &&
sign_using_evp_pkey_sign(digest, digest_len, &sig, &sig_len, key, md) &&
verify_using_evp_pkey_verify(digest, digest_len, sig, sig_len, key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}
int testEVP_DigestSign_with_ctx(void) {
EVP_PKEY *key = NULL;
const unsigned char message[] = "testEVP_DigestSign_with_ctx message";
const EVP_MD *md = EVP_sha1();
const size_t message_len = strlen((char *)message);
unsigned char *sig = NULL;
size_t sig_len = 0;
int success = 1;
EVP_PKEY_CTX *key_ctx = NULL;
key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
if (!key_ctx) return NULL;
if (EVP_PKEY_keygen_init(key_ctx) <= 0 ||
EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 ||
EVP_PKEY_keygen(key_ctx, &key) <= 0) {
EVP_PKEY_free(key);
key = NULL;
}
EVP_PKEY_CTX_free(key_ctx);
if (!key) return 0;
/* Test 4: EVP_DigestSign with explicit PKEY_CTX */
printf("4. EVP_DigestSign with explicit PKEY_CTX: ");
if (sign_using_digestsign_with_ctx(message, message_len, &sig, &sig_len,
key, md) &&
verify_using_digestverify_with_ctx(message, message_len, sig, sig_len,
key, md)) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}
int testEVP_PKEY_sign_message(void) {
EVP_PKEY *key = NULL;
const unsigned char message[] = "testEVP_PKEY_sign_message";
const size_t message_len = strlen((char *)message);
unsigned char *sig = NULL;
size_t sig_len = 0;
int success = 1;
EVP_PKEY_CTX *key_ctx = NULL;
key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
if (!key_ctx) return NULL;
if (EVP_PKEY_keygen_init(key_ctx) <= 0 ||
EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 ||
EVP_PKEY_keygen(key_ctx, &key) <= 0) {
EVP_PKEY_free(key);
key = NULL;
}
EVP_PKEY_CTX_free(key_ctx);
if (!key) return 0;
printf("6. EVP_PKEY_sign_message API: ");
if (sign_using_evp_pkey_sign_message(message, message_len, &sig, &sig_len, key, "RSA-SHA256") &&
verify_using_evp_pkey_verify_message(message, message_len, sig, sig_len, key, "RSA-SHA256")) {
printf("PASS\n");
} else {
printf("FAIL\n");
success = 0;
}
OPENSSL_free(sig);
EVP_PKEY_free(key);
return success;
}