Merge branch 'develop' of Locusworks/crypto into release/1.0
Some checks failed
Locusworks Team/crypto/pipeline/head There was a failure building this commit
Some checks failed
Locusworks Team/crypto/pipeline/head There was a failure building this commit
This commit is contained in:
208
LICENSE
208
LICENSE
@ -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.
|
|
31
licenses/LICENSE.netbeans
Normal file
31
licenses/LICENSE.netbeans
Normal file
@ -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.
|
||||||
|
*/
|
25
licenses/LICENSE.template
Normal file
25
licenses/LICENSE.template
Normal file
@ -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.
|
34
pom.xml
34
pom.xml
@ -7,11 +7,22 @@
|
|||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
<name>Crypto</name>
|
<name>Crypto</name>
|
||||||
<description>Crypto library</description>
|
<description>Crypto library</description>
|
||||||
|
<inceptionYear>2019</inceptionYear>
|
||||||
|
|
||||||
|
<organization>
|
||||||
|
<name>Locusworks</name>
|
||||||
|
<url>https://www.locusworks.net</url>
|
||||||
|
</organization>
|
||||||
|
|
||||||
|
<scm>
|
||||||
|
<url>git@gitea.locusworks.net:Locusworks/pseudo-bot.git</url>
|
||||||
|
</scm>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
<nexus.repo>http://nexus.locusworks.net</nexus.repo>
|
<nexus.repo>http://nexus.locusworks.net</nexus.repo>
|
||||||
|
<license-maven-plugin.version>3.0</license-maven-plugin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@ -51,6 +62,29 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.mycila</groupId>
|
||||||
|
<artifactId>license-maven-plugin</artifactId>
|
||||||
|
<version>${license-maven-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<quiet>false</quiet>
|
||||||
|
<header>${basedir}/licenses/LICENSE.template</header>
|
||||||
|
<strictCheck>true</strictCheck>
|
||||||
|
<useDefaultExcludes>true</useDefaultExcludes>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.java</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
<dependencies>
|
||||||
|
<!-- this dependency allows ${license.git.copyrightLastYear} in the
|
||||||
|
license template -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mycila</groupId>
|
||||||
|
<artifactId>license-maven-plugin-git</artifactId>
|
||||||
|
<version>${license-maven-plugin.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import javax.crypto.BadPaddingException;
|
import javax.crypto.BadPaddingException;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.security.KeyFactory;
|
import java.security.KeyFactory;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -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;
|
package net.locusworks.crypto;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
package net.locusworks.crypto.configuration;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface ConfigurationCallback {
|
||||||
|
void results(String msg);
|
||||||
|
}
|
@ -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<String> callback;
|
||||||
|
|
||||||
|
protected void init(String baseDir, String propertiesFile, Consumer<String> callback) throws IOException {
|
||||||
|
init(baseDir, propertiesFile, this.getClass().getName().getBytes(StandardCharsets.UTF_8), callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void init(String baseDir, String propertiesFile, byte[] aesKey, Consumer<String> 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<String, String> results = PropertiesManager.addConfiguration(configuration, defaults);
|
||||||
|
boolean changed = !results.isEmpty();
|
||||||
|
if (!results.isEmpty()) {
|
||||||
|
StringBuilder sb = new StringBuilder("Added new configuration items:\n");
|
||||||
|
for (Entry<String, String> 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<String, String> 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<String> fieldsToSave, Set<String> 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);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package net.locusworks.crypto.configuration;
|
||||||
|
|
||||||
|
public interface PersistableRequest {
|
||||||
|
|
||||||
|
}
|
@ -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<String, String> addConfiguration(Properties to, Properties from) {
|
||||||
|
Map<String, String> 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<String, String>(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<String, String> removeConfiguration(Properties from, Properties comparedTo) {
|
||||||
|
Map<String, String> 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, String>(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Save the properties file to disk.</p>
|
||||||
|
* <p><b>This method has been depecreated and could be removed in future release.<br/>Please use java.nio.Path</b></p>
|
||||||
|
* @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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Save the properties file to disk.</p>
|
||||||
|
* @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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
* Package contains classes that help encrypting, decrypting, salting and hashing objects
|
||||||
* @author Isaac Parenteau
|
* @author Isaac Parenteau
|
||||||
|
@ -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;
|
package net.locusworks.crypto.utils;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
@ -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;
|
package net.locusworks.crypto.utils;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
|
@ -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;
|
package net.locusworks.crypto.utils;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
@ -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;
|
package net.locusworks.crypto.tests;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -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;
|
package net.locusworks.crypto.tests;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -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;
|
package net.locusworks.crypto.tests;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
package net.locusworks.crypto.tests;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
13
src/test/resources/log4j2-test.xml
Normal file
13
src/test/resources/log4j2-test.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="WARN">
|
||||||
|
<Appenders>
|
||||||
|
<Console name="ConsoleAppender" target="SYSTEM_OUT">
|
||||||
|
<PatternLayout pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%-5p] %m%n" />
|
||||||
|
</Console>
|
||||||
|
</Appenders>
|
||||||
|
<Loggers>
|
||||||
|
<Root level="TRACE">
|
||||||
|
<AppenderRef ref="ConsoleAppender" level="INFO"/>
|
||||||
|
</Root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
4
src/test/resources/test.properties
Normal file
4
src/test/resources/test.properties
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
userExpirationDays=3650
|
||||||
|
dbHost=localhost
|
||||||
|
dbPort=3306
|
||||||
|
logLevel=INFO
|
Reference in New Issue
Block a user