Check-in [5652e4cf00]
Not logged in
Overview
Comment:Fix platform detection for neutral packages in the downloader. Verify that OpenPGP is installed prior to calling it.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 5652e4cf004d73a17ec86a5b78dcf0b9ef9ff4bb
User & Date: mistachkin on 2016-10-31 00:39:38
Other Links: manifest | tags
Context
2016-10-31
01:19
Remove some duplicated code. Reorganize some code. check-in: 6a05f4832c user: mistachkin tags: trunk
00:39
Fix platform detection for neutral packages in the downloader. Verify that OpenPGP is installed prior to calling it. check-in: 5652e4cf00 user: mistachkin tags: trunk
2016-10-28
20:59
Fix URI query parameter escaping when evaluated in Eagle. check-in: ca8bb45c5e user: mistachkin tags: trunk
Changes

Modified client/1.0/neutral/pkgd.eagle from [a3005634bc] to [9ace2abafb].

698
699
700
701
702
703
704





























705
706
707
708
709
710
711
        }
      }
    }

    return ""
  }






























  #
  # NOTE: This procedure verifies the platform specified by the caller.  The
  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  An empty string means that the
  #       associated entity does not require a specific platform.  The
  #       varName argument is the name of a variable in the context of the







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
        }
      }
    }

    return ""
  }

  #
  # NOTE: This procedure attempts to guess a package name based on a list of
  #       its files.  It relies upon the fact that all packages must include
  #       a package index file.  The language argument must be one of the
  #       literal strings "eagle", "tcl", or "client".  The fileNames argument
  #       must be the list of file names to be downloaded.  The package name,
  #       if one can be detected, is returned; otherwise, an empty string will
  #       be returned.
  #
  proc guessPackageNameFromFileNames { language fileNames } {
    set packageIndexFileName [getPackageIndexFileName $language]

    if {[string length $packageIndexFileName] > 0} then {
      foreach fileName $fileNames {
        set fileNameOnly [file tail $fileName]

        if {$fileNameOnly eq $packageIndexFileName} then {
          set directory [file dirname $fileName]

          if {[string length $directory] > 0} then {
            return [file tail $directory]
          }
        }
      }
    }

    return ""
  }

  #
  # NOTE: This procedure verifies the platform specified by the caller.  The
  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  An empty string means that the
  #       associated entity does not require a specific platform.  The
  #       varName argument is the name of a variable in the context of the
740
741
742
743
744
745
746








747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
        upvar 1 packageName packageName

        if {[info exists packageName]} then {
          set localPackageName $packageName
        } else {
          set localPackageName ""
        }









        upvar 1 usePgp usePgp

        if {[info exists usePgp]} then {
          set localUsePgp $usePgp
        } else {
          set localUsePgp false
        }

        #
        # NOTE: Download the list of platforms associated with this package
        #       from the package repository server.  This may fail and raise
        #       a script error.
        #
        set platforms [downloadAllPlatforms \
            $language $version $localPackageName $localUsePgp]

        if {[string length $varName] > 0} then {
          upvar 1 $varName newPlatform
        }

        #
        # NOTE: Check the current platform and the neutral platform, in that







>
>
>
>
>
>
>
>















|







