blob: 5b4aeb7fd218f257497ad99432e06051d8ce99aa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
(defun hmac-impl (key message
digest-fn begin-fn update-fn end-fn
block-size)
(if (stringp key)
(upd key buf-str))
(if (stringp message)
(upd message buf-str))
(if (> (len key) block-size)
(upd key digest-fn))
(buf-set-length key block-size)
(let ((okey (buf-xor-pattern key #x5c))
(ikey (buf-xor-pattern key #x36))
(ctx0 [begin-fn])
(ctx1 [begin-fn]))
[update-fn ctx0 ikey]
[update-fn ctx0 message]
[update-fn ctx1 okey]
[update-fn ctx1 [end-fn ctx0]]
[end-fn ctx1]))
(defun hmac-sha1 (key message)
[hmac-impl key message sha1 sha1-begin sha1-hash sha1-end 64])
(defun hmac-sha256 (key message)
[hmac-impl key message sha256 sha256-begin sha256-hash sha256-end 64])
(defun hmac-md5 (key message)
[hmac-impl key message md5 md5-begin md5-hash md5-end 64])
|