From 2d3f44c5f74f155b0541906ce72e95992ca50b2f Mon Sep 17 00:00:00 2001 From: Isaac Parenteau Date: Sat, 5 Oct 2019 22:16:15 -0500 Subject: [PATCH 1/2] Added license info --- LICENSE | 208 ------------------ licenses/LICENSE.netbeans | 31 +++ licenses/LICENSE.template | 25 +++ pom.xml | 34 +++ src/main/java/net/locusworks/crypto/AES.java | 27 +++ .../java/net/locusworks/crypto/AESKey.java | 27 +++ .../net/locusworks/crypto/AESKeySpec.java | 27 +++ .../crypto/EncryptionKeyFactory.java | 27 +++ .../java/net/locusworks/crypto/HashSalt.java | 27 +++ .../java/net/locusworks/crypto/KeyFile.java | 27 +++ src/main/java/net/locusworks/crypto/RSA.java | 27 +++ .../locusworks/crypto/SSHEncodedKeySpec.java | 27 +++ .../net/locusworks/crypto/package-info.java | 27 +++ .../crypto/utils/DataOutputStreamHelper.java | 27 +++ .../locusworks/crypto/utils/HashUtils.java | 27 +++ .../locusworks/crypto/utils/RandomString.java | 27 +++ .../crypto/tests/AESEncryptionTest.java | 27 +++ .../locusworks/crypto/tests/HashSaltTest.java | 27 +++ .../crypto/tests/HashUtilsTest.java | 27 +++ .../crypto/tests/RandomStringTest.java | 27 +++ 20 files changed, 522 insertions(+), 208 deletions(-) delete mode 100644 LICENSE create mode 100644 licenses/LICENSE.netbeans create mode 100644 licenses/LICENSE.template diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4ed90b9..0000000 --- a/LICENSE +++ /dev/null @@ -1,208 +0,0 @@ -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 [yyyy] [name of copyright owner] - -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/licenses/LICENSE.netbeans b/licenses/LICENSE.netbeans new file mode 100644 index 0000000..a8d7fcf --- /dev/null +++ b/licenses/LICENSE.netbeans @@ -0,0 +1,31 @@ +/** + * This is a place-holder license header that is inserted by NetBeans when source files are created. If you're + * reading this message and seeing TBDs below, you need to run this maven command to update them: + * + * mvn license:format + * + * Project: TBD, File: TBD + * + * Copyright TBD Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that CryptoT(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ \ No newline at end of file diff --git a/licenses/LICENSE.template b/licenses/LICENSE.template new file mode 100644 index 0000000..c8a3666 --- /dev/null +++ b/licenses/LICENSE.template @@ -0,0 +1,25 @@ + +Project: ${project.name}, File: ${file.name} + +Copyright ${license.git.copyrightLastYear} Locusworks LLC. +All rights reserved. Federal copyright law prohibits unauthorized reproduction by +any means and imposes fines up to $25,000 for violation. No part of this material +may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, +modified, duplicated, adapted or translated into another program language in any +form or by any means, electronic, mechanical, photocopying, recording, or +otherwise, without the prior written permission from Locusworks. Locusworks +affirms that Crypto(R) software and data is subject to United States +Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive +Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + +IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, +INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT +OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY +LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF +THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND +ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS +IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, +ENHANCEMENTS, OR MODIFICATIONS. diff --git a/pom.xml b/pom.xml index b35df92..45391e4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,11 +7,22 @@ 0.0.1-SNAPSHOT Crypto Crypto library + 2019 + + + Locusworks + https://www.locusworks.net + + + + git@gitea.locusworks.net:Locusworks/pseudo-bot.git + 1.8 1.8 http://nexus.locusworks.net + 3.0 @@ -51,6 +62,29 @@ + + com.mycila + license-maven-plugin + ${license-maven-plugin.version} + + false +
${basedir}/licenses/LICENSE.template
+ true + true + + **/*.java + +
+ + + + com.mycila + license-maven-plugin-git + ${license-maven-plugin.version} + + +
diff --git a/src/main/java/net/locusworks/crypto/AES.java b/src/main/java/net/locusworks/crypto/AES.java index ecf0405..e245856 100644 --- a/src/main/java/net/locusworks/crypto/AES.java +++ b/src/main/java/net/locusworks/crypto/AES.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: AES.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import javax.crypto.BadPaddingException; diff --git a/src/main/java/net/locusworks/crypto/AESKey.java b/src/main/java/net/locusworks/crypto/AESKey.java index 85900de..1158c26 100644 --- a/src/main/java/net/locusworks/crypto/AESKey.java +++ b/src/main/java/net/locusworks/crypto/AESKey.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: AESKey.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.nio.charset.StandardCharsets; diff --git a/src/main/java/net/locusworks/crypto/AESKeySpec.java b/src/main/java/net/locusworks/crypto/AESKeySpec.java index 4c31efc..a05be56 100644 --- a/src/main/java/net/locusworks/crypto/AESKeySpec.java +++ b/src/main/java/net/locusworks/crypto/AESKeySpec.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: AESKeySpec.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.io.ByteArrayInputStream; diff --git a/src/main/java/net/locusworks/crypto/EncryptionKeyFactory.java b/src/main/java/net/locusworks/crypto/EncryptionKeyFactory.java index 8d33f44..eeaddef 100644 --- a/src/main/java/net/locusworks/crypto/EncryptionKeyFactory.java +++ b/src/main/java/net/locusworks/crypto/EncryptionKeyFactory.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: EncryptionKeyFactory.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.security.KeyFactory; diff --git a/src/main/java/net/locusworks/crypto/HashSalt.java b/src/main/java/net/locusworks/crypto/HashSalt.java index 5c65f82..ff4ea97 100644 --- a/src/main/java/net/locusworks/crypto/HashSalt.java +++ b/src/main/java/net/locusworks/crypto/HashSalt.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: HashSalt.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.math.BigInteger; diff --git a/src/main/java/net/locusworks/crypto/KeyFile.java b/src/main/java/net/locusworks/crypto/KeyFile.java index af0f84d..3888460 100644 --- a/src/main/java/net/locusworks/crypto/KeyFile.java +++ b/src/main/java/net/locusworks/crypto/KeyFile.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: KeyFile.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.io.File; diff --git a/src/main/java/net/locusworks/crypto/RSA.java b/src/main/java/net/locusworks/crypto/RSA.java index 2416181..6579bf2 100644 --- a/src/main/java/net/locusworks/crypto/RSA.java +++ b/src/main/java/net/locusworks/crypto/RSA.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: RSA.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.io.ByteArrayInputStream; diff --git a/src/main/java/net/locusworks/crypto/SSHEncodedKeySpec.java b/src/main/java/net/locusworks/crypto/SSHEncodedKeySpec.java index c6e6bb6..b0869c7 100644 --- a/src/main/java/net/locusworks/crypto/SSHEncodedKeySpec.java +++ b/src/main/java/net/locusworks/crypto/SSHEncodedKeySpec.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: SSHEncodedKeySpec.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto; import java.io.ByteArrayInputStream; diff --git a/src/main/java/net/locusworks/crypto/package-info.java b/src/main/java/net/locusworks/crypto/package-info.java index 6c7de80..009cd1e 100644 --- a/src/main/java/net/locusworks/crypto/package-info.java +++ b/src/main/java/net/locusworks/crypto/package-info.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: package-info.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ /** * Package contains classes that help encrypting, decrypting, salting and hashing objects * @author Isaac Parenteau diff --git a/src/main/java/net/locusworks/crypto/utils/DataOutputStreamHelper.java b/src/main/java/net/locusworks/crypto/utils/DataOutputStreamHelper.java index f3a3dc4..2ebbfed 100644 --- a/src/main/java/net/locusworks/crypto/utils/DataOutputStreamHelper.java +++ b/src/main/java/net/locusworks/crypto/utils/DataOutputStreamHelper.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: DataOutputStreamHelper.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.utils; import java.io.ByteArrayOutputStream; diff --git a/src/main/java/net/locusworks/crypto/utils/HashUtils.java b/src/main/java/net/locusworks/crypto/utils/HashUtils.java index 448934d..ca568cf 100644 --- a/src/main/java/net/locusworks/crypto/utils/HashUtils.java +++ b/src/main/java/net/locusworks/crypto/utils/HashUtils.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: HashUtils.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.utils; import java.io.BufferedInputStream; diff --git a/src/main/java/net/locusworks/crypto/utils/RandomString.java b/src/main/java/net/locusworks/crypto/utils/RandomString.java index 2466f75..5dff5f5 100644 --- a/src/main/java/net/locusworks/crypto/utils/RandomString.java +++ b/src/main/java/net/locusworks/crypto/utils/RandomString.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: RandomString.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.utils; import java.nio.charset.StandardCharsets; diff --git a/src/test/java/net/locusworks/crypto/tests/AESEncryptionTest.java b/src/test/java/net/locusworks/crypto/tests/AESEncryptionTest.java index 6a5b183..872e286 100644 --- a/src/test/java/net/locusworks/crypto/tests/AESEncryptionTest.java +++ b/src/test/java/net/locusworks/crypto/tests/AESEncryptionTest.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: AESEncryptionTest.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.tests; import org.apache.commons.lang3.StringUtils; diff --git a/src/test/java/net/locusworks/crypto/tests/HashSaltTest.java b/src/test/java/net/locusworks/crypto/tests/HashSaltTest.java index 2d3c822..24a9c41 100644 --- a/src/test/java/net/locusworks/crypto/tests/HashSaltTest.java +++ b/src/test/java/net/locusworks/crypto/tests/HashSaltTest.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: HashSaltTest.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.tests; import org.apache.commons.lang3.StringUtils; diff --git a/src/test/java/net/locusworks/crypto/tests/HashUtilsTest.java b/src/test/java/net/locusworks/crypto/tests/HashUtilsTest.java index 660eefa..ad1f5fa 100644 --- a/src/test/java/net/locusworks/crypto/tests/HashUtilsTest.java +++ b/src/test/java/net/locusworks/crypto/tests/HashUtilsTest.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: HashUtilsTest.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.tests; import static org.junit.Assert.*; diff --git a/src/test/java/net/locusworks/crypto/tests/RandomStringTest.java b/src/test/java/net/locusworks/crypto/tests/RandomStringTest.java index 6769134..c0441bc 100644 --- a/src/test/java/net/locusworks/crypto/tests/RandomStringTest.java +++ b/src/test/java/net/locusworks/crypto/tests/RandomStringTest.java @@ -1,3 +1,30 @@ +/** + * + * Project: Crypto, File: RandomStringTest.java + * + * Copyright 2019 Locusworks LLC. + * All rights reserved. Federal copyright law prohibits unauthorized reproduction by + * any means and imposes fines up to $25,000 for violation. No part of this material + * may be reproduced, transmitted, transcribed, stored in a retrieval system, copied, + * modified, duplicated, adapted or translated into another program language in any + * form or by any means, electronic, mechanical, photocopying, recording, or + * otherwise, without the prior written permission from Locusworks. Locusworks + * affirms that Crypto(R) software and data is subject to United States + * Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive + * Forney TX 75126, (802) 488-0438, for commercial licensing opportunities. + * + * IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY + * LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF + * THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND + * ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS. + */ package net.locusworks.crypto.tests; import static org.junit.Assert.*; From 0dad6eafaf5462ee8c4fb812b5c909ad9034c66d Mon Sep 17 00:00:00 2001 From: Isaac Parenteau Date: Sat, 5 Oct 2019 23:10:59 -0500 Subject: [PATCH 2/2] Added ability to handle properites files --- .../configuration/ConfigurationCallback.java | 6 + .../configuration/ConfigurationManager.java | 149 +++++++++++++++++ .../configuration/PersistableRequest.java | 5 + .../configuration/PropertiesManager.java | 153 ++++++++++++++++++ .../crypto/tests/PropertiesManagerTest.java | 124 ++++++++++++++ src/test/resources/log4j2-test.xml | 13 ++ src/test/resources/test.properties | 4 + 7 files changed, 454 insertions(+) create mode 100644 src/main/java/net/locusworks/crypto/configuration/ConfigurationCallback.java create mode 100644 src/main/java/net/locusworks/crypto/configuration/ConfigurationManager.java create mode 100644 src/main/java/net/locusworks/crypto/configuration/PersistableRequest.java create mode 100644 src/main/java/net/locusworks/crypto/configuration/PropertiesManager.java create mode 100644 src/test/java/net/locusworks/crypto/tests/PropertiesManagerTest.java create mode 100644 src/test/resources/log4j2-test.xml create mode 100644 src/test/resources/test.properties diff --git a/src/main/java/net/locusworks/crypto/configuration/ConfigurationCallback.java b/src/main/java/net/locusworks/crypto/configuration/ConfigurationCallback.java new file mode 100644 index 0000000..4ae0c9c --- /dev/null +++ b/src/main/java/net/locusworks/crypto/configuration/ConfigurationCallback.java @@ -0,0 +1,6 @@ +package net.locusworks.crypto.configuration; + +@FunctionalInterface +public interface ConfigurationCallback { + void results(String msg); +} diff --git a/src/main/java/net/locusworks/crypto/configuration/ConfigurationManager.java b/src/main/java/net/locusworks/crypto/configuration/ConfigurationManager.java new file mode 100644 index 0000000..3aa3464 --- /dev/null +++ b/src/main/java/net/locusworks/crypto/configuration/ConfigurationManager.java @@ -0,0 +1,149 @@ +package net.locusworks.crypto.configuration; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashSet; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.Set; +import java.util.function.Consumer; + +import org.apache.commons.lang3.StringUtils; + +import net.locusworks.crypto.AES; + +public class ConfigurationManager { + + private Properties configuration; + private Properties defaults = null; + private Path conf = null; + + protected AES aes; + + private Consumer callback; + + protected void init(String baseDir, String propertiesFile, Consumer callback) throws IOException { + init(baseDir, propertiesFile, this.getClass().getName().getBytes(StandardCharsets.UTF_8), callback); + } + + protected void init(String baseDir, String propertiesFile, byte[] aesKey, Consumer callback) throws IOException { + aes = aesKey.length > 0 ? AES.createInstance(aesKey) : AES.createInstance(); + this.callback = callback; + try { + defaults = PropertiesManager.loadConfiguration(this.getClass(), propertiesFile); + } catch (IOException ex) { + throw ex; + } + // create patchrepoConf File object + conf = Paths.get(baseDir).resolve(propertiesFile); + + loadConfiguration(); + } + + private void loadConfiguration() { + // load the active config file + // ignore read error, we can continue with an empty configuration map + // and all default items will be added below and the file created + + callbackMessage("Loading config file: " + conf); + try { + configuration = PropertiesManager.loadConfiguration(conf); + } catch (Exception e) { + callbackMessage("Config file: " + conf + " will be created from template"); + configuration = new Properties(); + } + + Map results = PropertiesManager.addConfiguration(configuration, defaults); + boolean changed = !results.isEmpty(); + if (!results.isEmpty()) { + StringBuilder sb = new StringBuilder("Added new configuration items:\n"); + for (Entry entry : results.entrySet()) { + sb.append(String.format("%s=%s\n", entry.getKey(), entry.getValue())); + } + callbackMessage(sb.toString()); + } + + results = PropertiesManager.removeConfiguration(configuration, defaults); + changed |= !results.isEmpty(); + if (!results.isEmpty()) { + StringBuilder sb = new StringBuilder("Added new configuration items:\n"); + for (Entry entry : results.entrySet()) { + sb.append(String.format("%s=%s\n", entry.getKey(), entry.getValue())); + } + callbackMessage(sb.toString()); + } + + if (changed) { + PropertiesManager.saveConfiguration(configuration, conf, "Patch Repository properties file"); + } + } + + /** + * Save the configuration values to file + * @param confs Configuration property values to save + * @throws Exception general exception + */ + public void saveToConf(Properties confs) throws Exception { + PropertiesManager.saveConfiguration(confs, conf, conf.getFileName().toString()); + callbackMessage("Saved config file: " + conf + ", " + confs.size() + " entries"); + loadConfiguration(); + } + + public String getPropertyValue(String key) { + return getPropertyValue(key, null); + } + public String getPropertyValue(String key, String defaultValue) { + return configuration.containsKey(key) ? configuration.getProperty(key) : defaultValue; + } + + public Properties getConfiguration() { + return configuration; + } + + public void saveConfiguration(PersistableRequest request, Set fieldsToSave, Set excryptedFields) throws IOException { + if (fieldsToSave == null || fieldsToSave.isEmpty()) { + throw new IOException("No fields to save were defined"); + } + if (excryptedFields == null) { + excryptedFields = new HashSet<>(); + } + try { + Properties props = new Properties(); + + //copy what is current in the configuration settings into the new properties file + configuration.entrySet().forEach(item -> props.setProperty(String.valueOf(item.getKey()), String.valueOf(item.getValue()))); + boolean changed = false; + for (Field f : request.getClass().getDeclaredFields()) { + f.setAccessible(true); + String fieldName = f.getName(); + String fieldValue = String.valueOf(f.get(request)); + + //Ensures we are only saving values that are already configured + if (!fieldsToSave.contains(fieldName)) continue; + + //Check to see if the old value changed + String oldValue = props.getProperty(fieldName); + if (StringUtils.isAnyBlank(oldValue, fieldValue) || oldValue.equals(fieldValue)) continue; + + changed = true; + + fieldValue = excryptedFields.contains(fieldName) ? aes.encrypt(fieldValue) : fieldValue; + + props.setProperty(fieldName, fieldValue); + } + if (changed) { + saveToConf(props); + } + } catch (Exception ex) { + throw new IOException(ex); + } + } + + private void callbackMessage(String msg) { + if (callback != null) callback.accept(msg); + } +} diff --git a/src/main/java/net/locusworks/crypto/configuration/PersistableRequest.java b/src/main/java/net/locusworks/crypto/configuration/PersistableRequest.java new file mode 100644 index 0000000..79385fe --- /dev/null +++ b/src/main/java/net/locusworks/crypto/configuration/PersistableRequest.java @@ -0,0 +1,5 @@ +package net.locusworks.crypto.configuration; + +public interface PersistableRequest { + +} diff --git a/src/main/java/net/locusworks/crypto/configuration/PropertiesManager.java b/src/main/java/net/locusworks/crypto/configuration/PropertiesManager.java new file mode 100644 index 0000000..9368743 --- /dev/null +++ b/src/main/java/net/locusworks/crypto/configuration/PropertiesManager.java @@ -0,0 +1,153 @@ +package net.locusworks.crypto.configuration; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; +import java.util.Properties; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.tuple.ImmutablePair; + +/** + * Properties manager class to help load and read properties + * @author Isaac Parenteau + * @version 1.0.0 + * @date 02/15/2018 + */ +public class PropertiesManager { + /** + * Load a configuration from resource + * @param clazz class loader + * @param src source of the file + * @return properties + * @throws IOException Exception thrown the file can't be read + */ + public static Properties loadConfiguration(Class clazz, String src) throws IOException { + InputStream is = clazz.getResourceAsStream(src); + if (is == null) { + is = clazz.getClassLoader().getResourceAsStream(src); + } + if (is == null) { + return null; + } + BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + return loadConfiguration(br); + } + + /** + * Load configuration from a file. This method has been deprecated and may be removed in + * future released. Please use java.nio.Path + * @param file File to load + * @return properties + * @throws IOException Exception thrown the file can't be read + */ + @Deprecated + public static Properties loadConfiguration(File file) throws IOException { + return loadConfiguration(file.toPath()); + } + + /** + * Load configuration from a file. + * @param path the path to the file + * @return properties + * @throws IOException Exception thrown the file can't be read + */ + public static Properties loadConfiguration(Path path) throws IOException { + if (Files.notExists(path)) { + return new Properties(); + } + + try(BufferedReader br = Files.newBufferedReader(path)) { + return loadConfiguration(br); + } + } + + /** + * Load configuration from a buffered reader + * @param reader Buffered reader to read the properties values from + * @return properties + * @throws IOException Exception thrown the file can't be read + */ + public static Properties loadConfiguration(BufferedReader reader) throws IOException { + Properties config = new Properties(); + config.load(reader); + return config; + } + + /** + * Add configurations from one properties file to another + * @param to Properties file to copy values to + * @param from Properties file to copy values from + * @return a map containing the results of the values added + */ + public static Map addConfiguration(Properties to, Properties from) { + Map results = from.entrySet() + .stream() + .filter(entry -> !to.containsKey(entry.getKey())) + .map(entry -> { + String key = entry.getKey().toString(); + String value = entry.getValue().toString(); + to.put(key, value); + return new ImmutablePair(key, value); + }) + .collect(Collectors.toMap(key -> key.getLeft(), value -> value.getRight())); + + return results; + } + + /** + * Removes configuration values that are not present in the comparedTo + * @param from Properties file to remove values from + * @param comparedTo Properties file to compare to + * @return a map containing the results of the values removed + */ + public static Map removeConfiguration(Properties from, Properties comparedTo) { + Map results = from.keySet() + .stream() + .filter(key -> !comparedTo.containsKey(key)) //only get the items that are not in the comparedTo properties + .map(key -> new ImmutablePair(String.valueOf(key), String.valueOf(from.get(key)))) + .collect(Collectors.toList()) //Create a list of paired items (key value) of the items that were filtered + .stream() + .map(pair -> { //remove those pairs from the from properties + from.remove(pair.getLeft()); + return pair; + }) + .collect(Collectors.toMap(key -> key.getLeft(), value -> value.getRight())); //create a map of what was removed + + return results; + } + + /** + *

Save the properties file to disk.

+ *

This method has been depecreated and could be removed in future release.
Please use java.nio.Path

+ * @param props Properties file to save + * @param fileToSave File to save to + * @param comment Any comments to add + */ + @Deprecated + public static void saveConfiguration(Properties props, File fileToSave, String comment) { + saveConfiguration(props, fileToSave.toPath(), comment); + + } + + /** + *

Save the properties file to disk.

+ * @param props Properties file to save + * @param fileToSave File to save to + * @param comment Any comments to add + */ + public static void saveConfiguration(Properties props, Path fileToSave, String comment) { + try(OutputStream fos = Files.newOutputStream(fileToSave)) { + props.store(fos, comment == null ? "" : comment); + } catch (IOException ex) { + throw new RuntimeException(ex.getMessage(), ex); + } + } +} diff --git a/src/test/java/net/locusworks/crypto/tests/PropertiesManagerTest.java b/src/test/java/net/locusworks/crypto/tests/PropertiesManagerTest.java new file mode 100644 index 0000000..b91808a --- /dev/null +++ b/src/test/java/net/locusworks/crypto/tests/PropertiesManagerTest.java @@ -0,0 +1,124 @@ +package net.locusworks.crypto.tests; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Properties; + +import org.junit.AfterClass; +import org.junit.Test; + +import net.locusworks.crypto.configuration.PropertiesManager; + +/** + * Test cases for the properties manager class + * @author Isaac Parenteau + * @since 1.0.0-RELEASE + * + */ +public class PropertiesManagerTest { + + private static final String PROPERTIES_FILE = "test.properties"; + private static final String TMP_PROPS = "temp.properties"; + private static final int ENTRY_SIZE = 4; + + public static enum Configuration { + DB_HOST("dbHost"), + DB_PORT("dbPort"), + USER_EXPIRATION_DAYS("userExpirationDays"), + LOG_LEVEL("logLevel"); + + private String value; + + private Configuration(String value) { + this.value = value; + } + + /** + * Get the current value of the enumeration + * @return value + */ + public String getValue() { + return this.value; + } + + @Override + public String toString() { + return this.value; + } + } + + @AfterClass + public static void removeSavedProps() { + File tmp = new File(TMP_PROPS); + if (tmp.exists()) { + tmp.delete(); + } + } + + @Test + public void testPropertiesLoad() { + try { + Properties props = PropertiesManager.loadConfiguration(this.getClass(), PROPERTIES_FILE); + assertTrue(props != null); + assertTrue(props.containsKey(Configuration.USER_EXPIRATION_DAYS.toString())); + assertTrue(props.containsKey(Configuration.DB_HOST.toString())); + assertTrue(props.containsKey(Configuration.DB_PORT.toString())); + assertTrue(props.containsKey(Configuration.LOG_LEVEL.toString())); + } catch (IOException e) { + fail(e.getMessage()); + } + } + + @Test + public void testAddConfiguration() { + try { + Properties props = PropertiesManager.loadConfiguration(this.getClass(), PROPERTIES_FILE); + Properties tmp = new Properties(); + assertTrue(tmp.keySet().size() == 0); + PropertiesManager.addConfiguration(tmp, props); + assertTrue(tmp.keySet().size() == ENTRY_SIZE); + assertTrue(tmp.containsKey(Configuration.USER_EXPIRATION_DAYS.toString())); + assertTrue(tmp.containsKey(Configuration.DB_HOST.toString())); + assertTrue(tmp.containsKey(Configuration.DB_PORT.toString())); + assertTrue(tmp.containsKey(Configuration.LOG_LEVEL.toString())); + } catch (IOException e) { + fail(e.getMessage()); + } + } + + @Test + public void testRemoveConfiguration() { + try { + Properties props = PropertiesManager.loadConfiguration(this.getClass(), PROPERTIES_FILE); + Properties tmp = new Properties(); + assertTrue(props.keySet().size() == ENTRY_SIZE); + assertTrue(tmp.keySet().size() == 0); + PropertiesManager.removeConfiguration(props, tmp); + assertTrue(props.keySet().size() == 0); + assertTrue(tmp.keySet().size() == 0); + } catch (IOException e) { + fail(e.getMessage()); + } + } + + @Test + public void testSaveConfiguration() { + try { + Properties props = PropertiesManager.loadConfiguration(this.getClass(), PROPERTIES_FILE); + Path tmpFile = Paths.get(TMP_PROPS); + PropertiesManager.saveConfiguration(props, tmpFile, "test propertis"); + Properties tmp = PropertiesManager.loadConfiguration(tmpFile); + assertTrue(tmp.keySet().size() == ENTRY_SIZE); + assertTrue(tmp.containsKey(Configuration.USER_EXPIRATION_DAYS.toString())); + assertTrue(tmp.containsKey(Configuration.DB_HOST.toString())); + assertTrue(tmp.containsKey(Configuration.DB_PORT.toString())); + assertTrue(tmp.containsKey(Configuration.LOG_LEVEL.toString())); + } catch (IOException e) { + fail(e.getMessage()); + } + } +} diff --git a/src/test/resources/log4j2-test.xml b/src/test/resources/log4j2-test.xml new file mode 100644 index 0000000..a2c3fe0 --- /dev/null +++ b/src/test/resources/log4j2-test.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/test/resources/test.properties b/src/test/resources/test.properties new file mode 100644 index 0000000..292c3da --- /dev/null +++ b/src/test/resources/test.properties @@ -0,0 +1,4 @@ +userExpirationDays=3650 +dbHost=localhost +dbPort=3306 +logLevel=INFO