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

Annotation of src/usr.bin/ssh/ed25519.sh, Revision 1.1

1.1     ! djm         1: #!/bin/sh
        !             2: #       $OpenBSD$
        !             3: #       Placed in the Public Domain.
        !             4: #
        !             5: AUTHOR="supercop-20221122/crypto_sign/ed25519/ref/implementors"
        !             6: FILES="
        !             7:        supercop-20221122/crypto_verify/32/ref/verify.c
        !             8:        supercop-20221122/crypto_sign/ed25519/ref/fe25519.h
        !             9:        supercop-20221122/crypto_sign/ed25519/ref/fe25519.c
        !            10:        supercop-20221122/crypto_sign/ed25519/ref/sc25519.h
        !            11:        supercop-20221122/crypto_sign/ed25519/ref/sc25519.c
        !            12:        supercop-20221122/crypto_sign/ed25519/ref/ge25519.h
        !            13:        supercop-20221122/crypto_sign/ed25519/ref/ge25519.c
        !            14:        supercop-20221122/crypto_sign/ed25519/ref/keypair.c
        !            15:        supercop-20221122/crypto_sign/ed25519/ref/sign.c
        !            16:        supercop-20221122/crypto_sign/ed25519/ref/open.c
        !            17: "
        !            18: ###
        !            19:
        !            20: DATA="supercop-20221122/crypto_sign/ed25519/ref/ge25519_base.data"
        !            21:
        !            22: set -e
        !            23: cd $1
        !            24: echo -n '/*  $'
        !            25: echo 'OpenBSD: $ */'
        !            26: echo
        !            27: echo '/*'
        !            28: echo ' * Public Domain, Authors:'
        !            29: sed -e '/Alphabetical order:/d' -e 's/^/ * - /' < $AUTHOR
        !            30: echo ' */'
        !            31: echo
        !            32: echo '#include <string.h>'
        !            33: echo
        !            34: echo '#include "crypto_api.h"'
        !            35: echo
        !            36: # Map the types used in this code to the ones in crypto_api.h.  We use #define
        !            37: # instead of typedef since some systems have existing intXX types and do not
        !            38: # permit multiple typedefs even if they do not conflict.
        !            39: for t in int8 uint8 int16 uint16 int32 uint32 int64 uint64; do
        !            40:        echo "#define $t crypto_${t}"
        !            41: done
        !            42: echo
        !            43: for i in $FILES; do
        !            44:        echo "/* from $i */"
        !            45:        # Changes to all files:
        !            46:        #  - inline ge25519_base.data where it is included
        !            47:        #  - expand CRYPTO_NAMESPACE() namespacing define
        !            48:        #  - remove all includes, we inline everything required.
        !            49:        #  - make functions not required elsewhere static.
        !            50:        #  - rename the functions we do use.
        !            51:        sed \
        !            52:            -e "/#include \"ge25519_base.data\"/r $DATA" \
        !            53:            -e "/#include/d" \
        !            54:            -e "s/^void /static void /g" \
        !            55:            -e 's/CRYPTO_NAMESPACE[(]\([a-zA-Z0-9_]*\)[)]/crypto_sign_ed25519_ref_\1/g' \
        !            56:            $i | \
        !            57:        case "$i" in
        !            58:        */crypto_verify/32/ref/verify.c)
        !            59:            # rename crypto_verify() to the name that the ed25519 code expects.
        !            60:            sed -e "/^#include.*/d" \
        !            61:                -e "s/crypto_verify/crypto_verify_32/g" \
        !            62:                -e "s/^int /static int /g"
        !            63:            ;;
        !            64:        */crypto_sign/ed25519/ref/sign.c)
        !            65:            # rename signing function to the name OpenSSH expects
        !            66:            sed -e "s/crypto_sign/crypto_sign_ed25519/g"
        !            67:            ;;
        !            68:        */crypto_sign/ed25519/ref/keypair.c)
        !            69:            # rename key generation function to the name OpenSSH expects
        !            70:            sed -e "s/crypto_sign_keypair/crypto_sign_ed25519_keypair/g"
        !            71:            ;;
        !            72:        */crypto_sign/ed25519/ref/open.c)
        !            73:            # rename verification function to the name OpenSSH expects
        !            74:            sed -e "s/crypto_sign_open/crypto_sign_ed25519_open/g"
        !            75:            ;;
        !            76:        */crypto_sign/ed25519/ref/fe25519.*)
        !            77:            # avoid a couple of name collions with other files
        !            78:            sed -e "s/reduce_add_sub/fe25519_reduce_add_sub/g" \
        !            79:                -e "s/ equal[(]/ fe25519_equal(/g" \
        !            80:                -e "s/^int /static int /g"
        !            81:            ;;
        !            82:        */crypto_sign/ed25519/ref/sc25519.h)
        !            83:            # Lots of unused prototypes to remove
        !            84:            sed -e "s/^int /static int /g" \
        !            85:                -e '/shortsc25519_from16bytes/d' \
        !            86:                -e '/sc25519_iszero_vartime/d' \
        !            87:                -e '/sc25519_isshort_vartime/d' \
        !            88:                -e '/sc25519_lt_vartime/d' \
        !            89:                -e '/sc25519_sub_nored/d' \
        !            90:                -e '/sc25519_mul_shortsc/d' \
        !            91:                -e '/sc25519_from_shortsc/d' \
        !            92:                -e '/sc25519_window5/d'
        !            93:            ;;
        !            94:        */crypto_sign/ed25519/ref/sc25519.c)
        !            95:            # Lots of unused code to remove, some name collisions to avoid
        !            96:            sed -e "s/reduce_add_sub/sc25519_reduce_add_sub/g" \
        !            97:                -e "s/ equal[(]/ sc25519_equal(/g" \
        !            98:                -e "s/^int /static int /g" \
        !            99:                -e "s/m[[]/sc25519_m[/g" \
        !           100:                -e "s/mu[[]/sc25519_mu[/g" \
        !           101:                -e '/shortsc25519_from16bytes/,/^}$/d' \
        !           102:                -e '/sc25519_iszero_vartime/,/^}$/d' \
        !           103:                -e '/sc25519_isshort_vartime/,/^}$/d' \
        !           104:                -e '/sc25519_lt_vartime/,/^}$/d' \
        !           105:                -e '/sc25519_sub_nored/,/^}$/d' \
        !           106:                -e '/sc25519_mul_shortsc/,/^}$/d' \
        !           107:                -e '/sc25519_from_shortsc/,/^}$/d' \
        !           108:                -e '/sc25519_window5/,/^}$/d'
        !           109:            ;;
        !           110:        */crypto_sign/ed25519/ref//ge25519.*)
        !           111:            sed -e "s/^int /static int /g"
        !           112:            ;;
        !           113:        # Default: pass through.
        !           114:        *)
        !           115:            cat
        !           116:            ;;
        !           117:        esac | \
        !           118:        sed -e 's/[      ]*$//'
        !           119: done