• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2023 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //      http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15 ////////////////////////////////////////////////////////////////////////////////
16 
17 package com.google.crypto.tink.signature;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 import static com.google.common.truth.TruthJUnit.assume;
21 
22 import com.google.crypto.tink.Key;
23 import com.google.crypto.tink.KeysetHandle;
24 import com.google.crypto.tink.testing.TestUtil;
25 import org.junit.BeforeClass;
26 import org.junit.Test;
27 import org.junit.experimental.theories.DataPoints;
28 import org.junit.experimental.theories.FromDataPoints;
29 import org.junit.experimental.theories.Theories;
30 import org.junit.experimental.theories.Theory;
31 import org.junit.runner.RunWith;
32 
33 @RunWith(Theories.class)
34 public final class PredefinedSignatureParametersTest {
35   @BeforeClass
setUp()36   public static void setUp() throws Exception {
37     SignatureConfig.register();
38   }
39 
40   @DataPoints("AllParameters")
41   public static final SignatureParameters[] TEMPLATES =
42       new SignatureParameters[] {
43         PredefinedSignatureParameters.ECDSA_P256,
44         PredefinedSignatureParameters.ECDSA_P384,
45         PredefinedSignatureParameters.ECDSA_P521,
46         PredefinedSignatureParameters.ECDSA_P256_IEEE_P1363,
47         PredefinedSignatureParameters.ECDSA_P384_IEEE_P1363,
48         PredefinedSignatureParameters.ECDSA_P256_IEEE_P1363_WITHOUT_PREFIX,
49         PredefinedSignatureParameters.ECDSA_P521_IEEE_P1363,
50         PredefinedSignatureParameters.ED25519,
51         PredefinedSignatureParameters.ED25519WithRawOutput,
52         PredefinedSignatureParameters.RSA_SSA_PKCS1_3072_SHA256_F4,
53         PredefinedSignatureParameters.RSA_SSA_PKCS1_3072_SHA256_F4_WITHOUT_PREFIX,
54         PredefinedSignatureParameters.RSA_SSA_PKCS1_4096_SHA512_F4,
55         PredefinedSignatureParameters.RSA_SSA_PSS_3072_SHA256_SHA256_32_F4,
56         PredefinedSignatureParameters.RSA_SSA_PSS_4096_SHA512_SHA512_64_F4,
57       };
58 
59   @Theory
testInstantiation(@romDataPoints"AllParameters") SignatureParameters parameters)60   public void testInstantiation(@FromDataPoints("AllParameters") SignatureParameters parameters)
61       throws Exception {
62     if (TestUtil.isTsan()) {
63       assume().that(parameters).isInstanceOf(Ed25519Parameters.class);
64     }
65 
66     Key key = KeysetHandle.generateNew(parameters).getAt(0).getKey();
67     assertThat(key.getParameters()).isEqualTo(parameters);
68   }
69 
70   @Test
testTypes()71   public void testTypes() throws Exception {
72     assertThat(PredefinedSignatureParameters.ECDSA_P256).isNotNull();
73     assertThat(PredefinedSignatureParameters.ECDSA_P384).isNotNull();
74     assertThat(PredefinedSignatureParameters.ECDSA_P521).isNotNull();
75     assertThat(PredefinedSignatureParameters.ECDSA_P256_IEEE_P1363).isNotNull();
76     assertThat(PredefinedSignatureParameters.ECDSA_P384_IEEE_P1363).isNotNull();
77     assertThat(PredefinedSignatureParameters.ECDSA_P256_IEEE_P1363_WITHOUT_PREFIX).isNotNull();
78     assertThat(PredefinedSignatureParameters.ECDSA_P521_IEEE_P1363).isNotNull();
79     assertThat(PredefinedSignatureParameters.ED25519).isNotNull();
80     assertThat(PredefinedSignatureParameters.ED25519WithRawOutput).isNotNull();
81     assertThat(PredefinedSignatureParameters.RSA_SSA_PKCS1_3072_SHA256_F4).isNotNull();
82     assertThat(PredefinedSignatureParameters.RSA_SSA_PKCS1_3072_SHA256_F4_WITHOUT_PREFIX)
83         .isNotNull();
84     assertThat(PredefinedSignatureParameters.RSA_SSA_PKCS1_4096_SHA512_F4).isNotNull();
85     assertThat(PredefinedSignatureParameters.RSA_SSA_PSS_3072_SHA256_SHA256_32_F4).isNotNull();
86     assertThat(PredefinedSignatureParameters.RSA_SSA_PSS_4096_SHA512_SHA512_64_F4).isNotNull();
87   }
88 }
89