aboutsummaryrefslogtreecommitdiffstats
path: root/include/if_algo.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/if_algo.h')
-rw-r--r--include/if_algo.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/include/if_algo.h b/include/if_algo.h
new file mode 100644
index 000000000..323d58256
--- /dev/null
+++ b/include/if_algo.h
@@ -0,0 +1,64 @@
+/*************************************************
+* IF Scheme Header File *
+* (C) 1999-2006 The Botan Project *
+*************************************************/
+
+#ifndef BOTAN_IF_ALGO_H__
+#define BOTAN_IF_ALGO_H__
+
+#include <botan/x509_key.h>
+#include <botan/pkcs8.h>
+#include <botan/pk_core.h>
+
+namespace Botan {
+
+/*************************************************
+* IF Public Key *
+*************************************************/
+class IF_Scheme_PublicKey : public virtual X509_PublicKey
+ {
+ public:
+ bool check_key(bool) const;
+
+ const BigInt& get_n() const { return n; }
+ const BigInt& get_e() const { return e; }
+
+ u32bit max_input_bits() const { return (n.bits() - 1); }
+
+ virtual ~IF_Scheme_PublicKey() {}
+ protected:
+ virtual void X509_load_hook();
+ BigInt n, e;
+ IF_Core core;
+ private:
+ MemoryVector<byte> DER_encode_pub() const;
+ MemoryVector<byte> DER_encode_params() const;
+ void BER_decode_params(DataSource&);
+ void BER_decode_pub(DataSource&);
+ };
+
+/*************************************************
+* IF Private Key *
+*************************************************/
+class IF_Scheme_PrivateKey : public virtual IF_Scheme_PublicKey,
+ public virtual PKCS8_PrivateKey
+ {
+ public:
+ bool check_key(bool) const;
+
+ const BigInt& get_p() const { return p; }
+ const BigInt& get_q() const { return q; }
+ const BigInt& get_d() const { return d; }
+
+ virtual ~IF_Scheme_PrivateKey() {}
+ protected:
+ virtual void PKCS8_load_hook();
+ BigInt d, p, q, d1, d2, c;
+ private:
+ SecureVector<byte> DER_encode_priv() const;
+ void BER_decode_priv(DataSource&);
+ };
+
+}
+
+#endif