769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
        upvar 1 packageName packageName

        if {[info exists packageName]} then {
          set localPackageName $packageName
        } else {
          set localPackageName ""
        }

        upvar 1 fileNames fileNames

        if {[info exists fileNames]} then {
          set localFileNames $fileNames
        } else {
          set localFileNames [list]
        }

        upvar 1 usePgp usePgp

        if {[info exists usePgp]} then {
          set localUsePgp $usePgp
        } else {
          set localUsePgp false
        }

        #
        # NOTE: Download the list of platforms associated with this package
        #       from the package repository server.  This may fail and raise
        #       a script error.
        #
        set platforms [downloadAllPlatforms \
            $language $version $localPackageName $localFileNames $localUsePgp]

        if {[string length $varName] > 0} then {
          upvar 1 $varName newPlatform
        }

        #
        # NOTE: Check the current platform and the neutral platform, in that
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
  #       verify the OpenPGP signature.  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 packageName argument
  #       is a directory name relative to the language and version-specific
  #       directory on the package file server and may be an empty string.
  #       The localFileName argument is the file name where the downloaded
  #       file should be written.  The usePgp argument should be non-zero
  #       when an OpenPGP signature needs to be verified for the downloaded
  #       file.
  #
  proc downloadAllPlatforms { language version packageName usePgp } {
    variable baseUri
    variable platformsUri
    variable platformsUrn
    variable temporaryRootDirectory

    set temporaryDirectory [file join \
        $temporaryRootDirectory [appendArgs \







|
|
|
<

|







1101
1102
1103
1104
1105
1106
1107
1108
1109
1110

1111
1112
1113
1114
1115
1116
1117
1118
1119
  #       verify the OpenPGP signature.  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 packageName argument
  #       is a directory name relative to the language and version-specific
  #       directory on the package file server and may be an empty string.
  #       The fileNames argument is the list of file names to be downloaded.
  #       The usePgp argument should be non-zero when an OpenPGP signature
  #       needs to be verified for the downloaded file.

  #
  proc downloadAllPlatforms { language version packageName fileNames usePgp } {
    variable baseUri
    variable platformsUri
    variable platformsUrn
    variable temporaryRootDirectory

    set temporaryDirectory [file join \
        $temporaryRootDirectory [appendArgs \
1103
1104
1105
1106
1107
1108
1109


1110
1111
1112
1113
1114
1115
1116
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #


      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }

    #







>
>







1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #
      ::PackageRepository::openPgpMustBeInstalled

      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }

    #
1128
1129
1130
1131
1132
1133
1134




1135
1136
1137
1138
1139
1140
1141

    #
    # NOTE: Figure out the pattern to use when matching against the file
    #       names in the manifest data.  If available, this will include
    #       the package name; otherwise, platform names for all packages
    #       will be considered.
    #




    if {[string length $packageName] > 0} then {
      set pattern [file join $language $version * $packageName *]
    } else {
      set pattern [file join $language $version *]
    }

    foreach line $lines {







>
>
>
>







1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183

    #
    # NOTE: Figure out the pattern to use when matching against the file
    #       names in the manifest data.  If available, this will include
    #       the package name; otherwise, platform names for all packages
    #       will be considered.
    #
    if {[string length $packageName] == 0} then {
      set packageName [guessPackageNameFromFileNames $language $fileNames]
    }

    if {[string length $packageName] > 0} then {
      set pattern [file join $language $version * $packageName *]
    } else {
      set pattern [file join $language $version *]
    }

    foreach line $lines {
1206
1207
1208
1209
1210
1211
1212


1213
1214
1215
1216
1217
1218
1219
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #


      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }
  }








>
>







1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #
      ::PackageRepository::openPgpMustBeInstalled

      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }
  }


Modified client/1.0/neutral/pkgd.eagle.asc from [00af33993b] to [17f1a65acf].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYE7vFAAoJEFAslq9JXcLZBwMQAKDm7HlMo5oFirUaOKAV6y+J
/N7DWzhOmq/iHCOp584xlBCoAl3gTv9DYXxwMWpVdz10Fh4lzkLsgOg9PwIcUECt
vuuREsBbWb+6gm5S9Owm8TE7zXn3cPo517KOp/vl+9gKBiwzv7UyzJmpGwAzi3r4
LaifHy9nOp1fInxI8uEOnJuBBnL+h2M3q/gOtikm4tc5LlAjEC1mDS0vWQCNUarq
zBMWqvor3DzkxGEtIvrtobrWATUdylnobD/s1kfdchZf/H4ssVUR6aTHVv9sKQ9P
nCBQzuEB/jEFAKL+TjgUlqJ9diRQ8REnfW2HoCaPfzt1DuM4Iznpe6aRgUSpcOwv
P1WnRwKOFPY4Zx7q7i/uvu5yhtupzR+LDQUFBV9et6M+pYJc8Pg8tGztCHoZ9AFD
oF3+fjtLdegjC99cLugFdc1InnTR+GhQK/w1AYf85ikIl3mMUpcRvdsQ7MYmyps5
36Qcx3kqb41HZlV1VD7j/YNWiV63wEnU5zhbbI20/WqBslkNqc2m8u4ULSWCq/kx
pfNQMNRz4QzgEpmFKq/QCvZNsmrbN6vVW74RWEJyfM0JBjYf8K7wGQuEv5zN2S03
oTx0VUg79X5xz1BmYiOgmTlz8qwbm1K5N9sEwGCeDqNo2xhhvB5/mIE7khGxZfbC
7/lWkt9iPyMg19UfVUxD
=WJyn
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpKcAAoJEFAslq9JXcLZnn0P/iFQYWnBCA+H7GF5of1EOOAH
176D9KBLc0V881vihj0WnJ1YfWCGhkXnqARqy5yv72nBZlTWB6i33ewzJH7gyevZ
F1BqIh1EyV+v2AlAyhTydOlb3JQb07IMM+5eVRVd75TMp4LRr+InOkKfDMCeLuSp
jvcp2iPQPlEpOpEW1echzJgIdEpgfML9cG7pUbyTAY+874yRcffbWlQXfFaPn7OW
6EdENAivX8+V0AAGVlHiWG3tdc0bJBM0Lh58w1mjODLYPGldHRc78vdtcEZXkDzY
CTj8KIItKq7PCuPbTeZMH3X9ChKa5uBVC1a1ivcp8f0Lq8z8vH2MvddnobmWLzYu
YN//pvsOBe+N6EEy61ToKL44pSN0GV5uemRfYu6q4pEIPZtN1oEzrfJfj+DOXM4H
ONenr2hyrPM+8/oeRCars+m1hKWjXYzeRoQ48e0ueiJDKkqxLQBuwxmhDxhJmYbP
/cdpV3EdwNwBhQYJ4GhNK41iecfxpya5SKGR2zqYkkko5JHNacCy+kez768QEBdq
xnRBSfemkb4d5/ZRpsZJl4L07V8cipDgtYOxRL1l/1zD6ay6jsXwosX8kUjbrQyA
5/MfBBvTtfKLg3/w2XTtKFHUNYxzHG19KhxkJ9sUt2PKHHUwD95PKjE3+Ht8mvE/
anQwCmgtFDw6onWlDshg
=x/i7
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgd.eagle.harpy from [96c6999702] to [8bbe23a216].

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
    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>6ed16d98-c12c-4a58-9ff6-2344a6cc9ec1</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-28T20:57:10.7421406Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>







|


|



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


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
    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>dfe02158-0787-40dc-ab76-b5b3b27db03e</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-31T00:36:41.6996407Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgd.eagle.harpy.asc from [d35fbb9841] to [10600fc2ae].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYE7vGAAoJEFAslq9JXcLZqX4P/3+dFIPeld578TNXdq8qzEUU
dStnBjsuCQECqE++Ve/RdHrY2/uzAmcyYiNy8oELPQYSWwX2Y8YWtYfzPIuc8tzA
lKrsGxFlgabLpDYBrScovUS6Nv7HohwvWT7p6lSaiQ03w7cR1clfKyBHXrr0KhPe
ve/KrJElXSzpfYOhAgKn3PA0YCT0us5HWFAn0yZXCnxPlA3CPuLpyujMVJrYVOzo
iuBiU2XkbXELpC+v+J0Jch4CRFXYAP7mMuwyz7W7Rau2lzTcoK6eXsEn0d2q3PxP
lO1D0hGVWuEuMDAImKyYVRe3B5nZHM53ClzSlj5QUKdcz10610SdFewU5DLgLSji
fu8vBuFCrWWbBk0zmnuY310rNGEEWwnhZ+sqxCwWkZfkZFONV1BT+NlwsHr89lH/
3i6TdR4ddStK3rAiUetOraBRR+L7OJcv0oQB5JsGDP/CXdtgzv2BnxHRCU8vfMnx
BFKVC0qrtSt0+HWMQTW0CYd3dzr1o1oZ846I9EYzgwFAadetjtSqjsMRPgppBriD
/e8AkY+GDJGFmu48hM8CFGFtUpNqQ2xKemX+GcBhy0mRkWQR7noSks4+Thd6WQyl
LZl1xr8npI/MCo17Mpk4lTg2nDbP6a9nRWhFRVbpo6QOtwiLteEQUTb3LdHMBK0W
iSEK4bd2WGaZS2vRoQW1
=fotc
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpKeAAoJEFAslq9JXcLZ14sP/3wW75sAFZEidnnJ5fCALUZJ
43zLj+wDzcPAuY0xaZU5JAVMAcIsr9E8Uxsk+qRMDIeRYpPz27RfxyijN458mfw+
yZJ13QLYYCDEGEqETDYo+x5HljmQYBIP87Bwah3DCpehWFfPuWm1s1qcprXDL6fW
btnRttNQVyPyWHPaIfD5HEvxuCAGXVCZBxtOOlRSTpkfxPKrCcG+hHJWw9XGsqUO
ePoweC1sInehc0jV8O48GHU98T7Lqr9WgZbCk3Bk44Mjs2sCu3U0k4g9D0uOlCp7
WZ/48Y9GIMnIJ/83hQ+ol/qGrokbmPbz893HpHNyK/t5YJ3EQEphoOO7PV5j0Ok9
jXS+fRv8AfkGRvqurqcjf7bMs3iy1dPauiI2af7yORswhwHKScpOlsaXFgkLpvab
mp17nK0mPuPtDJQR+eZcxPwylwxiRmZinqaE79UEN+OmyMv5WJ9VMthkRpgoYP8s
PAp0RpN7tVciTGDpgutpNPIJua2y6+A+O3D6G9WfHPXgvn0hpavd5myaGTw1B7RK
6CgBnOWuRk3JfY7lbgIoQl3Q5GIoVNp09cBKAaEQFKm5iSlb9V4qYd8m7RwfFNCd
feyCH00/Rj8UUzkhwEHOPTBSPw87GQbl5PGWhbKkVAq5tCSk9hfSjNhXrdEJpe2z
l/DlaGTOrgd3cabXuNR5
=gcjH
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr.eagle from [4bb89e0f4b] to [3456f0b008].

272
273
274
275
276
277
278

































279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
        }

        incr counter
      }
    }
  }


































  #
  # 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 verifyOpenPgpSignature { fileName } {
    variable openPgpCommand

    if {[isEagle]} then {
      set fileName [appendArgs \" $fileName \"]

      if {[catch {
        eval exec -success Success [subst $openPgpCommand]
      }] == 0} then {
        return true
      }
    } else {
      if {[catch {
        eval exec [subst $openPgpCommand] 2>@1
      }] == 0} then {
        return true
      }
    }

    return false
  }







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>










