/** * Creates a set of primitives corresponding to the keys with status=ENABLED in the keyset given * in {@code keysetHandle}, assuming all the corresponding key managers are present (keys with * status!=ENABLED are skipped). * * <p>The returned set is usually later "wrapped" into a class that implements the corresponding * Primitive-interface. * * @return a PrimitiveSet with all instantiated primitives */ public static <P> PrimitiveSet<P> getPrimitives(KeysetHandle keysetHandle) throws GeneralSecurityException { return getPrimitives(keysetHandle, /* customManager= */ null); }
/** * @return a HybridEncrypt primitive from a {@code keysetHandle} and a custom {@code keyManager}. * @throws GeneralSecurityException */ public static HybridEncrypt getPrimitive( KeysetHandle keysetHandle, final KeyManager<HybridEncrypt> keyManager) throws GeneralSecurityException { final PrimitiveSet<HybridEncrypt> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); return new HybridEncrypt() { @Override public byte[] encrypt(final byte[] plaintext, final byte[] contextInfo) throws GeneralSecurityException { return Bytes.concat( primitives.getPrimary().getIdentifier(), primitives.getPrimary().getPrimitive().encrypt(plaintext, contextInfo)); } }; }
/** * @return a PublicKeySign primitive from a {@code keysetHandle} and a custom {@code keyManager}. * @throws GeneralSecurityException */ public static PublicKeySign getPrimitive( KeysetHandle keysetHandle, final KeyManager<PublicKeySign> keyManager) throws GeneralSecurityException { final PrimitiveSet<PublicKeySign> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); return new PublicKeySign() { @Override public byte[] sign(final byte[] data) throws GeneralSecurityException { if (primitives.getPrimary().getOutputPrefixType().equals(OutputPrefixType.LEGACY)) { byte[] formatVersion = new byte[] {CryptoFormat.LEGACY_START_BYTE}; return Bytes.concat( primitives.getPrimary().getIdentifier(), primitives.getPrimary().getPrimitive().sign(Bytes.concat(data, formatVersion))); } return Bytes.concat( primitives.getPrimary().getIdentifier(), primitives.getPrimary().getPrimitive().sign(data)); } }; }
/** * @return a StreamingAead primitive from a {@code keysetHandle} and a custom {@code keyManager}. * @throws GeneralSecurityException */ public static StreamingAead getPrimitive( KeysetHandle keysetHandle, final KeyManager<StreamingAead> keyManager) throws GeneralSecurityException { final PrimitiveSet<StreamingAead> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); return new StreamingAeadHelper(primitives); }
final PrimitiveSet<Aead> pset = Registry.getPrimitives(keysetHandle, keyManager); validate(pset); return new Aead() {
KeysetHandle keysetHandle, final KeyManager<HybridDecrypt> keyManager) throws GeneralSecurityException { final PrimitiveSet<HybridDecrypt> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); return new HybridDecrypt() {
final PrimitiveSet<Mac> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); final byte[] formatVersion = new byte[] {CryptoFormat.LEGACY_START_BYTE};
throws GeneralSecurityException { final PrimitiveSet<DeterministicAead> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); return new DeterministicAead() {
throws GeneralSecurityException { final PrimitiveSet<PublicKeyVerify> primitives = Registry.getPrimitives(keysetHandle, keyManager); validate(primitives); return new PublicKeyVerify() {