[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.1

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