View Javadoc
1   /*
2    * GordianKnot: Security Suite
3    * Copyright 2012-2026. Tony Washer
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6    * use this file except in compliance with the License.  You may obtain a copy
7    * of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
14   * License for the specific language governing permissions and limitations under
15   * the License.
16   */
17  package io.github.tonywasher.joceanus.gordianknot.api.lock;
18  
19  import io.github.tonywasher.joceanus.gordianknot.api.base.GordianException;
20  import io.github.tonywasher.joceanus.gordianknot.api.keypair.GordianKeyPair;
21  import io.github.tonywasher.joceanus.gordianknot.api.keyset.GordianKeySet;
22  import io.github.tonywasher.joceanus.gordianknot.api.lock.spec.GordianPasswordLockSpec;
23  import io.github.tonywasher.joceanus.gordianknot.api.lock.spec.GordianPasswordLockSpecBuilder;
24  
25  /**
26   * Lock Factory API.
27   */
28  public interface GordianLockFactory {
29      /**
30       * create new GordianPasswordLockSpecBuilder.
31       *
32       * @return the new PasswordLockSpecBuilder
33       */
34      GordianPasswordLockSpecBuilder newPasswordLockSpecBuilder();
35  
36      /**
37       * Create a new keySetLock for a keySet.
38       *
39       * @param pKeySetToLock the keySet to lock
40       * @param pPassword     the password
41       * @return the keySet lock
42       * @throws GordianException on error
43       */
44      GordianKeySetLock newKeySetLock(GordianKeySet pKeySetToLock,
45                                      char[] pPassword) throws GordianException;
46  
47      /**
48       * Create a new keySetLock for a keySet.
49       *
50       * @param pKeySetToLock the keySet to lock
51       * @param pLockSpec     the locking spec
52       * @param pPassword     the password
53       * @return the keySet lock
54       * @throws GordianException on error
55       */
56      GordianKeySetLock newKeySetLock(GordianKeySet pKeySetToLock,
57                                      GordianPasswordLockSpec pLockSpec,
58                                      char[] pPassword) throws GordianException;
59  
60      /**
61       * Create a new keySetLock for a new random keySet.
62       *
63       * @param pPassword the password
64       * @return the keySet lock
65       * @throws GordianException on error
66       */
67      GordianKeySetLock newKeySetLock(char[] pPassword) throws GordianException;
68  
69      /**
70       * Create a new keySetLock for a new random keySet.
71       *
72       * @param pLockSpec the locking spec
73       * @param pPassword the password
74       * @return the keySet lock
75       * @throws GordianException on error
76       */
77      GordianKeySetLock newKeySetLock(GordianPasswordLockSpec pLockSpec,
78                                      char[] pPassword) throws GordianException;
79  
80      /**
81       * Resolve a keySetLock.
82       *
83       * @param pLockBytes the lockBytes
84       * @param pPassword  the password
85       * @return the resolved keySetLock
86       * @throws GordianException on error
87       */
88      GordianKeySetLock resolveKeySetLock(byte[] pLockBytes,
89                                          char[] pPassword) throws GordianException;
90  
91      /**
92       * Create a new keyPairLock.
93       *
94       * @param pKeyPair  the keyPair
95       * @param pPassword the password
96       * @return the keySet lock
97       * @throws GordianException on error
98       */
99      GordianKeyPairLock newKeyPairLock(GordianKeyPair pKeyPair,
100                                       char[] pPassword) throws GordianException;
101 
102     /**
103      * Create a new keyPairLock.
104      *
105      * @param pLockSpec the locking spec
106      * @param pKeyPair  the keyPair
107      * @param pPassword the password
108      * @return the keySet lock
109      * @throws GordianException on error
110      */
111     GordianKeyPairLock newKeyPairLock(GordianPasswordLockSpec pLockSpec,
112                                       GordianKeyPair pKeyPair,
113                                       char[] pPassword) throws GordianException;
114 
115     /**
116      * Resolve a keySetLock.
117      *
118      * @param pLockBytes the lockBytes
119      * @param pKeyPair   the keyPair
120      * @param pPassword  the password
121      * @return the resolved keySetLock
122      * @throws GordianException on error
123      */
124     GordianKeyPairLock resolveKeyPairLock(byte[] pLockBytes,
125                                           GordianKeyPair pKeyPair,
126                                           char[] pPassword) throws GordianException;
127 }