Repository navigation
Expand file tree
/
Copy pathsign_message.clsp
More file actions
96 lines (86 loc) · 3.5 KB
/
Copy pathsign_message.clsp
File metadata and controls
96 lines (86 loc) · 3.5 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
;; Copyright 2026 Julia.Social, Inc.
;;
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at
;;
;; http://www.apache.org/licenses/LICENSE-2.0
;;
;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.
(mod (curried-args solution)
(include *standard-cl-26*)
(defun print (l x) (i (all "$print$" l x) x x))
; Routing root for all paths that reach credential claims. Supports DID-signed messages,
; timestamps, and nonces as puzzle announcements.
(include "condition_codes.clib")
(include "sha256tree.clib")
(embed-file coin-control-puzzlehash bin "coin_control.clsp.hash.bin")
(embed-file did-doc-announce-puzzlehash bin "DIDdoc_announce.clsp.hash.bin")
(embed-file invalidate-puzzlehash bin "invalidate.clsp.hash.bin")
(embed-file pass-thru-puzzlehash bin "pass_thru.clsp.hash.bin")
(embed-file present-claims-puzzlehash bin "present_claims.clsp.hash.bin")
(embed-file present-delegated-puzzlehash bin "present_delegated.clsp.hash.bin")
; creates JDIDM puzzle announcements for DID-signed messages
(defun prepend-messages (messages conditions)
(if (l messages)
(c (list CREATE_PUZZLE_ANNOUNCEMENT (concat "JDIDM" (f messages)))
(prepend-messages (r messages) conditions))
conditions
)
)
; creates a JDIDT puzzle announcement with the signing timestamp
(defun-inline prepend-datetime (datetime conditions)
(if datetime
(c (list CREATE_PUZZLE_ANNOUNCEMENT (concat "JDIDT" datetime))
conditions)
conditions
)
)
; creates a JDIDN puzzle announcement as an anti-replay nonce
(defun-inline prepend-nonce (nonce conditions)
(if nonce
(c (list CREATE_PUZZLE_ANNOUNCEMENT (concat "JDIDN" nonce))
conditions)
conditions
)
)
;; main
(assign
( messages
datetime
nonce
) solution
child-puzzle-input (r (r (r solution)))
child-puzzle-output (if (l child-puzzle-input)
(assign
child-hash (sha256tree (f child-puzzle-input))
(if (if (= child-hash coin-control-puzzlehash) 1
(if (= child-hash did-doc-announce-puzzlehash) 1
(if (= child-hash invalidate-puzzlehash) 1
(if (= child-hash pass-thru-puzzlehash) 1
(if (= child-hash present-claims-puzzlehash) 1
(= child-hash present-delegated-puzzlehash))))))
(a (f child-puzzle-input) (list curried-args (r child-puzzle-input)))
(x 110)
)
)
(list curried-args ())
)
( child-puzzle-new-curry-args
child-puzzle-conditions
) child-puzzle-output
(list child-puzzle-new-curry-args
(prepend-messages messages
(prepend-datetime datetime
(prepend-nonce nonce
child-puzzle-conditions
)
)
)
)
)
)