Overview
Context
Changes
Modified client/1.0/pkgd.eagle
from [297a91d7bb]
to [0810aba31e].
︙ | | |
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
-
+
|
error "unsupported language, no idea how to modify auto-path"
}
}
#
# NOTE: This procedure downloads a single file from the package file server,
# writing its contents to the specified local file name. It can also
# verify the PGP signatures. When a PGP signature file is
# verify the OpenPGP signatures. When an OpenPGP signature file is
# downloaded, this procedure assumes the corresponding data file was
# already downloaded (i.e. since OpenPGP needs both to perform the
# signature checks). The language argument must be one of the
# literal strings "eagle", "tcl", or "client". The version argument
# must be one of the literal strings "8.4", "8.5", or "8.6" when the
# language is "tcl" -OR- the literal string "1.0" when the language
# is either "eagle" or "client". The fileName argument is a file
|
︙ | | |
Modified client/1.0/pkgd.eagle.harpy
from [4ccc75c948]
to [57f0328be3].
︙ | | |
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
|
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
|
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Protocol>None</Protocol>
<Vendor>Mistachkin Systems</Vendor>
<Id>773aaed9-81ab-4f37-a8b5-33385149bc2e</Id>
<Id>35699df9-d62a-40d3-80c9-7605014c9539</Id>
<HashAlgorithm>SHA512</HashAlgorithm>
<EntityType>Script</EntityType>
<TimeStamp>2016-08-19T19:54:13.8457500Z</TimeStamp>
<TimeStamp>2016-08-19T19:59:41.5664531Z</TimeStamp>
<Duration>-1.00:00:00</Duration>
<Key>0x2c322765603b5278</Key>
<Signature>
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
</Signature>
</Certificate>
|
Modified client/1.0/pkgr.eagle
from [25667f2c0a]
to [5a0dd193f2].
︙ | | |
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
-
-
+
+
|
} else {
return false
}
}
#
# NOTE: This procedure returns non-zero if the specified string value
# looks like a PGP signature. The value argument is the string
# to check.
# looks like an OpenPGP signature. The value argument is the
# string to check.
#
# <public>
proc isPgpSignature { value } {
if {[string length $value] == 0 || [string first [string trim {
-----BEGIN PGP SIGNATURE-----
}] $value] == 0} then {
return true
|
︙ | | |
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
-
-
-
-
-
+
+
+
+
+
+
|
incr counter
}
}
}
#
# NOTE: This procedure attempts to verify the PGP signature contained in
# the specified (named) file. Non-zero is only returned if the PGP
# signature is verified successfully. A script error should not be
# raised by this procedure. The fileName argument must be the fully
# qualified path and file name of the PGP signature file to verify.
# NOTE: This procedure attempts to verify the OpenPGP signature contained
# in the specified (named) file. Non-zero is only returned if the
# OpenPGP signature is verified successfully. A script error should
# not be raised by this procedure. The fileName argument must be
# the fully qualified path and file name of the OpenPGP signature
# file to verify.
#
# <public>
proc verifyPgpSignature { fileName } {
variable pgpCommand
if {[isEagle]} then {
set fileName [appendArgs \" $fileName \"]
|
︙ | | |
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
|
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
|
-
-
+
+
|
return false
}
#
# NOTE: This procedure uses the package lookup metadata. If the package
# script is properly signed, an attempt will be made to evaluate it
# in the target language. If the script was signed using PGP, then
# a conforming implementation of the OpenPGP specification (e.g.
# in the target language. If the script was signed using OpenPGP,
# then a conforming implementation of the OpenPGP specification (e.g.
# gpg2) must be installed locally. If the script was signed using
# Harpy then Garuda, Eagle, and Harpy must be installed locally.
# This procedure is designed to work for both native Tcl and Eagle
# packages. Additionally, it is designed to work when evaluated
# using either native Tcl or Eagle; however, it is up to the package
# script itself to either add the package or provide the package to
# the language(s) supported by that package. The varName argument
|
︙ | | |
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
|
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
|
-
+
-
+
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
|
#
# NOTE: If there is no package script, there is nothing we
# can do here.
#
if {[string length $metadata(script)] > 0} then {
#
# NOTE: Figure out temporary file name for the downloaded script
# and its associated PGP signature.
# and its associated OpenPGP signature.
#
set fileName(1) [getFileTempName]
set fileName(2) [appendArgs $fileName(1) .asc]
#
# NOTE: Write downloaded script to a temporary file.
#
writeFile $fileName(1) $metadata(script)
#
# NOTE: Write downloaded script PGP signature a temporary file.
# NOTE: Write downloaded script OpenPGP signature a temporary file.
#
if {[string length $metadata(certificate)] > 0} then {
writeFile $fileName(2) $metadata(certificate)
}
#
# NOTE: Attempt to verify the PGP signature for the package script.
# NOTE: Attempt to verify the OpenPGP signature for the package
# script.
#
if {[verifyPgpSignature $fileName(2)]} then {
#
# NOTE: Delete the temporary files that we created for the PGP
# signature verification.
# NOTE: Delete the temporary files that we created for the
# OpenPGP signature verification.
#
eval $script(cleanup)
} else {
#
# NOTE: Delete the temporary files that we created for the PGP
# signature verification.
# NOTE: Delete the temporary files that we created for the
# OpenPGP signature verification.
#
eval $script(cleanup)
#
# NOTE: PGP signature verification failed. Raise an error and
# do not proceed with evaluating the package script.
# NOTE: OpenPGP signature verification failed. Raise an error
# and do not proceed with evaluating the package script.
#
error "bad PGP signature"
}
#
# NOTE: The PGP signature was verified; use the downloaded package
# script verbatim.
# NOTE: The OpenPGP signature was verified; use the downloaded
# package script verbatim.
#
set script(inner) $metadata(script)
#
# NOTE: Determine the target language for the package script, which
# may or may not be the language that is currently evaluating
# this script (Eagle). The default language, when one was not
|
︙ | | |
Modified client/1.0/pkgr.eagle.harpy
from [a401a14e54]
to [3ea72268c0].
︙ | | |
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
|
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
|
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Protocol>None</Protocol>
<Vendor>Mistachkin Systems</Vendor>
<Id>f958f841-28ec-493a-9f30-fc7c5ec9e126</Id>
<Id>b72e4969-c47f-4935-95df-c483ce315d11</Id>
<HashAlgorithm>SHA512</HashAlgorithm>
<EntityType>Script</EntityType>
<TimeStamp>2016-08-19T19:55:14.6953594Z</TimeStamp>
<TimeStamp>2016-08-19T19:59:26.5352031Z</TimeStamp>
<Duration>-1.00:00:00</Duration>
<Key>0x2c322765603b5278</Key>
<Signature>
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
</Signature>
</Certificate>
|