Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions libraries/fula-sec/readme.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,44 +49,29 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Decentralized Identity (DID)
```js
import {FullaDID} from '@functionland/fula-sec'
import {FulaDID} from '@functionland/fula-sec'

// Fulla DID
const fullaDID = new FullaDID();
// ...
// Create DID identity () => return {did|authDID, mnemonic, privateKey}
await fullaDID.create();

// You can also call backup option by using getter -> fullaDID.backup () => return {did|authDID, mnemonic, privateKey}

// Import Options:
// 1. Import with mnemonic
// 2. Import with privateKey

// Import existing mnemonic phrase () => return {did|authDID, privateKey}
// mnemonic example: 'mercy drip similar hole oil lock blast absent medal slam world sweet',
await fullaDID.importMnemonic(result.mnemonic);

// Import existing privateKey () => return {did|authDID, privateKey}
// privateKey example: ff396d82b24b3f8f200cc240bb6d0770911c82e1d8c0199638373221efedabd5
await fullaDID.importPrivateKey(result.privateKey);
const fulaDID = new FulaDID();
// Create DID identity (_secretKey, signature) => return {did|authDID, mnemonic, privateKey}
await fulaDID.create(secretKey, signature);
```
<p align="right">(<a href="#top">back to top</a>)</p>


<!-- USAGE EXAMPLES -->
## Tagged Encryption (Tagged DID)
```js
import {FullaDID, TaggedEncryption} from '@functionland/fula-sec'
import {FulaDID, TaggedEncryption} from '@functionland/fula-sec'

// Alice creates own DID
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
const taggedA = new TaggedEncryption(AliceDID.did);

// Bob creates own DID
const BobDID = new FullaDID();
await BobDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
const taggedB = new TaggedEncryption(BobDID.did);

// 1. Handshake |Alice DID| <--- |Bob DID|
Expand All@@ -109,19 +94,19 @@ Install NPM package
<!-- USAGE EXAMPLES -->
## Asymmetric Encryption
```js
import {FullaDID, AsymEncryption} from '@functionland/fula-sec'
import {FulaDID, AsymEncryption} from '@functionland/fula-sec'

// Alice creates own DID (Issuer)
const AliceDID = new FullaDID();
await AliceDID.create();
const AliceDID = new FulaDID();
await AliceDID.create(secretKey, signature);
// Set privateKey
const asymEncA = new AsymEncryption(AliceDID.privateKey);

// Bob creates own DID (Audience)
const BliceDID = new FullaDID();
await BliceDID.create();
const BobDID = new FulaDID();
await BobDID.create(secretKey, signature);
// Set privateKey
const asymEncB = new AsymEncryption(BliceDID.privateKey);
const asymEncB = new AsymEncryption(BobDID.privateKey);

/*
1. Bob shares PublicKey with Alice
Expand DownExpand Up@@ -153,7 +138,7 @@ Run doc cmd

npx typedoc --out docs

[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FullaDID.html)
[Fulla Sec DOC](http://127.0.0.1:5500/libraries/fula-sec/docs/classes/FulaDID.html)



Expand Down
5 changes: 3 additions & 2 deletions libraries/fula-sec/src/did.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,9 +32,10 @@ export class FulaDID implements IFulaDID {
return this.did.authenticate();
}
/**
* Creates mnemocic phrase and private key
* Activate decentralized identity
* @function create()
* @returns Object - { sauthDID }
* @property _secretKey: string, signature: string
* @returns Object - { authDID }
*/
async create (_secretKey: string, signature: string) {
this.rootKey = sha3.keccak256(JSON.stringify({
Expand Down
16 changes: 8 additions & 8 deletions libraries/fula-sec/src/tagged.enc.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,16 @@
interface ITagEncryption {
didAudience: string;
CID: string;
symetricKey: string;
encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any>;
symetricKey: any;
encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any>;
decrypt(jwe: any): Promise<any>;
}

export class TaggedEncryption implements ITagEncryption {
private _did: any;
didAudience!: string;
CID!: string;
symetricKey!: string
symetricKey!: any

constructor (DID: any) {
this._did = DID;
Expand All@@ -25,20 +25,20 @@ export class TaggedEncryption implements ITagEncryption {
/**
* This function encrtps user`s CID and shared symetric keys
* @function encrypt()
* @property symetricKey: string, CID: string, didAudience: array
* @property symetricKey: object, CID: string, didAudience: array
* @returns jwe {}
*/
async encrypt(symetricKey: string, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey: symetricKey, CID: CID}, didAudience)
async encrypt(symetricKey: any, CID: string, didAudience: Array<string>): Promise<any> {
return await this._did.createDagJWE({symetricKey, CID}, didAudience)
}

/**
* This function encrtps user`s CID and shared symetric keys
* @function decrypt()
* @property jwe {}
* @returns decrypted message {symetricKey: string, CID: string}
* @returns decrypted message {symetricKey: object, CID: string}
*/
async decrypt(jwe: any): Promise<any> {
return await this._did.decryptDagJWE(jwe);
}
}
}