Add signing to keystore
Change the keystore to keep the private keys in keystore. When returned, it uses the OpenSSL representation of the key to allow users to use it in various operations through the OpenSSL ENGINE that connects to keystore. Change-Id: I3681f98cb2ec49ffc4a49f3821909313b4ab5735
This commit is contained in:
@@ -155,6 +155,78 @@ public class KeyStore {
|
||||
return mError == KEY_NOT_FOUND;
|
||||
}
|
||||
|
||||
private boolean generate(byte[] key) {
|
||||
execute('a', key);
|
||||
return mError == NO_ERROR;
|
||||
}
|
||||
|
||||
public boolean generate(String key) {
|
||||
return generate(getBytes(key));
|
||||
}
|
||||
|
||||
private boolean importKey(byte[] keyName, byte[] key) {
|
||||
execute('m', keyName, key);
|
||||
return mError == NO_ERROR;
|
||||
}
|
||||
|
||||
public boolean importKey(String keyName, byte[] key) {
|
||||
return importKey(getBytes(keyName), key);
|
||||
}
|
||||
|
||||
private byte[] getPubkey(byte[] key) {
|
||||
ArrayList<byte[]> values = execute('b', key);
|
||||
return (values == null || values.isEmpty()) ? null : values.get(0);
|
||||
}
|
||||
|
||||
public byte[] getPubkey(String key) {
|
||||
return getPubkey(getBytes(key));
|
||||
}
|
||||
|
||||
private boolean delKey(byte[] key) {
|
||||
execute('k', key);
|
||||
return mError == NO_ERROR;
|
||||
}
|
||||
|
||||
public boolean delKey(String key) {
|
||||
return delKey(getBytes(key));
|
||||
}
|
||||
|
||||
private byte[] sign(byte[] keyName, byte[] data) {
|
||||
final ArrayList<byte[]> values = execute('n', keyName, data);
|
||||
return (values == null || values.isEmpty()) ? null : values.get(0);
|
||||
}
|
||||
|
||||
public byte[] sign(String key, byte[] data) {
|
||||
return sign(getBytes(key), data);
|
||||
}
|
||||
|
||||
private boolean verify(byte[] keyName, byte[] data, byte[] signature) {
|
||||
execute('v', keyName, data, signature);
|
||||
return mError == NO_ERROR;
|
||||
}
|
||||
|
||||
public boolean verify(String key, byte[] data, byte[] signature) {
|
||||
return verify(getBytes(key), data, signature);
|
||||
}
|
||||
|
||||
private boolean grant(byte[] key, byte[] uid) {
|
||||
execute('x', key, uid);
|
||||
return mError == NO_ERROR;
|
||||
}
|
||||
|
||||
public boolean grant(String key, int uid) {
|
||||
return grant(getBytes(key), Integer.toString(uid).getBytes());
|
||||
}
|
||||
|
||||
private boolean ungrant(byte[] key, byte[] uid) {
|
||||
execute('y', key, uid);
|
||||
return mError == NO_ERROR;
|
||||
}
|
||||
|
||||
public boolean ungrant(String key, int uid) {
|
||||
return ungrant(getBytes(key), Integer.toString(uid).getBytes());
|
||||
}
|
||||
|
||||
public int getLastError() {
|
||||
return mError;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user