|





|





|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
        }

        incr counter
      }
    }
  }

  #
  # NOTE: This procedure attempts to verify that a configured implementation
  #       of OpenPGP is installed locally.  There are no arguments.  Script
  #       errors are raised if any problems are found.  The return value is
  #       undefined.
  #
  # <public>
  proc openPgpMustBeInstalled {} {
    variable openPgpInstalledCommand
    variable openPgpInstalledPattern

    if {[isEagle]} then {
      if {[catch {
        eval exec -success Success $openPgpInstalledCommand
      } result]} then {
        error "cannot use OpenPGP: may not be installed and/or configured"
      }
    } else {
      if {[catch {
        eval exec [subst $openPgpInstalledCommand]
      } result]} then {
        error "cannot use OpenPGP: may not be installed and/or configured"
      }
    }

    if {![info exists result] || \
        ![regexp -- $openPgpInstalledPattern $result]} then {
      error "cannot use OpenPGP: unknown or unsupported version"
    }

    return ""
  }

  #
  # 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 verifyOpenPgpSignature { fileName } {
    variable openPgpVerifyCommand

    if {[isEagle]} then {
      set fileName [appendArgs \" $fileName \"]

      if {[catch {
        eval exec -success Success [subst $openPgpVerifyCommand]
      }] == 0} then {
        return true
      }
    } else {
      if {[catch {
        eval exec [subst $openPgpVerifyCommand] 2>@1
      }] == 0} then {
        return true
      }
    }

    return false
  }
