crypto.bend
bend-kit-crypto@0.2.2.2 · 111 lines · 18 definitions
1
2import Base
3
4
5
6
7
8def digest.words(alg: String, len: U32, words: Array<U32>) ->
9 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
10 import "./effs/crypto.c"
11 import "./effs/crypto.js"
12
13def sha256.words(len: U32, words: Array<U32>) -> IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
14 digest.words("SHA256", len, words)
15
16def sha512.words(len: U32, words: Array<U32>) -> IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
17 digest.words("SHA512", len, words)
18
19
20def sha1.words(len: U32, words: Array<U32>) -> IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
21 digest.words("SHA1", len, words)
22
23
24def hmac.words(alg: String, klen: U32, key: Array<U32>, dlen: U32, data: Array<U32>) ->
25 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
26 import "./effs/crypto.c"
27 import "./effs/crypto.js"
28
29
30def hkdf.words(alg: String, slen: U32, salt: Array<U32>, klen: U32, ikm: Array<U32>, ilen: U32, info: Array<U32>, n: U32) ->
31 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
32 import "./effs/crypto.c"
33 import "./effs/crypto.js"
34
35
36def pbkdf2.words(alg: String, plen: U32, pass: Array<U32>, slen: U32, salt: Array<U32>, iters: U32, n: U32) ->
37 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
38 import "./effs/crypto.c"
39 import "./effs/crypto.js"
40
41
42
43def scrypt.words(plen: U32, pass: Array<U32>, slen: U32, salt: Array<U32>,
44 N: U32, r: U32, p: U32, maxmem: U32, n: U32) ->
45 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
46 import "./effs/crypto.c"
47 import "./effs/crypto.js"
48
49
50def random.words(n: U32) -> IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
51 import "./effs/crypto.c"
52 import "./effs/crypto.js"
53
54
55def eq.ct.words(alen: U32, a: Array<U32>, blen: U32, b: Array<U32>) -> IO(Bool):
56 import "./effs/crypto.c"
57 import "./effs/crypto.js"
58
59
60
61
62
63
64
65def rsa.sign.words(alg: String, klen: U32, key: Array<U32>, dlen: U32, data: Array<U32>) ->
66 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
67 import "./effs/crypto.c"
68 import "./effs/crypto.js"
69
70def rsa.verify.words(alg: String, klen: U32, key: Array<U32>, dlen: U32, data: Array<U32>, slen: U32, sig: Array<U32>) ->
71 IO(Result<&1, &1, U32 & String, Bool>):
72 import "./effs/crypto.c"
73 import "./effs/crypto.js"
74
75
76def rsa.verify.jwk.words(alg: String, nlen: U32, n: Array<U32>, elen: U32, e: Array<U32>, dlen: U32, data: Array<U32>, slen: U32, sig: Array<U32>) ->
77 IO(Result<&1, &1, U32 & String, Bool>):
78 import "./effs/crypto.c"
79 import "./effs/crypto.js"
80
81
82def ecdsa.sign.words(alg: String, klen: U32, key: Array<U32>, dlen: U32, data: Array<U32>) ->
83 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
84 import "./effs/crypto.c"
85 import "./effs/crypto.js"
86
87def ecdsa.verify.words(alg: String, klen: U32, key: Array<U32>, dlen: U32, data: Array<U32>, slen: U32, sig: Array<U32>) ->
88 IO(Result<&1, &1, U32 & String, Bool>):
89 import "./effs/crypto.c"
90 import "./effs/crypto.js"
91
92
93def ecdsa.verify.jwk.words(alg: String, xlen: U32, x: Array<U32>, ylen: U32, y: Array<U32>, dlen: U32, data: Array<U32>, slen: U32, sig: Array<U32>) ->
94 IO(Result<&1, &1, U32 & String, Bool>):
95 import "./effs/crypto.c"
96 import "./effs/crypto.js"
97
98
99
100
101def aead.seal.words(alg: String, klen: U32, key: Array<U32>, nlen: U32, nonce: Array<U32>,
102 alen: U32, aad: Array<U32>, dlen: U32, data: Array<U32>) ->
103 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
104 import "./effs/crypto.c"
105 import "./effs/crypto.js"
106
107def aead.open.words(alg: String, klen: U32, key: Array<U32>, nlen: U32, nonce: Array<U32>,
108 alen: U32, aad: Array<U32>, dlen: U32, data: Array<U32>) ->
109 IO(Result<&1, &1, U32 & String, U32 & Array<U32>>):
110 import "./effs/crypto.c"
111 import "./effs/crypto.js"