base/asm-common.h (x86), and knock-on: Add macros for full-size regs.
[catacomb] / base / keysz.h
index 97ed144..2986d61 100644 (file)
  *   * @KSZ_SET@ requires that %$k \in {\,a_i\,}$%.
  */
 
+#define KSZ_OPMASK 0x1f                        /* Kinds of keysize specs */
 enum {
   KSZ_ANY,                             /* Allows any key at all */
   KSZ_RANGE,                           /* Allows keys within a range */
   KSZ_SET                              /* Allows specific sizes of keys */
 };
 
+#define KSZ_16BIT 0x20                 /* Arguments are 16 bits long */
+
 /*----- Key sizes for symmetric algorithms --------------------------------*/
 
 /* --- @keysz@ --- *
@@ -85,6 +88,17 @@ extern size_t keysz(size_t /*sz*/, const octet */*ksz*/);
 #define KSZ_ASSERT(pre, sz)                                            \
   assert(((void)"Bad key size for " #pre, KSZ_CHECK(pre, sz)))
 
+/* --- @keysz_pad@ --- *
+ *
+ * Arguments:  @size_t sz@ = a proposed key size
+ *             @const octet *ksz@ = pointer to key size table
+ *
+ * Returns:    A key size, at least as large as @sz@, or zero if no such
+ *             size is available.
+ */
+
+extern size_t keysz_pad(size_t /*sz*/, const octet */*ksz*/);
+
 /*----- Key size conversions ----------------------------------------------*/
 
 /* --- @keysz_fromdl@, @_fromschnorr@, @_fromif@, @_fromec@ --- *