InstallCryptoProviders.java

package org.eclipse.californium.oscore;

import java.security.Provider;
import java.security.Security;


import net.i2p.crypto.eddsa.EdDSASecurityProvider;
import org.eclipse.californium.cose.AlgorithmID;
import org.eclipse.californium.cose.CoseException;
import org.eclipse.californium.cose.OneKey;
import org.eclipse.californium.elements.util.Base64;

/**
 * //TODO: Move/restructure
 * @author linuxwolf
 */
public abstract class InstallCryptoProviders {

	// private static final Provider PROVIDER = new BouncyCastleProvider();
    private static final Provider EdDSA = new EdDSASecurityProvider();

    public static void installProvider() {
		// Security.insertProviderAt(PROVIDER, 2);
        Security.insertProviderAt(EdDSA, 1);
    }
    
    public static void uninstallProvider() {
		// Security.removeProvider(PROVIDER.getName());
        Security.removeProvider(EdDSA.getName());
    }
    
    //Rikard: Generate a key to be used for Countersignatures
    public static void generateCounterSignKey() throws CoseException {
    	OneKey myKey = OneKey.generateKey(AlgorithmID.EDDSA);
    	
    	//Print base64 encoded version with both public & private keys
    	byte[] keyObjectBytes = myKey.AsCBOR().EncodeToBytes();
    	String base64_encoded = Base64.encodeBytes(keyObjectBytes);
    	System.out.println("Public & Private: " + base64_encoded);
    	
    	//Print base64 encoded version with only public keys
    	keyObjectBytes = myKey.PublicKey().AsCBOR().EncodeToBytes();
    	base64_encoded = Base64.encodeBytes(keyObjectBytes);
    	System.out.println("Public only: " + base64_encoded);

    }
    
    //Rikard: Return a key to be used for Countersignatures
    public static String getCounterSignKey() throws CoseException {
    	OneKey myKey = OneKey.generateKey(AlgorithmID.EDDSA);
    	byte[] keyObjectBytes = myKey.AsCBOR().EncodeToBytes();
    	String base64_encoded = Base64.encodeBytes(keyObjectBytes);
    	
    	return base64_encoded;

    }
}