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
data/Changelog
ADDED
|
File without changes
|
data/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
## About Ruby_NaCl ##
|
|
2
|
+
|
|
3
|
+
Ruby_NaCl is a Ruby gem that provides a wrapper around DJB's awesome NaCl library.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## What is NaCl? ##
|
|
8
|
+
|
|
9
|
+
[NaCl (pronounced "salt")](http://http://nacl.cr.yp.to/) is a new easy-to-use high-speed software library for network communication, encryption, decryption, signatures, etc written by Daniel J. Bernstein.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Install the gem ##
|
|
14
|
+
|
|
15
|
+
1. git clone http://github.com/CaffeinatedMind/Ruby_NaCl.git
|
|
16
|
+
2. cd Ruby_NaCl
|
|
17
|
+
3. git submodule init
|
|
18
|
+
4. git submodule update
|
|
19
|
+
5. gem build ruby_nacl.gemspec
|
|
20
|
+
6. gem install ruby_nacl-0.1.0.gem
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## "Hello, World" example ##
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
require 'ruby_nacl'
|
|
28
|
+
|
|
29
|
+
sender = NaCl.new
|
|
30
|
+
receiver = NaCl.new
|
|
31
|
+
|
|
32
|
+
sender.set_remote_nonce(receiver.nonce)
|
|
33
|
+
receiver.set_remote_nonce(sender.nonce)
|
|
34
|
+
|
|
35
|
+
sender.set_remote_key(receiver.public_key)
|
|
36
|
+
receiver.set_remote_key(sender.public_key)
|
|
37
|
+
|
|
38
|
+
receiver.set_secret(sender.secret)
|
|
39
|
+
|
|
40
|
+
message = "Hello world!"
|
|
41
|
+
encrypted_message = sender.public_encrypt(message)
|
|
42
|
+
decrypted_message = receiver.public_decrypt(encrypted_message)
|
|
43
|
+
puts decrypted_message
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## License ##
|
|
48
|
+
|
|
49
|
+
Ruby_NaCl is licensed under the [Ruby License](http://www.ruby-lang.org/en/LICENSE.txt).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
crypto_verify
|
|
2
|
+
crypto_verify_BYTES
|
|
3
|
+
crypto_core
|
|
4
|
+
crypto_core_OUTPUTBYTES
|
|
5
|
+
crypto_core_INPUTBYTES
|
|
6
|
+
crypto_core_KEYBYTES
|
|
7
|
+
crypto_core_CONSTBYTES
|
|
8
|
+
crypto_hashblocks
|
|
9
|
+
crypto_hashblocks_STATEBYTES
|
|
10
|
+
crypto_hashblocks_BLOCKBYTES
|
|
11
|
+
crypto_hash
|
|
12
|
+
crypto_hash_BYTES
|
|
13
|
+
crypto_stream
|
|
14
|
+
crypto_stream_xor
|
|
15
|
+
crypto_stream_beforenm
|
|
16
|
+
crypto_stream_afternm
|
|
17
|
+
crypto_stream_xor_afternm
|
|
18
|
+
crypto_stream_KEYBYTES
|
|
19
|
+
crypto_stream_NONCEBYTES
|
|
20
|
+
crypto_stream_BEFORENMBYTES
|
|
21
|
+
crypto_onetimeauth
|
|
22
|
+
crypto_onetimeauth_verify
|
|
23
|
+
crypto_onetimeauth_BYTES
|
|
24
|
+
crypto_onetimeauth_KEYBYTES
|
|
25
|
+
crypto_auth
|
|
26
|
+
crypto_auth_verify
|
|
27
|
+
crypto_auth_BYTES
|
|
28
|
+
crypto_auth_KEYBYTES
|
|
29
|
+
crypto_secretbox
|
|
30
|
+
crypto_secretbox_open
|
|
31
|
+
crypto_secretbox_KEYBYTES
|
|
32
|
+
crypto_secretbox_NONCEBYTES
|
|
33
|
+
crypto_secretbox_ZEROBYTES
|
|
34
|
+
crypto_secretbox_BOXZEROBYTES
|
|
35
|
+
crypto_scalarmult
|
|
36
|
+
crypto_scalarmult_base
|
|
37
|
+
crypto_scalarmult_BYTES
|
|
38
|
+
crypto_scalarmult_SCALARBYTES
|
|
39
|
+
crypto_box
|
|
40
|
+
crypto_box_open
|
|
41
|
+
crypto_box_keypair
|
|
42
|
+
crypto_box_beforenm
|
|
43
|
+
crypto_box_afternm
|
|
44
|
+
crypto_box_open_afternm
|
|
45
|
+
crypto_box_PUBLICKEYBYTES
|
|
46
|
+
crypto_box_SECRETKEYBYTES
|
|
47
|
+
crypto_box_BEFORENMBYTES
|
|
48
|
+
crypto_box_NONCEBYTES
|
|
49
|
+
crypto_box_ZEROBYTES
|
|
50
|
+
crypto_box_BOXZEROBYTES
|
|
51
|
+
crypto_sign
|
|
52
|
+
crypto_sign_open
|
|
53
|
+
crypto_sign_keypair
|
|
54
|
+
crypto_sign_BYTES
|
|
55
|
+
crypto_sign_PUBLICKEYBYTES
|
|
56
|
+
crypto_sign_SECRETKEYBYTES
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
extern int crypto_verify(const unsigned char *,const unsigned char *);
|
|
2
|
+
extern int crypto_core(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
3
|
+
extern int crypto_hashblocks(unsigned char *,const unsigned char *,unsigned long long);
|
|
4
|
+
extern int crypto_hash(unsigned char *,const unsigned char *,unsigned long long);
|
|
5
|
+
extern int crypto_stream(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
6
|
+
extern int crypto_stream_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
7
|
+
extern int crypto_stream_beforenm(unsigned char *,const unsigned char *);
|
|
8
|
+
extern int crypto_stream_afternm(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
9
|
+
extern int crypto_stream_xor_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
10
|
+
extern int crypto_onetimeauth(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
11
|
+
extern int crypto_onetimeauth_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
12
|
+
extern int crypto_auth(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
13
|
+
extern int crypto_auth_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
14
|
+
extern int crypto_secretbox(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
15
|
+
extern int crypto_secretbox_open(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
16
|
+
extern int crypto_scalarmult(unsigned char *,const unsigned char *,const unsigned char *);
|
|
17
|
+
extern int crypto_scalarmult_base(unsigned char *,const unsigned char *);
|
|
18
|
+
extern int crypto_box(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
19
|
+
extern int crypto_box_open(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
20
|
+
extern int crypto_box_keypair(unsigned char *,unsigned char *);
|
|
21
|
+
extern int crypto_box_beforenm(unsigned char *,const unsigned char *,const unsigned char *);
|
|
22
|
+
extern int crypto_box_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
23
|
+
extern int crypto_box_open_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
24
|
+
extern int crypto_sign(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
25
|
+
extern int crypto_sign_open(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
26
|
+
extern int crypto_sign_keypair(unsigned char *,unsigned char *);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
extern std::string crypto_auth(const std::string &,const std::string &);
|
|
2
|
+
extern void crypto_auth_verify(const std::string &,const std::string &,const std::string &);
|
|
3
|
+
extern std::string crypto_box(const std::string &,const std::string &,const std::string &,const std::string &);
|
|
4
|
+
extern std::string crypto_box_open(const std::string &,const std::string &,const std::string &,const std::string &);
|
|
5
|
+
extern std::string crypto_box_keypair(std::string *);
|
|
6
|
+
extern std::string crypto_hash(const std::string &);
|
|
7
|
+
extern std::string crypto_onetimeauth(const std::string &,const std::string &);
|
|
8
|
+
extern void crypto_onetimeauth_verify(const std::string &,const std::string &,const std::string &);
|
|
9
|
+
extern std::string crypto_scalarmult(const std::string &,const std::string &);
|
|
10
|
+
extern std::string crypto_scalarmult_base(const std::string &);
|
|
11
|
+
extern std::string crypto_secretbox(const std::string &,const std::string &,const std::string &);
|
|
12
|
+
extern std::string crypto_secretbox_open(const std::string &,const std::string &,const std::string &);
|
|
13
|
+
extern std::string crypto_stream(size_t,const std::string &,const std::string &);
|
|
14
|
+
extern std::string crypto_stream_xor(const std::string &,const std::string &,const std::string &);
|
|
15
|
+
extern std::string crypto_sign(const std::string &,const std::string &);
|
|
16
|
+
extern std::string crypto_sign_open(const std::string &,const std::string &);
|
|
17
|
+
extern std::string crypto_sign_keypair(std::string *);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Go here for info: http://nacl.cr.yp.to/
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
commandline/nacl-sha256.c version 20080713
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include <sys/types.h>
|
|
8
|
+
#include <sys/stat.h>
|
|
9
|
+
#include <sys/mman.h>
|
|
10
|
+
#include <unistd.h>
|
|
11
|
+
#include <string.h>
|
|
12
|
+
#include <stdlib.h>
|
|
13
|
+
#include <stdio.h>
|
|
14
|
+
#include "crypto_hash_sha256.h"
|
|
15
|
+
|
|
16
|
+
unsigned char *input;
|
|
17
|
+
unsigned long long inputalloc;
|
|
18
|
+
unsigned long long inputlen;
|
|
19
|
+
|
|
20
|
+
unsigned char h[crypto_hash_sha256_BYTES];
|
|
21
|
+
|
|
22
|
+
void h_print(void)
|
|
23
|
+
{
|
|
24
|
+
int i;
|
|
25
|
+
for (i = 0;i < crypto_hash_sha256_BYTES;++i) printf("%02x",255 & (int) h[i]);
|
|
26
|
+
printf("\n");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
int main()
|
|
30
|
+
{
|
|
31
|
+
struct stat st;
|
|
32
|
+
int ch;
|
|
33
|
+
|
|
34
|
+
if (fstat(0,&st) == 0) {
|
|
35
|
+
input = mmap(0,st.st_size,PROT_READ,MAP_SHARED,0,0);
|
|
36
|
+
if (input != MAP_FAILED) {
|
|
37
|
+
crypto_hash_sha256(h,input,st.st_size);
|
|
38
|
+
h_print();
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
input = 0;
|
|
44
|
+
inputalloc = 0;
|
|
45
|
+
inputlen = 0;
|
|
46
|
+
|
|
47
|
+
while ((ch = getchar()) != EOF) {
|
|
48
|
+
if (inputlen >= inputalloc) {
|
|
49
|
+
void *newinput;
|
|
50
|
+
while (inputlen >= inputalloc)
|
|
51
|
+
inputalloc = inputalloc * 2 + 1;
|
|
52
|
+
if (posix_memalign(&newinput,16,inputalloc) != 0) return 111;
|
|
53
|
+
memcpy(newinput,input,inputlen);
|
|
54
|
+
free(input);
|
|
55
|
+
input = newinput;
|
|
56
|
+
}
|
|
57
|
+
input[inputlen++] = ch;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
crypto_hash_sha256(h,input,inputlen);
|
|
61
|
+
h_print();
|
|
62
|
+
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
commandline/nacl-sha512.c version 20080713
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include <sys/types.h>
|
|
8
|
+
#include <sys/stat.h>
|
|
9
|
+
#include <sys/mman.h>
|
|
10
|
+
#include <unistd.h>
|
|
11
|
+
#include <string.h>
|
|
12
|
+
#include <stdlib.h>
|
|
13
|
+
#include <stdio.h>
|
|
14
|
+
#include "crypto_hash_sha512.h"
|
|
15
|
+
|
|
16
|
+
unsigned char *input;
|
|
17
|
+
unsigned long long inputalloc;
|
|
18
|
+
unsigned long long inputlen;
|
|
19
|
+
|
|
20
|
+
unsigned char h[crypto_hash_sha512_BYTES];
|
|
21
|
+
|
|
22
|
+
void h_print(void)
|
|
23
|
+
{
|
|
24
|
+
int i;
|
|
25
|
+
for (i = 0;i < crypto_hash_sha512_BYTES;++i) printf("%02x",255 & (int) h[i]);
|
|
26
|
+
printf("\n");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
int main()
|
|
30
|
+
{
|
|
31
|
+
struct stat st;
|
|
32
|
+
int ch;
|
|
33
|
+
|
|
34
|
+
if (fstat(0,&st) == 0) {
|
|
35
|
+
input = mmap(0,st.st_size,PROT_READ,MAP_SHARED,0,0);
|
|
36
|
+
if (input != MAP_FAILED) {
|
|
37
|
+
crypto_hash_sha512(h,input,st.st_size);
|
|
38
|
+
h_print();
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
input = 0;
|
|
44
|
+
inputalloc = 0;
|
|
45
|
+
inputlen = 0;
|
|
46
|
+
|
|
47
|
+
while ((ch = getchar()) != EOF) {
|
|
48
|
+
if (inputlen >= inputalloc) {
|
|
49
|
+
void *newinput;
|
|
50
|
+
while (inputlen >= inputalloc)
|
|
51
|
+
inputalloc = inputalloc * 2 + 1;
|
|
52
|
+
if (posix_memalign(&newinput,16,inputalloc) != 0) return 111;
|
|
53
|
+
memcpy(newinput,input,inputlen);
|
|
54
|
+
free(input);
|
|
55
|
+
input = newinput;
|
|
56
|
+
}
|
|
57
|
+
input[inputlen++] = ch;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
crypto_hash_sha512(h,input,inputlen);
|
|
61
|
+
h_print();
|
|
62
|
+
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles/alpha.c version 20060316
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include <time.h>
|
|
8
|
+
#include <unistd.h>
|
|
9
|
+
#include <sys/time.h>
|
|
10
|
+
|
|
11
|
+
static long long tod(void)
|
|
12
|
+
{
|
|
13
|
+
struct timeval t;
|
|
14
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
15
|
+
return t.tv_sec * (long long) 1000000 + t.tv_usec;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
static long long rpcc(void)
|
|
19
|
+
{
|
|
20
|
+
unsigned long long t;
|
|
21
|
+
asm volatile("rpcc %0" : "=r"(t));
|
|
22
|
+
return t & 0xffffffff;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static long long firstrpcc;
|
|
26
|
+
static long long firsttod;
|
|
27
|
+
static long long lastrpcc;
|
|
28
|
+
static long long lasttod;
|
|
29
|
+
static double mhz = 0;
|
|
30
|
+
|
|
31
|
+
static void init(void)
|
|
32
|
+
{
|
|
33
|
+
firstrpcc = rpcc();
|
|
34
|
+
firsttod = tod();
|
|
35
|
+
|
|
36
|
+
do {
|
|
37
|
+
lastrpcc = rpcc();
|
|
38
|
+
lasttod = tod();
|
|
39
|
+
} while (lasttod - firsttod < 10000);
|
|
40
|
+
|
|
41
|
+
lastrpcc -= firstrpcc; lastrpcc &= 0xffffffff;
|
|
42
|
+
lasttod -= firsttod;
|
|
43
|
+
|
|
44
|
+
mhz = (double) lastrpcc / (double) lasttod;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
long long cpucycles_alpha(void)
|
|
48
|
+
{
|
|
49
|
+
double x;
|
|
50
|
+
long long y;
|
|
51
|
+
|
|
52
|
+
if (!mhz) init();
|
|
53
|
+
|
|
54
|
+
lastrpcc = rpcc();
|
|
55
|
+
lasttod = tod();
|
|
56
|
+
|
|
57
|
+
lastrpcc -= firstrpcc; lastrpcc &= 0xffffffff;
|
|
58
|
+
lasttod -= firsttod;
|
|
59
|
+
|
|
60
|
+
/* Number of cycles since firstrpcc is lastrpcc + 2^32 y for unknown y. */
|
|
61
|
+
/* Number of microseconds since firsttod is lasttod. */
|
|
62
|
+
|
|
63
|
+
x = (lasttod * mhz - lastrpcc) * 0.00000000023283064365386962890625;
|
|
64
|
+
y = x;
|
|
65
|
+
while (x > y + 0.5) y += 1;
|
|
66
|
+
while (x < y - 0.5) y -= 1;
|
|
67
|
+
|
|
68
|
+
y *= 4294967296ULL;
|
|
69
|
+
lastrpcc += y;
|
|
70
|
+
|
|
71
|
+
mhz = (double) lastrpcc / (double) lasttod;
|
|
72
|
+
|
|
73
|
+
return firstrpcc + lastrpcc;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
long long cpucycles_alpha_persecond(void)
|
|
77
|
+
{
|
|
78
|
+
if (!mhz) init();
|
|
79
|
+
return 1000000.0 * mhz;
|
|
80
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles alpha.h version 20060318
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_alpha_h
|
|
8
|
+
#define CPUCYCLES_alpha_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_alpha(void);
|
|
15
|
+
extern long long cpucycles_alpha_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "alpha"
|
|
23
|
+
#define cpucycles cpucycles_alpha
|
|
24
|
+
#define cpucycles_persecond cpucycles_alpha_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
#include "osfreq.c"
|
|
4
|
+
|
|
5
|
+
long long cpucycles_amd64cpuinfo(void)
|
|
6
|
+
{
|
|
7
|
+
unsigned long long result;
|
|
8
|
+
asm volatile(".byte 15;.byte 49;shlq $32,%%rdx;orq %%rdx,%%rax"
|
|
9
|
+
: "=a" (result) :: "%rdx");
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
long long cpucycles_amd64cpuinfo_persecond(void)
|
|
14
|
+
{
|
|
15
|
+
return osfreq();
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles amd64cpuinfo.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_amd64cpuinfo_h
|
|
8
|
+
#define CPUCYCLES_amd64cpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_amd64cpuinfo(void);
|
|
15
|
+
extern long long cpucycles_amd64cpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "amd64cpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_amd64cpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_amd64cpuinfo_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
#include <sys/param.h>
|
|
4
|
+
#include <sys/sysctl.h>
|
|
5
|
+
|
|
6
|
+
long long cpucycles_amd64cpuspeed(void)
|
|
7
|
+
{
|
|
8
|
+
unsigned long long result;
|
|
9
|
+
asm volatile(".byte 15;.byte 49;shlq $32,%%rdx;orq %%rdx,%%rax"
|
|
10
|
+
: "=a" (result) :: "%rdx");
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
long long cpucycles_amd64cpuspeed_persecond(void)
|
|
15
|
+
{
|
|
16
|
+
int oid[2];
|
|
17
|
+
int val;
|
|
18
|
+
size_t size;
|
|
19
|
+
oid[0] = CTL_HW;
|
|
20
|
+
oid[1] = HW_CPUSPEED;
|
|
21
|
+
size = sizeof val;
|
|
22
|
+
if (sysctl(oid,2,&val,&size,0,0) == -1) return 0;
|
|
23
|
+
if (size != sizeof val) return 0;
|
|
24
|
+
return val * 1000000LL;
|
|
25
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles amd64cpuspeed.h version 20090716
|
|
3
|
+
Matthew Dempsky
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_amd64cpuspeed_h
|
|
8
|
+
#define CPUCYCLES_amd64cpuspeed_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_amd64cpuspeed(void);
|
|
15
|
+
extern long long cpucycles_amd64cpuspeed_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "amd64cpuspeed"
|
|
23
|
+
#define cpucycles cpucycles_amd64cpuspeed
|
|
24
|
+
#define cpucycles_persecond cpucycles_amd64cpuspeed_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
|
|
4
|
+
long long cpucycles_amd64tscfreq(void)
|
|
5
|
+
{
|
|
6
|
+
unsigned long long result;
|
|
7
|
+
asm volatile(".byte 15;.byte 49;shlq $32,%%rdx;orq %%rdx,%%rax"
|
|
8
|
+
: "=a" (result) :: "%rdx");
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
long long cpucycles_amd64tscfreq_persecond(void)
|
|
13
|
+
{
|
|
14
|
+
long result = 0;
|
|
15
|
+
size_t resultlen = sizeof(long);
|
|
16
|
+
sysctlbyname("machdep.tsc_freq",&result,&resultlen,0,0);
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles amd64tscfreq.h version 20060318
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_amd64tscfreq_h
|
|
8
|
+
#define CPUCYCLES_amd64tscfreq_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_amd64tscfreq(void);
|
|
15
|
+
extern long long cpucycles_amd64tscfreq_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "amd64tscfreq"
|
|
23
|
+
#define cpucycles cpucycles_amd64tscfreq
|
|
24
|
+
#define cpucycles_persecond cpucycles_amd64tscfreq_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#include <time.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <unistd.h>
|
|
4
|
+
#include <sys/time.h>
|
|
5
|
+
#include <sys/types.h>
|
|
6
|
+
#include <spu_mfcio.h>
|
|
7
|
+
|
|
8
|
+
static long myround(double u)
|
|
9
|
+
{
|
|
10
|
+
long result = u;
|
|
11
|
+
while (result + 0.5 < u) result += 1;
|
|
12
|
+
while (result - 0.5 > u) result -= 1;
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static long long microseconds(void)
|
|
17
|
+
{
|
|
18
|
+
struct timeval t;
|
|
19
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
20
|
+
return t.tv_sec * (long long) 1000000 + t.tv_usec;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static long long timebase(void)
|
|
24
|
+
{
|
|
25
|
+
unsigned long long result;
|
|
26
|
+
result = -spu_read_decrementer();
|
|
27
|
+
return 0xffffffff & result;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static double cpufrequency = 0;
|
|
31
|
+
static long tbcycles = 0;
|
|
32
|
+
|
|
33
|
+
static double guesstbcycles(void)
|
|
34
|
+
{
|
|
35
|
+
long long tb0; long long us0;
|
|
36
|
+
long long tb1; long long us1;
|
|
37
|
+
|
|
38
|
+
tb0 = timebase();
|
|
39
|
+
us0 = microseconds();
|
|
40
|
+
do {
|
|
41
|
+
tb1 = timebase();
|
|
42
|
+
us1 = microseconds();
|
|
43
|
+
} while (us1 - us0 < 10000 || tb1 - tb0 < 1000);
|
|
44
|
+
if (tb1 <= tb0) return 0;
|
|
45
|
+
tb1 -= tb0;
|
|
46
|
+
us1 -= us0;
|
|
47
|
+
return (cpufrequency * 0.000001 * (double) us1) / (double) tb1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static void init(void)
|
|
51
|
+
{
|
|
52
|
+
int loop;
|
|
53
|
+
double guess1;
|
|
54
|
+
double guess2;
|
|
55
|
+
|
|
56
|
+
spu_write_decrementer(0xffffffff);
|
|
57
|
+
|
|
58
|
+
cpufrequency = 3192000000.0;
|
|
59
|
+
|
|
60
|
+
for (loop = 0;loop < 100;++loop) {
|
|
61
|
+
guess1 = guesstbcycles();
|
|
62
|
+
guess2 = guesstbcycles();
|
|
63
|
+
tbcycles = myround(guess1);
|
|
64
|
+
if (guess1 - tbcycles > 0.1) continue;
|
|
65
|
+
if (tbcycles - guess1 > 0.1) continue;
|
|
66
|
+
if (guess2 - tbcycles > 0.1) continue;
|
|
67
|
+
if (tbcycles - guess2 > 0.1) continue;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
tbcycles = 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
long long cpucycles_celllinux(void)
|
|
74
|
+
{
|
|
75
|
+
if (!tbcycles) init();
|
|
76
|
+
return timebase() * tbcycles;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
long long cpucycles_celllinux_persecond(void)
|
|
80
|
+
{
|
|
81
|
+
if (!tbcycles) init();
|
|
82
|
+
return cpufrequency;
|
|
83
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles celllinux.h version 20081201
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_celllinux_h
|
|
8
|
+
#define CPUCYCLES_celllinux_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_celllinux(void);
|
|
15
|
+
extern long long cpucycles_celllinux_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "celllinux"
|
|
23
|
+
#define cpucycles cpucycles_celllinux
|
|
24
|
+
#define cpucycles_persecond cpucycles_celllinux_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|