From 77ba620765a5682e05169be8b8740df925f612c8 Mon Sep 17 00:00:00 2001 From: Shulhan Date: Tue, 30 Jan 2024 02:01:41 +0700 Subject: all: use [lib/crypto.LoadPrivateKeyInteractive] The lib/crypto.LoadPrivateKeyInteractive provides a simple way to read passphrase from stdin that also support SSH_ASKPASS. While at it, add test for Cli with passphrase. --- testdata/cli_with_passphrase_test.txt | 92 +++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 testdata/cli_with_passphrase_test.txt (limited to 'testdata/cli_with_passphrase_test.txt') diff --git a/testdata/cli_with_passphrase_test.txt b/testdata/cli_with_passphrase_test.txt new file mode 100644 index 0000000..6eae769 --- /dev/null +++ b/testdata/cli_with_passphrase_test.txt @@ -0,0 +1,92 @@ +# vim: set tw=0: + +Test CLI with private key protected with passphrase 'gotptest'. + +>>> gotp.pass +gotptest + +>>> gotp.key +-----BEGIN OPENSSH PRIVATE KEY----- +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 +3CcPeTEmGrC25pqwXei+8qR10ZM= +-----END OPENSSH PRIVATE KEY----- + +>>> list_raw_issuer +test-sha1 = SHA1:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ +test-sha256 = SHA256:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ +test-sha512 = SHA512:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ + +<<< gotp.conf:encrypted +[gotp "issuer"] +test-sha1 = GKhXh+9sSkfRjpVfu8o1dIAPTyahjHpGZxfSTqFJIUnAJj3HpQGa0UO3QNQ4qN66CYRaYchzS491REMdC+9mC1BoEFN0BQWVshF4Cy8fz/6geM8oPqUIQ0+pGKdnW9LWZGUB5NP72FGtBeDdQ5QHtMIKtexSHpO855mosY6wjik6l2oaJ+wbK2X4JNb4PyJIQksQjYWepMvx0m6b9NjkTJA+srUYmNu47VXf5JWtjXZY6uYd4ol2rkQJUNLcYY+B+VhqXJVvr/NaR15WCUjW+Q8JTGK0m3AsUYRnE5MJSwvjUSZUPOc842zlXtGaOUbKAQk3x2T69chK8+EaWGUS/hoVU7UT4ivIXJZr1kEcqNlLzLBMdOEI2S4mQJat98BDSucGcCbo3hghmny6KLaN5IUdUZ06Ra2JUdoJFAOmiaI/+bK6f6wr1J3prqbdQcsoLPsy6SVKIQv4rYoRIUHVPA5SLlYNcnNSpsnc4IjgaQb/sD07TM+9LYvy1KnCG8IF +test-sha256 = e6BCkqDD0Su15P1PPyZz6PXiYhLQ+imlhpy99+r5xM+hbL6MfZ71JaXiXw5+1JJ5oM+yqV0ejzg6pW2U9yYu2M2QfDv7BxY8rV5+8fchKgWoZ7t3cfX9VX2OXKbjnZLMrO5vYFvk8jUfeemFzy9UvoCUfYdPq3V9/2IUStBgyWNRwOmHq6ImVc5/4YoMCqXvQ/rxUl/NCujF3qQvQPLCL2Abm/lQRdWiQDzEB8+tn40iax1XoGK4dYTeuJJX7tYwv2cvQctbjYJcb+9cA+AroHW0TuyBWt37iII1rCvIA9pBb45U17Aj74Xj1vH9/WamLWLAX9bfLZwgzl2/Qa7c86jgw5jlfPcVUvxtFOJSIS/2cudxD9j8EOg4cAzySry8WP+ZPxnVqI+I4ZqSVFOtV5uSXuTiVPXCv1gtVl44ChwJw38LVBztADffM6Iqp1WjeSbASFwzDvEZmR/7qqeSgPeem/k9oPKfAJwi251oXdj2gJxG1R+JaxVjNVs1qf75 +test-sha512 = XDHGL4xQp3VCE4oIxKlBvKs9xwStDPaAe52RTXL3uiXU+RKH+w2Pgh9hl6O1mjyL4oSRJ872po9jLKxAk2OkOMINRbb601GaiuLY4Xhb/lOMQek0jCK0NDweMtodt5EAoMhSJ0styclEucHQWFLIFGwotfYTTjJYjombRFfG5CqsMB6XFQBvL5uvXpe2axJ+vyP3t0RuW/Rroovyn2lckZhyJGsHObyScC1sgdVoZhAeFDiihD6Cn1oLeiHrN9RviA8vPBZ1PV5+To2TLafJu+3InheeyIQWtBLVY8+dfVurYzpAHPi3rXc86FXIYaH9bI7muWWRIpN7lIb3RAZcYoXFdiXlvq07cd90FhsuCh9UuUzSEs1RtlsF2NhNobpP2xjMhdO+4LAaTqfew6snUUN/+G6lUDOBUeNp9HPzzMAlZG/eZ7y0u1dsd9vYwEr24ivDO+i66R4d9vmbCIohzHqc5HbSqZxi5k4H4mVnJTadC2fMrsp/nQaFtKjjX/VM + +<<< get:test-sha1 +SHA1:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ:6:30: + +<<< get:test-sha256 +SHA256:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ:6:30: + +<<< get:test-sha512 +SHA512:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ:6:30: + +<<< gotp.conf:remove:encrypted +[gotp "issuer"] +test-sha1 = GKhXh+9sSkfRjpVfu8o1dIAPTyahjHpGZxfSTqFJIUnAJj3HpQGa0UO3QNQ4qN66CYRaYchzS491REMdC+9mC1BoEFN0BQWVshF4Cy8fz/6geM8oPqUIQ0+pGKdnW9LWZGUB5NP72FGtBeDdQ5QHtMIKtexSHpO855mosY6wjik6l2oaJ+wbK2X4JNb4PyJIQksQjYWepMvx0m6b9NjkTJA+srUYmNu47VXf5JWtjXZY6uYd4ol2rkQJUNLcYY+B+VhqXJVvr/NaR15WCUjW+Q8JTGK0m3AsUYRnE5MJSwvjUSZUPOc842zlXtGaOUbKAQk3x2T69chK8+EaWGUS/hoVU7UT4ivIXJZr1kEcqNlLzLBMdOEI2S4mQJat98BDSucGcCbo3hghmny6KLaN5IUdUZ06Ra2JUdoJFAOmiaI/+bK6f6wr1J3prqbdQcsoLPsy6SVKIQv4rYoRIUHVPA5SLlYNcnNSpsnc4IjgaQb/sD07TM+9LYvy1KnCG8IF +test-sha256 = e6BCkqDD0Su15P1PPyZz6PXiYhLQ+imlhpy99+r5xM+hbL6MfZ71JaXiXw5+1JJ5oM+yqV0ejzg6pW2U9yYu2M2QfDv7BxY8rV5+8fchKgWoZ7t3cfX9VX2OXKbjnZLMrO5vYFvk8jUfeemFzy9UvoCUfYdPq3V9/2IUStBgyWNRwOmHq6ImVc5/4YoMCqXvQ/rxUl/NCujF3qQvQPLCL2Abm/lQRdWiQDzEB8+tn40iax1XoGK4dYTeuJJX7tYwv2cvQctbjYJcb+9cA+AroHW0TuyBWt37iII1rCvIA9pBb45U17Aj74Xj1vH9/WamLWLAX9bfLZwgzl2/Qa7c86jgw5jlfPcVUvxtFOJSIS/2cudxD9j8EOg4cAzySry8WP+ZPxnVqI+I4ZqSVFOtV5uSXuTiVPXCv1gtVl44ChwJw38LVBztADffM6Iqp1WjeSbASFwzDvEZmR/7qqeSgPeem/k9oPKfAJwi251oXdj2gJxG1R+JaxVjNVs1qf75 + +<<< gotp.conf:rename:encrypted +[gotp "issuer"] +renamed-sha1 = GKhXh+9sSkfRjpVfu8o1dIAPTyahjHpGZxfSTqFJIUnAJj3HpQGa0UO3QNQ4qN66CYRaYchzS491REMdC+9mC1BoEFN0BQWVshF4Cy8fz/6geM8oPqUIQ0+pGKdnW9LWZGUB5NP72FGtBeDdQ5QHtMIKtexSHpO855mosY6wjik6l2oaJ+wbK2X4JNb4PyJIQksQjYWepMvx0m6b9NjkTJA+srUYmNu47VXf5JWtjXZY6uYd4ol2rkQJUNLcYY+B+VhqXJVvr/NaR15WCUjW+Q8JTGK0m3AsUYRnE5MJSwvjUSZUPOc842zlXtGaOUbKAQk3x2T69chK8+EaWGUS/hoVU7UT4ivIXJZr1kEcqNlLzLBMdOEI2S4mQJat98BDSucGcCbo3hghmny6KLaN5IUdUZ06Ra2JUdoJFAOmiaI/+bK6f6wr1J3prqbdQcsoLPsy6SVKIQv4rYoRIUHVPA5SLlYNcnNSpsnc4IjgaQb/sD07TM+9LYvy1KnCG8IF +test-sha256 = e6BCkqDD0Su15P1PPyZz6PXiYhLQ+imlhpy99+r5xM+hbL6MfZ71JaXiXw5+1JJ5oM+yqV0ejzg6pW2U9yYu2M2QfDv7BxY8rV5+8fchKgWoZ7t3cfX9VX2OXKbjnZLMrO5vYFvk8jUfeemFzy9UvoCUfYdPq3V9/2IUStBgyWNRwOmHq6ImVc5/4YoMCqXvQ/rxUl/NCujF3qQvQPLCL2Abm/lQRdWiQDzEB8+tn40iax1XoGK4dYTeuJJX7tYwv2cvQctbjYJcb+9cA+AroHW0TuyBWt37iII1rCvIA9pBb45U17Aj74Xj1vH9/WamLWLAX9bfLZwgzl2/Qa7c86jgw5jlfPcVUvxtFOJSIS/2cudxD9j8EOg4cAzySry8WP+ZPxnVqI+I4ZqSVFOtV5uSXuTiVPXCv1gtVl44ChwJw38LVBztADffM6Iqp1WjeSbASFwzDvEZmR/7qqeSgPeem/k9oPKfAJwi251oXdj2gJxG1R+JaxVjNVs1qf75 + +<<< gotp.conf +[gotp "issuer"] +renamed-sha1 = SHA1:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ:6:30: +test-sha256 = SHA256:GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ:6:30: + +<<< gotp.conf:set-private-key:encrypted +[gotp "issuer"] +renamed-sha1 = QwG2OcN4EwDXemN5cFPpRaxy6Elen/uNNMai9I3Zu05DX6t+k/DL7ZS/ppI3wV7TXT94SHOgzvAPlMiAZ8N8sRbXwsNMUr3aYZ+sV25PWAzP0VWYyQ6Z+nS66QY0xWJ+cdUVFRDSbwEc6Jw20/8na6pktd6TY3E0GS+AJNkamlGFlmQw2t4ZoCM2zytshsK1hV2S98xpxnugpTfwo6qUFEzLQ4ugb96qSiPPHLixj4QrfHg2bL5iSJuI2QGyWKLtWihQa2xFOZdLfCQ5ZOabgyiwhSAEgVju+JnzGvlPQVkkb0/h+t6NrySkY1k0gBidXJsvYjUt2GdUZAlG105iv3fZV7N0I4Zs9DNKhObG4MNBSBKWjNbC0lgOw0XeaeL/GERQI2V3Y5fUCCcnRVzSmMnVc6hW4YY4bsVbtWwWCCQFVYMN036rY5dA8+Y3z1gg7Ysdmx2dQA9DIGI1E61hHElvJCsYxd2Ol2mXXKUnN8o2/IYYBHEZd83jUSyLVbXl +test-sha256 = uVVVi4dPsfnBl22KmsIFpvFn61/uztcCd95BYTfhwaEHs+bhLx2ttbg7P8J92OxSpuu9SRZutI4VZgTshQfJjr6EsdFobx0Ej+7J3i1GnhZ3TjzQ/uIDYzHUOMPpFW3ma6igk6RAawLnI2xnwLh4ODBP8sp2cGbRHnOEO/86BzS5FoA/AcfkFV+7tynk/t1OxPusr+yQ1bhlJTO/VQTuMRZXkali5WolyW9OHVfOERwn4ocTcSIlp0PcxkaAyi3ZW8Us62DeZCb85yEMa6HieKcmHMuSc+SpULYpalZ7juVk2609hmO9VNA30fUV1ZQWgvDToWdonhb1061rxoP5hvNxllNCvflMv9uVWyW0vVdrLhtzj5Fm5ds3k9A2GrXMAljk2mTbi0i1HLd5UIWob4V99nvEo1zOVRmJlFqzXJDlpE+urweXWq3QGwDNhGVIsMkka4LlHhxDhSH63FJZVK4Q57+/33Id4/15Po+eaCfd/HoyYED9y/YmSHhTE0QF + +<<< gotp.conf:set-private-key:encrypted:alt +[gotp "issuer"] +renamed-sha1 = cRLJ96VngTdoDWDfDNpojzwym1XSURnWSmMSDUyP5HPwpbMXKjKMt02C84enSOldIU4jqdKU4Xh2qqmHvE2TiSO43Mv/bxyDCaEUJs3TNknv4g8aJInymVAwVJ+8F3ZgdyR/TBGzBl2OH2wcLhqcaCOXeRzt+wZ1/RUvs6VaZrjLlRz6J/07gfnWJFxSHoZO9lVPyEn5ZcGpIOycm+VWc5KUSQ+OutL1LD/k7ZjssYo7QBJ5bM6i0VPVdNgIGIF7Fjsv4LYSkJUof6muBj6WmUvPliQaX3cdMitMf3Lz0HBJ9t0biHYqmX/mRZ71yBPEd3dCCt8Se8l3jOIM6Z1StcutxV2W488ISOdZUdcOTO3jycVkNzPqKrgY7ADZd+mcSMyTeAskpDDPp5w5UnjlKF88M+m/IY+2aaBLvoDatgkb4cE0jCzMV27sjRo/Mvvltkysz4ESYsnbkerOuYqPKLb84LqwjJ14k+hht+GSfR2XT+gQbh+YHGYIH2Vz67XL +test-sha256 = gWIH03IceDf4zlBI7TBBexxvxP3FDfoGz80GJ958O6KuIB/ZazGl3AqwwT3hHe6fkEAgZ1GDZjtd6stKzo7GNSbT6nr8f8gxpwRKutoE714CdCutFFazZS90sPK9fcurM/CqkWcQfGlEMe3r3ntQi+iHc+8z4bRnwGdUqJ3fgT1MADMEbN6d8AZ2SsDLHmTPNbElvZ3QPTeo16fOmdyzIAm21YMrFaLKmw5B1xHUVRiDCINzEELzoZRAgb6ooisHb0tZZ+LCMkH0MYZUX+dYzXzzLL2yZF8gi5XWt///YO1nkDV3rp5qtflrNM6IphOO12g4gtO+7t2jTfZzYSdfSOGWaPXRDZxsVchG3lIhUPEYr5ns494PdoGO+8IFmRNpYh/XikL0vA4mPiMjqRMnR5wRoLnoOxLzaIV82ywGihvB3ioA1LI6ehhRPAYb45trVEqRkPNot1LSg7empJbda1DRVZ71lYo7OHgpTslfQDGT/hizfwF13gVRUxrhiGU0 -- cgit v1.3