mirror of
https://gitlab.com/jusax23/ilmk.git
synced 2024-11-22 14:46:34 +01:00
some updates
This commit is contained in:
parent
2f4fcffbaf
commit
1f7a7c1c99
6 changed files with 145 additions and 12 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
node_modules
|
42
crypto.js
42
crypto.js
|
@ -1,7 +1,8 @@
|
||||||
var node = false;
|
var node = false;
|
||||||
|
var crypto;
|
||||||
|
|
||||||
if (typeof require != "undefined") {
|
if (typeof process != "undefined") {
|
||||||
crypto = require('crypto');
|
crypto = await import('crypto');
|
||||||
if(typeof crypto.webcrypto != "undefined"){
|
if(typeof crypto.webcrypto != "undefined"){
|
||||||
crypto = crypto.webcrypto;
|
crypto = crypto.webcrypto;
|
||||||
console.log("subtle");
|
console.log("subtle");
|
||||||
|
@ -9,15 +10,16 @@ if (typeof require != "undefined") {
|
||||||
node = true;
|
node = true;
|
||||||
console.log("node crypto");
|
console.log("node crypto");
|
||||||
}
|
}
|
||||||
}/*else{
|
}else{
|
||||||
crypto = window.crypto;
|
crypto = window.crypto;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
var asciiList = [];
|
var asciiList = [];
|
||||||
for (var i = 0; i < 256; i++) {
|
for (var i = 0; i < 256; i++) {
|
||||||
asciiList[i]=String.fromCharCode(i);
|
asciiList[i]=String.fromCharCode(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const C = {
|
const C = {
|
||||||
sha256: async (msgBuffer) => {
|
sha256: async (msgBuffer) => {
|
||||||
return node ? new Uint8Array(crypto.createHash("sha256").update(msgBuffer).digest()) :
|
return node ? new Uint8Array(crypto.createHash("sha256").update(msgBuffer).digest()) :
|
||||||
|
@ -31,6 +33,7 @@ const C = {
|
||||||
return C.decode(await C.random(length));
|
return C.decode(await C.random(length));
|
||||||
},
|
},
|
||||||
encode : (data)=>{
|
encode : (data)=>{
|
||||||
|
console.log(data);
|
||||||
if(node){
|
if(node){
|
||||||
return new Uint8Array(Buffer.from(data,"binary"));
|
return new Uint8Array(Buffer.from(data,"binary"));
|
||||||
}else{
|
}else{
|
||||||
|
@ -277,7 +280,7 @@ const C = {
|
||||||
d: await C.AES.encrypt(message,randKey),
|
d: await C.AES.encrypt(message,randKey),
|
||||||
k: await C.RSA.encrypt(randKey,publicKey)
|
k: await C.RSA.encrypt(randKey,publicKey)
|
||||||
};
|
};
|
||||||
return JSON.stringify(send);
|
return {send:JSON.stringify(send),key:randKey};
|
||||||
},
|
},
|
||||||
decrypt: async (data,privateKey)=>{
|
decrypt: async (data,privateKey)=>{
|
||||||
try {
|
try {
|
||||||
|
@ -287,7 +290,7 @@ const C = {
|
||||||
if(randKey == null) throw "invalid async Key";
|
if(randKey == null) throw "invalid async Key";
|
||||||
var out = await C.AES.decrypt(d,randKey);
|
var out = await C.AES.decrypt(d,randKey);
|
||||||
if(out == null) throw "invalid sync Key";
|
if(out == null) throw "invalid sync Key";
|
||||||
return out;
|
return {data:out,key:randKey};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -320,4 +323,31 @@ const C = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var a = C.sha256;
|
||||||
|
var b = C.random;
|
||||||
|
var c = C.randomKey;
|
||||||
|
var d = C.encode;
|
||||||
|
var e = C.decode;
|
||||||
|
var f = C.atob;
|
||||||
|
var g = C.btoa;
|
||||||
|
var h = C.pad;
|
||||||
|
var i = C.unpad;
|
||||||
|
var j = C.AES;
|
||||||
|
var k = C.RSA;
|
||||||
|
var l = C.communicate;
|
||||||
|
|
||||||
|
export {
|
||||||
|
a as sha256,
|
||||||
|
b as random,
|
||||||
|
c as randomKey,
|
||||||
|
d as encode,
|
||||||
|
e as decode,
|
||||||
|
f as atob,
|
||||||
|
g as btoa,
|
||||||
|
h as pad,
|
||||||
|
i as unpad,
|
||||||
|
j as AES,
|
||||||
|
k as RSA,
|
||||||
|
l as communicate
|
||||||
|
};
|
||||||
export default C;
|
export default C;
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
var node = false;
|
var node = false;
|
||||||
|
var crypto;
|
||||||
|
|
||||||
if (typeof require != "undefined") {
|
if (typeof process != "undefined") {
|
||||||
crypto = require('crypto');
|
crypto = await import('crypto');
|
||||||
if(typeof crypto.webcrypto != "undefined"){
|
if(typeof crypto.webcrypto != "undefined"){
|
||||||
crypto = crypto.webcrypto;
|
crypto = crypto.webcrypto;
|
||||||
console.log("subtle");
|
console.log("subtle");
|
||||||
|
@ -9,9 +10,9 @@ if (typeof require != "undefined") {
|
||||||
node = true;
|
node = true;
|
||||||
console.log("node crypto");
|
console.log("node crypto");
|
||||||
}
|
}
|
||||||
}/*else{
|
}else{
|
||||||
crypto = window.crypto;
|
crypto = window.crypto;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
var asciiList = [];
|
var asciiList = [];
|
||||||
for (var i = 0; i < 256; i++) {
|
for (var i = 0; i < 256; i++) {
|
||||||
|
@ -31,6 +32,7 @@ const C = {
|
||||||
return C.decode(await C.random(length));
|
return C.decode(await C.random(length));
|
||||||
},
|
},
|
||||||
encode : (data)=>{
|
encode : (data)=>{
|
||||||
|
console.log(data);
|
||||||
if(node){
|
if(node){
|
||||||
return new Uint8Array(Buffer.from(data,"binary"));
|
return new Uint8Array(Buffer.from(data,"binary"));
|
||||||
}else{
|
}else{
|
||||||
|
@ -277,7 +279,7 @@ const C = {
|
||||||
d: await C.AES.encrypt(message,randKey),
|
d: await C.AES.encrypt(message,randKey),
|
||||||
k: await C.RSA.encrypt(randKey,publicKey)
|
k: await C.RSA.encrypt(randKey,publicKey)
|
||||||
};
|
};
|
||||||
return JSON.stringify(send);
|
return {send:JSON.stringify(send),key:randKey};
|
||||||
},
|
},
|
||||||
decrypt: async (data,privateKey)=>{
|
decrypt: async (data,privateKey)=>{
|
||||||
try {
|
try {
|
||||||
|
@ -287,7 +289,7 @@ const C = {
|
||||||
if(randKey == null) throw "invalid async Key";
|
if(randKey == null) throw "invalid async Key";
|
||||||
var out = await C.AES.decrypt(d,randKey);
|
var out = await C.AES.decrypt(d,randKey);
|
||||||
if(out == null) throw "invalid sync Key";
|
if(out == null) throw "invalid sync Key";
|
||||||
return out;
|
return {data:out,key:randKey};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
48
main.js
Normal file
48
main.js
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import * as C from "./crypto.min.js";
|
||||||
|
|
||||||
|
|
||||||
|
(async ()=>{
|
||||||
|
const data = "abcdefg123456789";
|
||||||
|
const AES_key_1 = await C.randomKey(32);
|
||||||
|
const AES_key_2 = "some_random_text";
|
||||||
|
|
||||||
|
//some string operations
|
||||||
|
var hash = await C.sha256(data);
|
||||||
|
console.log("sha256: ", await C.decode(hash));
|
||||||
|
|
||||||
|
var btoa = C.btoa(data);
|
||||||
|
var atob = C.atob(data);
|
||||||
|
console.log("btoa: ", btoa, " atob: ", atob);
|
||||||
|
|
||||||
|
//AES
|
||||||
|
var encryptedAES = await C.AES.encrypt(data,AES_key_1);
|
||||||
|
var decryptedAES = await C.AES.decrypt(encryptedAES,AES_key_1);
|
||||||
|
|
||||||
|
console.log("AES | Encrypted: ", encryptedAES," Decrypted: ", decryptedAES);
|
||||||
|
|
||||||
|
//RSA
|
||||||
|
const encrKey = await C.RSA.generateEncryptionKey();
|
||||||
|
const signKey = await C.RSA.generateSigningKey();
|
||||||
|
|
||||||
|
//RSA encrypt
|
||||||
|
var encryptedRSA = await C.RSA.encrypt(data,encrKey.publicKey);
|
||||||
|
var decryptedRSA = await C.RSA.decrypt(encryptedRSA,encrKey.privateKey);
|
||||||
|
|
||||||
|
console.log("RSA | Encrypted: ", encryptedRSA," Decrypted: ", decryptedRSA);
|
||||||
|
|
||||||
|
//RSA signing
|
||||||
|
var certificate = await C.RSA.sign(data,encrKey.privateKey);
|
||||||
|
var isvaild = await C.RSA.verify(data,encryptedRSA,encrKey.publicKey);
|
||||||
|
|
||||||
|
console.log("RSA Signing | Cerificate: ", certificate," Is Valid?: ", isvaild ? "valid" : "invalid");
|
||||||
|
|
||||||
|
//communicate (RSA and AES for large Data)
|
||||||
|
///Only the Server has a certificate
|
||||||
|
var commEncrypted = await C.communicate.encrypt(data,encrKey.publicKey);
|
||||||
|
//randKey for AES: commEncrypted.key
|
||||||
|
var commDecrypted = await C.communicate.decrypt(commEncrypted.send,encrKey.privateKey);
|
||||||
|
//randKey for AES: commDecrypted.key
|
||||||
|
//If an error occures -> commDecrypted == null
|
||||||
|
console.log("Communicate | Encrypted: ",commEncrypted.send, " Decrypted: ",commDecrypted.data);
|
||||||
|
|
||||||
|
})();
|
29
package-lock.json
generated
Normal file
29
package-lock.json
generated
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"name": "ilmk",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "ilmk",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"crypto": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/crypto": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
|
||||||
|
"deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"crypto": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
23
package.json
Normal file
23
package.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"name": "ilmk",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "I Lost My Keys.\r Crypto Module for WebJS and NodeJS.",
|
||||||
|
"main": "main.js",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://gitlab.com/jusax23/ilmk.git"
|
||||||
|
},
|
||||||
|
"author": "jusax23",
|
||||||
|
"license": "ISC",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://gitlab.com/jusax23/ilmk/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://gitlab.com/jusax23/ilmk#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"crypto": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue