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.sign;
18  
19  import io.github.tonywasher.joceanus.gordianknot.api.keypair.GordianKeyPair;
20  import org.bouncycastle.util.Arrays;
21  
22  /**
23   * Signature parameters.
24   */
25  public final class GordianSignParams {
26      /**
27       * KeyPair.
28       */
29      private final GordianKeyPair theKeyPair;
30  
31      /**
32       * Context.
33       */
34      private final byte[] theContext;
35  
36      /**
37       * Constructor.
38       *
39       * @param pKeyPair the keyPair
40       * @param pContext the Context
41       */
42      private GordianSignParams(final GordianKeyPair pKeyPair,
43                                final byte[] pContext) {
44          theKeyPair = pKeyPair;
45          theContext = pContext != null ? Arrays.clone(pContext) : null;
46      }
47  
48      /**
49       * Create keyPair parameters.
50       *
51       * @param pKeyPair the keyPair
52       * @return the new params
53       */
54      public static GordianSignParams keyPair(final GordianKeyPair pKeyPair) {
55          return new GordianSignParams(pKeyPair, null);
56      }
57  
58      /**
59       * Create keyPair and context parameters.
60       *
61       * @param pKeyPair the keyPair
62       * @param pContext the context
63       * @return the new params
64       */
65      public static GordianSignParams keyPair(final GordianKeyPair pKeyPair,
66                                              final byte[] pContext) {
67          return new GordianSignParams(pKeyPair, pContext);
68      }
69  
70      /**
71       * Obtain the keyPair.
72       *
73       * @return the keyPair
74       */
75      public GordianKeyPair getKeyPair() {
76          return theKeyPair;
77      }
78  
79      /**
80       * Obtain the context.
81       *
82       * @return the context
83       */
84      public byte[] getContext() {
85          return theContext == null ? null : Arrays.clone(theContext);
86      }
87  }