From fbc92dd019cc17457f28b70e3305ab87882ea38d Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Sun, 2 Jun 2019 01:30:11 +0200 Subject: [PATCH] Add meta files Signed-off-by: Knut Ahlers --- LICENSE | 202 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 7 ++ screenshot.png | Bin 0 -> 22517 bytes 3 files changed, 209 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 screenshot.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2ce1cf5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019- Knut Ahlers + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..b461ded --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Luzifer / webtotp + +`webtotp` is a small web-based utility to create ad-hoc TOTP codes like the Google Authenticator would. The tool does not send any data to any service but is based fully in your browser. + +My specific usecase for this is I do have accounts which OTP secrets are stored outside of my TOTP generator as usually I don't need to access those accounts and if I would add those secrets to my TOTP generator I would have a lot more entries in it. So I do store the secrets in a safe place and needed a convenient generator to generate single OTP tokens from them. + +![](screenshot.png) diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..19c6c3689bb1de94ecbc3794e18f262c8d32c843 GIT binary patch literal 22517 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 literal 0 HcmV?d00001