x25519 pre init
parent
53e658fa7b
commit
19ac791138
|
@ -3,18 +3,18 @@ static size_t len_key = LENKEY;
|
|||
struct keysPair createKeyPair(const uint8_t *priv, const uint8_t *pub) {
|
||||
struct keysPair ret;
|
||||
bzero(ret.pubKey, sizeof(ret.pubKey));
|
||||
EVP_PKEY_CTX *ctx =
|
||||
/*(EVP_CIPHER_CTX*)*/ EVP_PKEY_CTX_new_id(NID_X25519, NULL);
|
||||
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(NID_X25519, NULL);
|
||||
if (!ctx) {
|
||||
fprintf(stderr, "Cant create x25519 pair\n");
|
||||
return ret;
|
||||
}
|
||||
EVP_PKEY *privKey =
|
||||
EVP_PKEY_new_raw_private_key(EVP_PKEY_X25519, NULL, priv, len_key);
|
||||
EVP_PKEY * privKey = EVP_PKEY_new_raw_private_key(EVP_PKEY_X25519, NULL, priv, len_key);
|
||||
getRawPubKey(privKey, ret.pubKey);
|
||||
// EVP_PKEY_get_raw_public_key(privKey, ret.pubKey, &len_key);
|
||||
ret.privKey = privKey;
|
||||
// ret.pubKey = pubKey;
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
ctx = EVP_PKEY_CTX_new(privKey, NULL);
|
||||
ret.pKeyCtx = ctx;
|
||||
return ret;
|
||||
}
|
||||
|
@ -86,9 +86,9 @@ uint8_t *getSharedKey(struct keysPair *pair, const uint8_t *pubPeer,
|
|||
|
||||
EVP_PKEY *pkey =
|
||||
EVP_PKEY_new_raw_public_key(NID_X25519, NULL, pubPeer, len_key);
|
||||
|
||||
|
||||
if (EVP_PKEY_derive_set_peer(pair->pKeyCtx, pkey) <= 0) {
|
||||
fprintf(stderr, "Seet peer key error\n");
|
||||
fprintf(stderr, "Set peer key error\n");
|
||||
EVP_PKEY_free(pkey);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -213,9 +213,7 @@ int lua_freeKeyPair(lua_State *L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int lua_freeSharedKey(lua_State *L) {
|
||||
|
||||
}
|
||||
//int lua_freeSharedKey(lua_State *L) {}
|
||||
|
||||
int lua_createKeyPair(lua_State *L) {
|
||||
uint8_t *pub = (uint8_t *)luaL_checkstring(L, 1);
|
||||
|
@ -240,6 +238,15 @@ INITLUAFUNC(getPubKey){
|
|||
lua_pushstring(L,in->pubKey);
|
||||
return 1;
|
||||
}
|
||||
INITLUAFUNC(getPrivKey){
|
||||
struct keysPair *in = (struct keysPair *)lua_touserdata(L, 1);
|
||||
if(in == NULL) luaL_error(L,"KeysPair broken");
|
||||
uint8_t retStr[LENKEY+1];
|
||||
retStr[LENKEY]=0;
|
||||
getRawPrivKey(in->privKey,retStr);
|
||||
lua_pushlstring(L, retStr, LENKEY+1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int lua_getSharedKey(lua_State *L) {
|
||||
size_t skeylen;
|
||||
|
|
|
@ -21,6 +21,7 @@ INITLUAFUNC(getAESData);
|
|||
INITLUAFUNC(getAESData_len);
|
||||
INITLUAFUNC(createAESData);
|
||||
INITLUAFUNC(getPubKey);
|
||||
INITLUAFUNC(getPrivKey);
|
||||
//INITLUAFUNC(setKeyPair);
|
||||
|
||||
struct lua_AESData{
|
||||
|
@ -28,13 +29,14 @@ struct lua_AESData{
|
|||
size_t size;
|
||||
};
|
||||
|
||||
|
||||
static const struct luaL_reg encdeclib [] = {
|
||||
{"genRandBytes", lua_genRandBytes},
|
||||
{"AESenc", lua_AESenc},
|
||||
{"AESdec", lua_AESdec},
|
||||
{"getKeyPair", lua_getKeyPair},
|
||||
{"freeKeyPair", lua_freeKeyPair},
|
||||
{"freeSharedKey", lua_freeSharedKey},
|
||||
//{"freeSharedKey", lua_freeSharedKey},
|
||||
{"getSharedKey", lua_getSharedKey},
|
||||
{"createKeyPair", lua_createKeyPair},
|
||||
{"getSharedKey", lua_getSharedKey},
|
||||
|
@ -43,6 +45,7 @@ static const struct luaL_reg encdeclib [] = {
|
|||
LUAPAIR(getAESData_len)
|
||||
LUAPAIR(createAESData)
|
||||
LUAPAIR(getPubKey)
|
||||
LUAPAIR(getPrivKey)
|
||||
// LUAPAIR(setKeyPair)
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
|
|
@ -3,16 +3,18 @@ baes = {}
|
|||
function baes:newKeyPair(keyPair)
|
||||
local obj = {}
|
||||
obj.keyPair=keyPair or {}
|
||||
function obj.initKeyPair(pub,priv)
|
||||
function obj:initKeyPair(pub,priv)
|
||||
--print("init")
|
||||
if not obj.keyPair == {} then return false end
|
||||
keyPair = {}
|
||||
p = priv or nil
|
||||
pb = pub or nil
|
||||
if p == nil or pb == nil then
|
||||
--print("geKeyPair()")
|
||||
-- print("geKeyPair()")
|
||||
keyPair = encdec.getKeyPair();
|
||||
else
|
||||
--print("p != {} and pb != {}")
|
||||
-- print("p != {} and pb != {}")
|
||||
-- print("Pub: ", pub, "priv: ",priv)
|
||||
keyPair = encdec.createKeyPair(pub,priv)
|
||||
end
|
||||
obj.keyPair = keyPair
|
||||
|
@ -30,7 +32,15 @@ function baes:newKeyPair(keyPair)
|
|||
--print("ret pub key",encdec.getPubKey(obj.keyPair))
|
||||
return encdec.getPubKey(obj.keyPair)
|
||||
end
|
||||
function obj.getSharedKey(key)
|
||||
function obj:getPrivKey()
|
||||
if obj.keyPair == nil then
|
||||
print("PubKey is nil")
|
||||
return nil
|
||||
end
|
||||
--print("ret pub key",encdec.getPubKey(obj.keyPair))
|
||||
return encdec.getPrivKey(obj.keyPair)
|
||||
end
|
||||
function obj:getSharedKey(key)
|
||||
--print("getSharedKey and pub is: ", key)
|
||||
if obj.keyPair == {} then return nil end
|
||||
if key == nil then error("PubKey not will be nil") end
|
||||
|
|
|
@ -83,26 +83,45 @@ local function checkAllTypes(b,msg)
|
|||
|
||||
|
||||
end
|
||||
print("AES check!")
|
||||
checkAllTypes(b,"is example message aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasdjasdjkfsdfjasdfjiaodfasdfjiasdijfasidfadfiaojsdijfoasdfiaojsdfiojasdfijasdfuhasdufhasdiufhasidufashdfiasudhfiasudhfiuasdfihuSOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFSDJKFASDJFASJDFQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
|
||||
print("\n\n\n\n\n\n\n\n\n\nx25519 + AES check!\n\n\n\n\n\n\n\n\n\n")
|
||||
k1 = bacteria_aes:newKeyPair()
|
||||
k2 = bacteria_aes:newKeyPair()
|
||||
k1:initKeyPair()
|
||||
k2:initKeyPair()
|
||||
pub1 = k1:getPubKey()
|
||||
pub2 = k2:getPubKey()
|
||||
priv2 = k2:getPrivKey()
|
||||
|
||||
--checkAllTypes(b,"is example message aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasdjasdjkfsdfjasdfjiaodfasdfjiasdijfasidfadfiaojsdijfoasdfiaojsdfiojasdfijasdfuhasdufhasdiufhasidufashdfiasudhfiasudhfiuasdfihuSOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFSDJKFASDJFASJDFQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
|
||||
k1 = bacteria_aes.newKeyPair()
|
||||
k2 = bacteria_aes.newKeyPair()
|
||||
k1.initKeyPair()
|
||||
k2.initKeyPair()
|
||||
pub1 = k1.getPubKey()
|
||||
pub2 = k2.getPubKey()
|
||||
|
||||
|
||||
k3 = bacteria_aes:newKeyPair()
|
||||
k3:initKeyPair(pub2,priv2)
|
||||
--print("Pub1: ", pub1)
|
||||
--print("Priv2: ", priv2)
|
||||
--print("Pub2: ", pub2)
|
||||
shared0=k1.getSharedKey(pub2)
|
||||
shared1=k2.getSharedKey(pub1)
|
||||
|
||||
pub3 = k3:getPubKey()
|
||||
priv3 = k3:getPrivKey()
|
||||
|
||||
--print("Pub3: ", pub3)
|
||||
--print("Priv3: ", priv3)
|
||||
|
||||
shared0=k1:getSharedKey(pub2)
|
||||
shared1=k2:getSharedKey(pub1)
|
||||
shared2=k3:getSharedKey(pub1)
|
||||
--print("Shared0:", shared0)
|
||||
--print("Shared1:", shared1)
|
||||
|
||||
aes1=bacteria_aes.new(shared0, "123456789012345")
|
||||
aes=bacteria_aes.new(shared1, "123456789012345")
|
||||
aes1=bacteria_aes:new(shared0, "123456789012345")
|
||||
aes=bacteria_aes:new(shared1, "123456789012345")
|
||||
aes1:encrypt("TestMsg W10013291825328197ASHFASDF8932ASDF8532BUSAFD893251BSDFA78532BFW783125HBSFAD789aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasdjasdjkfsdfjasdfjiaodfasdfjiasdijfasidfadfiaojsdijfoasdfiaojsdfiojasdfijasdfuhasdufhasdiufhasidufashdfiasudhfiasudhfiuasdfihuSOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFSDJKFASDJFASJDFQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
|
||||
--print("Encrypted")
|
||||
aes:decrypt(aes1:getAESData_rawEnc())
|
||||
aesdata_dec,saesdata_dec=aes:getAESData_dec()
|
||||
print("Decrypted: ", aesdata_dec)
|
||||
|
||||
k1.clear()
|
||||
k2.clear()
|
||||
k3.clear()
|
||||
|
|
Loading…
Reference in New Issue