@@ -61,8 +61,43 @@ namespace eval oodz {
61
61
}
62
62
}
63
63
64
-
65
-
66
-
64
+ :public object method verify_file_signature {fileToCheck fileHash fileSign pubKeyPEMStr} {
65
+ set pubKey [new_CkPublicKey]
66
+ set rsa [new_CkRsa]
67
+ set bdHash [new_CkBinData]
68
+ set bdSig [new_CkBinData]
69
+
70
+ try {
71
+ set success [CkPublicKey_LoadFromString $pubKey $pubKeyPEMStr ]
72
+ if {$success == 0} then {
73
+ puts [CkPublicKey_lastErrorText $pubKey ]
74
+ } else {puts " PEM loaded" }
75
+
76
+ set success [CkRsa_ImportPublicKeyObj $rsa $pubKey ]
77
+ if {$success == 0} then {
78
+ puts [CkRsa_lastErrorText $rsa ]
79
+ }
80
+ set success [CkBinData_LoadFile $bdHash $fileHash ]
81
+ if {$success == 0} then {
82
+ puts " Failed to load SHA256 hash. $fileHash "
83
+ } else {puts " SHA256 loaded." }
84
+ set success [CkBinData_LoadFile $bdSig $fileSign ]
85
+ if {$success == 0} then {
86
+ puts " Failed to load RSA signature."
87
+ } else {puts " Signature loaded." }
88
+ set enc " base64"
89
+ CkRsa_put_EncodingMode $rsa $enc
90
+ set success [CkRsa_VerifyHashENC $rsa [CkBinData_getEncoded $bdHash $enc ] " sha256" [CkBinData_getEncoded $bdSig $enc ]]
91
+ if {$success == 0} then {
92
+ puts [CkRsa_lastErrorText $rsa ]
93
+ puts " Not Valid"
94
+ } else {puts " Signature validated." }
95
+ } finally {
96
+ delete_CkPublicKey $pubKey
97
+ delete_CkRsa $rsa
98
+ delete_CkBinData $bdHash
99
+ delete_CkBinData $bdSig
100
+ }
101
+ }
67
102
}
68
103
}
0 commit comments