diff --git a/core/java/src/net/i2p/crypto/provider/I2PProvider.java b/core/java/src/net/i2p/crypto/provider/I2PProvider.java new file mode 100644 index 000000000..9cc47cbb2 --- /dev/null +++ b/core/java/src/net/i2p/crypto/provider/I2PProvider.java @@ -0,0 +1,37 @@ +package net.i2p.crypto.provider; + +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.Provider; + +public final class I2PProvider extends Provider { + public static String PROVIDER_NAME = "I2P"; + private static String info = "I2P Security Provider v0.1, implementing" + + "several algorithms used by I2P."; + + /** + * Construct a new provider. This should only be required when + * using runtime registration of the provider using the + * Security.addProvider() mechanism. + */ + public I2PProvider() { + super(PROVIDER_NAME, 0.1, info); + + AccessController.doPrivileged(new PrivilegedAction() { + @Override + public Void run() { + setup(); + return null; + } + }); + } + + private void setup() { + // TODO: Implement SPIs for existing code + //put("Cipher.AES", "net.i2p.crypto.provider.CipherSpi$aesCBC"); + //put("Cipher.ElGamal", "net.i2p.crypto.provider.CipherSpi$elGamal"); + //put("Mac.HmacMD5-I2P", "net.i2p.crypto.provider.MacSpi"); + put("MessageDigest.SHA-1", "net.i2p.crypto.SHA1"); + //put("Signature.SHA1withDSA", "net.i2p.crypto.provider.SignatureSpi"); + } +}