PK: use wrappers and function pointers for verify
diff --git a/include/polarssl/pk.h b/include/polarssl/pk.h
index 2f70085..f06ec68 100644
--- a/include/polarssl/pk.h
+++ b/include/polarssl/pk.h
@@ -24,6 +24,7 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+
#ifndef POLARSSL_PK_H
#define POLARSSL_PK_H
@@ -33,6 +34,10 @@
#include "rsa.h"
#endif
+#if defined(POLARSSL_ECP_C)
+#include "ecp.h"
+#endif
+
#if defined(POLARSSL_ECDSA_C)
#include "ecdsa.h"
#endif
@@ -77,13 +82,28 @@
} pk_type_t;
/**
+ * \brief Public key info
+ */
+typedef struct
+{
+ /** Public key type */
+ pk_type_t type;
+
+ /** Verify signature */
+ int (*verify_func)( void *ctx,
+ const unsigned char *hash, const md_info_t *md_info,
+ const unsigned char *sig, size_t sig_len );
+} pk_info_t;
+
+/**
* \brief Public key container
*/
typedef struct
{
- pk_type_t type; /**< Public key type */
- void * data; /**< Public key data */
- int dont_free; /**< True if data must not be freed */
+ const pk_info_t * info; /**< Public key informations */
+ pk_type_t type; /**< Public key type (temporary) */
+ void * data; /**< Public key data */
+ int dont_free; /**< True if data must not be freed */
} pk_context;
/**
@@ -157,4 +177,4 @@
}
#endif
-#endif /* pk.h */
+#endif /* POLARSSL_PK_H */