def _parseTack(self): tackLen = self.getInt(1) if tackLen != Tack.LENGTH: raise SyntaxError("TACK wrong size") return Tack(self.getBytes(tackLen))
def test_Tack(self): s = """ -----BEGIN TACK----- TAmsAZIpzR+MYwQrsujLhesvpu3dRc5ROhfgySqUVkU1p1hdXo+PwQrmaQo9B9+o hecRrWElh3yThwgYQRgbSwAAAY0cQDHeDLGfKtuw0c17GzHvjuPrWbdEWa75S0gL 7u64XGTJQUtzAwXIWOkQEQ0BRUlbzcGEa9a1PBhjmmWFNF+kGAswhLnXc5qL4y/Z PDUV0rzIIYjXP58T5pphGKRgLlK3Aw== -----END TACK-----""" t = Tack().createFromPem(s) assert (t.public_key.getRawKey() == a2b_hex( "4c09ac019229cd1f8c63042bb2e8" "cb85eb2fa6eddd45ce513a17e0c9" "2a94564535a7585d5e8f8fc10ae6" "690a3d07dfa885e711ad6125877c" "9387081841181b4b")) assert (Time.posixTimeToStr(t.expiration * 60) == "2019-06-25T22:24Z") assert (t.generation == 0) assert (t.target_hash == a2b_hex( "31de0cb19f2adbb0d1cd7b1b31ef8ee3eb59b74459aef94b480beeeeb85c64c9") ) assert (t.signature == a2b_hex("414b730305c858e910110d0145495" "bcdc1846bd6b53c18639a6585345f" "a4180b3084b9d7739a8be32fd93c3" "515d2bcc82188d73f9f13e69a6118" "a4602e52b703"))
def _parseTacks(self): tacksLen = self.getInt(2) if tacksLen > 2 * Tack.LENGTH or tacksLen < Tack.LENGTH or tacksLen == 0: raise SyntaxError("tacks wrong number: %d" % tacksLen) elif tacksLen % Tack.LENGTH != 0: raise SyntaxError("tacks wrong size: %d" % tacksLen) tacks = [] b2 = self.getBytes(tacksLen) while b2: tacks.append(Tack(b2[:Tack.LENGTH])) b2 = b2[Tack.LENGTH:] return tacks