1185
1186
1187
1188
1189
1190
1191


1192
1193
1194
1195
1196
1197
1198
          writeFile $fileName(2) $metadata(certificate)
        }

        #
        # NOTE: Attempt to verify the OpenPGP signature for the package
        #       script.
        #


        if {[verifyOpenPgpSignature $fileName(2)]} then {
          #
          # NOTE: Delete the temporary files that we created for the
          #       OpenPGP signature verification.
          #
          eval $script(cleanup)
        } else {







>
>







1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
          writeFile $fileName(2) $metadata(certificate)
        }

        #
        # NOTE: Attempt to verify the OpenPGP signature for the package
        #       script.
        #
        openPgpMustBeInstalled

        if {[verifyOpenPgpSignature $fileName(2)]} then {
          #
          # NOTE: Delete the temporary files that we created for the
          #       OpenPGP signature verification.
          #
          eval $script(cleanup)
        } else {
1729
1730
1731
1732
1733
1734
1735
1736






















1737
1738

1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
          [llength [package versions Garuda]] > 0} then {
        set autoRequireGaruda true
      } else {
        set autoRequireGaruda false
      }
    }

    #






















    # NOTE: The command to use when verifying OpenPGP signatures for the
    #       downloaded package scripts.

    #
    variable openPgpCommand; # DEFAULT: gpg2 --verify {${fileName}}

    if {![info exists openPgpCommand]} then {
      set openPgpCommand {gpg2 --verify {${fileName}}}
    }

    #
    # NOTE: Verify that the package script matches the current language
    #       when called from the [package unknown] handler?
    #
    variable strictUnknownLanguage; # DEFAULT: true








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

