nsmcp::QuestionService method readEvidence (protected)

 <instance of nsmcp::QuestionService[i]> readEvidence handle id \
    evidenceTool

Defined in /usr/local/ns/tcl/nsmcp/question-service.tcl

Parameters:
handle (required)
id (required)
evidenceTool (required)

Testcases:
No testcase defined.
Source code:
set path [file join ${:evidenceDirectory} $handle $id.json]
if {[file type $path] ne "file" || [file size $path]>${:maxEvidenceBytes}} {
    error "Evidence unavailable"
}
# Decode the complete byte sequence at once.  Channel decoding can
# split supplementary Unicode characters at an input-buffer boundary.
set channel [open $path rb]
try {
    set wireResult [read $channel]
} finally {
    close $channel
}
set bytes [string length $wireResult]
set digest [ns_crypto::md string -digest sha256 -binary -encoding hex -- $wireResult]
set result [encoding convertfrom utf-8 $wireResult]
if {([dict exists $evidenceTool resultBytes] && [dict get $evidenceTool resultBytes]!=$bytes)
    || ([dict exists $evidenceTool resultSha256] && [dict get $evidenceTool resultSha256] ne $digest)} {
    error "Evidence integrity check failed: retained tool result is incomplete or changed"
}
return [list {} object [list result string $result resultBytes number $bytes resultSha256 string $digest]]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: