1 /*
2 * Sets of allowed padding schemes for public key types
3 *
4 * This file was automatically generated by ./src/scripts/oids.py on 2017-12-20
5 *
6 * All manual edits to this file will be lost. Edit the script
7 * then regenerate this source file.
8 *
9 * Botan is released under the Simplified BSD License (see license.txt)
10 */
11 
12 #include <botan/internal/padding.h>
13 #include <map>
14 #include <vector>
15 #include <string>
16 #include <algorithm>
17 
18 namespace Botan {
19 
20 const std::map<const std::string, std::vector<std::string>> allowed_signature_paddings =
21    {
22    { "DSA", {"EMSA1"} },
23    { "ECDSA", {"EMSA1"} },
24    { "ECGDSA", {"EMSA1"} },
25    { "ECKCDSA", {"EMSA1"} },
26    { "GOST-34.10", {"EMSA1"} },
27    { "GOST-34.10-2012-256", {"EMSA1"} },
28    { "GOST-34.10-2012-512", {"EMSA1"} },
29    { "RSA", {"EMSA4", "EMSA3"} },
30    };
31 
get_sig_paddings(const std::string algo)32 const std::vector<std::string> get_sig_paddings(const std::string algo)
33    {
34    if(allowed_signature_paddings.count(algo) > 0)
35       return allowed_signature_paddings.at(algo);
36    return {};
37    }
38 
sig_algo_and_pad_ok(const std::string algo,const std::string padding)39 bool sig_algo_and_pad_ok(const std::string algo, const std::string padding)
40    {
41    std::vector<std::string> pads = get_sig_paddings(algo);
42    return std::find(pads.begin(), pads.end(), padding) != pads.end();
43    }
44 }
45