Skip to content

Commit

Permalink
Add more consistency to rnp_op_verify_st/rnp_op_generate_st construct…
Browse files Browse the repository at this point in the history
…ors.
  • Loading branch information
ni4 committed Jan 29, 2025
1 parent 9af62ce commit a9422b7
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 23 deletions.
29 changes: 26 additions & 3 deletions src/lib/ffi-priv-types.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,23 @@ struct rnp_op_generate_st {
rnp::CertParams cert;
rnp::BindingParams binding;

static pgp_key_flags_t default_key_flags(pgp_pubkey_alg_t alg, bool subkey);

/* primary key generation constructor */
rnp_op_generate_st(rnp_ffi_t affi, pgp_pubkey_alg_t alg)
: ffi(affi), keygen(alg, affi->context)
: ffi(affi), primary(true), keygen(alg, affi->context)
{
cert.flags = default_key_flags(alg, false);
cert.key_expiration = DEFAULT_KEY_EXPIRATION;
}
/* subkey generation constructor */
rnp_op_generate_st(rnp_ffi_t affi, pgp_pubkey_alg_t alg, rnp_key_handle_t primary)
: ffi(affi), primary(false), keygen(alg, affi->context)
{
binding.flags = default_key_flags(alg, true);
binding.key_expiration = DEFAULT_KEY_EXPIRATION;
primary_sec = primary->sec;
primary_pub = primary->pub;
}
};

Expand Down Expand Up @@ -231,9 +245,18 @@ struct rnp_op_verify_st {
rnp_symenc_handle_t used_symenc{};
size_t encrypted_layers{};

rnp_op_verify_st(rnp_ffi_t affi, rnp_input_t in)
: ffi(affi), input(in), rnpctx(ffi->context, ffi->key_provider, ffi->pass_provider)
/* Constructor for attached signature verification */
rnp_op_verify_st(rnp_ffi_t affi, rnp_input_t in, rnp_output_t out)
: ffi(affi), input(in), output(out),
rnpctx(ffi->context, ffi->key_provider, ffi->pass_provider)
{
}
/* Constructor for detached signature verification */
rnp_op_verify_st(rnp_ffi_t affi, rnp_input_t data, rnp_input_t signature)
: ffi(affi), input(signature), detached_input(data),
rnpctx(ffi->context, ffi->key_provider, ffi->pass_provider)
{
rnpctx.detached = true;
}
~rnp_op_verify_st();
};
Expand Down
25 changes: 5 additions & 20 deletions src/lib/rnp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3284,9 +3284,7 @@ try {
return RNP_ERROR_NULL_POINTER;
}

*op = new rnp_op_verify_st(ffi, input);
(*op)->output = output;

*op = new rnp_op_verify_st(ffi, input, output);
return RNP_SUCCESS;
}
FFI_GUARD
Expand All @@ -3301,10 +3299,7 @@ try {
return RNP_ERROR_NULL_POINTER;
}

*op = new rnp_op_verify_st(ffi, signature);
(*op)->rnpctx.detached = true;
(*op)->detached_input = input;

*op = new rnp_op_verify_st(ffi, input, signature);
return RNP_SUCCESS;
}
FFI_GUARD
Expand Down Expand Up @@ -5014,8 +5009,8 @@ try {
}
FFI_GUARD

static pgp_key_flags_t
default_key_flags(pgp_pubkey_alg_t alg, bool subkey)
pgp_key_flags_t
rnp_op_generate_st::default_key_flags(pgp_pubkey_alg_t alg, bool subkey)
{
switch (alg) {
case PGP_PKA_RSA:
Expand Down Expand Up @@ -5090,10 +5085,6 @@ try {
}

*op = new rnp_op_generate_st(ffi, key_alg);
(*op)->primary = true;
(*op)->cert.flags = default_key_flags(key_alg, false);
(*op)->cert.key_expiration = DEFAULT_KEY_EXPIRATION;

return RNP_SUCCESS;
}
FFI_GUARD
Expand Down Expand Up @@ -5122,13 +5113,7 @@ try {
return RNP_ERROR_BAD_PARAMETERS;
}

*op = new rnp_op_generate_st(ffi, key_alg);
(*op)->primary = false;
(*op)->binding.flags = default_key_flags(key_alg, true);
(*op)->binding.key_expiration = DEFAULT_KEY_EXPIRATION;
(*op)->primary_sec = primary->sec;
(*op)->primary_pub = primary->pub;

*op = new rnp_op_generate_st(ffi, key_alg, primary);
return RNP_SUCCESS;
}
FFI_GUARD
Expand Down

0 comments on commit a9422b7

Please sign in to comment.