Vendors: removed ocaml-tweetnacl
This commit is contained in:
parent
7d6da7179b
commit
b619b29483
13
vendors/ocaml-tweetnacl/LICENSE.md
vendored
13
vendors/ocaml-tweetnacl/LICENSE.md
vendored
@ -1,13 +0,0 @@
|
|||||||
Copyright (c) 2017 Vincent Bernardoff
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
8
vendors/ocaml-tweetnacl/src/jbuild
vendored
8
vendors/ocaml-tweetnacl/src/jbuild
vendored
@ -1,8 +0,0 @@
|
|||||||
(jbuild_version 1)
|
|
||||||
|
|
||||||
(library
|
|
||||||
((name tweetnacl)
|
|
||||||
(public_name tweetnacl)
|
|
||||||
(libraries (bigstring ocplib-endian.bigstring zarith))
|
|
||||||
(c_names (tweetnacl_stubs))
|
|
||||||
(c_flags (-O3))))
|
|
272
vendors/ocaml-tweetnacl/src/tweetnacl.h
vendored
272
vendors/ocaml-tweetnacl/src/tweetnacl.h
vendored
@ -1,272 +0,0 @@
|
|||||||
#ifndef TWEETNACL_H
|
|
||||||
#define TWEETNACL_H
|
|
||||||
#define crypto_auth_PRIMITIVE "hmacsha512256"
|
|
||||||
#define crypto_auth crypto_auth_hmacsha512256
|
|
||||||
#define crypto_auth_verify crypto_auth_hmacsha512256_verify
|
|
||||||
#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES
|
|
||||||
#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES
|
|
||||||
#define crypto_auth_IMPLEMENTATION crypto_auth_hmacsha512256_IMPLEMENTATION
|
|
||||||
#define crypto_auth_VERSION crypto_auth_hmacsha512256_VERSION
|
|
||||||
#define crypto_auth_hmacsha512256_tweet_BYTES 32
|
|
||||||
#define crypto_auth_hmacsha512256_tweet_KEYBYTES 32
|
|
||||||
extern int crypto_auth_hmacsha512256_tweet(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
||||||
extern int crypto_auth_hmacsha512256_tweet_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
||||||
#define crypto_auth_hmacsha512256_tweet_VERSION "-"
|
|
||||||
#define crypto_auth_hmacsha512256 crypto_auth_hmacsha512256_tweet
|
|
||||||
#define crypto_auth_hmacsha512256_verify crypto_auth_hmacsha512256_tweet_verify
|
|
||||||
#define crypto_auth_hmacsha512256_BYTES crypto_auth_hmacsha512256_tweet_BYTES
|
|
||||||
#define crypto_auth_hmacsha512256_KEYBYTES crypto_auth_hmacsha512256_tweet_KEYBYTES
|
|
||||||
#define crypto_auth_hmacsha512256_VERSION crypto_auth_hmacsha512256_tweet_VERSION
|
|
||||||
#define crypto_auth_hmacsha512256_IMPLEMENTATION "crypto_auth/hmacsha512256/tweet"
|
|
||||||
#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305"
|
|
||||||
#define crypto_box crypto_box_curve25519xsalsa20poly1305
|
|
||||||
#define crypto_box_open crypto_box_curve25519xsalsa20poly1305_open
|
|
||||||
#define crypto_box_keypair crypto_box_curve25519xsalsa20poly1305_keypair
|
|
||||||
#define crypto_box_beforenm crypto_box_curve25519xsalsa20poly1305_beforenm
|
|
||||||
#define crypto_box_afternm crypto_box_curve25519xsalsa20poly1305_afternm
|
|
||||||
#define crypto_box_open_afternm crypto_box_curve25519xsalsa20poly1305_open_afternm
|
|
||||||
#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES
|
|
||||||
#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES
|
|
||||||
#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES
|
|
||||||
#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES
|
|
||||||
#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES
|
|
||||||
#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES
|
|
||||||
#define crypto_box_IMPLEMENTATION crypto_box_curve25519xsalsa20poly1305_IMPLEMENTATION
|
|
||||||
#define crypto_box_VERSION crypto_box_curve25519xsalsa20poly1305_VERSION
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_PUBLICKEYBYTES 32
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_SECRETKEYBYTES 32
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_BEFORENMBYTES 32
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_NONCEBYTES 24
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_ZEROBYTES 32
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_BOXZEROBYTES 16
|
|
||||||
extern int crypto_box_curve25519xsalsa20poly1305_tweet(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_box_curve25519xsalsa20poly1305_tweet_open(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_box_curve25519xsalsa20poly1305_tweet_keypair(unsigned char *,unsigned char *);
|
|
||||||
extern int crypto_box_curve25519xsalsa20poly1305_tweet_beforenm(unsigned char *,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_box_curve25519xsalsa20poly1305_tweet_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_box_curve25519xsalsa20poly1305_tweet_open_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_tweet_VERSION "-"
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305 crypto_box_curve25519xsalsa20poly1305_tweet
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_open crypto_box_curve25519xsalsa20poly1305_tweet_open
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_keypair crypto_box_curve25519xsalsa20poly1305_tweet_keypair
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_beforenm crypto_box_curve25519xsalsa20poly1305_tweet_beforenm
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_afternm crypto_box_curve25519xsalsa20poly1305_tweet_afternm
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_open_afternm crypto_box_curve25519xsalsa20poly1305_tweet_open_afternm
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_tweet_PUBLICKEYBYTES
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_tweet_SECRETKEYBYTES
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_tweet_BEFORENMBYTES
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_tweet_NONCEBYTES
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_tweet_ZEROBYTES
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_tweet_BOXZEROBYTES
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_VERSION crypto_box_curve25519xsalsa20poly1305_tweet_VERSION
|
|
||||||
#define crypto_box_curve25519xsalsa20poly1305_IMPLEMENTATION "crypto_box/curve25519xsalsa20poly1305/tweet"
|
|
||||||
#define crypto_core_PRIMITIVE "salsa20"
|
|
||||||
#define crypto_core crypto_core_salsa20
|
|
||||||
#define crypto_core_OUTPUTBYTES crypto_core_salsa20_OUTPUTBYTES
|
|
||||||
#define crypto_core_INPUTBYTES crypto_core_salsa20_INPUTBYTES
|
|
||||||
#define crypto_core_KEYBYTES crypto_core_salsa20_KEYBYTES
|
|
||||||
#define crypto_core_CONSTBYTES crypto_core_salsa20_CONSTBYTES
|
|
||||||
#define crypto_core_IMPLEMENTATION crypto_core_salsa20_IMPLEMENTATION
|
|
||||||
#define crypto_core_VERSION crypto_core_salsa20_VERSION
|
|
||||||
#define crypto_core_salsa20_tweet_OUTPUTBYTES 64
|
|
||||||
#define crypto_core_salsa20_tweet_INPUTBYTES 16
|
|
||||||
#define crypto_core_salsa20_tweet_KEYBYTES 32
|
|
||||||
#define crypto_core_salsa20_tweet_CONSTBYTES 16
|
|
||||||
extern int crypto_core_salsa20_tweet(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_core_salsa20_tweet_VERSION "-"
|
|
||||||
#define crypto_core_salsa20 crypto_core_salsa20_tweet
|
|
||||||
#define crypto_core_salsa20_OUTPUTBYTES crypto_core_salsa20_tweet_OUTPUTBYTES
|
|
||||||
#define crypto_core_salsa20_INPUTBYTES crypto_core_salsa20_tweet_INPUTBYTES
|
|
||||||
#define crypto_core_salsa20_KEYBYTES crypto_core_salsa20_tweet_KEYBYTES
|
|
||||||
#define crypto_core_salsa20_CONSTBYTES crypto_core_salsa20_tweet_CONSTBYTES
|
|
||||||
#define crypto_core_salsa20_VERSION crypto_core_salsa20_tweet_VERSION
|
|
||||||
#define crypto_core_salsa20_IMPLEMENTATION "crypto_core/salsa20/tweet"
|
|
||||||
#define crypto_core_hsalsa20_tweet_OUTPUTBYTES 32
|
|
||||||
#define crypto_core_hsalsa20_tweet_INPUTBYTES 16
|
|
||||||
#define crypto_core_hsalsa20_tweet_KEYBYTES 32
|
|
||||||
#define crypto_core_hsalsa20_tweet_CONSTBYTES 16
|
|
||||||
extern int crypto_core_hsalsa20_tweet(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_core_hsalsa20_tweet_VERSION "-"
|
|
||||||
#define crypto_core_hsalsa20 crypto_core_hsalsa20_tweet
|
|
||||||
#define crypto_core_hsalsa20_OUTPUTBYTES crypto_core_hsalsa20_tweet_OUTPUTBYTES
|
|
||||||
#define crypto_core_hsalsa20_INPUTBYTES crypto_core_hsalsa20_tweet_INPUTBYTES
|
|
||||||
#define crypto_core_hsalsa20_KEYBYTES crypto_core_hsalsa20_tweet_KEYBYTES
|
|
||||||
#define crypto_core_hsalsa20_CONSTBYTES crypto_core_hsalsa20_tweet_CONSTBYTES
|
|
||||||
#define crypto_core_hsalsa20_VERSION crypto_core_hsalsa20_tweet_VERSION
|
|
||||||
#define crypto_core_hsalsa20_IMPLEMENTATION "crypto_core/hsalsa20/tweet"
|
|
||||||
#define crypto_hashblocks_PRIMITIVE "sha512"
|
|
||||||
#define crypto_hashblocks crypto_hashblocks_sha512
|
|
||||||
#define crypto_hashblocks_STATEBYTES crypto_hashblocks_sha512_STATEBYTES
|
|
||||||
#define crypto_hashblocks_BLOCKBYTES crypto_hashblocks_sha512_BLOCKBYTES
|
|
||||||
#define crypto_hashblocks_IMPLEMENTATION crypto_hashblocks_sha512_IMPLEMENTATION
|
|
||||||
#define crypto_hashblocks_VERSION crypto_hashblocks_sha512_VERSION
|
|
||||||
#define crypto_hashblocks_sha512_tweet_STATEBYTES 64
|
|
||||||
#define crypto_hashblocks_sha512_tweet_BLOCKBYTES 128
|
|
||||||
extern int crypto_hashblocks_sha512_tweet(unsigned char *,const unsigned char *,unsigned long long);
|
|
||||||
#define crypto_hashblocks_sha512_tweet_VERSION "-"
|
|
||||||
#define crypto_hashblocks_sha512 crypto_hashblocks_sha512_tweet
|
|
||||||
#define crypto_hashblocks_sha512_STATEBYTES crypto_hashblocks_sha512_tweet_STATEBYTES
|
|
||||||
#define crypto_hashblocks_sha512_BLOCKBYTES crypto_hashblocks_sha512_tweet_BLOCKBYTES
|
|
||||||
#define crypto_hashblocks_sha512_VERSION crypto_hashblocks_sha512_tweet_VERSION
|
|
||||||
#define crypto_hashblocks_sha512_IMPLEMENTATION "crypto_hashblocks/sha512/tweet"
|
|
||||||
#define crypto_hashblocks_sha256_tweet_STATEBYTES 32
|
|
||||||
#define crypto_hashblocks_sha256_tweet_BLOCKBYTES 64
|
|
||||||
extern int crypto_hashblocks_sha256_tweet(unsigned char *,const unsigned char *,unsigned long long);
|
|
||||||
#define crypto_hashblocks_sha256_tweet_VERSION "-"
|
|
||||||
#define crypto_hashblocks_sha256 crypto_hashblocks_sha256_tweet
|
|
||||||
#define crypto_hashblocks_sha256_STATEBYTES crypto_hashblocks_sha256_tweet_STATEBYTES
|
|
||||||
#define crypto_hashblocks_sha256_BLOCKBYTES crypto_hashblocks_sha256_tweet_BLOCKBYTES
|
|
||||||
#define crypto_hashblocks_sha256_VERSION crypto_hashblocks_sha256_tweet_VERSION
|
|
||||||
#define crypto_hashblocks_sha256_IMPLEMENTATION "crypto_hashblocks/sha256/tweet"
|
|
||||||
#define crypto_hash_PRIMITIVE "sha512"
|
|
||||||
#define crypto_hash crypto_hash_sha512
|
|
||||||
#define crypto_hash_BYTES crypto_hash_sha512_BYTES
|
|
||||||
#define crypto_hash_IMPLEMENTATION crypto_hash_sha512_IMPLEMENTATION
|
|
||||||
#define crypto_hash_VERSION crypto_hash_sha512_VERSION
|
|
||||||
#define crypto_hash_sha512_tweet_BYTES 64
|
|
||||||
extern int crypto_hash_sha512_tweet(unsigned char *,const unsigned char *,unsigned long long);
|
|
||||||
#define crypto_hash_sha512_tweet_VERSION "-"
|
|
||||||
#define crypto_hash_sha512 crypto_hash_sha512_tweet
|
|
||||||
#define crypto_hash_sha512_BYTES crypto_hash_sha512_tweet_BYTES
|
|
||||||
#define crypto_hash_sha512_VERSION crypto_hash_sha512_tweet_VERSION
|
|
||||||
#define crypto_hash_sha512_IMPLEMENTATION "crypto_hash/sha512/tweet"
|
|
||||||
#define crypto_hash_sha256_tweet_BYTES 32
|
|
||||||
extern int crypto_hash_sha256_tweet(unsigned char *,const unsigned char *,unsigned long long);
|
|
||||||
#define crypto_hash_sha256_tweet_VERSION "-"
|
|
||||||
#define crypto_hash_sha256 crypto_hash_sha256_tweet
|
|
||||||
#define crypto_hash_sha256_BYTES crypto_hash_sha256_tweet_BYTES
|
|
||||||
#define crypto_hash_sha256_VERSION crypto_hash_sha256_tweet_VERSION
|
|
||||||
#define crypto_hash_sha256_IMPLEMENTATION "crypto_hash/sha256/tweet"
|
|
||||||
#define crypto_onetimeauth_PRIMITIVE "poly1305"
|
|
||||||
#define crypto_onetimeauth crypto_onetimeauth_poly1305
|
|
||||||
#define crypto_onetimeauth_verify crypto_onetimeauth_poly1305_verify
|
|
||||||
#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES
|
|
||||||
#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES
|
|
||||||
#define crypto_onetimeauth_IMPLEMENTATION crypto_onetimeauth_poly1305_IMPLEMENTATION
|
|
||||||
#define crypto_onetimeauth_VERSION crypto_onetimeauth_poly1305_VERSION
|
|
||||||
#define crypto_onetimeauth_poly1305_tweet_BYTES 16
|
|
||||||
#define crypto_onetimeauth_poly1305_tweet_KEYBYTES 32
|
|
||||||
extern int crypto_onetimeauth_poly1305_tweet(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
||||||
extern int crypto_onetimeauth_poly1305_tweet_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
||||||
#define crypto_onetimeauth_poly1305_tweet_VERSION "-"
|
|
||||||
#define crypto_onetimeauth_poly1305 crypto_onetimeauth_poly1305_tweet
|
|
||||||
#define crypto_onetimeauth_poly1305_verify crypto_onetimeauth_poly1305_tweet_verify
|
|
||||||
#define crypto_onetimeauth_poly1305_BYTES crypto_onetimeauth_poly1305_tweet_BYTES
|
|
||||||
#define crypto_onetimeauth_poly1305_KEYBYTES crypto_onetimeauth_poly1305_tweet_KEYBYTES
|
|
||||||
#define crypto_onetimeauth_poly1305_VERSION crypto_onetimeauth_poly1305_tweet_VERSION
|
|
||||||
#define crypto_onetimeauth_poly1305_IMPLEMENTATION "crypto_onetimeauth/poly1305/tweet"
|
|
||||||
#define crypto_scalarmult_PRIMITIVE "curve25519"
|
|
||||||
#define crypto_scalarmult crypto_scalarmult_curve25519
|
|
||||||
#define crypto_scalarmult_base crypto_scalarmult_curve25519_base
|
|
||||||
#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES
|
|
||||||
#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES
|
|
||||||
#define crypto_scalarmult_IMPLEMENTATION crypto_scalarmult_curve25519_IMPLEMENTATION
|
|
||||||
#define crypto_scalarmult_VERSION crypto_scalarmult_curve25519_VERSION
|
|
||||||
#define crypto_scalarmult_curve25519_tweet_BYTES 32
|
|
||||||
#define crypto_scalarmult_curve25519_tweet_SCALARBYTES 32
|
|
||||||
extern int crypto_scalarmult_curve25519_tweet(unsigned char *,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_scalarmult_curve25519_tweet_base(unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_scalarmult_curve25519_tweet_VERSION "-"
|
|
||||||
#define crypto_scalarmult_curve25519 crypto_scalarmult_curve25519_tweet
|
|
||||||
#define crypto_scalarmult_curve25519_base crypto_scalarmult_curve25519_tweet_base
|
|
||||||
#define crypto_scalarmult_curve25519_BYTES crypto_scalarmult_curve25519_tweet_BYTES
|
|
||||||
#define crypto_scalarmult_curve25519_SCALARBYTES crypto_scalarmult_curve25519_tweet_SCALARBYTES
|
|
||||||
#define crypto_scalarmult_curve25519_VERSION crypto_scalarmult_curve25519_tweet_VERSION
|
|
||||||
#define crypto_scalarmult_curve25519_IMPLEMENTATION "crypto_scalarmult/curve25519/tweet"
|
|
||||||
#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305"
|
|
||||||
#define crypto_secretbox crypto_secretbox_xsalsa20poly1305
|
|
||||||
#define crypto_secretbox_open crypto_secretbox_xsalsa20poly1305_open
|
|
||||||
#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES
|
|
||||||
#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES
|
|
||||||
#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES
|
|
||||||
#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES
|
|
||||||
#define crypto_secretbox_IMPLEMENTATION crypto_secretbox_xsalsa20poly1305_IMPLEMENTATION
|
|
||||||
#define crypto_secretbox_VERSION crypto_secretbox_xsalsa20poly1305_VERSION
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_tweet_KEYBYTES 32
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_tweet_NONCEBYTES 24
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_tweet_ZEROBYTES 32
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_tweet_BOXZEROBYTES 16
|
|
||||||
extern int crypto_secretbox_xsalsa20poly1305_tweet(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_secretbox_xsalsa20poly1305_tweet_open(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_tweet_VERSION "-"
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305 crypto_secretbox_xsalsa20poly1305_tweet
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_open crypto_secretbox_xsalsa20poly1305_tweet_open
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_KEYBYTES crypto_secretbox_xsalsa20poly1305_tweet_KEYBYTES
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES crypto_secretbox_xsalsa20poly1305_tweet_NONCEBYTES
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES crypto_secretbox_xsalsa20poly1305_tweet_ZEROBYTES
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_tweet_BOXZEROBYTES
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_VERSION crypto_secretbox_xsalsa20poly1305_tweet_VERSION
|
|
||||||
#define crypto_secretbox_xsalsa20poly1305_IMPLEMENTATION "crypto_secretbox/xsalsa20poly1305/tweet"
|
|
||||||
#define crypto_sign_PRIMITIVE "ed25519"
|
|
||||||
#define crypto_sign crypto_sign_ed25519
|
|
||||||
#define crypto_sign_open crypto_sign_ed25519_open
|
|
||||||
#define crypto_sign_keypair crypto_sign_ed25519_keypair
|
|
||||||
#define crypto_sign_BYTES crypto_sign_ed25519_BYTES
|
|
||||||
#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES
|
|
||||||
#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES
|
|
||||||
#define crypto_sign_IMPLEMENTATION crypto_sign_ed25519_IMPLEMENTATION
|
|
||||||
#define crypto_sign_VERSION crypto_sign_ed25519_VERSION
|
|
||||||
#define crypto_sign_ed25519_tweet_BYTES 64
|
|
||||||
#define crypto_sign_ed25519_tweet_PUBLICKEYBYTES 32
|
|
||||||
#define crypto_sign_ed25519_tweet_SECRETKEYBYTES 64
|
|
||||||
extern int crypto_sign_ed25519_tweet(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
||||||
extern int crypto_sign_ed25519_tweet_open(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
|
|
||||||
extern int crypto_sign_ed25519_tweet_keypair(unsigned char *,unsigned char *);
|
|
||||||
#define crypto_sign_ed25519_tweet_VERSION "-"
|
|
||||||
#define crypto_sign_ed25519 crypto_sign_ed25519_tweet
|
|
||||||
#define crypto_sign_ed25519_open crypto_sign_ed25519_tweet_open
|
|
||||||
#define crypto_sign_ed25519_keypair crypto_sign_ed25519_tweet_keypair
|
|
||||||
#define crypto_sign_ed25519_BYTES crypto_sign_ed25519_tweet_BYTES
|
|
||||||
#define crypto_sign_ed25519_PUBLICKEYBYTES crypto_sign_ed25519_tweet_PUBLICKEYBYTES
|
|
||||||
#define crypto_sign_ed25519_SECRETKEYBYTES crypto_sign_ed25519_tweet_SECRETKEYBYTES
|
|
||||||
#define crypto_sign_ed25519_VERSION crypto_sign_ed25519_tweet_VERSION
|
|
||||||
#define crypto_sign_ed25519_IMPLEMENTATION "crypto_sign/ed25519/tweet"
|
|
||||||
#define crypto_stream_PRIMITIVE "xsalsa20"
|
|
||||||
#define crypto_stream crypto_stream_xsalsa20
|
|
||||||
#define crypto_stream_xor crypto_stream_xsalsa20_xor
|
|
||||||
#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES
|
|
||||||
#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES
|
|
||||||
#define crypto_stream_IMPLEMENTATION crypto_stream_xsalsa20_IMPLEMENTATION
|
|
||||||
#define crypto_stream_VERSION crypto_stream_xsalsa20_VERSION
|
|
||||||
#define crypto_stream_xsalsa20_tweet_KEYBYTES 32
|
|
||||||
#define crypto_stream_xsalsa20_tweet_NONCEBYTES 24
|
|
||||||
extern int crypto_stream_xsalsa20_tweet(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_stream_xsalsa20_tweet_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_stream_xsalsa20_tweet_VERSION "-"
|
|
||||||
#define crypto_stream_xsalsa20 crypto_stream_xsalsa20_tweet
|
|
||||||
#define crypto_stream_xsalsa20_xor crypto_stream_xsalsa20_tweet_xor
|
|
||||||
#define crypto_stream_xsalsa20_KEYBYTES crypto_stream_xsalsa20_tweet_KEYBYTES
|
|
||||||
#define crypto_stream_xsalsa20_NONCEBYTES crypto_stream_xsalsa20_tweet_NONCEBYTES
|
|
||||||
#define crypto_stream_xsalsa20_VERSION crypto_stream_xsalsa20_tweet_VERSION
|
|
||||||
#define crypto_stream_xsalsa20_IMPLEMENTATION "crypto_stream/xsalsa20/tweet"
|
|
||||||
#define crypto_stream_salsa20_tweet_KEYBYTES 32
|
|
||||||
#define crypto_stream_salsa20_tweet_NONCEBYTES 8
|
|
||||||
extern int crypto_stream_salsa20_tweet(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
extern int crypto_stream_salsa20_tweet_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_stream_salsa20_tweet_VERSION "-"
|
|
||||||
#define crypto_stream_salsa20 crypto_stream_salsa20_tweet
|
|
||||||
#define crypto_stream_salsa20_xor crypto_stream_salsa20_tweet_xor
|
|
||||||
#define crypto_stream_salsa20_KEYBYTES crypto_stream_salsa20_tweet_KEYBYTES
|
|
||||||
#define crypto_stream_salsa20_NONCEBYTES crypto_stream_salsa20_tweet_NONCEBYTES
|
|
||||||
#define crypto_stream_salsa20_VERSION crypto_stream_salsa20_tweet_VERSION
|
|
||||||
#define crypto_stream_salsa20_IMPLEMENTATION "crypto_stream/salsa20/tweet"
|
|
||||||
#define crypto_verify_PRIMITIVE "16"
|
|
||||||
#define crypto_verify crypto_verify_16
|
|
||||||
#define crypto_verify_BYTES crypto_verify_16_BYTES
|
|
||||||
#define crypto_verify_IMPLEMENTATION crypto_verify_16_IMPLEMENTATION
|
|
||||||
#define crypto_verify_VERSION crypto_verify_16_VERSION
|
|
||||||
#define crypto_verify_16_tweet_BYTES 16
|
|
||||||
extern int crypto_verify_16_tweet(const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_verify_16_tweet_VERSION "-"
|
|
||||||
#define crypto_verify_16 crypto_verify_16_tweet
|
|
||||||
#define crypto_verify_16_BYTES crypto_verify_16_tweet_BYTES
|
|
||||||
#define crypto_verify_16_VERSION crypto_verify_16_tweet_VERSION
|
|
||||||
#define crypto_verify_16_IMPLEMENTATION "crypto_verify/16/tweet"
|
|
||||||
#define crypto_verify_32_tweet_BYTES 32
|
|
||||||
extern int crypto_verify_32_tweet(const unsigned char *,const unsigned char *);
|
|
||||||
#define crypto_verify_32_tweet_VERSION "-"
|
|
||||||
#define crypto_verify_32 crypto_verify_32_tweet
|
|
||||||
#define crypto_verify_32_BYTES crypto_verify_32_tweet_BYTES
|
|
||||||
#define crypto_verify_32_VERSION crypto_verify_32_tweet_VERSION
|
|
||||||
#define crypto_verify_32_IMPLEMENTATION "crypto_verify/32/tweet"
|
|
||||||
#endif
|
|
447
vendors/ocaml-tweetnacl/src/tweetnacl.ml
vendored
447
vendors/ocaml-tweetnacl/src/tweetnacl.ml
vendored
@ -1,447 +0,0 @@
|
|||||||
(*---------------------------------------------------------------------------
|
|
||||||
Copyright (c) 2017 Vincent Bernardoff. All rights reserved.
|
|
||||||
Distributed under the ISC license, see terms at the end of the file.
|
|
||||||
---------------------------------------------------------------------------*)
|
|
||||||
|
|
||||||
open EndianBigstring
|
|
||||||
|
|
||||||
module Rand = struct
|
|
||||||
external randombytes : Bigstring.t -> int -> unit =
|
|
||||||
"ml_randombytes" [@@noalloc]
|
|
||||||
|
|
||||||
let gen sz =
|
|
||||||
let buf = Bigstring.create sz in
|
|
||||||
randombytes buf sz ;
|
|
||||||
buf
|
|
||||||
|
|
||||||
let write buf =
|
|
||||||
randombytes buf (Bigstring.length buf)
|
|
||||||
end
|
|
||||||
|
|
||||||
module Hash = struct
|
|
||||||
let bytes = 64
|
|
||||||
|
|
||||||
external sha512 :
|
|
||||||
Bigstring.t -> Bigstring.t -> int -> unit =
|
|
||||||
"ml_crypto_hash" [@@noalloc]
|
|
||||||
|
|
||||||
let sha512 msg =
|
|
||||||
let q = Bigstring.create bytes in
|
|
||||||
sha512 q msg (Bigstring.length msg) ;
|
|
||||||
q
|
|
||||||
end
|
|
||||||
|
|
||||||
let buf_of_z buf z =
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
let bits = Z.to_bits z in
|
|
||||||
Bigstring.blit_of_string bits 0 buf 0 (String.length bits)
|
|
||||||
|
|
||||||
let unopt_invalid_arg1 ~msg f buf =
|
|
||||||
match f buf with
|
|
||||||
| Some v -> v
|
|
||||||
| None -> invalid_arg msg
|
|
||||||
|
|
||||||
module Nonce = struct
|
|
||||||
type t = Bigstring.t
|
|
||||||
let bytes = 24
|
|
||||||
|
|
||||||
let gen () =
|
|
||||||
Rand.gen bytes
|
|
||||||
|
|
||||||
let rec incr_byte b step byteno =
|
|
||||||
let res = BigEndian.get_uint16 b byteno + step in
|
|
||||||
let lo = res land 0xffff in
|
|
||||||
let hi = res asr 16 in
|
|
||||||
BigEndian.set_int16 b byteno lo ;
|
|
||||||
if hi = 0 || byteno = 0 then ()
|
|
||||||
else incr_byte b hi (byteno - 2)
|
|
||||||
|
|
||||||
let increment ?(step = 1) nonce =
|
|
||||||
let new_nonce = Bigstring.create 24 in
|
|
||||||
Bigstring.blit nonce 0 new_nonce 0 24 ;
|
|
||||||
incr_byte new_nonce step 22 ;
|
|
||||||
new_nonce
|
|
||||||
|
|
||||||
let of_bytes buf =
|
|
||||||
try Some (Bigstring.sub buf 0 bytes) with _ -> None
|
|
||||||
|
|
||||||
let of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Box.Nonce.of_bytes_exn" of_bytes
|
|
||||||
|
|
||||||
let to_bytes nonce = nonce
|
|
||||||
end
|
|
||||||
|
|
||||||
module Secretbox = struct
|
|
||||||
type key = Bigstring.t
|
|
||||||
|
|
||||||
let keybytes = 32
|
|
||||||
let zerobytes = 32
|
|
||||||
let boxzerobytes = 16
|
|
||||||
|
|
||||||
let genkey () =
|
|
||||||
Rand.gen 32
|
|
||||||
|
|
||||||
let of_bytes buf =
|
|
||||||
if Bigstring.length buf < keybytes then None
|
|
||||||
else Some (Bigstring.sub buf 0 keybytes)
|
|
||||||
|
|
||||||
let of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Secret_box.of_bytes_exn" of_bytes
|
|
||||||
|
|
||||||
external secretbox :
|
|
||||||
Bigstring.t -> Bigstring.t ->
|
|
||||||
Bigstring.t -> Bigstring.t -> unit = "ml_secretbox" [@@noalloc]
|
|
||||||
|
|
||||||
external secretbox_open :
|
|
||||||
Bigstring.t -> Bigstring.t ->
|
|
||||||
Bigstring.t -> Bigstring.t -> int = "ml_secretbox_open" [@@noalloc]
|
|
||||||
|
|
||||||
let box ~key ~nonce ~msg =
|
|
||||||
let msglen = Bigstring.length msg in
|
|
||||||
let buflen = msglen + zerobytes in
|
|
||||||
let buf = Bigstring.create buflen in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit msg 0 buf zerobytes msglen ;
|
|
||||||
secretbox buf buf nonce key ;
|
|
||||||
Bigstring.sub buf boxzerobytes (buflen - boxzerobytes)
|
|
||||||
|
|
||||||
let box_noalloc ~key ~nonce ~msg =
|
|
||||||
secretbox msg msg nonce key
|
|
||||||
|
|
||||||
let box_open ~key ~nonce ~cmsg =
|
|
||||||
let msglen = Bigstring.length cmsg - boxzerobytes in
|
|
||||||
let buf = Bigstring.create (zerobytes + msglen) in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit cmsg 0 buf boxzerobytes (msglen + boxzerobytes) ;
|
|
||||||
match secretbox_open buf buf nonce key with
|
|
||||||
| 0 -> Some (Bigstring.sub buf zerobytes msglen)
|
|
||||||
| _ -> None
|
|
||||||
|
|
||||||
let box_open_noalloc ~key ~nonce ~cmsg =
|
|
||||||
match secretbox_open cmsg cmsg nonce key with
|
|
||||||
| 0 -> true
|
|
||||||
| _ -> false
|
|
||||||
end
|
|
||||||
|
|
||||||
module Box = struct
|
|
||||||
type secret
|
|
||||||
type public
|
|
||||||
type combined
|
|
||||||
type _ key =
|
|
||||||
| Sk : Bigstring.t -> secret key
|
|
||||||
| Pk : Bigstring.t -> public key
|
|
||||||
| Ck : Bigstring.t -> combined key
|
|
||||||
|
|
||||||
let skbytes = 32
|
|
||||||
let pkbytes = 32
|
|
||||||
let beforenmbytes = 32
|
|
||||||
let zerobytes = 32
|
|
||||||
let boxzerobytes = 16
|
|
||||||
|
|
||||||
let to_bytes : type a. a key -> Bigstring.t = function
|
|
||||||
| Pk buf -> buf
|
|
||||||
| Sk buf -> buf
|
|
||||||
| Ck buf -> buf
|
|
||||||
|
|
||||||
let blit_to_bytes :
|
|
||||||
type a. a key -> ?pos:int -> Bigstring.t -> unit = fun key ?(pos=0) buf ->
|
|
||||||
match key with
|
|
||||||
| Pk pk -> Bigstring.blit pk 0 buf pos pkbytes
|
|
||||||
| Sk sk -> Bigstring.blit sk 0 buf pos skbytes
|
|
||||||
| Ck ck -> Bigstring.blit ck 0 buf pos beforenmbytes
|
|
||||||
|
|
||||||
let equal :
|
|
||||||
type a. a key -> a key -> bool = fun a b -> match a, b with
|
|
||||||
| Pk a, Pk b -> Bigstring.equal a b
|
|
||||||
| Sk a, Sk b -> Bigstring.equal a b
|
|
||||||
| Ck a, Ck b -> Bigstring.equal a b
|
|
||||||
|
|
||||||
let sk_of_bytes buf =
|
|
||||||
try Some (Sk (Bigstring.sub buf 0 skbytes)) with _ -> None
|
|
||||||
let pk_of_bytes buf =
|
|
||||||
try Some (Pk (Bigstring.sub buf 0 pkbytes)) with _ -> None
|
|
||||||
let ck_of_bytes buf =
|
|
||||||
try Some (Ck (Bigstring.sub buf 0 beforenmbytes)) with _ -> None
|
|
||||||
|
|
||||||
let sk_of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Box.sk_of_bytes_exn" sk_of_bytes
|
|
||||||
let pk_of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Box.pk_of_bytes_exn" pk_of_bytes
|
|
||||||
let ck_of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Box.ck_of_bytes_exn" ck_of_bytes
|
|
||||||
|
|
||||||
external keypair :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_box_keypair" [@@noalloc]
|
|
||||||
|
|
||||||
let keypair () =
|
|
||||||
let sk = Bigstring.create skbytes in
|
|
||||||
let pk = Bigstring.create pkbytes in
|
|
||||||
keypair pk sk ;
|
|
||||||
Pk pk, Sk sk
|
|
||||||
|
|
||||||
external box_stub :
|
|
||||||
Bigstring.t -> Bigstring.t -> Bigstring.t ->
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_box" [@@noalloc]
|
|
||||||
|
|
||||||
let box ~pk:(Pk pk) ~sk:(Sk sk) ~nonce ~msg =
|
|
||||||
let msglen = Bigstring.length msg in
|
|
||||||
let buflen = msglen + zerobytes in
|
|
||||||
let buf = Bigstring.create buflen in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit msg 0 buf zerobytes msglen ;
|
|
||||||
box_stub buf buf nonce pk sk ;
|
|
||||||
Bigstring.sub buf boxzerobytes (buflen - boxzerobytes)
|
|
||||||
|
|
||||||
let box_noalloc ~pk:(Pk pk) ~sk:(Sk sk) ~nonce ~msg =
|
|
||||||
box_stub msg msg nonce pk sk
|
|
||||||
|
|
||||||
external box_open_stub :
|
|
||||||
Bigstring.t -> Bigstring.t -> Bigstring.t ->
|
|
||||||
Bigstring.t -> Bigstring.t -> int =
|
|
||||||
"ml_crypto_box_open" [@@noalloc]
|
|
||||||
|
|
||||||
let box_open ~pk:(Pk pk) ~sk:(Sk sk) ~nonce ~cmsg =
|
|
||||||
let msglen = Bigstring.length cmsg - boxzerobytes in
|
|
||||||
let buf = Bigstring.create (zerobytes + msglen) in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit cmsg 0 buf boxzerobytes (msglen + boxzerobytes) ;
|
|
||||||
match box_open_stub buf buf nonce pk sk with
|
|
||||||
| 0 -> Some (Bigstring.sub buf zerobytes msglen)
|
|
||||||
| _ -> None
|
|
||||||
|
|
||||||
let box_open_noalloc ~pk:(Pk pk) ~sk:(Sk sk) ~nonce ~cmsg =
|
|
||||||
match box_open_stub cmsg cmsg nonce pk sk with
|
|
||||||
| 0 -> true
|
|
||||||
| _ -> false
|
|
||||||
|
|
||||||
external box_beforenm :
|
|
||||||
Bigstring.t -> Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_box_beforenm" [@@noalloc]
|
|
||||||
|
|
||||||
let combine (Pk pk) (Sk sk) =
|
|
||||||
let combined = Bigstring.create beforenmbytes in
|
|
||||||
box_beforenm combined pk sk ;
|
|
||||||
Ck combined
|
|
||||||
|
|
||||||
external box_afternm :
|
|
||||||
Bigstring.t -> Bigstring.t ->
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_box_afternm" [@@noalloc]
|
|
||||||
|
|
||||||
let box_combined ~k:(Ck k) ~nonce ~msg =
|
|
||||||
let msglen = Bigstring.length msg in
|
|
||||||
let buflen = msglen + zerobytes in
|
|
||||||
let buf = Bigstring.create buflen in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit msg 0 buf zerobytes msglen ;
|
|
||||||
box_afternm buf buf nonce k ;
|
|
||||||
Bigstring.sub buf boxzerobytes (buflen - boxzerobytes)
|
|
||||||
|
|
||||||
let box_combined_noalloc ~k:(Ck k) ~nonce ~msg =
|
|
||||||
box_afternm msg msg nonce k
|
|
||||||
|
|
||||||
external box_open_afternm :
|
|
||||||
Bigstring.t -> Bigstring.t ->
|
|
||||||
Bigstring.t -> Bigstring.t -> int =
|
|
||||||
"ml_crypto_box_open_afternm" [@@noalloc]
|
|
||||||
|
|
||||||
let box_open_combined ~k:(Ck k) ~nonce ~cmsg =
|
|
||||||
let msglen = Bigstring.length cmsg - boxzerobytes in
|
|
||||||
let buflen = msglen + zerobytes in
|
|
||||||
let buf = Bigstring.create buflen in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit cmsg 0 buf boxzerobytes (msglen + boxzerobytes) ;
|
|
||||||
match box_open_afternm buf buf nonce k with
|
|
||||||
| 0 -> Some (Bigstring.sub buf zerobytes msglen)
|
|
||||||
| _ -> None
|
|
||||||
|
|
||||||
let box_open_combined_noalloc ~k:(Ck k) ~nonce ~cmsg =
|
|
||||||
match box_open_afternm cmsg cmsg nonce k with
|
|
||||||
| 0 -> true
|
|
||||||
| _ -> false
|
|
||||||
end
|
|
||||||
|
|
||||||
module Sign = struct
|
|
||||||
type secret
|
|
||||||
type extended
|
|
||||||
type public
|
|
||||||
type _ key =
|
|
||||||
| Sk : Bigstring.t -> secret key
|
|
||||||
| Ek : Bigstring.t -> extended key
|
|
||||||
| Pk : Bigstring.t -> public key
|
|
||||||
|
|
||||||
let bytes = 64
|
|
||||||
let pkbytes = 32
|
|
||||||
let skbytes = 64
|
|
||||||
let ekbytes = 64
|
|
||||||
let seedbytes = 32
|
|
||||||
|
|
||||||
let sk_of_bytes buf =
|
|
||||||
try Some (Sk (Bigstring.sub buf 0 skbytes)) with _ -> None
|
|
||||||
let ek_of_bytes buf =
|
|
||||||
try Some (Ek (Bigstring.sub buf 0 ekbytes)) with _ -> None
|
|
||||||
let pk_of_bytes buf =
|
|
||||||
try Some (Pk (Bigstring.sub buf 0 pkbytes)) with _ -> None
|
|
||||||
|
|
||||||
let sk_of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Sign.sk_of_bytes_exn" sk_of_bytes
|
|
||||||
let ek_of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Sign.ek_of_bytes_exn" ek_of_bytes
|
|
||||||
let pk_of_bytes_exn =
|
|
||||||
unopt_invalid_arg1 ~msg:"Sign.pk_of_bytes_exn" pk_of_bytes
|
|
||||||
|
|
||||||
let to_bytes : type a. a key -> Bigstring.t = function
|
|
||||||
| Pk buf -> buf
|
|
||||||
| Sk buf -> buf
|
|
||||||
| Ek buf -> buf
|
|
||||||
|
|
||||||
let seed (Sk buf) = Bigstring.sub buf 0 seedbytes
|
|
||||||
|
|
||||||
let blit_to_bytes :
|
|
||||||
type a. a key -> ?pos:int -> Bigstring.t -> unit = fun key ?(pos=0) buf ->
|
|
||||||
match key with
|
|
||||||
| Pk pk -> Bigstring.blit pk 0 buf pos pkbytes
|
|
||||||
| Sk sk -> Bigstring.blit sk 0 buf pos skbytes
|
|
||||||
| Ek ek -> Bigstring.blit ek 0 buf pos ekbytes
|
|
||||||
|
|
||||||
let equal :
|
|
||||||
type a. a key -> a key -> bool = fun a b -> match a, b with
|
|
||||||
| Pk a, Pk b -> Bigstring.equal a b
|
|
||||||
| Sk a, Sk b -> Bigstring.equal a b
|
|
||||||
| Ek a, Ek b -> Bigstring.equal a b
|
|
||||||
|
|
||||||
external keypair :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_sign_keypair" [@@noalloc]
|
|
||||||
|
|
||||||
external keypair_seed :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_sign_keypair_seed" [@@noalloc]
|
|
||||||
|
|
||||||
let keypair ?seed () =
|
|
||||||
let pk = Bigstring.create pkbytes in
|
|
||||||
let sk = Bigstring.create skbytes in
|
|
||||||
begin match seed with
|
|
||||||
| None -> keypair pk sk
|
|
||||||
| Some buf ->
|
|
||||||
if Bigstring.length buf < seedbytes then
|
|
||||||
invalid_arg "Sign.keypair: seed must be at least 32 bytes long" ;
|
|
||||||
Bigstring.blit buf 0 sk 0 pkbytes ;
|
|
||||||
keypair_seed pk sk
|
|
||||||
end ;
|
|
||||||
Pk pk, Sk sk
|
|
||||||
|
|
||||||
let extended (Sk sk) =
|
|
||||||
let buf = Hash.sha512 (Bigstring.sub sk 0 pkbytes) in
|
|
||||||
BigEndian.(set_int8 buf 0 (get_uint8 buf 0 land 248)) ;
|
|
||||||
BigEndian.(set_int8 buf 31 (get_uint8 buf 31 land 127)) ;
|
|
||||||
BigEndian.(set_int8 buf 31 (get_uint8 buf 31 lor 64)) ;
|
|
||||||
Ek buf
|
|
||||||
|
|
||||||
external sign :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_sign" [@@noalloc]
|
|
||||||
|
|
||||||
external sign_extended :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_crypto_sign_extended" [@@noalloc]
|
|
||||||
|
|
||||||
let sign ~key:(Sk sk) msg =
|
|
||||||
let msglen = Bigstring.length msg in
|
|
||||||
let buf = Bigstring.create (bytes + msglen) in
|
|
||||||
Bigstring.blit msg 0 buf bytes msglen ;
|
|
||||||
sign buf sk ;
|
|
||||||
buf
|
|
||||||
|
|
||||||
let sign_extended ~key:(Ek ek) msg =
|
|
||||||
let msglen = Bigstring.length msg in
|
|
||||||
let buf = Bigstring.create (bytes + msglen) in
|
|
||||||
Bigstring.blit msg 0 buf bytes msglen ;
|
|
||||||
sign_extended buf ek ;
|
|
||||||
buf
|
|
||||||
|
|
||||||
let detached ~key msg =
|
|
||||||
Bigstring.sub (sign ~key msg) 0 bytes
|
|
||||||
|
|
||||||
let detached_extended ~key msg =
|
|
||||||
Bigstring.sub (sign_extended ~key msg) 0 bytes
|
|
||||||
|
|
||||||
external verify :
|
|
||||||
Bigstring.t -> Bigstring.t -> Bigstring.t -> int =
|
|
||||||
"ml_crypto_sign_open" [@@noalloc]
|
|
||||||
|
|
||||||
let verify ~key:(Pk pk) smsg =
|
|
||||||
let msg = Bigstring.(create (length smsg)) in
|
|
||||||
match verify msg smsg pk with
|
|
||||||
| -1 -> None
|
|
||||||
| len -> Some (Bigstring.sub msg 0 len)
|
|
||||||
|
|
||||||
let verify_detached ~key ~signature msg =
|
|
||||||
let msglen = Bigstring.length msg in
|
|
||||||
let buf = Bigstring.create (bytes + msglen) in
|
|
||||||
Bigstring.blit signature 0 buf 0 bytes ;
|
|
||||||
Bigstring.blit msg 0 buf bytes msglen ;
|
|
||||||
match verify ~key buf with
|
|
||||||
| None -> false
|
|
||||||
| Some _ -> true
|
|
||||||
|
|
||||||
external add :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_add" [@@noalloc]
|
|
||||||
|
|
||||||
let add (Pk p) (Pk q) =
|
|
||||||
let buf = Bigstring.create pkbytes in
|
|
||||||
Bigstring.blit p 0 buf 0 pkbytes ;
|
|
||||||
add buf q ;
|
|
||||||
Pk buf
|
|
||||||
|
|
||||||
external mult :
|
|
||||||
Bigstring.t -> Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_scalarmult" [@@noalloc]
|
|
||||||
|
|
||||||
external base :
|
|
||||||
Bigstring.t -> Bigstring.t -> unit =
|
|
||||||
"ml_scalarbase" [@@noalloc]
|
|
||||||
|
|
||||||
let mult (Pk q) s =
|
|
||||||
let r = Bigstring.create pkbytes in
|
|
||||||
let scalar = Bigstring.create pkbytes in
|
|
||||||
buf_of_z scalar s ;
|
|
||||||
mult r q scalar ;
|
|
||||||
Pk r
|
|
||||||
|
|
||||||
let base_direct s =
|
|
||||||
let buf = Bigstring.create pkbytes in
|
|
||||||
base buf s ;
|
|
||||||
buf
|
|
||||||
|
|
||||||
let base s =
|
|
||||||
let r = Bigstring.create pkbytes in
|
|
||||||
let scalar = Bigstring.create pkbytes in
|
|
||||||
buf_of_z scalar s ;
|
|
||||||
base r scalar ;
|
|
||||||
Pk r
|
|
||||||
|
|
||||||
let public : type a. a key -> public key = function
|
|
||||||
| Pk _ as pk -> pk
|
|
||||||
| Sk buf -> Pk (Bigstring.sub buf 32 32)
|
|
||||||
| Ek buf -> Pk (base_direct (Bigstring.sub buf 0 32))
|
|
||||||
end
|
|
||||||
|
|
||||||
(*---------------------------------------------------------------------------
|
|
||||||
Copyright (c) 2017 Vincent Bernardoff
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
---------------------------------------------------------------------------*)
|
|
154
vendors/ocaml-tweetnacl/src/tweetnacl.mli
vendored
154
vendors/ocaml-tweetnacl/src/tweetnacl.mli
vendored
@ -1,154 +0,0 @@
|
|||||||
(*---------------------------------------------------------------------------
|
|
||||||
Copyright (c) 2017 Vincent Bernardoff. All rights reserved.
|
|
||||||
Distributed under the ISC license, see terms at the end of the file.
|
|
||||||
---------------------------------------------------------------------------*)
|
|
||||||
|
|
||||||
module Rand : sig
|
|
||||||
val gen : int -> Bigstring.t
|
|
||||||
val write : Bigstring.t -> unit
|
|
||||||
end
|
|
||||||
|
|
||||||
module Hash : sig
|
|
||||||
val sha512 : Bigstring.t -> Bigstring.t
|
|
||||||
end
|
|
||||||
|
|
||||||
module Nonce : sig
|
|
||||||
type t
|
|
||||||
val bytes : int
|
|
||||||
val gen : unit -> t
|
|
||||||
val increment : ?step:int -> t -> t
|
|
||||||
val of_bytes : Bigstring.t -> t option
|
|
||||||
val of_bytes_exn : Bigstring.t -> t
|
|
||||||
val to_bytes : t -> Bigstring.t
|
|
||||||
end
|
|
||||||
|
|
||||||
module Secretbox : sig
|
|
||||||
type key
|
|
||||||
|
|
||||||
val keybytes : int
|
|
||||||
val zerobytes : int
|
|
||||||
val boxzerobytes : int
|
|
||||||
|
|
||||||
val genkey : unit -> key
|
|
||||||
val of_bytes : Bigstring.t -> key option
|
|
||||||
val of_bytes_exn : Bigstring.t -> key
|
|
||||||
|
|
||||||
val box : key:key -> nonce:Nonce.t -> msg:Bigstring.t -> Bigstring.t
|
|
||||||
val box_open : key:key -> nonce:Nonce.t -> cmsg:Bigstring.t -> Bigstring.t option
|
|
||||||
|
|
||||||
val box_noalloc : key:key -> nonce:Nonce.t -> msg:Bigstring.t -> unit
|
|
||||||
val box_open_noalloc : key:key -> nonce:Nonce.t -> cmsg:Bigstring.t -> bool
|
|
||||||
end
|
|
||||||
|
|
||||||
module Box : sig
|
|
||||||
type secret
|
|
||||||
type public
|
|
||||||
type combined
|
|
||||||
|
|
||||||
type _ key
|
|
||||||
|
|
||||||
val skbytes : int
|
|
||||||
val pkbytes : int
|
|
||||||
val beforenmbytes : int
|
|
||||||
val zerobytes : int
|
|
||||||
val boxzerobytes : int
|
|
||||||
|
|
||||||
val equal : 'a key -> 'a key -> bool
|
|
||||||
val to_bytes : _ key -> Bigstring.t
|
|
||||||
val blit_to_bytes : _ key -> ?pos:int -> Bigstring.t -> unit
|
|
||||||
|
|
||||||
val sk_of_bytes : Bigstring.t -> secret key option
|
|
||||||
val pk_of_bytes : Bigstring.t -> public key option
|
|
||||||
val ck_of_bytes : Bigstring.t -> combined key option
|
|
||||||
|
|
||||||
val sk_of_bytes_exn : Bigstring.t -> secret key
|
|
||||||
val pk_of_bytes_exn : Bigstring.t -> public key
|
|
||||||
val ck_of_bytes_exn : Bigstring.t -> combined key
|
|
||||||
|
|
||||||
val keypair : unit -> public key * secret key
|
|
||||||
|
|
||||||
val box :
|
|
||||||
pk:public key -> sk:secret key ->
|
|
||||||
nonce:Nonce.t -> msg:Bigstring.t -> Bigstring.t
|
|
||||||
val box_open :
|
|
||||||
pk:public key -> sk:secret key ->
|
|
||||||
nonce:Nonce.t -> cmsg:Bigstring.t -> Bigstring.t option
|
|
||||||
|
|
||||||
val box_noalloc :
|
|
||||||
pk:public key -> sk:secret key ->
|
|
||||||
nonce:Nonce.t -> msg:Bigstring.t -> unit
|
|
||||||
val box_open_noalloc :
|
|
||||||
pk:public key -> sk:secret key ->
|
|
||||||
nonce:Nonce.t -> cmsg:Bigstring.t -> bool
|
|
||||||
|
|
||||||
val combine : public key -> secret key -> combined key
|
|
||||||
val box_combined :
|
|
||||||
k:combined key -> nonce:Nonce.t -> msg:Bigstring.t -> Bigstring.t
|
|
||||||
val box_open_combined :
|
|
||||||
k:combined key -> nonce:Nonce.t -> cmsg:Bigstring.t -> Bigstring.t option
|
|
||||||
|
|
||||||
val box_combined_noalloc :
|
|
||||||
k:combined key -> nonce:Nonce.t -> msg:Bigstring.t -> unit
|
|
||||||
val box_open_combined_noalloc :
|
|
||||||
k:combined key -> nonce:Nonce.t -> cmsg:Bigstring.t -> bool
|
|
||||||
end
|
|
||||||
|
|
||||||
module Sign : sig
|
|
||||||
type secret
|
|
||||||
type extended
|
|
||||||
type public
|
|
||||||
type _ key
|
|
||||||
|
|
||||||
val bytes : int
|
|
||||||
val pkbytes : int
|
|
||||||
val skbytes : int
|
|
||||||
val ekbytes : int
|
|
||||||
val seedbytes : int
|
|
||||||
|
|
||||||
val to_bytes : _ key -> Bigstring.t
|
|
||||||
val blit_to_bytes : _ key -> ?pos:int -> Bigstring.t -> unit
|
|
||||||
|
|
||||||
val sk_of_bytes : Bigstring.t -> secret key option
|
|
||||||
val ek_of_bytes : Bigstring.t -> extended key option
|
|
||||||
val pk_of_bytes : Bigstring.t -> public key option
|
|
||||||
|
|
||||||
val sk_of_bytes_exn : Bigstring.t -> secret key
|
|
||||||
val ek_of_bytes_exn : Bigstring.t -> extended key
|
|
||||||
val pk_of_bytes_exn : Bigstring.t -> public key
|
|
||||||
|
|
||||||
val keypair : ?seed:Bigstring.t -> unit -> public key * secret key
|
|
||||||
val equal : 'a key -> 'a key -> bool
|
|
||||||
|
|
||||||
val extended : secret key -> extended key
|
|
||||||
val seed : secret key -> Bigstring.t
|
|
||||||
val public : _ key -> public key
|
|
||||||
|
|
||||||
val sign : key:secret key -> Bigstring.t -> Bigstring.t
|
|
||||||
val sign_extended : key:extended key -> Bigstring.t -> Bigstring.t
|
|
||||||
|
|
||||||
val detached : key:secret key -> Bigstring.t -> Bigstring.t
|
|
||||||
val detached_extended : key:extended key -> Bigstring.t -> Bigstring.t
|
|
||||||
|
|
||||||
val verify : key:public key -> Bigstring.t -> Bigstring.t option
|
|
||||||
val verify_detached : key:public key -> signature:Bigstring.t -> Bigstring.t -> bool
|
|
||||||
|
|
||||||
val add : public key -> public key -> public key
|
|
||||||
val mult : public key -> Z.t -> public key
|
|
||||||
val base : Z.t -> public key
|
|
||||||
end
|
|
||||||
|
|
||||||
(*---------------------------------------------------------------------------
|
|
||||||
Copyright (c) 2017 Vincent Bernardoff
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
---------------------------------------------------------------------------*)
|
|
1079
vendors/ocaml-tweetnacl/src/tweetnacl_stubs.c
vendored
1079
vendors/ocaml-tweetnacl/src/tweetnacl_stubs.c
vendored
File diff suppressed because it is too large
Load Diff
14
vendors/ocaml-tweetnacl/test/jbuild
vendored
14
vendors/ocaml-tweetnacl/test/jbuild
vendored
@ -1,14 +0,0 @@
|
|||||||
(jbuild_version 1)
|
|
||||||
|
|
||||||
(executable
|
|
||||||
((name test)
|
|
||||||
(libraries (hex tweetnacl alcotest))))
|
|
||||||
|
|
||||||
(alias
|
|
||||||
((name runtest-tweetnacl)
|
|
||||||
(deps (test.exe))
|
|
||||||
(action (run ${<}))))
|
|
||||||
|
|
||||||
(alias
|
|
||||||
((name runtest)
|
|
||||||
(deps ((alias runtest-tweetnacl)))))
|
|
198
vendors/ocaml-tweetnacl/test/test.ml
vendored
198
vendors/ocaml-tweetnacl/test/test.ml
vendored
@ -1,198 +0,0 @@
|
|||||||
open Tweetnacl
|
|
||||||
|
|
||||||
let pp_bigstring ppf buf =
|
|
||||||
Format.fprintf ppf "%a" Hex.pp (Hex.of_cstruct (Cstruct.of_bigarray buf))
|
|
||||||
|
|
||||||
let bigstring = Alcotest.testable pp_bigstring Bigstring.equal
|
|
||||||
|
|
||||||
let msg = Bigstring.of_string "Voulez-vous coucher avec moi, ce soir ?"
|
|
||||||
let msglen = Bigstring.length msg
|
|
||||||
|
|
||||||
let sha512 () =
|
|
||||||
let resp = `Hex "7941f442d956f124d77ee1d1f0ba3db100751090462cdce4aed5fcd240529097bc666bf9c424becde760910df652c7aefec50b02d7f6efe666f79e5242fb755b" in
|
|
||||||
let digest = Hash.sha512 msg in
|
|
||||||
assert (resp = (Hex.of_cstruct (Cstruct.of_bigarray digest)))
|
|
||||||
|
|
||||||
let keypair () =
|
|
||||||
let seed = Rand.gen 32 in
|
|
||||||
let pk, sk = Sign.keypair ~seed () in
|
|
||||||
let pk', sk' = Sign.keypair ~seed () in
|
|
||||||
assert (Sign.equal pk pk') ;
|
|
||||||
assert (Sign.equal sk sk')
|
|
||||||
|
|
||||||
let sign () =
|
|
||||||
let pk, sk = Sign.keypair () in
|
|
||||||
let signed_msg = Sign.sign ~key:sk msg in
|
|
||||||
match Sign.verify ~key:pk signed_msg with
|
|
||||||
| None -> assert false
|
|
||||||
| Some verified_msg ->
|
|
||||||
Alcotest.check bigstring "sign" msg verified_msg
|
|
||||||
|
|
||||||
let sign_detached () =
|
|
||||||
let pk, sk = Sign.keypair () in
|
|
||||||
let signature = Sign.detached ~key:sk msg in
|
|
||||||
match Sign.verify_detached ~key:pk ~signature msg with
|
|
||||||
| false -> assert false
|
|
||||||
| true -> ()
|
|
||||||
|
|
||||||
let sign_extended () =
|
|
||||||
let pk, sk = Sign.keypair () in
|
|
||||||
let ek = Sign.extended sk in
|
|
||||||
let signed_msg = Sign.sign_extended ~key:ek msg in
|
|
||||||
match Sign.verify ~key:pk signed_msg with
|
|
||||||
| None -> assert false
|
|
||||||
| Some verified_msg ->
|
|
||||||
Alcotest.check bigstring "sign_extended" msg verified_msg
|
|
||||||
|
|
||||||
let sign_extended_detached () =
|
|
||||||
let pk, sk = Sign.keypair () in
|
|
||||||
let ek = Sign.extended sk in
|
|
||||||
let signature = Sign.detached_extended ~key:ek msg in
|
|
||||||
match Sign.verify_detached ~key:pk ~signature msg with
|
|
||||||
| false -> assert false
|
|
||||||
| true -> ()
|
|
||||||
|
|
||||||
let public () =
|
|
||||||
let pk, sk = Sign.keypair () in
|
|
||||||
let pk' = Sign.to_bytes pk in
|
|
||||||
let ek = Sign.extended sk in
|
|
||||||
let ppk = Sign.(to_bytes (public pk)) in
|
|
||||||
let psk = Sign.(to_bytes (public sk)) in
|
|
||||||
let pek = Sign.(to_bytes (public ek)) in
|
|
||||||
Alcotest.check bigstring "public" pk' ppk ;
|
|
||||||
Alcotest.check bigstring "public" pk' psk ;
|
|
||||||
Alcotest.check bigstring "public" pk' pek
|
|
||||||
|
|
||||||
let base () =
|
|
||||||
let pk, sk = Sign.keypair () in
|
|
||||||
let ek = Sign.(to_bytes (extended sk)) in
|
|
||||||
let z = Z.of_bits Bigstring.(to_string (sub ek 0 32)) in
|
|
||||||
let pk' = Sign.base z in
|
|
||||||
assert (Sign.equal pk pk')
|
|
||||||
|
|
||||||
let comm () =
|
|
||||||
let pk1, _ = Sign.keypair () in
|
|
||||||
let pk2, _ = Sign.keypair () in
|
|
||||||
let pk3 = Sign.add pk1 pk2 in
|
|
||||||
let pk3' = Sign.add pk2 pk1 in
|
|
||||||
assert (Sign.equal pk3 pk3')
|
|
||||||
|
|
||||||
let assoc () =
|
|
||||||
let pk1, _ = Sign.keypair () in
|
|
||||||
let pk2, _ = Sign.keypair () in
|
|
||||||
let pk3, _ = Sign.keypair () in
|
|
||||||
let sum12 = Sign.add pk1 pk2 in
|
|
||||||
let sum23 = Sign.add pk2 pk3 in
|
|
||||||
let a = Sign.add sum12 pk3 in
|
|
||||||
let b = Sign.add pk1 sum23 in
|
|
||||||
assert (Sign.equal a b)
|
|
||||||
|
|
||||||
let arith () =
|
|
||||||
let pk, _sk = Sign.keypair () in
|
|
||||||
let pk2 = Sign.mult pk (Z.of_int 3) in
|
|
||||||
let pk2' = Sign.(add (add pk pk) pk) in
|
|
||||||
assert (Sign.equal pk2 pk2')
|
|
||||||
|
|
||||||
let arith2 () =
|
|
||||||
let a = Sign.base (Z.of_int 3) in
|
|
||||||
let b = Sign.mult a (Z.of_int 2) in
|
|
||||||
let b' = Sign.base (Z.of_int 6) in
|
|
||||||
assert (Sign.equal b b')
|
|
||||||
|
|
||||||
let hash = [
|
|
||||||
"sha512", `Quick, sha512 ;
|
|
||||||
]
|
|
||||||
|
|
||||||
let secretbox () =
|
|
||||||
let open Secretbox in
|
|
||||||
let key = genkey () in
|
|
||||||
let nonce = Nonce.gen () in
|
|
||||||
let cmsg = box ~key ~nonce ~msg in
|
|
||||||
assert (Bigstring.length cmsg = msglen + boxzerobytes) ;
|
|
||||||
begin match box_open ~key ~nonce ~cmsg with
|
|
||||||
| None -> assert false
|
|
||||||
| Some msg' -> Alcotest.check bigstring "secretbox" msg msg'
|
|
||||||
end
|
|
||||||
|
|
||||||
let secretbox_noalloc () =
|
|
||||||
let open Secretbox in
|
|
||||||
let buflen = msglen + zerobytes in
|
|
||||||
let buf = Bigstring.create buflen in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit msg 0 buf zerobytes msglen ;
|
|
||||||
let key = genkey () in
|
|
||||||
let nonce = Nonce.gen () in
|
|
||||||
box_noalloc ~key ~nonce ~msg:buf ;
|
|
||||||
let res = box_open_noalloc ~key ~nonce ~cmsg:buf in
|
|
||||||
assert res ;
|
|
||||||
Alcotest.check
|
|
||||||
bigstring "secretbox_noalloc" msg (Bigstring.sub buf zerobytes msglen)
|
|
||||||
|
|
||||||
let secretbox = [
|
|
||||||
"secretbox", `Quick, secretbox ;
|
|
||||||
"secretbox_noalloc", `Quick, secretbox_noalloc ;
|
|
||||||
]
|
|
||||||
|
|
||||||
let box () =
|
|
||||||
let open Box in
|
|
||||||
let pk, sk = keypair () in
|
|
||||||
let k = combine pk sk in
|
|
||||||
let nonce = Nonce.gen () in
|
|
||||||
let cmsg = box ~pk ~sk ~nonce ~msg in
|
|
||||||
assert (Bigstring.length cmsg = msglen + boxzerobytes) ;
|
|
||||||
begin match box_open ~pk ~sk ~nonce ~cmsg with
|
|
||||||
| None -> assert false
|
|
||||||
| Some msg' -> Alcotest.check bigstring "box" msg msg'
|
|
||||||
end ;
|
|
||||||
let cmsg = box_combined ~k ~nonce ~msg in
|
|
||||||
begin match box_open_combined ~k ~nonce ~cmsg with
|
|
||||||
| None -> assert false
|
|
||||||
| Some msg' -> Alcotest.check bigstring "box" msg msg'
|
|
||||||
end
|
|
||||||
|
|
||||||
let box_noalloc () =
|
|
||||||
let open Box in
|
|
||||||
let buflen = msglen + zerobytes in
|
|
||||||
let buf = Bigstring.create buflen in
|
|
||||||
Bigstring.fill buf '\x00' ;
|
|
||||||
Bigstring.blit msg 0 buf zerobytes msglen ;
|
|
||||||
let pk, sk = keypair () in
|
|
||||||
let k = combine pk sk in
|
|
||||||
let nonce = Nonce.gen () in
|
|
||||||
box_noalloc ~pk ~sk ~nonce ~msg:buf ;
|
|
||||||
let res = box_open_noalloc ~pk ~sk ~nonce ~cmsg:buf in
|
|
||||||
assert res ;
|
|
||||||
Alcotest.check bigstring
|
|
||||||
"box_noalloc" msg (Bigstring.sub buf zerobytes msglen) ;
|
|
||||||
box_combined_noalloc ~k ~nonce ~msg:buf ;
|
|
||||||
let res = box_open_combined_noalloc ~k ~nonce ~cmsg:buf in
|
|
||||||
assert res ;
|
|
||||||
Alcotest.check bigstring
|
|
||||||
"box_noalloc" msg (Bigstring.sub buf zerobytes msglen)
|
|
||||||
|
|
||||||
let box = [
|
|
||||||
"box", `Quick, box ;
|
|
||||||
"box_noalloc", `Quick, box_noalloc ;
|
|
||||||
]
|
|
||||||
|
|
||||||
let sign = [
|
|
||||||
"keypair", `Quick, keypair ;
|
|
||||||
"sign", `Quick, sign ;
|
|
||||||
"sign_detached", `Quick, sign_detached ;
|
|
||||||
"sign_extended", `Quick, sign_extended ;
|
|
||||||
"sign_extended_detached", `Quick, sign_extended_detached ;
|
|
||||||
"public", `Quick, public ;
|
|
||||||
"base", `Quick, base ;
|
|
||||||
"comm", `Quick, comm ;
|
|
||||||
"assoc", `Quick, assoc ;
|
|
||||||
"arith", `Quick, arith ;
|
|
||||||
"arith2", `Quick, arith2 ;
|
|
||||||
]
|
|
||||||
|
|
||||||
let () =
|
|
||||||
Alcotest.run "tweetnacl" [
|
|
||||||
"hash", hash ;
|
|
||||||
"secretbox", secretbox ;
|
|
||||||
"box", box ;
|
|
||||||
"sign", sign ;
|
|
||||||
]
|
|
24
vendors/ocaml-tweetnacl/tweetnacl.opam
vendored
24
vendors/ocaml-tweetnacl/tweetnacl.opam
vendored
@ -1,24 +0,0 @@
|
|||||||
opam-version: "1.2"
|
|
||||||
name: "tweetnacl"
|
|
||||||
version: "dev"
|
|
||||||
authors: "Vincent Bernardoff <vb@luminar.eu.org>"
|
|
||||||
maintainer: "Vincent Bernardoff <vb@luminar.eu.org>"
|
|
||||||
license: "ISC"
|
|
||||||
homepage: "https://github.com/vbmithr/ocaml-tweetnacl"
|
|
||||||
bug-reports: "https://github.com/vbmithr/ocaml-tweetnacl/issues"
|
|
||||||
dev-repo: "git://github.com/vbmithr/ocaml-tweetnacl"
|
|
||||||
|
|
||||||
available: [
|
|
||||||
ocaml-version >= "4.02.0"
|
|
||||||
]
|
|
||||||
|
|
||||||
build: [ "jbuilder" "build" "-j" jobs "-p" name "@install" ]
|
|
||||||
build-test: [ "jbuilder" "runtest" "-p" name "-j" jobs ]
|
|
||||||
depends: [
|
|
||||||
"jbuilder" {build & >= "1.0+beta16"}
|
|
||||||
"bigstring" {>= "0.1.1"}
|
|
||||||
"ocplib-endian" {>= "1.0"}
|
|
||||||
"zarith" {>= "1.7"}
|
|
||||||
"alcotest" {test & >= "0.8.1"}
|
|
||||||
"hex" {test & >= "1.2.0"}
|
|
||||||
]
|
|
Loading…
Reference in New Issue
Block a user