}
continue;
case 'R':
- if (streq(arg, "pss"))
- {
- pss = TRUE;
- }
- else if (!streq(arg, "pkcs1"))
+ if (!parse_rsa_padding(arg, &pss))
{
error = "invalid RSA padding";
goto usage;
}
continue;
case 'R':
- if (streq(arg, "pss"))
- {
- pss = TRUE;
- }
- else if (!streq(arg, "pkcs1"))
+ if (!parse_rsa_padding(arg, &pss))
{
error = "invalid RSA padding";
goto usage;
}
continue;
case 'R': /* --rsa-padding */
- if (streq(arg, "pss"))
- {
-
- pss = TRUE;
- }
- else if (!streq(arg, "pkcs1"))
+ if (!parse_rsa_padding(arg, &pss))
{
error = "invalid RSA padding";
goto usage;
}
continue;
case 'R': /* --rsa-padding */
- if (streq(arg, "pss"))
- {
- pss = TRUE;
- }
- else if (streq(arg, "pkcs1"))
- {
- pss = FALSE;
- }
- else
+ if (!parse_rsa_padding(arg, &pss))
{
error = "invalid RSA padding";
goto usage;
}
continue;
case 'R':
- if (streq(arg, "pss"))
- {
- pss = TRUE;
- }
- else if (!streq(arg, "pkcs1"))
+ if (!parse_rsa_padding(arg, &pss))
{
error = "invalid RSA padding";
goto usage;
}
continue;
case 'R':
- if (streq(arg, "pss"))
- {
- pss = TRUE;
- }
- else if (!streq(arg, "pkcs1"))
+ if (!parse_rsa_padding(arg, &pss))
{
error = "invalid RSA padding";
goto usage;
/*
- * Copyright (C) 2012-2018 Tobias Brunner
+ * Copyright (C) 2012-2023 Tobias Brunner
* Copyright (C) 2009 Martin Willi
*
* Copyright (C) secunet Security Networks AG
#endif
}
+/*
+ * Described in header
+ */
+bool parse_rsa_padding(char *padding, bool *pss)
+{
+ if (streq(padding, "pss"))
+ {
+ *pss = TRUE;
+ }
+ else if (streq(padding, "pkcs1"))
+ {
+ *pss = FALSE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
/**
* Determine a default hash algorithm for the given key
*/
/*
- * Copyright (C) 2015-2017 Tobias Brunner
+ * Copyright (C) 2015-2023 Tobias Brunner
* Copyright (C) 2009 Martin Willi
*
* Copyright (C) secunet Security Networks AG
*/
void set_file_mode(FILE *stream, cred_encoding_type_t enc);
+/**
+ * Parse RSA padding configuration.
+ *
+ * @param padding input string to parse
+ * @param pss set to TRUE if PSS padding should be used, FALSE otherwise
+ * @return TRUE if successfully parsed
+ */
+bool parse_rsa_padding(char *padding, bool *pss);
+
/**
* Determine the signature scheme and parameters for the given private key and
* hash algorithm and whether to use PSS padding for RSA.