Vendors: removed ocaml-tweetnacl

This commit is contained in:
Marco Stronati 2018-04-05 23:21:16 +02:00 committed by Vincent Bernardoff
parent 7d6da7179b
commit b619b29483
9 changed files with 0 additions and 2209 deletions

View File

@ -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.

View File

@ -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))))

View File

@ -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

View File

@ -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.
---------------------------------------------------------------------------*)

View File

@ -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.
---------------------------------------------------------------------------*)

File diff suppressed because it is too large Load Diff

View File

@ -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)))))

View File

@ -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 ;
]

View File

@ -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"}
]