* +1 A is B plus a nonempty suffix (ie, A has B as a prefix)
* +2 A is lexically later than B and does not have B as a prefix
*
- * hbytes pkcs5 pa|ua VAR ALG => worked? (always 1 for p)
- * hbytes pkcs5 pn|un VAR BLOCKSIZE => worked? (always 1 for p)
+ * hbytes pad pa|ua VAR ALG METH [METHARGS] => worked? (always 1 for p)
+ * hbytes pad pn|un VAR BS METH [METHARGS] => worked? (always 1 for p)
+ * hbytes pad pa|pn VAR ALG|BS pkcs5 => 1
+ * hbytes pad ua|un VAR ALG|BS pkcs5 => worked?
+ * hbytes pad pa|pn VAR ALG|BS rfc2406 NXTHDR => 1
+ * hbytes pad ua|un VAR ALG|BS rfc2406 NXTHDRVAR => worked?
+ *
* hbytes blockcipher d|e VAR ALG KEY MODE [IV] => IV
* hbytes blockcipher mac MSG ALG KEY MODE IV => final block
* hbytes blockcipher prop PROPERTY ALG => property value
* HBYTES LENGTH OVERRUN block too long
* HBYTES LENGTH RANGE input length or offset is -ve or silly
* HBYTES LENGTH UNDERRUN block too short (or offset too big)
+ * HBYTES LENGTH MISMATCH when blocks must be exactly same length
* HBYTES SYNTAX supposed hex block had wrong syntax
* HBYTES VALUE OVERFLOW value to be conv'd to hex too big/long
* SOCKADDR AFUNIX LENGTH path for AF_UNIX socket too long
typedef struct {
const char *name;
int pad, use_algname;
-} PadMethod;
+} PadOp;
extern Tcl_ObjType blockcipherkey_type;
typedef struct {
const char *name;
int blocksize, schedule_size, key_min, key_max;
- void (*byteswap)(void *block);
BlockCipherPerDirectionInfo encrypt, decrypt;
} BlockCipherAlgInfo;