|
>

|

|
|







1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
          [llength [package versions Garuda]] > 0} then {
        set autoRequireGaruda true
      } else {
        set autoRequireGaruda false
      }
    }

    #
    # NOTE: The command to use when attempting to verify that OpenPGP is
    #       installed locally.  This must be configured according to the
    #       implementation of OpenPGP in use.
    #
    variable openPgpInstalledCommand; # DEFAULT: gpg2 --version

    if {![info exists openPgpInstalledCommand]} then {
      set openPgpInstalledCommand {gpg2 --version}
    }

    #
    # NOTE: The regular expression pattern used when attempting to verify
    #       that OpenPGP is installed locally.  This must be configured
    #       according to the implementation of OpenPGP in use.
    #
    variable openPgpInstalledPattern; # DEFAULT: ^gpg \(GnuPG\) 2\.0\.

    if {![info exists openPgpInstalledPattern]} then {
      set openPgpInstalledPattern {^gpg \(GnuPG\) 2\.0\.}
    }

    #
    # NOTE: The command to use when verifying OpenPGP signatures for the
    #       downloaded package scripts.  This must be configured according
    #       to the implementation of OpenPGP in use.
    #
    variable openPgpVerifyCommand; # DEFAULT: gpg2 --verify {${fileName}}

    if {![info exists openPgpVerifyCommand]} then {
      set openPgpVerifyCommand {gpg2 --verify {${fileName}}}
    }

    #
    # NOTE: Verify that the package script matches the current language
    #       when called from the [package unknown] handler?
    #
    variable strictUnknownLanguage; # DEFAULT: true

