From bce0155abe60dc3ec5c15a98fab331b20bd145f0 Mon Sep 17 00:00:00 2001 From: Dave Date: Sun, 21 Dec 2014 00:13:27 +0200 Subject: [PATCH] Added license --- LICENSE | 176 ++++++++++++++++++ src/nodash/core/NoConfig.java | 19 ++ src/nodash/core/NoCore.java | 29 ++- src/nodash/core/NoRegister.java | 19 ++ src/nodash/core/NoUtil.java | 19 ++ src/nodash/core/spheres/NoByteSetSphere.java | 19 ++ src/nodash/core/spheres/NoHashSphere.java | 18 ++ src/nodash/core/spheres/NoSessionSphere.java | 33 +++- .../NoByteSetBadDecryptionException.java | 30 ++- .../NoCannotGetInfluenceException.java | 22 ++- src/nodash/exceptions/NoDashException.java | 18 ++ .../exceptions/NoDashFatalException.java | 18 ++ .../exceptions/NoDashSessionBadUUID.java | 13 -- .../NoDashSessionBadUUIDException.java | 32 ++++ .../exceptions/NoDashTemporaryError.java | 13 -- ...nAlreadyAwaitingConfirmationException.java | 20 ++ .../NoSessionConfirmedException.java | 19 ++ .../exceptions/NoSessionExpiredException.java | 19 ++ ...ssionNotAwaitingConfirmationException.java | 20 ++ .../NoSessionNotChangedException.java | 19 ++ .../NoUserAlreadyOnlineException.java | 19 ++ .../exceptions/NoUserNotValidException.java | 27 ++- src/nodash/models/NoAction.java | 19 ++ src/nodash/models/NoByteSet.java | 19 ++ src/nodash/models/NoInfluence.java | 23 +++ src/nodash/models/NoSession.java | 8 +- src/nodash/models/NoUser.java | 20 ++ .../noactiontypes/NoErrorableAction.java | 29 ++- .../noactiontypes/NoHandshakeAction.java | 24 +++ .../models/noactiontypes/NoSourcedAction.java | 23 +++ .../noactiontypes/NoTargetedAction.java | 19 ++ 31 files changed, 746 insertions(+), 59 deletions(-) create mode 100644 LICENSE delete mode 100644 src/nodash/exceptions/NoDashSessionBadUUID.java create mode 100644 src/nodash/exceptions/NoDashSessionBadUUIDException.java delete mode 100644 src/nodash/exceptions/NoDashTemporaryError.java diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d0381d6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ +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 diff --git a/src/nodash/core/NoConfig.java b/src/nodash/core/NoConfig.java index 9b50c26..3fb18cb 100644 --- a/src/nodash/core/NoConfig.java +++ b/src/nodash/core/NoConfig.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoConfig is a means to store the server secret key, database address + * and other configs. + */ + package nodash.core; import java.io.ByteArrayInputStream; diff --git a/src/nodash/core/NoCore.java b/src/nodash/core/NoCore.java index fa6bbbf..7244056 100644 --- a/src/nodash/core/NoCore.java +++ b/src/nodash/core/NoCore.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoCore class is the interface between which the wrapper application + * (wrapplication?) accesses no- functionality. + */ + package nodash.core; import java.io.File; @@ -6,7 +25,7 @@ import java.security.PublicKey; import nodash.core.spheres.NoByteSetSphere; import nodash.core.spheres.NoHashSphere; import nodash.core.spheres.NoSessionSphere; -import nodash.exceptions.NoDashSessionBadUUID; +import nodash.exceptions.NoDashSessionBadUUIDException; import nodash.exceptions.NoSessionAlreadyAwaitingConfirmationException; import nodash.exceptions.NoSessionConfirmedException; import nodash.exceptions.NoSessionExpiredException; @@ -43,24 +62,24 @@ public final class NoCore { return NoSessionSphere.registerUser(user, password); } - public static NoUser getUser(byte[] cookie) throws NoSessionExpiredException, NoSessionConfirmedException, NoDashSessionBadUUID { + public static NoUser getUser(byte[] cookie) throws NoSessionExpiredException, NoSessionConfirmedException, NoDashSessionBadUUIDException { /* Facilitates step 3 * allow website-side modifications to the NoUser or NoUser inheritant */ return NoSessionSphere.getUser(cookie); } - public static NoState getSessionState(byte[] cookie) throws NoSessionExpiredException, NoSessionConfirmedException, NoDashSessionBadUUID { + public static NoState getSessionState(byte[] cookie) throws NoSessionExpiredException, NoSessionConfirmedException, NoDashSessionBadUUIDException { /* Facilitates step 3 * allow front-side to keep track of session state */ return NoSessionSphere.getState(cookie); } - public static byte[] requestSave(byte[] cookie, char[] password) throws NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotChangedException, NoSessionAlreadyAwaitingConfirmationException, NoDashSessionBadUUID { + public static byte[] requestSave(byte[] cookie, char[] password) throws NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotChangedException, NoSessionAlreadyAwaitingConfirmationException, NoDashSessionBadUUIDException { /* Step 4. Provides a user with the new binary file */ return NoSessionSphere.save(cookie, password); } - public static void confirm(byte[] cookie, char[] password, byte[] data) throws NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotAwaitingConfirmationException, NoUserNotValidException, NoDashSessionBadUUID { + public static void confirm(byte[] cookie, char[] password, byte[] data) throws NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotAwaitingConfirmationException, NoUserNotValidException, NoDashSessionBadUUIDException { /* Step 5. Assumes the user has re-uploaded the file along with providing the same password. * Further attempts of getUser or getSessionState will fail with a NoSessionExpiredException*/ NoSessionSphere.confirm(cookie, password, data); diff --git a/src/nodash/core/NoRegister.java b/src/nodash/core/NoRegister.java index fd59fc2..c6b3f30 100644 --- a/src/nodash/core/NoRegister.java +++ b/src/nodash/core/NoRegister.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoRegister class is a simple model used to return both cookies and + * download data upon user registration. + */ + package nodash.core; public final class NoRegister { diff --git a/src/nodash/core/NoUtil.java b/src/nodash/core/NoUtil.java index 3ca92a1..e1b3d0f 100644 --- a/src/nodash/core/NoUtil.java +++ b/src/nodash/core/NoUtil.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoUtil class encapsulates no- standard functions such as encryption/decryption + * and hashing algorithms. + */ + package nodash.core; import java.security.InvalidKeyException; diff --git a/src/nodash/core/spheres/NoByteSetSphere.java b/src/nodash/core/spheres/NoByteSetSphere.java index e5c30a2..af58597 100644 --- a/src/nodash/core/spheres/NoByteSetSphere.java +++ b/src/nodash/core/spheres/NoByteSetSphere.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoByteSetSphere stores user-to-user influences and their encryption + * keys in an accessible manner. + */ + package nodash.core.spheres; import java.security.PublicKey; diff --git a/src/nodash/core/spheres/NoHashSphere.java b/src/nodash/core/spheres/NoHashSphere.java index 2920d52..95db4f2 100644 --- a/src/nodash/core/spheres/NoHashSphere.java +++ b/src/nodash/core/spheres/NoHashSphere.java @@ -1,3 +1,21 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoHashSpehre stores database hashes for user verification. + */ + package nodash.core.spheres; import java.io.ByteArrayInputStream; diff --git a/src/nodash/core/spheres/NoSessionSphere.java b/src/nodash/core/spheres/NoSessionSphere.java index d072e63..df64559 100644 --- a/src/nodash/core/spheres/NoSessionSphere.java +++ b/src/nodash/core/spheres/NoSessionSphere.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * The NoSessionSphere stores user sessions and allows their access and + * manipulation with the use of their UUID. + */ + package nodash.core.spheres; import java.util.Collections; @@ -8,7 +27,7 @@ import java.util.concurrent.ConcurrentHashMap; import nodash.core.NoRegister; import nodash.exceptions.NoByteSetBadDecryptionException; import nodash.exceptions.NoDashFatalException; -import nodash.exceptions.NoDashSessionBadUUID; +import nodash.exceptions.NoDashSessionBadUUIDException; import nodash.exceptions.NoSessionAlreadyAwaitingConfirmationException; import nodash.exceptions.NoSessionConfirmedException; import nodash.exceptions.NoSessionExpiredException; @@ -41,7 +60,7 @@ public final class NoSessionSphere { NoSessionSphere.sessions.remove(uuid); session = null; } - } catch (NoDashSessionBadUUID e) { + } catch (NoDashSessionBadUUIDException e) { // Suppress, doesn't matter } } @@ -96,7 +115,7 @@ public final class NoSessionSphere { return session.getEncryptedUUID(); } - public static NoUser getUser(byte[] encryptedUUID) throws NoDashSessionBadUUID, NoSessionExpiredException, NoSessionConfirmedException { + public static NoUser getUser(byte[] encryptedUUID) throws NoDashSessionBadUUIDException, NoSessionExpiredException, NoSessionConfirmedException { UUID uuid = NoSession.decryptUUID(encryptedUUID); if (NoSessionSphere.sessions.containsKey(uuid)) { NoSessionSphere.pruneSingle(uuid); @@ -105,7 +124,7 @@ public final class NoSessionSphere { throw new NoSessionExpiredException(); } - public static NoState getState(byte[] encryptedUUID) throws NoDashSessionBadUUID, NoSessionExpiredException, NoSessionConfirmedException { + public static NoState getState(byte[] encryptedUUID) throws NoDashSessionBadUUIDException, NoSessionExpiredException, NoSessionConfirmedException { UUID uuid = NoSession.decryptUUID(encryptedUUID); if (NoSessionSphere.sessions.containsKey(uuid)) { NoSessionSphere.pruneSingle(uuid); @@ -115,7 +134,7 @@ public final class NoSessionSphere { throw new NoSessionExpiredException(); } - public static synchronized byte[] save(byte[] encryptedUUID, char[] password) throws NoDashSessionBadUUID, NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotChangedException, NoSessionAlreadyAwaitingConfirmationException { + public static synchronized byte[] save(byte[] encryptedUUID, char[] password) throws NoDashSessionBadUUIDException, NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotChangedException, NoSessionAlreadyAwaitingConfirmationException { UUID uuid = NoSession.decryptUUID(encryptedUUID); if (NoSessionSphere.sessions.containsKey(uuid)) { NoSessionSphere.pruneSingle(uuid); @@ -131,7 +150,7 @@ public final class NoSessionSphere { throw new NoSessionExpiredException(); } - public static synchronized void confirm(byte[] encryptedUUID, char[] password, byte[] data) throws NoDashSessionBadUUID, NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotAwaitingConfirmationException, NoUserNotValidException { + public static synchronized void confirm(byte[] encryptedUUID, char[] password, byte[] data) throws NoDashSessionBadUUIDException, NoSessionExpiredException, NoSessionConfirmedException, NoSessionNotAwaitingConfirmationException, NoUserNotValidException { UUID uuid = NoSession.decryptUUID(encryptedUUID); if (NoSessionSphere.sessions.containsKey(uuid)) { NoSessionSphere.pruneSingle(uuid); @@ -149,7 +168,7 @@ public final class NoSessionSphere { result.cookie = session.getEncryptedUUID(); try { result.data = NoSessionSphere.save(result.cookie, password); - } catch (NoDashSessionBadUUID e) { + } catch (NoDashSessionBadUUIDException e) { throw new NoDashFatalException("Immediately generated cookie throwing bad cookie error."); } catch (NoSessionExpiredException e) { throw new NoDashFatalException("Session expired before it was even returned to client."); diff --git a/src/nodash/exceptions/NoByteSetBadDecryptionException.java b/src/nodash/exceptions/NoByteSetBadDecryptionException.java index 4e78af5..44e03b6 100644 --- a/src/nodash/exceptions/NoByteSetBadDecryptionException.java +++ b/src/nodash/exceptions/NoByteSetBadDecryptionException.java @@ -1,13 +1,31 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoByteSetBadDecryptionException is triggered when no- is unable to + * decrypt a given byte stream. + */ + package nodash.exceptions; -public class NoByteSetBadDecryptionException extends Exception { - private static final long serialVersionUID = -8579497499272656543L; +import javax.crypto.BadPaddingException; - public NoByteSetBadDecryptionException() { - super(); - } - +public class NoByteSetBadDecryptionException extends NoDashException { + private static final long serialVersionUID = -8579497499272656543L; + public NoByteSetBadDecryptionException(Exception e) { super(e); } + } diff --git a/src/nodash/exceptions/NoCannotGetInfluenceException.java b/src/nodash/exceptions/NoCannotGetInfluenceException.java index 25d3196..084eab0 100644 --- a/src/nodash/exceptions/NoCannotGetInfluenceException.java +++ b/src/nodash/exceptions/NoCannotGetInfluenceException.java @@ -1,8 +1,28 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoCannotGetInfluenceException is returned when an action is unable to + * render a successful influence for the target, instead returning an + * influence to be returned to the sender if possible. + */ + package nodash.exceptions; import nodash.models.NoInfluence; -public class NoCannotGetInfluenceException extends NoDashException { +public class NoCannotGetInfluenceException extends Exception { private static final long serialVersionUID = 4581361079067540974L; private NoInfluence returnable; diff --git a/src/nodash/exceptions/NoDashException.java b/src/nodash/exceptions/NoDashException.java index 89b5c1e..ccfd06e 100644 --- a/src/nodash/exceptions/NoDashException.java +++ b/src/nodash/exceptions/NoDashException.java @@ -1,3 +1,21 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoDashException is the base class for no- related exceptions. + */ + package nodash.exceptions; public class NoDashException extends Exception { diff --git a/src/nodash/exceptions/NoDashFatalException.java b/src/nodash/exceptions/NoDashFatalException.java index b58e260..faab5b8 100644 --- a/src/nodash/exceptions/NoDashFatalException.java +++ b/src/nodash/exceptions/NoDashFatalException.java @@ -1,3 +1,21 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoDashFatalException is the base exception for no- related runtime exceptions. + */ + package nodash.exceptions; public class NoDashFatalException extends RuntimeException { diff --git a/src/nodash/exceptions/NoDashSessionBadUUID.java b/src/nodash/exceptions/NoDashSessionBadUUID.java deleted file mode 100644 index b7fe33b..0000000 --- a/src/nodash/exceptions/NoDashSessionBadUUID.java +++ /dev/null @@ -1,13 +0,0 @@ -package nodash.exceptions; - -public class NoDashSessionBadUUID extends Exception { - private static final long serialVersionUID = -402131397575158344L; - - public NoDashSessionBadUUID() { - super(); - } - - public NoDashSessionBadUUID(Exception e) { - super(e); - } -} diff --git a/src/nodash/exceptions/NoDashSessionBadUUIDException.java b/src/nodash/exceptions/NoDashSessionBadUUIDException.java new file mode 100644 index 0000000..60ff766 --- /dev/null +++ b/src/nodash/exceptions/NoDashSessionBadUUIDException.java @@ -0,0 +1,32 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoDashSessionBadUUIDException is triggered when the NoSessionSphere is + * unable to find a valid session for the provided UUID. + */ + +package nodash.exceptions; + +public class NoDashSessionBadUUIDException extends Exception { + private static final long serialVersionUID = -402131397575158344L; + + public NoDashSessionBadUUIDException() { + super(); + } + + public NoDashSessionBadUUIDException(Exception e) { + super(e); + } +} diff --git a/src/nodash/exceptions/NoDashTemporaryError.java b/src/nodash/exceptions/NoDashTemporaryError.java deleted file mode 100644 index c88aecb..0000000 --- a/src/nodash/exceptions/NoDashTemporaryError.java +++ /dev/null @@ -1,13 +0,0 @@ -package nodash.exceptions; - -public class NoDashTemporaryError extends Exception { - private static final long serialVersionUID = 7940405670235375662L; - - public NoDashTemporaryError() { - super(); - } - - public NoDashTemporaryError(Exception e) { - super(e); - } -} diff --git a/src/nodash/exceptions/NoSessionAlreadyAwaitingConfirmationException.java b/src/nodash/exceptions/NoSessionAlreadyAwaitingConfirmationException.java index 564ef7f..d884b3d 100644 --- a/src/nodash/exceptions/NoSessionAlreadyAwaitingConfirmationException.java +++ b/src/nodash/exceptions/NoSessionAlreadyAwaitingConfirmationException.java @@ -1,3 +1,23 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoSessionAlreadyAWaitingConfirmationException is triggered when a + * save request is attempted for a session, but it is already awaiting + * a confirmation upload. + */ + package nodash.exceptions; public class NoSessionAlreadyAwaitingConfirmationException extends NoDashException { diff --git a/src/nodash/exceptions/NoSessionConfirmedException.java b/src/nodash/exceptions/NoSessionConfirmedException.java index c0a2e04..cb5c671 100644 --- a/src/nodash/exceptions/NoSessionConfirmedException.java +++ b/src/nodash/exceptions/NoSessionConfirmedException.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoSessionConfirmedException is triggered when an interaction attempt is + * made on a session that has recently been confirmed and thus closed. + */ + package nodash.exceptions; public class NoSessionConfirmedException extends NoDashException { diff --git a/src/nodash/exceptions/NoSessionExpiredException.java b/src/nodash/exceptions/NoSessionExpiredException.java index a6e98c4..99b8998 100644 --- a/src/nodash/exceptions/NoSessionExpiredException.java +++ b/src/nodash/exceptions/NoSessionExpiredException.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoSessionExpiredException is thrown when an interaction is attempted with + * an expired session. + */ + package nodash.exceptions; public class NoSessionExpiredException extends NoDashException { diff --git a/src/nodash/exceptions/NoSessionNotAwaitingConfirmationException.java b/src/nodash/exceptions/NoSessionNotAwaitingConfirmationException.java index 7fea548..1ebf540 100644 --- a/src/nodash/exceptions/NoSessionNotAwaitingConfirmationException.java +++ b/src/nodash/exceptions/NoSessionNotAwaitingConfirmationException.java @@ -1,3 +1,23 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoSessionNotAwaitingConfirmationException is thrown when an attempt is made + * to confirm a session with a password/byte[] combination, but the session is + * not currently awaiting a confirmation. + */ + package nodash.exceptions; public class NoSessionNotAwaitingConfirmationException extends NoDashException { diff --git a/src/nodash/exceptions/NoSessionNotChangedException.java b/src/nodash/exceptions/NoSessionNotChangedException.java index c763e78..e67cc0e 100644 --- a/src/nodash/exceptions/NoSessionNotChangedException.java +++ b/src/nodash/exceptions/NoSessionNotChangedException.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoSessionNotChangedException is thrown when a save is requested for a session + * whilst the user object remains unchanged. + */ + package nodash.exceptions; public class NoSessionNotChangedException extends NoDashException { diff --git a/src/nodash/exceptions/NoUserAlreadyOnlineException.java b/src/nodash/exceptions/NoUserAlreadyOnlineException.java index 09abc0b..75fb252 100644 --- a/src/nodash/exceptions/NoUserAlreadyOnlineException.java +++ b/src/nodash/exceptions/NoUserAlreadyOnlineException.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoUserAlreadyOnlineException is thrown when a login attempt is made for + * a user who is currently online. + */ + package nodash.exceptions; public class NoUserAlreadyOnlineException extends NoDashException { diff --git a/src/nodash/exceptions/NoUserNotValidException.java b/src/nodash/exceptions/NoUserNotValidException.java index 2415d5e..dada547 100644 --- a/src/nodash/exceptions/NoUserNotValidException.java +++ b/src/nodash/exceptions/NoUserNotValidException.java @@ -1,13 +1,24 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoUserNotValidException is thrown when a user file does not hash to a known + * hash. + */ + package nodash.exceptions; public class NoUserNotValidException extends NoDashException { private static final long serialVersionUID = -6432604940919299965L; - - public NoUserNotValidException(Exception e) { - super(e); - } - - public NoUserNotValidException() { - - } } diff --git a/src/nodash/models/NoAction.java b/src/nodash/models/NoAction.java index da1a2f2..bbe1d87 100644 --- a/src/nodash/models/NoAction.java +++ b/src/nodash/models/NoAction.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoAction is an abstract class to allow for the inheritance of actions which + * users can queue before confirmation (user-to-user and user-to-server). + */ + package nodash.models; import java.io.Serializable; diff --git a/src/nodash/models/NoByteSet.java b/src/nodash/models/NoByteSet.java index 23a66e4..ba5577c 100644 --- a/src/nodash/models/NoByteSet.java +++ b/src/nodash/models/NoByteSet.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoByteSet stores an AES key which has been RSA-4096 encrypted and a data + * stream which has been encrypted by this key. + */ + package nodash.models; public final class NoByteSet { diff --git a/src/nodash/models/NoInfluence.java b/src/nodash/models/NoInfluence.java index 359303e..582a013 100644 --- a/src/nodash/models/NoInfluence.java +++ b/src/nodash/models/NoInfluence.java @@ -1,3 +1,26 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoInfluence is an abstract class allowing for the subclassing of user + * influences, generated by both actions and the server. Upon login, the user + * consumes NoByteSets (generated by .getByteSet()) into the primary NoInfluence, + * which is then applied to the user with .applyTo(NoUser). + * + * Examples include incoming messages, financial changes or charges or updates. + */ + package nodash.models; import java.io.ByteArrayInputStream; diff --git a/src/nodash/models/NoSession.java b/src/nodash/models/NoSession.java index 167c23c..ae89ef9 100644 --- a/src/nodash/models/NoSession.java +++ b/src/nodash/models/NoSession.java @@ -12,7 +12,7 @@ import nodash.core.NoUtil; import nodash.core.spheres.NoHashSphere; import nodash.exceptions.NoByteSetBadDecryptionException; import nodash.exceptions.NoDashFatalException; -import nodash.exceptions.NoDashSessionBadUUID; +import nodash.exceptions.NoDashSessionBadUUIDException; import nodash.exceptions.NoSessionConfirmedException; import nodash.exceptions.NoSessionExpiredException; import nodash.exceptions.NoSessionNotAwaitingConfirmationException; @@ -200,13 +200,13 @@ public final class NoSession implements Serializable { } } - public static UUID decryptUUID(byte[] data) throws NoDashSessionBadUUID { + public static UUID decryptUUID(byte[] data) throws NoDashSessionBadUUIDException { try { return UUID.fromString(new String(NoUtil.decrypt(data))); } catch (IllegalBlockSizeException e) { - throw new NoDashSessionBadUUID(); + throw new NoDashSessionBadUUIDException(); } catch (BadPaddingException e) { - throw new NoDashSessionBadUUID(); + throw new NoDashSessionBadUUIDException(); } } diff --git a/src/nodash/models/NoUser.java b/src/nodash/models/NoUser.java index 80e1749..0f46d0d 100644 --- a/src/nodash/models/NoUser.java +++ b/src/nodash/models/NoUser.java @@ -1,3 +1,23 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoUser allows the subclassing of custom user objects whilst keeping the + * core requirements of a NoUser: the public and private keys. It also supports + * the serialization, decryption and NoByteSet consumption. + */ + package nodash.models; import java.io.ByteArrayInputStream; diff --git a/src/nodash/models/noactiontypes/NoErrorableAction.java b/src/nodash/models/noactiontypes/NoErrorableAction.java index 5ef66f6..d375423 100644 --- a/src/nodash/models/noactiontypes/NoErrorableAction.java +++ b/src/nodash/models/noactiontypes/NoErrorableAction.java @@ -1,3 +1,27 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoErrorableAction is a subclassing of NoTargetedAction for user-server + * interactions that require an error to be returned if a + * NoCannotGetInfluenceException is thrown. The target is not a destination user, + * but is instead treated as the source. + * + * As with all sourced actions it is advised to avoid their use unless the logic + * demands it, as it establishes a connection between a server action and a user address. + */ + package nodash.models.noactiontypes; import java.security.PublicKey; @@ -10,8 +34,9 @@ import nodash.models.NoInfluence; public abstract class NoErrorableAction extends NoTargetedAction { private static final long serialVersionUID = -6077150774349400823L; - public NoErrorableAction(PublicKey target) { - super(target); + public NoErrorableAction(PublicKey source) { + // Note that + super(source); } public void execute() { diff --git a/src/nodash/models/noactiontypes/NoHandshakeAction.java b/src/nodash/models/noactiontypes/NoHandshakeAction.java index b641101..c1f227c 100644 --- a/src/nodash/models/noactiontypes/NoHandshakeAction.java +++ b/src/nodash/models/noactiontypes/NoHandshakeAction.java @@ -1,3 +1,27 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoHandshakeAction is a subclass of the NoSourcedAction with logic to + * generate an applying influence as well as a returned influence, whilst + * also being capable of returned an error influence if the + * NoCannotGetInfluenceException is thrown. + * + * As with all two-way or sourced actions, their use should be sparing as + * it establishes a connection between two user addresses. + */ + package nodash.models.noactiontypes; import java.security.PublicKey; diff --git a/src/nodash/models/noactiontypes/NoSourcedAction.java b/src/nodash/models/noactiontypes/NoSourcedAction.java index c85b5ce..a7171ab 100644 --- a/src/nodash/models/noactiontypes/NoSourcedAction.java +++ b/src/nodash/models/noactiontypes/NoSourcedAction.java @@ -1,3 +1,26 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoSourcedAction is a subclassing of NoTargetedAction which additionally + * has a source, allowing for errors to be returned if a NoCannotGetInfluenceException + * is thrown. + * + * It is not advised to make a habit of using these for all user-user interactions + * as they provide a clear link between two users. + */ + package nodash.models.noactiontypes; import java.security.PublicKey; diff --git a/src/nodash/models/noactiontypes/NoTargetedAction.java b/src/nodash/models/noactiontypes/NoTargetedAction.java index 844e84a..7b16546 100644 --- a/src/nodash/models/noactiontypes/NoTargetedAction.java +++ b/src/nodash/models/noactiontypes/NoTargetedAction.java @@ -1,3 +1,22 @@ +/* + * Copyright 2014 David Horscroft + * + * 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. + * + * NoTargetedAction is an abstract subclassing of NoAction aimed at providing the + * basis for an action that has a user target in mind. + */ + package nodash.models.noactiontypes; import java.security.PublicKey;