use of com.google.crypto.tink.KeysetReader in project tink by google.
the class CreatePublicKeysetCommandTest method testCreate_cleartextPrivate_shouldCreateCleartextPublic.
private void testCreate_cleartextPrivate_shouldCreateCleartextPublic(KeyTemplate template, KeyType type) throws Exception {
// Create a cleartext private keyset.
String masterKeyUri = null;
String credentialPath = null;
InputStream inputStream1 = TinkeyUtil.createKeyset(template, INPUT_FORMAT, masterKeyUri, credentialPath);
KeysetReader privateReader = TinkeyUtil.createKeysetReader(inputStream1, INPUT_FORMAT);
// Create the public keyset.
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
inputStream1.mark(inputStream1.available());
CreatePublicKeysetCommand.create(outputStream, OUTPUT_FORMAT, inputStream1, INPUT_FORMAT, masterKeyUri, credentialPath);
inputStream1.reset();
InputStream inputStream2 = new ByteArrayInputStream(outputStream.toByteArray());
KeysetReader publicReader = TinkeyUtil.createKeysetReader(inputStream2, OUTPUT_FORMAT);
assertPublicKey(type, privateReader, publicReader);
}
use of com.google.crypto.tink.KeysetReader in project tink by google.
the class CreatePublicKeysetCommandTest method testCreate_encryptedPrivate_shouldCreateCleartextPublic.
private void testCreate_encryptedPrivate_shouldCreateCleartextPublic(KeyTemplate template, KeyType type) throws Exception {
// This test requires KMS/internet access and thus cannot run on RBE.
assumeFalse(TestUtil.isRemoteBuildExecution());
// Create an input stream containing a cleartext private keyset.
String masterKeyUri = TestUtil.RESTRICTED_CRYPTO_KEY_URI;
String credentialPath = TestUtil.SERVICE_ACCOUNT_FILE;
InputStream inputStream1 = TinkeyUtil.createKeyset(template, INPUT_FORMAT, masterKeyUri, credentialPath);
inputStream1.mark(inputStream1.available());
final KeysetHandle privateHandle = TinkeyUtil.getKeysetHandle(inputStream1, INPUT_FORMAT, masterKeyUri, credentialPath);
inputStream1.reset();
KeysetReader privateReader = new KeysetReader() {
@Override
public Keyset read() throws IOException {
return TestUtil.getKeyset(privateHandle);
}
@Override
public EncryptedKeyset readEncrypted() throws IOException {
throw new IOException("Not Implemented");
}
};
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
inputStream1.mark(inputStream1.available());
CreatePublicKeysetCommand.create(outputStream, OUTPUT_FORMAT, inputStream1, INPUT_FORMAT, masterKeyUri, credentialPath);
inputStream1.reset();
InputStream inputStream2 = new ByteArrayInputStream(outputStream.toByteArray());
KeysetReader publicReader = TinkeyUtil.createKeysetReader(inputStream2, OUTPUT_FORMAT);
assertPublicKey(type, privateReader, publicReader);
}
use of com.google.crypto.tink.KeysetReader in project tink by google.
the class SignaturePemKeysetReaderTest method read_onePEM_oneRSAPublicKey_oneECPublicKey_eCPublicKeyShouldBeIgnored.
@Test
public void read_onePEM_oneRSAPublicKey_oneECPublicKey_eCPublicKeyShouldBeIgnored() throws Exception {
String pem = "-----BEGIN PUBLIC KEY-----\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv90Xf/NN1lRGBofJQzJf\n" + "lHvo6GAf25GGQGaMmD9T1ZP71CCbJ69lGIS/6akFBg6ECEHGM2EZ4WFLCdr5byUq\n" + "GCf4mY4WuOn+AcwzwAoDz9ASIFcQOoPclO7JYdfo2SOaumumdb5S/7FkKJ70TGYW\n" + "j9aTOYWsCcaojbjGDY/JEXz3BSRIngcgOvXBmV1JokcJ/LsrJD263WE9iUknZDhB\n" + "K7y4ChjHNqL8yJcw/D8xLNiJtIyuxiZ00p/lOVUInr8C/a2C1UGCgEGuXZAEGAdO\n" + "NVez52n5TLvQP3hRd4MTi7YvfhezRcA4aXyIDOv+TYi4p+OVTYQ+FMbkgoWBm5bq\n" + "wQIDAQAB\n" + "-----END PUBLIC KEY-----\n" + "-----BEGIN PUBLIC KEY-----\n" + "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7BiT5K5pivl4Qfrt9hRhRREMUzj/\n" + "8suEJ7GlMxZfvdcpbi/GhYPuJi8Gn2H1NaMJZcLZo5MLPKyyGT5u3u1VBQ==\n" + "-----END PUBLIC KEY-----\n";
KeysetReader keysetReader = SignaturePemKeysetReader.newBuilder().addPem(pem, PemKeyType.RSA_PSS_2048_SHA256).build();
Keyset ks = keysetReader.read();
Keyset.Key key = ks.getKey(0);
KeyData keyData = key.getKeyData();
RsaSsaPssPublicKey publicKeyProto = RsaSsaPssPublicKey.parseFrom(keyData.getValue(), ExtensionRegistryLite.getEmptyRegistry());
RSAPublicKey publicKey = (RSAPublicKey) PemKeyType.RSA_PSS_2048_SHA256.readKey(new BufferedReader(new StringReader(pem)));
assertThat(ks.getKeyCount()).isEqualTo(1);
assertThat(ks.getPrimaryKeyId()).isEqualTo(key.getKeyId());
assertThat(key.getStatus()).isEqualTo(KeyStatusType.ENABLED);
assertThat(key.getOutputPrefixType()).isEqualTo(OutputPrefixType.RAW);
assertThat(keyData.getTypeUrl()).isEqualTo(new RsaSsaPssVerifyKeyManager().getKeyType());
assertThat(keyData.getKeyMaterialType()).isEqualTo(KeyMaterialType.ASYMMETRIC_PUBLIC);
assertThat(publicKeyProto.getParams().getSigHash()).isEqualTo(HashType.SHA256);
assertThat(publicKeyProto.getParams().getMgf1Hash()).isEqualTo(HashType.SHA256);
assertThat(publicKeyProto.getParams().getSaltLength()).isEqualTo(32);
assertThat(publicKeyProto.getN().toByteArray()).isEqualTo(SigUtil.toUnsignedIntByteString(publicKey.getModulus()).toByteArray());
assertThat(publicKeyProto.getE().toByteArray()).isEqualTo(SigUtil.toUnsignedIntByteString(publicKey.getPublicExponent()).toByteArray());
}
use of com.google.crypto.tink.KeysetReader in project tink by google.
the class SignaturePemKeysetReaderTest method read_ensureUnsignedIntRepresentation.
@Test
public void read_ensureUnsignedIntRepresentation() throws Exception {
String pem = "-----BEGIN PUBLIC KEY-----\n" + "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1M5IlCiYLvNDGG65DmoErfQTZjWa\n" + "UI/nrGayg/BmQa4f9db4zQRCc5IwErn3JtlLDAxQ8fXUoy99klswBEMZ/A==\n" + "-----END PUBLIC KEY-----";
KeysetReader keysetReader = SignaturePemKeysetReader.newBuilder().addPem(pem, PemKeyType.ECDSA_P256_SHA256).build();
Keyset ks = keysetReader.read();
Keyset.Key key = ks.getKey(0);
KeyData keyData = key.getKeyData();
EcdsaPublicKey publicKeyProto = EcdsaPublicKey.parseFrom(keyData.getValue(), ExtensionRegistryLite.getEmptyRegistry());
assertThat(publicKeyProto.getX().toByteArray()).isEqualTo(TestUtil.hexDecode("D4CE489428982EF343186EB90E6A04ADF41366359A508FE7AC66B283F06641AE"));
}
use of com.google.crypto.tink.KeysetReader in project tink by google.
the class SignaturePemKeysetReaderTest method read_twoPEMs_oneRSAPublicKey_oneECPublicKey_shouldWork.
@Test
public void read_twoPEMs_oneRSAPublicKey_oneECPublicKey_shouldWork() throws Exception {
String rsaPem = "-----BEGIN PUBLIC KEY-----\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv90Xf/NN1lRGBofJQzJf\n" + "lHvo6GAf25GGQGaMmD9T1ZP71CCbJ69lGIS/6akFBg6ECEHGM2EZ4WFLCdr5byUq\n" + "GCf4mY4WuOn+AcwzwAoDz9ASIFcQOoPclO7JYdfo2SOaumumdb5S/7FkKJ70TGYW\n" + "j9aTOYWsCcaojbjGDY/JEXz3BSRIngcgOvXBmV1JokcJ/LsrJD263WE9iUknZDhB\n" + "K7y4ChjHNqL8yJcw/D8xLNiJtIyuxiZ00p/lOVUInr8C/a2C1UGCgEGuXZAEGAdO\n" + "NVez52n5TLvQP3hRd4MTi7YvfhezRcA4aXyIDOv+TYi4p+OVTYQ+FMbkgoWBm5bq\n" + "wQIDAQAB\n" + "-----END PUBLIC KEY-----\n";
String ecPem = "-----BEGIN PUBLIC KEY-----\n" + "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7BiT5K5pivl4Qfrt9hRhRREMUzj/\n" + "8suEJ7GlMxZfvdcpbi/GhYPuJi8Gn2H1NaMJZcLZo5MLPKyyGT5u3u1VBQ==\n" + "-----END PUBLIC KEY-----\n";
KeysetReader keysetReader = SignaturePemKeysetReader.newBuilder().addPem(rsaPem, PemKeyType.RSA_PSS_2048_SHA256).addPem(ecPem, PemKeyType.ECDSA_P256_SHA256).build();
Keyset ks = keysetReader.read();
assertThat(ks.getKeyCount()).isEqualTo(2);
Keyset.Key firstKey = ks.getKey(0);
assertThat(ks.getPrimaryKeyId()).isEqualTo(firstKey.getKeyId());
KeyData keyData = firstKey.getKeyData();
RsaSsaPssPublicKey rsaPublicKeyProto = RsaSsaPssPublicKey.parseFrom(keyData.getValue(), ExtensionRegistryLite.getEmptyRegistry());
RSAPublicKey rsaPublicKey = (RSAPublicKey) PemKeyType.RSA_PSS_2048_SHA256.readKey(new BufferedReader(new StringReader(rsaPem)));
assertThat(firstKey.getStatus()).isEqualTo(KeyStatusType.ENABLED);
assertThat(firstKey.getOutputPrefixType()).isEqualTo(OutputPrefixType.RAW);
assertThat(keyData.getTypeUrl()).isEqualTo(new RsaSsaPssVerifyKeyManager().getKeyType());
assertThat(keyData.getKeyMaterialType()).isEqualTo(KeyMaterialType.ASYMMETRIC_PUBLIC);
assertThat(rsaPublicKeyProto.getParams().getSigHash()).isEqualTo(HashType.SHA256);
assertThat(rsaPublicKeyProto.getParams().getMgf1Hash()).isEqualTo(HashType.SHA256);
assertThat(rsaPublicKeyProto.getParams().getSaltLength()).isEqualTo(32);
assertThat(rsaPublicKeyProto.getN().toByteArray()).isEqualTo(SigUtil.toUnsignedIntByteString(rsaPublicKey.getModulus()).toByteArray());
assertThat(rsaPublicKeyProto.getE().toByteArray()).isEqualTo(SigUtil.toUnsignedIntByteString(rsaPublicKey.getPublicExponent()).toByteArray());
Keyset.Key secondKey = ks.getKey(1);
keyData = secondKey.getKeyData();
EcdsaPublicKey ecPublicKeyProto = EcdsaPublicKey.parseFrom(keyData.getValue(), ExtensionRegistryLite.getEmptyRegistry());
ECPublicKey ecPublicKey = (ECPublicKey) PemKeyType.ECDSA_P256_SHA256.readKey(new BufferedReader(new StringReader(ecPem)));
assertThat(secondKey.getStatus()).isEqualTo(KeyStatusType.ENABLED);
assertThat(secondKey.getOutputPrefixType()).isEqualTo(OutputPrefixType.RAW);
assertThat(keyData.getTypeUrl()).isEqualTo(new EcdsaVerifyKeyManager().getKeyType());
assertThat(keyData.getKeyMaterialType()).isEqualTo(KeyMaterialType.ASYMMETRIC_PUBLIC);
assertThat(ecPublicKeyProto.getParams().getHashType()).isEqualTo(HashType.SHA256);
assertThat(ecPublicKeyProto.getParams().getCurve()).isEqualTo(EllipticCurveType.NIST_P256);
assertThat(ecPublicKeyProto.getParams().getEncoding()).isEqualTo(EcdsaSignatureEncoding.DER);
assertThat(ecPublicKeyProto.getX().toByteArray()).isEqualTo(SigUtil.toUnsignedIntByteString(ecPublicKey.getW().getAffineX()).toByteArray());
assertThat(ecPublicKeyProto.getY().toByteArray()).isEqualTo(SigUtil.toUnsignedIntByteString(ecPublicKey.getW().getAffineY()).toByteArray());
}
Aggregations