aboutsummaryrefslogtreecommitdiffstats
path: root/src/pk_algs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pk_algs.cpp')
-rw-r--r--src/pk_algs.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/pk_algs.cpp b/src/pk_algs.cpp
new file mode 100644
index 000000000..e042a84f4
--- /dev/null
+++ b/src/pk_algs.cpp
@@ -0,0 +1,46 @@
+/*************************************************
+* PK Key Source File *
+* (C) 1999-2006 The Botan Project *
+*************************************************/
+
+#include <botan/pk_algs.h>
+#include <botan/rsa.h>
+#include <botan/dsa.h>
+#include <botan/dh.h>
+#include <botan/nr.h>
+#include <botan/rw.h>
+#include <botan/elgamal.h>
+
+namespace Botan {
+
+/*************************************************
+* Get an PK public key object *
+*************************************************/
+X509_PublicKey* get_public_key(const std::string& alg_name)
+ {
+ if(alg_name == "RSA") return new RSA_PublicKey;
+ else if(alg_name == "DSA") return new DSA_PublicKey;
+ else if(alg_name == "DH") return new DH_PublicKey;
+ else if(alg_name == "NR") return new NR_PublicKey;
+ else if(alg_name == "RW") return new RW_PublicKey;
+ else if(alg_name == "ELG") return new ElGamal_PublicKey;
+ else
+ return 0;
+ }
+
+/*************************************************
+* Get an PK private key object *
+*************************************************/
+PKCS8_PrivateKey* get_private_key(const std::string& alg_name)
+ {
+ if(alg_name == "RSA") return new RSA_PrivateKey;
+ else if(alg_name == "DSA") return new DSA_PrivateKey;
+ else if(alg_name == "DH") return new DH_PrivateKey;
+ else if(alg_name == "NR") return new NR_PrivateKey;
+ else if(alg_name == "RW") return new RW_PrivateKey;
+ else if(alg_name == "ELG") return new ElGamal_PrivateKey;
+ else
+ return 0;
+ }
+
+}