// // TestPGPKeys.swift // passKitTests // // Created by Yishi Lin on 2019/7/17. // Copyright © 2019 Bob Sun. All rights reserved. // import XCTest @testable import passKit struct PGPKeyTestTriple { let publicKey: String let privateKey: String let fingerprint: String let passphrase = "passforios" } let RSA2048 = PGPKeyTestTriple( publicKey: PGP_RSA2048_PUBLIC_KEY, privateKey: PGP_RSA2048_PRIVATE_KEY, fingerprint: "a1024dae" ) let RSA2048_SUB = PGPKeyTestTriple( publicKey: PGP_RSA2048_PUBLIC_KEY, privateKey: PGP_RSA2048_PRIVATE_SUBKEY, fingerprint: "a1024dae" ) let RSA4096 = PGPKeyTestTriple( publicKey: PGP_RSA4096_PUBLIC_KEY, privateKey: PGP_RSA4096_PRIVATE_KEY, fingerprint: "d862027e" ) let ED25519 = PGPKeyTestTriple( publicKey: PGP_ED25519_PUBLIC_KEY, privateKey: PGP_ED25519_PRIVATE_KEY, fingerprint: "e9444483" ) let ED25519_SUB = PGPKeyTestTriple( publicKey: PGP_ED25519_PUBLIC_KEY, privateKey: PGP_ED25519_PRIVATE_SUBKEY, fingerprint: "e9444483" ) func requestPGPKeyPassphrase() -> String { return "passforios" } let PGP_RSA2048_PUBLIC_KEY = """ -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBF0uBLkBCADGYAW5yJQ/lLHmHdb/l0bhYyLnhuyWTaOWIEHGiDnpjO71vBPD WMPxPulj/GGdqzR4lUUanPG1yJwXTjNutjMBZ/o+ixgdqja391b4L8VyF5Lb7pHX c6uvbR6p1Tj72PJrVj6Ev71VdnsHNOLUDqWZL4b0dNXPf3sM4ry5yS6Ej6ho9o/l nuYbe9WfLqUctSM+TsXd84ptc6luIHZN+cojrNGAh3RLYuVFeJjkLkvHdJBWJQS2 zJ0iAA6T0NbfPGrVL6tMaB7NwMDN33Ql3ARfaHf7/d8DXGYyGUYZFqyKagGUaBxN arXfzv9gIyc109D8pPMN5QUiEo9K4x3xNpLhABEBAAG0KnBhc3Nmb3Jpb3MgPGRl dmVsb3BlckBwYXNzZm9yaW9zLm1zc3VuLm1lPokBTgQTAQgAOAIbAwULCQgHAgYV CgkICwIEFgIDAQIeAQIXgBYhBEcSKGJxIg2ymYg+pwYuZ42hAk2uBQJdLgWNAAoJ EAYuZ42hAk2uYjIH/iPsoJD+KfJ/c7GTSLbeMtQtuIv2sCiSc+BiXp+EFjbNS7oS cEYiG/FX1zuivr3wvDGbE/oVLvdTK8tDJvCh17SZZUGeTmflgByig+1/kp5JUj2x FOH3xXCVCnh+FWB24QHLiFpwgzGuZgCKMn45PcZB7Zmo/wJsKYb040zKltQWmzg8 rZ1vOKlMgAGgdNQOu+u+8OE6x/dedYvJZePvwND4Rva+EwS+MaEZZAn76ypEblhF pRZsTb6+PeTY+IWRnne7xUvYRmZLXhqoHq/c0hXXz2xAGmpigd50HUQRUOYtsuBi RxXLwFIlfPpziomMTdhnOFVDL6UVLL+jqJDPHWu5AQ0EXS4EuQEIAMwr3I+NUsY+ Iwyyz6C84z90kHPs9zOBvGc73Tgc70lXHUklwQaqLSmLbHQzk6Ykw/o1snQ8Oz2f AjPlBr9/zWJgOvnFH+FrjpfEpmz4WjmoxBK610JINkKW4Fn4VT/NrBL9LtjaZOLp 0XA6fh8TXTOsz80jDj1VPvNAsu78FC+zXFDvOJpX+bCv3vabO9/ihKL/emvgqzxD LO9IapPfL1rPvCmfaNZ8hRV8ebHOW0pVLfyOYn4pvwtL/uYIINv1CYAwOGVW1sth 8kS8Acj4VTDkynuobxiLDTpNrRUbt0iPn/2nJ8m1qq9hqWgO2z01UkSKrusDiMNH TnHFepgG8NMAEQEAAYkBPAQYAQgAJhYhBEcSKGJxIg2ymYg+pwYuZ42hAk2uBQJd LgS5AhsMBQkDwmcAAAoJEAYuZ42hAk2u+rkIAKEwherMhNV+kZpZMoYLop9ULTNx RQtBhNK5No7MpGzJnGbJzXo2+CaB7wlOzzDympIVxth+St7S4BiSdMxrnQVzzZOf Lfvc6+AyWBwpM32i/s5piTCwn+RoQzYHQpiRBmeGRBXC2tTkAh+zXhed7yZR5mMK lsVq9BRfVFxbkh9S1YWLUC29n32eiAo/6nLyJw/AOlv37ThYPnIeSqrASs0Jh69C iNbGUq2SzH1yj1cxWvhZqXA8WpbU/pZM6LR6eIeLOa+BTp0Ax6j2QQ3N3bKEcOTz ncsjMsi8gUJaucHKKRcGXY0AlWAbvH1ytWboh+CgS493JfZbNRCXTWA/BDE= =2FVp -----END PGP PUBLIC KEY BLOCK----- """ let PGP_RSA2048_PRIVATE_KEY = """ -----BEGIN PGP PRIVATE KEY BLOCK----- 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 =qgCJ -----END PGP PRIVATE KEY BLOCK----- """ let PGP_RSA2048_PRIVATE_SUBKEY = """ -----BEGIN PGP PRIVATE KEY BLOCK----- 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 XY0AlWAbvH1ytWboh+CgS493JfZbNRCXTWA/BDE= =qBfw -----END PGP PRIVATE KEY BLOCK----- """ let PGP_RSA4096_PUBLIC_KEY = """ -----BEGIN PGP PUBLIC KEY BLOCK----- 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 ERIDrUdG =N0dj -----END PGP PUBLIC KEY BLOCK----- """ let PGP_RSA4096_PRIVATE_KEY = """ -----BEGIN PGP PRIVATE KEY BLOCK----- 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 =Ql28 -----END PGP PRIVATE KEY BLOCK----- """ let PGP_ED25519_PUBLIC_KEY = """ -----BEGIN PGP PUBLIC KEY BLOCK----- mDMEXS4TMRYJKwYBBAHaRw8BAQdAW/U3l3/bMWFxHaCQ3Kr8Wel5322hgiVGO39K mk+NLYO0KnBhc3Nmb3Jpb3MgPGRldmVsb3BlckBwYXNzZm9yaW9zLm1zc3VuLm1l PoiQBBMWCAA4FiEEX8ywgauK9IlymZ4q51Csv+lERIMFAl0uEzECGwMFCwkIBwIG FQoJCAsCBBYCAwECHgECF4AACgkQ51Csv+lERIM0RgEAtw6VI0hbhIiSCZuHfePn 3XmXQnSkfYw6OrND86vNPEgBAIcymV45aM3IUMi7cczlNemdc4vzvZ2sahN4I9bp zygDuDgEXS4TMRIKKwYBBAGXVQEFAQEHQDEc6qSqOJHTY/QBMBCuH2NPbc3jfJKe 3zN15IWfji9hAwEIB4h4BBgWCAAgFiEEX8ywgauK9IlymZ4q51Csv+lERIMFAl0u EzECGwwACgkQ51Csv+lERIMOsAEA43pkVP9br/TmESz/IuTZBfVAexAA3Q9DRL7M NcZVu2wA/js8TfomM2QBmZYPSZFPzA1nI1FzzgPhFgy6fGLgpZUL =4EF6 -----END PGP PUBLIC KEY BLOCK----- """ let PGP_ED25519_PRIVATE_KEY = """ -----BEGIN PGP PRIVATE KEY BLOCK----- lIYEXS4TMRYJKwYBBAHaRw8BAQdAW/U3l3/bMWFxHaCQ3Kr8Wel5322hgiVGO39K mk+NLYP+BwMCw1EywRMGVRHmRf963xPpOVBluE38pFvriDQXbceoPZVdgyr+M2Ef 3HFn8t/ZyTzeZQZIgmlAFNgiDaz3I+CISN89uVFt7yJVGzbuvjgVSrQqcGFzc2Zv cmlvcyA8ZGV2ZWxvcGVyQHBhc3Nmb3Jpb3MubXNzdW4ubWU+iJAEExYIADgWIQRf zLCBq4r0iXKZnirnUKy/6UREgwUCXS4TMQIbAwULCQgHAgYVCgkICwIEFgIDAQIe AQIXgAAKCRDnUKy/6UREgzRGAQC3DpUjSFuEiJIJm4d94+fdeZdCdKR9jDo6s0Pz q808SAEAhzKZXjlozchQyLtxzOU16Z1zi/O9naxqE3gj1unPKAOciwRdLhMxEgor BgEEAZdVAQUBAQdAMRzqpKo4kdNj9AEwEK4fY09tzeN8kp7fM3XkhZ+OL2EDAQgH /gcDAsJwqoLIpKyw5lJwU83TfgSJJLrBR6KGLB1oZigRAasw++69iC19yUS6FY3M mRiOrYeBatYCoXY8xolbStkhZl2y9KYlPcFNWOQvVKtuUT2IeAQYFggAIBYhBF/M sIGrivSJcpmeKudQrL/pRESDBQJdLhMxAhsMAAoJEOdQrL/pRESDDrABAON6ZFT/ W6/05hEs/yLk2QX1QHsQAN0PQ0S+zDXGVbtsAP47PE36JjNkAZmWD0mRT8wNZyNR c84D4RYMunxi4KWVCw== =nV4i -----END PGP PRIVATE KEY BLOCK----- """ let PGP_ED25519_PRIVATE_SUBKEY = """ -----BEGIN PGP PRIVATE KEY BLOCK----- lDsEXS4TMRYJKwYBBAHaRw8BAQdAW/U3l3/bMWFxHaCQ3Kr8Wel5322hgiVGO39K mk+NLYP/AGUAR05VAbQqcGFzc2ZvcmlvcyA8ZGV2ZWxvcGVyQHBhc3Nmb3Jpb3Mu bXNzdW4ubWU+iJAEExYIADgWIQRfzLCBq4r0iXKZnirnUKy/6UREgwUCXS4TMQIb AwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDnUKy/6UREgzRGAQC3DpUjSFuE iJIJm4d94+fdeZdCdKR9jDo6s0Pzq808SAEAhzKZXjlozchQyLtxzOU16Z1zi/O9 naxqE3gj1unPKAOciwRdLhMxEgorBgEEAZdVAQUBAQdAMRzqpKo4kdNj9AEwEK4f Y09tzeN8kp7fM3XkhZ+OL2EDAQgH/gcDAk55ulCfKROW5kyrg18FeoHR+DNPhKVV 7R2CyAinW5c4+SiLk+P4Zbgue1JEmCNqhckywVx6LOFoR3OdJRFumfuacB82QUY+ p9VjMutDAO+IeAQYFggAIBYhBF/MsIGrivSJcpmeKudQrL/pRESDBQJdLhMxAhsM AAoJEOdQrL/pRESDDrABAON6ZFT/W6/05hEs/yLk2QX1QHsQAN0PQ0S+zDXGVbts AP47PE36JjNkAZmWD0mRT8wNZyNRc84D4RYMunxi4KWVCw== =4Sfz -----END PGP PRIVATE KEY BLOCK----- """