ruby_nacl 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog +0 -0
- data/README.md +49 -0
- data/ext/ruby_nacl/NaCl/MACROS +56 -0
- data/ext/ruby_nacl/NaCl/OPERATIONS +11 -0
- data/ext/ruby_nacl/NaCl/PROTOTYPES.c +26 -0
- data/ext/ruby_nacl/NaCl/PROTOTYPES.cpp +17 -0
- data/ext/ruby_nacl/NaCl/README +1 -0
- data/ext/ruby_nacl/NaCl/commandline/nacl-sha256.c +64 -0
- data/ext/ruby_nacl/NaCl/commandline/nacl-sha512.c +64 -0
- data/ext/ruby_nacl/NaCl/cpucycles/alpha.c +80 -0
- data/ext/ruby_nacl/NaCl/cpucycles/alpha.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuinfo.c +16 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuspeed.c +25 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuspeed.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64tscfreq.c +18 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64tscfreq.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/celllinux.c +83 -0
- data/ext/ruby_nacl/NaCl/cpucycles/celllinux.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/cortex.c +73 -0
- data/ext/ruby_nacl/NaCl/cpucycles/cortex.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/dev4ns.c +62 -0
- data/ext/ruby_nacl/NaCl/cpucycles/dev4ns.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/do +105 -0
- data/ext/ruby_nacl/NaCl/cpucycles/gettimeofday.c +32 -0
- data/ext/ruby_nacl/NaCl/cpucycles/gettimeofday.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/hppapstat.c +26 -0
- data/ext/ruby_nacl/NaCl/cpucycles/hppapstat.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/ia64cpuinfo.c +15 -0
- data/ext/ruby_nacl/NaCl/cpucycles/ia64cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/mips.c +65 -0
- data/ext/ruby_nacl/NaCl/cpucycles/mips.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotonic.c +34 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotonic.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotoniccpuinfo.c +33 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotoniccpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/osfreq.c +65 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpccpuinfo.c +95 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpccpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpcmacos.c +42 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpcmacos.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sgi.c +38 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sgi.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparc32cpuinfo.c +16 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparc32cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparccpuinfo.c +15 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparccpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/test.c +77 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuinfo.c +15 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuspeed.c +24 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuspeed.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86estimate.c +59 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86estimate.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86tscfreq.c +17 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86tscfreq.h +27 -0
- data/ext/ruby_nacl/NaCl/cpuid/cbytes.c +16 -0
- data/ext/ruby_nacl/NaCl/cpuid/cpuid.c +41 -0
- data/ext/ruby_nacl/NaCl/cpuid/do +37 -0
- data/ext/ruby_nacl/NaCl/cpuid/unknown.c +7 -0
- data/ext/ruby_nacl/NaCl/cpuid/x86.c +41 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/hmac.c +83 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/hmac.c +86 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/measure.c +69 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/try.c +119 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/wrapper-auth.cpp +11 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/wrapper-verify.cpp +14 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/after.c +22 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/api.h +6 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/before.c +17 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/box.c +27 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/keypair.c +12 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_box/measure.c +137 -0
- data/ext/ruby_nacl/NaCl/crypto_box/try.c +195 -0
- data/ext/ruby_nacl/NaCl/crypto_box/wrapper-box.cpp +24 -0
- data/ext/ruby_nacl/NaCl/crypto_box/wrapper-keypair.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_box/wrapper-open.cpp +27 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/core.c +135 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/core.c +108 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/measure.c +18 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/core.c +134 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/core.c +134 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/core.c +134 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/try.c +116 -0
- data/ext/ruby_nacl/NaCl/crypto_core/wrapper-empty.cpp +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/measure.c +66 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/hash.c +69 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/hash.c +71 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/try.c +77 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/wrapper-hash.cpp +10 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/measure.c +18 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/blocks.c +228 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/blocks.c +212 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/blocks.c +256 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/blocks.c +239 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/try.c +79 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/wrapper-empty.cpp +0 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/measure.c +69 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/auth.c +1616 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/auth.s +2787 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/constants.s +85 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/auth.c +104 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/auth.s +2779 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/constants.s +85 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/try.c +119 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/wrapper-auth.cpp +11 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/wrapper-verify.cpp +14 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/base.c +8 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/const.s +114 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/fromdouble.s +195 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/init.s +13 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/mainloop.s +3990 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/mult.s +410 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/smult.c +91 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/square.s +298 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/todouble.s +144 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/base.c +8 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/smult.c +477 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/base.c +16 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/smult.c +265 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/measure.c +61 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/try.c +126 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/wrapper-base.cpp +11 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/wrapper-mult.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/measure.c +75 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/try.c +129 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/wrapper-box.cpp +19 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/wrapper-open.cpp +22 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/ref/box.c +35 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/api.h +3 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/fe25519.c +345 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/fe25519.h +54 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/ge25519.c +227 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/ge25519.h +34 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sc25519.c +146 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sc25519.h +51 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sign.c +103 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/measure.c +83 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/try.c +86 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-keypair.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-sign-open.cpp +24 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-sign.cpp +23 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/afternm.s +12308 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/api.h +3 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/beforenm.s +13694 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/stream.c +14 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/xor.c +15 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/xor_afternm.s +12407 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/afternm.c +158 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/api.h +3 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/beforenm.c +59 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/common.c +64 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/common.h +788 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/consts.c +14 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/consts.h +28 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/int128.c +128 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/int128.h +47 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/stream.c +28 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/types.h +10 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/xor_afternm.c +180 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/measure.c +73 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/stream.s +4823 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/stream.c +49 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/xor.c +52 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/stream.s +5078 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/stream.s +4823 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/stream.c +49 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/xor.c +52 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/stream.s +5078 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/stream.s +4823 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/stream.c +49 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/xor.c +52 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/stream.s +5078 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/try.c +124 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/wrapper-stream.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/wrapper-xor.cpp +17 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/stream.c +22 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/xor.c +23 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream.h +18 -0
- data/ext/ruby_nacl/NaCl/crypto_stream_aes128ctr.h +33 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/ref/verify.c +24 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/ref/verify.c +40 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/measure.c +18 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/try.c +75 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/wrapper-empty.cpp +0 -0
- data/ext/ruby_nacl/NaCl/curvecp/LIBS +31 -0
- data/ext/ruby_nacl/NaCl/curvecp/README +10 -0
- data/ext/ruby_nacl/NaCl/curvecp/SOURCES +36 -0
- data/ext/ruby_nacl/NaCl/curvecp/TARGETS +5 -0
- data/ext/ruby_nacl/NaCl/curvecp/blocking.c +12 -0
- data/ext/ruby_nacl/NaCl/curvecp/blocking.h +7 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte_copy.c +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte_isequal.c +10 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte_zero.c +7 -0
- data/ext/ruby_nacl/NaCl/curvecp/crypto_block.c +35 -0
- data/ext/ruby_nacl/NaCl/curvecp/crypto_block.h +4 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpclient.c +476 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpmakekey.c +57 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpmessage.c +654 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpprintkey.c +46 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpserver.c +497 -0
- data/ext/ruby_nacl/NaCl/curvecp/die.c +42 -0
- data/ext/ruby_nacl/NaCl/curvecp/die.h +16 -0
- data/ext/ruby_nacl/NaCl/curvecp/e.c +106 -0
- data/ext/ruby_nacl/NaCl/curvecp/e.h +438 -0
- data/ext/ruby_nacl/NaCl/curvecp/hexparse.c +25 -0
- data/ext/ruby_nacl/NaCl/curvecp/hexparse.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/load.c +33 -0
- data/ext/ruby_nacl/NaCl/curvecp/load.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/nameparse.c +19 -0
- data/ext/ruby_nacl/NaCl/curvecp/nameparse.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/nanoseconds.c +27 -0
- data/ext/ruby_nacl/NaCl/curvecp/nanoseconds.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/open.h +10 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_cwd.c +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_lock.c +19 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_pipe.c +15 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_read.c +17 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_write.c +17 -0
- data/ext/ruby_nacl/NaCl/curvecp/portparse.c +14 -0
- data/ext/ruby_nacl/NaCl/curvecp/portparse.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/randommod.c +14 -0
- data/ext/ruby_nacl/NaCl/curvecp/randommod.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/safenonce.c +74 -0
- data/ext/ruby_nacl/NaCl/curvecp/safenonce.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/savesync.c +24 -0
- data/ext/ruby_nacl/NaCl/curvecp/savesync.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket.h +9 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_bind.c +15 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_recv.c +23 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_send.c +19 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_udp.c +36 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_pack.c +7 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_pack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_unpack.c +9 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_unpack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_pack.c +9 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_pack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_unpack.c +11 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_unpack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_pack.c +13 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_pack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_unpack.c +15 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_unpack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/writeall.c +27 -0
- data/ext/ruby_nacl/NaCl/curvecp/writeall.h +6 -0
- data/ext/ruby_nacl/NaCl/do +468 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int16.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int32.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int64.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int8.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint16.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint32.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint64.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint8.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/do +47 -0
- data/ext/ruby_nacl/NaCl/inttypes/signed.h +17 -0
- data/ext/ruby_nacl/NaCl/inttypes/unsigned.h +17 -0
- data/ext/ruby_nacl/NaCl/measure-anything.c +225 -0
- data/ext/ruby_nacl/NaCl/okcompilers/abiname.c +45 -0
- data/ext/ruby_nacl/NaCl/okcompilers/archivers +2 -0
- data/ext/ruby_nacl/NaCl/okcompilers/c +8 -0
- data/ext/ruby_nacl/NaCl/okcompilers/cpp +8 -0
- data/ext/ruby_nacl/NaCl/okcompilers/do +196 -0
- data/ext/ruby_nacl/NaCl/okcompilers/lib.c +29 -0
- data/ext/ruby_nacl/NaCl/okcompilers/lib.cpp +19 -0
- data/ext/ruby_nacl/NaCl/okcompilers/main.c +25 -0
- data/ext/ruby_nacl/NaCl/okcompilers/main.cpp +22 -0
- data/ext/ruby_nacl/NaCl/randombytes/devurandom.c +34 -0
- data/ext/ruby_nacl/NaCl/randombytes/devurandom.h +24 -0
- data/ext/ruby_nacl/NaCl/randombytes/do +43 -0
- data/ext/ruby_nacl/NaCl/randombytes/test.c +15 -0
- data/ext/ruby_nacl/NaCl/tests/auth.c +19 -0
- data/ext/ruby_nacl/NaCl/tests/auth.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/auth2.c +34 -0
- data/ext/ruby_nacl/NaCl/tests/auth2.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/auth3.c +34 -0
- data/ext/ruby_nacl/NaCl/tests/auth3.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/auth4.cpp +44 -0
- data/ext/ruby_nacl/NaCl/tests/auth4.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/auth5.c +36 -0
- data/ext/ruby_nacl/NaCl/tests/auth5.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/auth6.cpp +46 -0
- data/ext/ruby_nacl/NaCl/tests/auth6.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box.c +63 -0
- data/ext/ruby_nacl/NaCl/tests/box.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/box2.c +64 -0
- data/ext/ruby_nacl/NaCl/tests/box2.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/box3.cpp +60 -0
- data/ext/ruby_nacl/NaCl/tests/box3.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/box4.cpp +66 -0
- data/ext/ruby_nacl/NaCl/tests/box4.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/box5.cpp +30 -0
- data/ext/ruby_nacl/NaCl/tests/box5.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box6.cpp +43 -0
- data/ext/ruby_nacl/NaCl/tests/box6.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box7.c +36 -0
- data/ext/ruby_nacl/NaCl/tests/box7.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box8.c +41 -0
- data/ext/ruby_nacl/NaCl/tests/box8.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/core1.c +30 -0
- data/ext/ruby_nacl/NaCl/tests/core1.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/core2.c +33 -0
- data/ext/ruby_nacl/NaCl/tests/core2.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/core3.c +41 -0
- data/ext/ruby_nacl/NaCl/tests/core3.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/core4.c +33 -0
- data/ext/ruby_nacl/NaCl/tests/core4.out +8 -0
- data/ext/ruby_nacl/NaCl/tests/core5.c +32 -0
- data/ext/ruby_nacl/NaCl/tests/core5.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/core6.c +47 -0
- data/ext/ruby_nacl/NaCl/tests/core6.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/hash.c +14 -0
- data/ext/ruby_nacl/NaCl/tests/hash.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/hash2.cpp +18 -0
- data/ext/ruby_nacl/NaCl/tests/hash2.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/hash3.c +14 -0
- data/ext/ruby_nacl/NaCl/tests/hash3.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/hash4.cpp +18 -0
- data/ext/ruby_nacl/NaCl/tests/hash4.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth.c +42 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth.out +2 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth2.c +40 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth2.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth5.cpp +46 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth5.out +2 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth6.cpp +50 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth6.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth7.c +36 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth7.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth8.cpp +46 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth8.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult.c +23 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult2.c +23 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult2.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult3.cpp +31 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult3.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult4.cpp +31 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult4.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult5.c +30 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult5.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult6.c +30 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult6.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult7.cpp +32 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult7.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox.c +56 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox2.c +57 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox2.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox3.cpp +52 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox3.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox4.cpp +54 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox4.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox5.cpp +29 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox5.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox6.cpp +42 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox6.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox7.c +32 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox7.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox8.c +37 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox8.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/stream.c +29 -0
- data/ext/ruby_nacl/NaCl/tests/stream.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream2.c +27 -0
- data/ext/ruby_nacl/NaCl/tests/stream2.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream3.c +28 -0
- data/ext/ruby_nacl/NaCl/tests/stream3.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/stream4.c +53 -0
- data/ext/ruby_nacl/NaCl/tests/stream4.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/stream5.cpp +29 -0
- data/ext/ruby_nacl/NaCl/tests/stream5.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream6.cpp +27 -0
- data/ext/ruby_nacl/NaCl/tests/stream6.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream7.cpp +30 -0
- data/ext/ruby_nacl/NaCl/tests/stream7.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/stream8.cpp +56 -0
- data/ext/ruby_nacl/NaCl/tests/stream8.out +17 -0
- data/ext/ruby_nacl/NaCl/try-anything.c +173 -0
- data/ext/ruby_nacl/NaCl/version +1 -0
- data/ext/ruby_nacl/extconf.rb +18 -0
- data/ext/ruby_nacl/ruby_nacl.cpp +147 -0
- data/ext/ruby_nacl/ruby_nacl.h +49 -0
- metadata +554 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#ifndef GE25519_H
|
|
2
|
+
#define GE25519_H
|
|
3
|
+
|
|
4
|
+
#include "fe25519.h"
|
|
5
|
+
#include "sc25519.h"
|
|
6
|
+
|
|
7
|
+
#define ge25519 crypto_sign_edwards25519sha512batch_ge25519
|
|
8
|
+
#define ge25519_unpack_vartime crypto_sign_edwards25519sha512batch_ge25519_unpack_vartime
|
|
9
|
+
#define ge25519_pack crypto_sign_edwards25519sha512batch_ge25519_pack
|
|
10
|
+
#define ge25519_add crypto_sign_edwards25519sha512batch_ge25519_add
|
|
11
|
+
#define ge25519_double crypto_sign_edwards25519sha512batch_ge25519_double
|
|
12
|
+
#define ge25519_scalarmult crypto_sign_edwards25519sha512batch_ge25519_scalarmult
|
|
13
|
+
#define ge25519_scalarmult_base crypto_sign_edwards25519sha512batch_ge25519_scalarmult_base
|
|
14
|
+
|
|
15
|
+
typedef struct {
|
|
16
|
+
fe25519 x;
|
|
17
|
+
fe25519 y;
|
|
18
|
+
fe25519 z;
|
|
19
|
+
fe25519 t;
|
|
20
|
+
} ge25519;
|
|
21
|
+
|
|
22
|
+
int ge25519_unpack_vartime(ge25519 *r, const unsigned char p[32]);
|
|
23
|
+
|
|
24
|
+
void ge25519_pack(unsigned char r[32], const ge25519 *p);
|
|
25
|
+
|
|
26
|
+
void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q);
|
|
27
|
+
|
|
28
|
+
void ge25519_double(ge25519 *r, const ge25519 *p);
|
|
29
|
+
|
|
30
|
+
void ge25519_scalarmult(ge25519 *r, const ge25519 *p, const sc25519 *s);
|
|
31
|
+
|
|
32
|
+
void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s);
|
|
33
|
+
|
|
34
|
+
#endif
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
#include "sc25519.h"
|
|
2
|
+
|
|
3
|
+
/*Arithmetic modulo the group order n = 2^252 + 27742317777372353535851937790883648493 = 7237005577332262213973186563042994240857116359379907606001950938285454250989 */
|
|
4
|
+
|
|
5
|
+
static const crypto_uint32 m[32] = {0xED, 0xD3, 0xF5, 0x5C, 0x1A, 0x63, 0x12, 0x58, 0xD6, 0x9C, 0xF7, 0xA2, 0xDE, 0xF9, 0xDE, 0x14,
|
|
6
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10};
|
|
7
|
+
|
|
8
|
+
static const crypto_uint32 mu[33] = {0x1B, 0x13, 0x2C, 0x0A, 0xA3, 0xE5, 0x9C, 0xED, 0xA7, 0x29, 0x63, 0x08, 0x5D, 0x21, 0x06, 0x21,
|
|
9
|
+
0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F};
|
|
10
|
+
|
|
11
|
+
/* Reduce coefficients of r before calling reduce_add_sub */
|
|
12
|
+
static void reduce_add_sub(sc25519 *r)
|
|
13
|
+
{
|
|
14
|
+
int i, b, pb=0, nb;
|
|
15
|
+
unsigned char t[32];
|
|
16
|
+
|
|
17
|
+
for(i=0;i<32;i++)
|
|
18
|
+
{
|
|
19
|
+
b = (r->v[i]<pb+m[i]);
|
|
20
|
+
t[i] = r->v[i]-pb-m[i]+b*256;
|
|
21
|
+
pb = b;
|
|
22
|
+
}
|
|
23
|
+
nb = 1-b;
|
|
24
|
+
for(i=0;i<32;i++)
|
|
25
|
+
r->v[i] = r->v[i]*b + t[i]*nb;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Reduce coefficients of x before calling barrett_reduce */
|
|
29
|
+
static void barrett_reduce(sc25519 *r, const crypto_uint32 x[64])
|
|
30
|
+
{
|
|
31
|
+
/* See HAC, Alg. 14.42 */
|
|
32
|
+
int i,j;
|
|
33
|
+
crypto_uint32 q2[66] = {0};
|
|
34
|
+
crypto_uint32 *q3 = q2 + 33;
|
|
35
|
+
crypto_uint32 r1[33];
|
|
36
|
+
crypto_uint32 r2[33] = {0};
|
|
37
|
+
crypto_uint32 carry;
|
|
38
|
+
int b, pb=0;
|
|
39
|
+
|
|
40
|
+
for(i=0;i<33;i++)
|
|
41
|
+
for(j=0;j<33;j++)
|
|
42
|
+
if(i+j >= 31) q2[i+j] += mu[i]*x[j+31];
|
|
43
|
+
carry = q2[31] >> 8;
|
|
44
|
+
q2[32] += carry;
|
|
45
|
+
carry = q2[32] >> 8;
|
|
46
|
+
q2[33] += carry;
|
|
47
|
+
|
|
48
|
+
for(i=0;i<33;i++)r1[i] = x[i];
|
|
49
|
+
for(i=0;i<32;i++)
|
|
50
|
+
for(j=0;j<33;j++)
|
|
51
|
+
if(i+j < 33) r2[i+j] += m[i]*q3[j];
|
|
52
|
+
|
|
53
|
+
for(i=0;i<32;i++)
|
|
54
|
+
{
|
|
55
|
+
carry = r2[i] >> 8;
|
|
56
|
+
r2[i+1] += carry;
|
|
57
|
+
r2[i] &= 0xff;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
for(i=0;i<32;i++)
|
|
61
|
+
{
|
|
62
|
+
b = (r1[i]<pb+r2[i]);
|
|
63
|
+
r->v[i] = r1[i]-pb-r2[i]+b*256;
|
|
64
|
+
pb = b;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* XXX: Can it really happen that r<0?, See HAC, Alg 14.42, Step 3
|
|
68
|
+
* If so: Handle it here!
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
reduce_add_sub(r);
|
|
72
|
+
reduce_add_sub(r);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
static int iszero(const sc25519 *x)
|
|
77
|
+
{
|
|
78
|
+
// Implement
|
|
79
|
+
return 0;
|
|
80
|
+
}
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
void sc25519_from32bytes(sc25519 *r, const unsigned char x[32])
|
|
84
|
+
{
|
|
85
|
+
int i;
|
|
86
|
+
crypto_uint32 t[64] = {0};
|
|
87
|
+
for(i=0;i<32;i++) t[i] = x[i];
|
|
88
|
+
barrett_reduce(r, t);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void sc25519_from64bytes(sc25519 *r, const unsigned char x[64])
|
|
92
|
+
{
|
|
93
|
+
int i;
|
|
94
|
+
crypto_uint32 t[64] = {0};
|
|
95
|
+
for(i=0;i<64;i++) t[i] = x[i];
|
|
96
|
+
barrett_reduce(r, t);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* XXX: What we actually want for crypto_group is probably just something like
|
|
100
|
+
* void sc25519_frombytes(sc25519 *r, const unsigned char *x, size_t xlen)
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
void sc25519_to32bytes(unsigned char r[32], const sc25519 *x)
|
|
104
|
+
{
|
|
105
|
+
int i;
|
|
106
|
+
for(i=0;i<32;i++) r[i] = x->v[i];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y)
|
|
110
|
+
{
|
|
111
|
+
int i, carry;
|
|
112
|
+
for(i=0;i<32;i++) r->v[i] = x->v[i] + y->v[i];
|
|
113
|
+
for(i=0;i<31;i++)
|
|
114
|
+
{
|
|
115
|
+
carry = r->v[i] >> 8;
|
|
116
|
+
r->v[i+1] += carry;
|
|
117
|
+
r->v[i] &= 0xff;
|
|
118
|
+
}
|
|
119
|
+
reduce_add_sub(r);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y)
|
|
123
|
+
{
|
|
124
|
+
int i,j,carry;
|
|
125
|
+
crypto_uint32 t[64];
|
|
126
|
+
for(i=0;i<64;i++)t[i] = 0;
|
|
127
|
+
|
|
128
|
+
for(i=0;i<32;i++)
|
|
129
|
+
for(j=0;j<32;j++)
|
|
130
|
+
t[i+j] += x->v[i] * y->v[j];
|
|
131
|
+
|
|
132
|
+
/* Reduce coefficients */
|
|
133
|
+
for(i=0;i<63;i++)
|
|
134
|
+
{
|
|
135
|
+
carry = t[i] >> 8;
|
|
136
|
+
t[i+1] += carry;
|
|
137
|
+
t[i] &= 0xff;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
barrett_reduce(r, t);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
void sc25519_square(sc25519 *r, const sc25519 *x)
|
|
144
|
+
{
|
|
145
|
+
sc25519_mul(r, x, x);
|
|
146
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#ifndef SC25519_H
|
|
2
|
+
#define SC25519_H
|
|
3
|
+
|
|
4
|
+
#define sc25519 crypto_sign_edwards25519sha512batch_sc25519
|
|
5
|
+
#define sc25519_from32bytes crypto_sign_edwards25519sha512batch_sc25519_from32bytes
|
|
6
|
+
#define sc25519_from64bytes crypto_sign_edwards25519sha512batch_sc25519_from64bytes
|
|
7
|
+
#define sc25519_to32bytes crypto_sign_edwards25519sha512batch_sc25519_to32bytes
|
|
8
|
+
#define sc25519_pack crypto_sign_edwards25519sha512batch_sc25519_pack
|
|
9
|
+
#define sc25519_getparity crypto_sign_edwards25519sha512batch_sc25519_getparity
|
|
10
|
+
#define sc25519_setone crypto_sign_edwards25519sha512batch_sc25519_setone
|
|
11
|
+
#define sc25519_setzero crypto_sign_edwards25519sha512batch_sc25519_setzero
|
|
12
|
+
#define sc25519_neg crypto_sign_edwards25519sha512batch_sc25519_neg
|
|
13
|
+
#define sc25519_add crypto_sign_edwards25519sha512batch_sc25519_add
|
|
14
|
+
#define sc25519_sub crypto_sign_edwards25519sha512batch_sc25519_sub
|
|
15
|
+
#define sc25519_mul crypto_sign_edwards25519sha512batch_sc25519_mul
|
|
16
|
+
#define sc25519_square crypto_sign_edwards25519sha512batch_sc25519_square
|
|
17
|
+
#define sc25519_invert crypto_sign_edwards25519sha512batch_sc25519_invert
|
|
18
|
+
|
|
19
|
+
#include "crypto_uint32.h"
|
|
20
|
+
|
|
21
|
+
typedef struct {
|
|
22
|
+
crypto_uint32 v[32];
|
|
23
|
+
} sc25519;
|
|
24
|
+
|
|
25
|
+
void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]);
|
|
26
|
+
|
|
27
|
+
void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]);
|
|
28
|
+
|
|
29
|
+
void sc25519_to32bytes(unsigned char r[32], const sc25519 *x);
|
|
30
|
+
|
|
31
|
+
void sc25519_pack(unsigned char r[32], const sc25519 *x);
|
|
32
|
+
|
|
33
|
+
unsigned char sc25519_getparity(const sc25519 *x);
|
|
34
|
+
|
|
35
|
+
void sc25519_setone(sc25519 *r);
|
|
36
|
+
|
|
37
|
+
void sc25519_setzero(sc25519 *r);
|
|
38
|
+
|
|
39
|
+
void sc25519_neg(sc25519 *r, const sc25519 *x);
|
|
40
|
+
|
|
41
|
+
void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y);
|
|
42
|
+
|
|
43
|
+
void sc25519_sub(sc25519 *r, const sc25519 *x, const sc25519 *y);
|
|
44
|
+
|
|
45
|
+
void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y);
|
|
46
|
+
|
|
47
|
+
void sc25519_square(sc25519 *r, const sc25519 *x);
|
|
48
|
+
|
|
49
|
+
void sc25519_invert(sc25519 *r, const sc25519 *x);
|
|
50
|
+
|
|
51
|
+
#endif
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#include "api.h"
|
|
2
|
+
#include "crypto_sign.h"
|
|
3
|
+
#include "crypto_hash_sha512.h"
|
|
4
|
+
#include "randombytes.h"
|
|
5
|
+
#include "crypto_verify_32.h"
|
|
6
|
+
|
|
7
|
+
#include "ge25519.h"
|
|
8
|
+
|
|
9
|
+
int crypto_sign_keypair(
|
|
10
|
+
unsigned char *pk,
|
|
11
|
+
unsigned char *sk
|
|
12
|
+
)
|
|
13
|
+
{
|
|
14
|
+
sc25519 scsk;
|
|
15
|
+
ge25519 gepk;
|
|
16
|
+
|
|
17
|
+
randombytes(sk, 32);
|
|
18
|
+
crypto_hash_sha512(sk, sk, 32);
|
|
19
|
+
sk[0] &= 248;
|
|
20
|
+
sk[31] &= 127;
|
|
21
|
+
sk[31] |= 64;
|
|
22
|
+
|
|
23
|
+
sc25519_from32bytes(&scsk,sk);
|
|
24
|
+
|
|
25
|
+
ge25519_scalarmult_base(&gepk, &scsk);
|
|
26
|
+
ge25519_pack(pk, &gepk);
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
int crypto_sign(
|
|
31
|
+
unsigned char *sm,unsigned long long *smlen,
|
|
32
|
+
const unsigned char *m,unsigned long long mlen,
|
|
33
|
+
const unsigned char *sk
|
|
34
|
+
)
|
|
35
|
+
{
|
|
36
|
+
sc25519 sck, scs, scsk;
|
|
37
|
+
ge25519 ger;
|
|
38
|
+
unsigned char r[32];
|
|
39
|
+
unsigned char s[32];
|
|
40
|
+
unsigned long long i;
|
|
41
|
+
unsigned char hmg[crypto_hash_sha512_BYTES];
|
|
42
|
+
unsigned char hmr[crypto_hash_sha512_BYTES];
|
|
43
|
+
|
|
44
|
+
*smlen = mlen+64;
|
|
45
|
+
for(i=0;i<mlen;i++)
|
|
46
|
+
sm[32 + i] = m[i];
|
|
47
|
+
for(i=0;i<32;i++)
|
|
48
|
+
sm[i] = sk[32+i];
|
|
49
|
+
crypto_hash_sha512(hmg, sm, mlen+32); /* Generate k as h(m,sk[32],...,sk[63]) */
|
|
50
|
+
|
|
51
|
+
sc25519_from64bytes(&sck, hmg);
|
|
52
|
+
ge25519_scalarmult_base(&ger, &sck);
|
|
53
|
+
ge25519_pack(r, &ger);
|
|
54
|
+
|
|
55
|
+
for(i=0;i<32;i++)
|
|
56
|
+
sm[i] = r[i];
|
|
57
|
+
|
|
58
|
+
crypto_hash_sha512(hmr, sm, mlen+32); /* Compute h(m,r) */
|
|
59
|
+
sc25519_from64bytes(&scs, hmr);
|
|
60
|
+
sc25519_mul(&scs, &scs, &sck);
|
|
61
|
+
|
|
62
|
+
sc25519_from32bytes(&scsk, sk);
|
|
63
|
+
sc25519_add(&scs, &scs, &scsk);
|
|
64
|
+
|
|
65
|
+
sc25519_to32bytes(s,&scs); /* cat s */
|
|
66
|
+
for(i=0;i<32;i++)
|
|
67
|
+
sm[mlen+32+i] = s[i];
|
|
68
|
+
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
int crypto_sign_open(
|
|
73
|
+
unsigned char *m,unsigned long long *mlen,
|
|
74
|
+
const unsigned char *sm,unsigned long long smlen,
|
|
75
|
+
const unsigned char *pk
|
|
76
|
+
)
|
|
77
|
+
{
|
|
78
|
+
int i;
|
|
79
|
+
unsigned char t1[32], t2[32];
|
|
80
|
+
ge25519 get1, get2, gepk;
|
|
81
|
+
sc25519 schmr, scs;
|
|
82
|
+
unsigned char hmr[crypto_hash_sha512_BYTES];
|
|
83
|
+
|
|
84
|
+
if (ge25519_unpack_vartime(&get1, sm)) return -1;
|
|
85
|
+
if (ge25519_unpack_vartime(&gepk, pk)) return -1;
|
|
86
|
+
|
|
87
|
+
crypto_hash_sha512(hmr,sm,smlen-32);
|
|
88
|
+
|
|
89
|
+
sc25519_from64bytes(&schmr, hmr);
|
|
90
|
+
ge25519_scalarmult(&get1, &get1, &schmr);
|
|
91
|
+
ge25519_add(&get1, &get1, &gepk);
|
|
92
|
+
ge25519_pack(t1, &get1);
|
|
93
|
+
|
|
94
|
+
sc25519_from32bytes(&scs, &sm[smlen-32]);
|
|
95
|
+
ge25519_scalarmult_base(&get2, &scs);
|
|
96
|
+
ge25519_pack(t2, &get2);
|
|
97
|
+
|
|
98
|
+
for(i=0;i<smlen-64;i++)
|
|
99
|
+
m[i] = sm[i + 32];
|
|
100
|
+
*mlen = smlen-64;
|
|
101
|
+
|
|
102
|
+
return crypto_verify_32(t1, t2);
|
|
103
|
+
}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include "randombytes.h"
|
|
3
|
+
#include "cpucycles.h"
|
|
4
|
+
#include "crypto_sign.h"
|
|
5
|
+
|
|
6
|
+
extern void printentry(long long,const char *,long long *,long long);
|
|
7
|
+
extern unsigned char *alignedcalloc(unsigned long long);
|
|
8
|
+
extern const char *primitiveimplementation;
|
|
9
|
+
extern const char *implementationversion;
|
|
10
|
+
extern const char *sizenames[];
|
|
11
|
+
extern const long long sizes[];
|
|
12
|
+
extern void allocate(void);
|
|
13
|
+
extern void measure(void);
|
|
14
|
+
|
|
15
|
+
const char *primitiveimplementation = crypto_sign_IMPLEMENTATION;
|
|
16
|
+
const char *implementationversion = crypto_sign_VERSION;
|
|
17
|
+
const char *sizenames[] = { "outputbytes", "publickeybytes", "secretkeybytes", 0 };
|
|
18
|
+
const long long sizes[] = { crypto_sign_BYTES, crypto_sign_PUBLICKEYBYTES, crypto_sign_SECRETKEYBYTES };
|
|
19
|
+
|
|
20
|
+
#define MAXTEST_BYTES 100000
|
|
21
|
+
|
|
22
|
+
static unsigned char *pk;
|
|
23
|
+
static unsigned char *sk;
|
|
24
|
+
static unsigned char *m; unsigned long long mlen;
|
|
25
|
+
static unsigned char *sm; unsigned long long smlen;
|
|
26
|
+
static unsigned char *t; unsigned long long tlen;
|
|
27
|
+
|
|
28
|
+
void preallocate(void)
|
|
29
|
+
{
|
|
30
|
+
#ifdef RAND_R_PRNG_NOT_SEEDED
|
|
31
|
+
RAND_status();
|
|
32
|
+
#endif
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
void allocate(void)
|
|
36
|
+
{
|
|
37
|
+
pk = alignedcalloc(crypto_sign_PUBLICKEYBYTES);
|
|
38
|
+
sk = alignedcalloc(crypto_sign_SECRETKEYBYTES);
|
|
39
|
+
m = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
|
|
40
|
+
sm = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
|
|
41
|
+
t = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#define TIMINGS 31
|
|
45
|
+
static long long cycles[TIMINGS + 1];
|
|
46
|
+
static long long bytes[TIMINGS + 1];
|
|
47
|
+
|
|
48
|
+
void measure(void)
|
|
49
|
+
{
|
|
50
|
+
int i;
|
|
51
|
+
int loop;
|
|
52
|
+
|
|
53
|
+
for (loop = 0;loop < LOOPS;++loop) {
|
|
54
|
+
for (i = 0;i <= TIMINGS;++i) {
|
|
55
|
+
cycles[i] = cpucycles();
|
|
56
|
+
crypto_sign_keypair(pk,sk);
|
|
57
|
+
}
|
|
58
|
+
for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
|
|
59
|
+
printentry(-1,"keypair_cycles",cycles,TIMINGS);
|
|
60
|
+
|
|
61
|
+
for (mlen = 0;mlen <= MAXTEST_BYTES;mlen += 1 + mlen / 4) {
|
|
62
|
+
randombytes(m,mlen);
|
|
63
|
+
|
|
64
|
+
for (i = 0;i <= TIMINGS;++i) {
|
|
65
|
+
cycles[i] = cpucycles();
|
|
66
|
+
bytes[i] = crypto_sign(sm,&smlen,m,mlen,sk);
|
|
67
|
+
if (bytes[i] == 0) bytes[i] = smlen;
|
|
68
|
+
}
|
|
69
|
+
for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
|
|
70
|
+
printentry(mlen,"cycles",cycles,TIMINGS);
|
|
71
|
+
printentry(mlen,"bytes",bytes,TIMINGS);
|
|
72
|
+
|
|
73
|
+
for (i = 0;i <= TIMINGS;++i) {
|
|
74
|
+
cycles[i] = cpucycles();
|
|
75
|
+
bytes[i] = crypto_sign_open(t,&tlen,sm,smlen,pk);
|
|
76
|
+
if (bytes[i] == 0) bytes[i] = tlen;
|
|
77
|
+
}
|
|
78
|
+
for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
|
|
79
|
+
printentry(mlen,"open_cycles",cycles,TIMINGS);
|
|
80
|
+
printentry(mlen,"open_bytes",bytes,TIMINGS);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* crypto_sign/try.c version 20090118
|
|
3
|
+
* D. J. Bernstein
|
|
4
|
+
* Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include <stdlib.h>
|
|
8
|
+
#include "randombytes.h"
|
|
9
|
+
#include "crypto_sign.h"
|
|
10
|
+
|
|
11
|
+
#define MAXTEST_BYTES 10000
|
|
12
|
+
#define TUNE_BYTES 1536
|
|
13
|
+
|
|
14
|
+
extern unsigned char *alignedcalloc(unsigned long long);
|
|
15
|
+
|
|
16
|
+
const char *primitiveimplementation = crypto_sign_IMPLEMENTATION;
|
|
17
|
+
|
|
18
|
+
static unsigned char *pk;
|
|
19
|
+
static unsigned char *sk;
|
|
20
|
+
static unsigned char *m; unsigned long long mlen;
|
|
21
|
+
static unsigned char *sm; unsigned long long smlen;
|
|
22
|
+
static unsigned char *t; unsigned long long tlen;
|
|
23
|
+
|
|
24
|
+
void preallocate(void)
|
|
25
|
+
{
|
|
26
|
+
#ifdef RAND_R_PRNG_NOT_SEEDED
|
|
27
|
+
RAND_status();
|
|
28
|
+
#endif
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
void allocate(void)
|
|
32
|
+
{
|
|
33
|
+
pk = alignedcalloc(crypto_sign_PUBLICKEYBYTES);
|
|
34
|
+
sk = alignedcalloc(crypto_sign_SECRETKEYBYTES);
|
|
35
|
+
m = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
|
|
36
|
+
sm = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
|
|
37
|
+
t = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
void predoit(void)
|
|
41
|
+
{
|
|
42
|
+
crypto_sign_keypair(pk,sk);
|
|
43
|
+
mlen = TUNE_BYTES;
|
|
44
|
+
smlen = 0;
|
|
45
|
+
randombytes(m,mlen);
|
|
46
|
+
crypto_sign(sm,&smlen,m,mlen,sk);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
void doit(void)
|
|
50
|
+
{
|
|
51
|
+
crypto_sign_open(t,&tlen,sm,smlen,pk);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
char checksum[crypto_sign_BYTES * 2 + 1];
|
|
55
|
+
|
|
56
|
+
const char *checksum_compute(void)
|
|
57
|
+
{
|
|
58
|
+
long long mlen;
|
|
59
|
+
long long i;
|
|
60
|
+
long long j;
|
|
61
|
+
|
|
62
|
+
if (crypto_sign_keypair(pk,sk) != 0) return "crypto_sign_keypair returns nonzero";
|
|
63
|
+
for (mlen = 0;mlen < MAXTEST_BYTES;mlen += 1 + (mlen / 16)) {
|
|
64
|
+
if (crypto_sign(sm,&smlen,m,mlen,sk) != 0) return "crypto_sign returns nonzero";
|
|
65
|
+
if (crypto_sign_open(t,&tlen,sm,smlen,pk) != 0) return "crypto_sign_open returns nonzero";
|
|
66
|
+
if (tlen != mlen) return "crypto_sign_open does not match length";
|
|
67
|
+
for (i = 0;i < tlen;++i)
|
|
68
|
+
if (t[i] != m[i])
|
|
69
|
+
return "crypto_sign_open does not match contents";
|
|
70
|
+
|
|
71
|
+
j = random() % smlen;
|
|
72
|
+
sm[j] ^= 1;
|
|
73
|
+
if (crypto_sign_open(t,&tlen,sm,smlen,pk) == 0) {
|
|
74
|
+
if (tlen != mlen) return "crypto_sign_open allows trivial forgery of length";
|
|
75
|
+
for (i = 0;i < tlen;++i)
|
|
76
|
+
if (t[i] != m[i])
|
|
77
|
+
return "crypto_sign_open allows trivial forgery of contents";
|
|
78
|
+
}
|
|
79
|
+
sm[j] ^= 1;
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* do some long-term checksum */
|
|
84
|
+
checksum[0] = 0;
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#include <string>
|
|
2
|
+
using std::string;
|
|
3
|
+
#include "crypto_sign.h"
|
|
4
|
+
|
|
5
|
+
string crypto_sign_keypair(string *sk_string)
|
|
6
|
+
{
|
|
7
|
+
unsigned char pk[crypto_sign_PUBLICKEYBYTES];
|
|
8
|
+
unsigned char sk[crypto_sign_SECRETKEYBYTES];
|
|
9
|
+
crypto_sign_keypair(pk,sk);
|
|
10
|
+
*sk_string = string((char *) sk,sizeof sk);
|
|
11
|
+
return string((char *) pk,sizeof pk);
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#include <string>
|
|
2
|
+
using std::string;
|
|
3
|
+
#include "crypto_sign.h"
|
|
4
|
+
|
|
5
|
+
string crypto_sign_open(const string &sm_string, const string &pk_string)
|
|
6
|
+
{
|
|
7
|
+
if (pk_string.size() != crypto_sign_PUBLICKEYBYTES) throw "incorrect public-key length";
|
|
8
|
+
size_t smlen = sm_string.size();
|
|
9
|
+
unsigned char m[smlen];
|
|
10
|
+
unsigned long long mlen;
|
|
11
|
+
for (int i = 0;i < smlen;++i) m[i] = sm_string[i];
|
|
12
|
+
if (crypto_sign_open(
|
|
13
|
+
m,
|
|
14
|
+
&mlen,
|
|
15
|
+
m,
|
|
16
|
+
smlen,
|
|
17
|
+
(const unsigned char *) pk_string.c_str()
|
|
18
|
+
) != 0)
|
|
19
|
+
throw "ciphertext fails verification";
|
|
20
|
+
return string(
|
|
21
|
+
(char *) m,
|
|
22
|
+
mlen
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#include <string>
|
|
2
|
+
using std::string;
|
|
3
|
+
#include "crypto_sign.h"
|
|
4
|
+
|
|
5
|
+
string crypto_sign(const string &m_string, const string &sk_string)
|
|
6
|
+
{
|
|
7
|
+
if (sk_string.size() != crypto_sign_SECRETKEYBYTES) throw "incorrect secret-key length";
|
|
8
|
+
size_t mlen = m_string.size();
|
|
9
|
+
unsigned char m[mlen+crypto_sign_BYTES];
|
|
10
|
+
unsigned long long smlen;
|
|
11
|
+
for (int i = 0;i < mlen;++i) m[i] = m_string[i];
|
|
12
|
+
crypto_sign(
|
|
13
|
+
m,
|
|
14
|
+
&smlen,
|
|
15
|
+
m,
|
|
16
|
+
mlen,
|
|
17
|
+
(const unsigned char *) sk_string.c_str()
|
|
18
|
+
);
|
|
19
|
+
return string(
|
|
20
|
+
(char *) m,
|
|
21
|
+
smlen
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6e9966897837aae181e93261ae88fdf0
|