Modified client/1.0/neutral/pkgr.eagle.asc from [18ae0a6661] to [d1a4a2d2a1].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYE7u/AAoJEFAslq9JXcLZvi4QAKCRluQ5d1jceMbglWqJekUv
MZm/U0ZYAHIINUB0FaQUBVa+lBRbKn06c585Khuf74Wv3PVaJ/qwIeMTQEYewSy/
/R1SGc/zH9l3WfgAeAuntoU/kqIrjJFrimWJ0RMaM+RJwjXrGBYncZ2BhnPldIJS
kOz/3q2GXZOGwuL4FVkAg+h7bNf7pYQUNj6Nt/82AkJhcYeuQMeMgvRSWm8HHZir
GKP2CgiQRJ4JNZ1GWZ9KbKb1z0sDVidTDi5kKJX9mZE2PubNJPKcEEheb9uhy6/t
8LgJRNWmoMljsvn2OHju88o7xTTUeHGcQcO8vlk2SR20RgHKm2xS53OuhBvvyrrF
y8YK7XoJ5wqHj7vlOeEWLA0cShnWjaTlNfbfz4Vfb/rOy9wjpKyp+pvkny2AC3Vg
gYtO51AXp2BdTK4Nvh8XiltiephKuT8r0kmFuOVyY1HKC/RGVsqpAb2slYzWIIIT
lXgKsNijKCV69JcFCktHZE95wbSeQZEGx1H+t7vbES0hWvyuLjUQCUHxn0X9yV9o
m2phJTwQyNDK5uhisSkscM1lw2M73sfetKShjvvtrGXoEOmGdhNbQw7jP0aUCwpl
v0/FEVgRZh8yAwcU28cA1mUTfZ6wotwYBGHzmpeDJGv3ZgPOGoeTYxU+uy8vfxYF
BezEogjNRuUi4W/svIVk
=oqiu
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpKWAAoJEFAslq9JXcLZFg0QAJCv48Iy2dh3PTKf49XphgzQ
g3HtzsFxGDu6SI8F+VzeFe6GDM+JAjyXg9jd4hRRqBu4tXLfqxEK+QJ1ZFywEJk3
KOfnhKsk7cjNhkQ9SY1gq53RoT+cHwWTPBFX4nkQYFw1kZM/H4HkO49y4AXDFkId
k7rtZh8sc5fXBfSHBxvbal9jIdq4LVbGZ2/yWGmjEcYOnhH/RW1u9FZT+V02R492
BvhGhTE6Rr6uLo+YarMxMh2kiQt4P1xHurN0baalzrL7mfH7M+CYIXnjS+p7sABv
QVw/ZHpGyTFoBehcddIkT5ODZdibdkyCXMOO/pZ+eOlswwc7e3o3p2heVYyo+IyV
eOfwa4BcE4JUl6GkcEBHmj+UKNCKjHv1hXl0M0KglqQuvGn3A5JgUukETmkQhbPP
WWjD2DfzyqOdvpjh3r+GKyGsF06OGIc/hBuFzDnIUIJ5sUpzNrAnuXyQLYW7PMYc
VX9R1V01VomZXV00lS7BthgXucr7huAuadG+R8w2JKeJKYQY26evC3ygEfM/oA5w
FmZsNlL9Ju3Rnw7yZrjqbHIWN/pzotT0IT2/q3dIdhUwEyOQvtP/v1yce+eIrBH+
RTgM/WGUhsfVp/1xPm8+xIGoeKBMbTk0kOdncmJEWTx6P3zcp7h5gSqjxY0JNFfv
ydP83V9D2lP75K1btsSJ
=AwPq
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr.eagle.harpy from [ef5ccee09d] to [8d09927bd2].

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
    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>9f676ee9-c8d6-4443-82a2-27addf071618</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-28T20:56:43.6044453Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>







