• 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.tinkuser;
18 
19 import com.google.crypto.tink.Aead;
20 import com.google.crypto.tink.BinaryKeysetReader;
21 import com.google.crypto.tink.KeysetHandle;
22 import com.google.crypto.tink.KeysetReader;
23 import com.google.crypto.tink.aead.AeadKeyTemplates;
24 import com.google.crypto.tink.daead.DeterministicAeadKeyTemplates;
25 import com.google.crypto.tink.hybrid.HybridKeyTemplates;
26 import com.google.crypto.tink.mac.MacKeyTemplates;
27 import com.google.crypto.tink.signature.SignatureKeyTemplates;
28 import com.google.crypto.tink.streamingaead.StreamingAeadKeyTemplates;
29 import java.io.IOException;
30 import java.security.GeneralSecurityException;
31 
32 /** Example user code */
33 public final class TinkUser {
useReadNoSecret(byte[] b)34   public Aead useReadNoSecret(byte[] b) throws GeneralSecurityException {
35     return KeysetHandle.readNoSecret(b).getPrimitive(Aead.class);
36   }
useBinaryReader(byte[] b)37   public Aead useBinaryReader(byte[] b) throws GeneralSecurityException, IOException {
38     return KeysetHandle.readNoSecret(BinaryKeysetReader.withBytes(b)).getPrimitive(Aead.class);
39   }
useAnyReader(KeysetReader r)40   public Aead useAnyReader(KeysetReader r) throws GeneralSecurityException, IOException {
41     return KeysetHandle.readNoSecret(r).getPrimitive(Aead.class);
42   }
43 
macKeyTemplateUser()44   public void macKeyTemplateUser() throws Exception {
45     Object a = KeysetHandle.generateNew(MacKeyTemplates.HMAC_SHA256_128BITTAG);
46     Object b = KeysetHandle.generateNew(MacKeyTemplates.HMAC_SHA256_256BITTAG);
47     Object c = KeysetHandle.generateNew(MacKeyTemplates.HMAC_SHA512_256BITTAG);
48     Object d = KeysetHandle.generateNew(MacKeyTemplates.HMAC_SHA512_512BITTAG);
49     Object e = KeysetHandle.generateNew(MacKeyTemplates.AES_CMAC);
50   }
51 
aeadKeyTemplateUser()52   public void aeadKeyTemplateUser() throws Exception {
53     Object a = KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM);
54     Object b = KeysetHandle.generateNew(AeadKeyTemplates.AES256_GCM);
55     Object c = KeysetHandle.generateNew(AeadKeyTemplates.AES128_EAX);
56     Object d = KeysetHandle.generateNew(AeadKeyTemplates.AES256_EAX);
57     Object e = KeysetHandle.generateNew(AeadKeyTemplates.AES128_CTR_HMAC_SHA256);
58     Object f = KeysetHandle.generateNew(AeadKeyTemplates.AES256_CTR_HMAC_SHA256);
59     Object g = KeysetHandle.generateNew(AeadKeyTemplates.CHACHA20_POLY1305);
60     Object h = KeysetHandle.generateNew(AeadKeyTemplates.XCHACHA20_POLY1305);
61   }
62 
deterministicAeadKeyTemplateUser()63   public void deterministicAeadKeyTemplateUser() throws Exception {
64     Object a = KeysetHandle.generateNew(DeterministicAeadKeyTemplates.AES256_SIV);
65   }
66 
streamingAeadKeyTemplateUser()67   public void streamingAeadKeyTemplateUser() throws Exception {
68     Object a = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES128_CTR_HMAC_SHA256_4KB);
69     Object b = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES128_CTR_HMAC_SHA256_1MB);
70     Object c = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES256_CTR_HMAC_SHA256_4KB);
71     Object d = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES256_CTR_HMAC_SHA256_1MB);
72     Object e = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES128_GCM_HKDF_4KB);
73     Object f = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES128_GCM_HKDF_1MB);
74     Object g = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES256_GCM_HKDF_4KB);
75     Object h = KeysetHandle.generateNew(StreamingAeadKeyTemplates.AES256_GCM_HKDF_1MB);
76   }
77 
signatureKeyTemplateUser()78   public void signatureKeyTemplateUser() throws Exception {
79     Object a = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P256);
80     Object b = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P384);
81     Object c = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P521);
82     Object d = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P256_IEEE_P1363);
83     Object e = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P384_IEEE_P1363);
84     Object f = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P256_IEEE_P1363_WITHOUT_PREFIX);
85     Object g = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P521_IEEE_P1363);
86     Object h = KeysetHandle.generateNew(SignatureKeyTemplates.ED25519);
87     Object i = KeysetHandle.generateNew(SignatureKeyTemplates.ED25519WithRawOutput);
88     Object j = KeysetHandle.generateNew(SignatureKeyTemplates.RSA_SSA_PKCS1_3072_SHA256_F4);
89     Object k =
90         KeysetHandle.generateNew(SignatureKeyTemplates.RSA_SSA_PKCS1_3072_SHA256_F4_WITHOUT_PREFIX);
91     Object l = KeysetHandle.generateNew(SignatureKeyTemplates.RSA_SSA_PKCS1_4096_SHA512_F4);
92     Object m = KeysetHandle.generateNew(SignatureKeyTemplates.RSA_SSA_PSS_3072_SHA256_SHA256_32_F4);
93     Object n = KeysetHandle.generateNew(SignatureKeyTemplates.RSA_SSA_PSS_4096_SHA512_SHA512_64_F4);
94   }
95 
hybridKeyTemplateUser()96   public void hybridKeyTemplateUser() throws Exception {
97     Object a = KeysetHandle.generateNew(HybridKeyTemplates.ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM);
98     Object b =
99         KeysetHandle.generateNew(
100             HybridKeyTemplates.ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM_COMPRESSED_WITHOUT_PREFIX);
101     Object c =
102         KeysetHandle.generateNew(
103             HybridKeyTemplates.ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256);
104   }
105 }
106