[BACK]Return to xmss_wots.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/xmss_wots.h, Revision 1.3

1.3     ! dtucker     1: /* $OpenBSD: xmss_wots.h,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */
1.1       markus      2: /*
                      3: wots.h version 20160722
                      4: Andreas Hülsing
                      5: Joost Rijneveld
                      6: Public domain.
                      7: */
                      8:
                      9: #ifndef WOTS_H
                     10: #define WOTS_H
                     11:
                     12: /**
                     13:  * WOTS parameter set
                     14:  *
                     15:  * Meaning as defined in draft-irtf-cfrg-xmss-hash-based-signatures-02
                     16:  */
                     17: typedef struct {
                     18:   uint32_t len_1;
                     19:   uint32_t len_2;
                     20:   uint32_t len;
                     21:   uint32_t n;
                     22:   uint32_t w;
                     23:   uint32_t log_w;
                     24:   uint32_t keysize;
                     25: } wots_params;
                     26:
                     27: /**
                     28:  * Set the WOTS parameters,
                     29:  * only m, n, w are required as inputs,
                     30:  * len, len_1, and len_2 are computed from those.
                     31:  *
                     32:  * Assumes w is a power of 2
                     33:  */
                     34: void wots_set_params(wots_params *params, int n, int w);
                     35:
                     36: /**
                     37:  * WOTS key generation. Takes a 32byte seed for the secret key, expands it to a full WOTS secret key and computes the corresponding public key.
                     38:  * For this it takes the seed pub_seed which is used to generate bitmasks and hash keys and the address of this WOTS key pair addr
                     39:  *
                     40:  * params, must have been initialized before using wots_set params for params ! This is not done in this function
                     41:  *
                     42:  * Places the computed public key at address pk.
                     43:  */
                     44: void wots_pkgen(unsigned char *pk, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]);
                     45:
                     46: /**
                     47:  * Takes a m-byte message and the 32-byte seed for the secret key to compute a signature that is placed at "sig".
                     48:  *
                     49:  */
                     50: int wots_sign(unsigned char *sig, const unsigned char *msg, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]);
                     51:
                     52: /**
                     53:  * Takes a WOTS signature, a m-byte message and computes a WOTS public key that it places at pk.
                     54:  *
                     55:  */
                     56: int wots_pkFromSig(unsigned char *pk, const unsigned char *sig, const unsigned char *msg, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]);
                     57:
                     58: #endif