|


|



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


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
    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>bfe7ea6e-05e7-4c46-b24f-b6e17e8fd4d8</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-31T00:37:04.3334297Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgr.eagle.harpy.asc from [befd86834b] to [7b17706134].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYE7vBAAoJEFAslq9JXcLZaHsP+we67OXvqTG7g+lsaWe/24+H
MBzd+lF+5wsoRzAn+nvrF0lMIjHPgRdR4aNEb8UUgEwr5BA0j7VvB6yXKwZzmnTf
9kFWo9C/gDgU/TgtS9ZMACr9DBOvmGlzmciFSQQAdJ6wE6ojN6G7YoI354LW0gNN
077AEYeMcsKzxDKFOyMXWeh6lhSXbJLpMD3piG84pyYA1BlscbrH4pnj4+uFXeRG
PL0u8RyUiWZcCjG3pNa8Zr+JUFrNekukkK2hL4yYHNVUEQ4c0ByFlCPlh6wb2dMD
rvzevvt/Lrlw2BR4TLNKTdxYqA1zb5V4x35T1i13KqhuWREZI8XVqChiUiV+gRFR
vGVOYXxseWHImuFy8E7X5tzqtJshMctrIta/x7ir6txSNnSUoZRjgyMInJXt+k7G
43ra8nCa54OV2clbc76LXpSUmJG/zAvuqTG9ZepcNgmpblw5LS1Sy56hkR1LbHoE
VxmwXFyxGrhOGsB0035ax0d3KyGEidSE4lTY3e6NCicRhRehZVRHS8wagIPgqeGe
UEK5kkLmRqBqMPtmMW0/1Xj3DPwJCrBrycqHv4u8KZ9Me+OLnOlcOlQrb6IZ7GIU
oIVlKZJR/sBzZ4oNQdCMoxBSzN+evp39FShgIJCIvK5t7aIvUdwRJCJ9VTwSYKD2
qKHSXFxBg2GNU28ykMhX
=NZFm
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpKYAAoJEFAslq9JXcLZHdgP/jEf5Pbq2X+mjFH8QiRpJhnP
ZZ1jErRpXuZ5YgKdIQDq/SHJFKyqGWlO8Km14NCpEt/W3weU8OCjVDB89+f0sX1V
22ahQZpE/ubzzeFgFt+DPC6QW6D6qaxUcOj62RTepp/oyq/b/zVWTmF0xurqeCpb
QJHinZH9ONje379tg2VkI/0nwDayfwzshSSpWDc2uyosKvpASY8mwybhmefdbnj3
cglScjJQoNBhO5j6Lu/xJxT1eFyli8FYh+w5Oc/UuhGls70aoiIxoxeD3tQKj715
tLhQxfz8TP8V+DBdx7JPaPnNnCDwjcFgRXZg80BX6nLZacAFZZXYjKQJTYDmRa2v
RZHyhNJp9XTvH6fqbDF1JYAgdQM8ARp1BehEIudGhZ5zRKTf/EkVx48T0Ajwr06w
Qb2py9gvgX4pbHKVBy5uc1JHgu9nL4dT0qhWGfHDpg3lE6PS77EbNKVXlTut9PHY
1pvnbGc6EZnTdlv9jCxAvS1SwPQgYqx6l/8QHnx+nMAgzXSB65GswYXRTyyqpZEH
1VrkTMvBSy299+KMebUCMTtyXSTcAH/kPTBaDImhXk5HlpPckkHD65TdVbEWQmy/
+G7d/mWcVkf1OVReeE73AOne2p6CNH/bAkzAQiD6NRc2m64yuRX9zEEMI7EQYLqJ
8+t6pGIk/BilbkwoRNua
=DNwu
-----END PGP SIGNATURE-----