/**
* Copyright (c) 2013-2016, The SeedStack authors <http://seedstack.org>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.seedstack.seed.core.internal.crypto;
import com.google.inject.AbstractModule;
import com.google.inject.Key;
import com.google.inject.name.Names;
import org.seedstack.seed.crypto.EncryptionService;
import org.seedstack.seed.crypto.HashingService;
import java.security.KeyStore;
import java.util.Map;
import java.util.Map.Entry;
class CryptoModule extends AbstractModule {
private final Map<Key<EncryptionService>, EncryptionService> encryptionServices;
private final Map<String, KeyStore> keyStores;
public CryptoModule(Map<Key<EncryptionService>, EncryptionService> encryptionServices, Map<String, KeyStore> keyStores) {
this.encryptionServices = encryptionServices;
this.keyStores = keyStores;
}
@Override
protected void configure() {
for (Entry<String, KeyStore> keyStoreEntry : this.keyStores.entrySet()) {
bind(Key.get(KeyStore.class, Names.named(keyStoreEntry.getKey()))).toInstance(keyStoreEntry.getValue());
}
for (Entry<Key<EncryptionService>, EncryptionService> entry : this.encryptionServices.entrySet()) {
bind(entry.getKey()).toInstance(entry.getValue());
}
bind(HashingService.class).to(PBKDF2HashingService.class);
}
}