local-network: add builtins secret key

This commit is contained in:
Alexey Proshutinskiy 2021-09-30 18:21:53 +03:00
parent 51c4edd631
commit b9ca3c0259
9 changed files with 313 additions and 10 deletions

View File

@ -29,7 +29,7 @@ jobs:
paths:
- ~/.cargo
- ~/.rustup
key: trust-graph00-{{ checksum "./Cargo.lock" }}-{{ checksum "./keypair/Cargo.lock" }}
key: trust-graph00-{{ checksum "./Cargo.lock" }-{{ checksum "./service/Cargo.lock" }}}-{{ checksum "./keypair/Cargo.lock" }}
workflows:

6
Cargo.lock generated
View File

@ -755,7 +755,7 @@ dependencies = [
[[package]]
name = "fluence-keypair"
version = "0.4.0"
version = "0.4.1"
dependencies = [
"asn1_der",
"bs58 0.3.1",
@ -2478,7 +2478,7 @@ dependencies = [
[[package]]
name = "trust-graph"
version = "0.2.8"
version = "0.2.9"
dependencies = [
"bs58 0.3.1",
"derivative",
@ -2498,7 +2498,7 @@ dependencies = [
[[package]]
name = "trust-graph-wasm"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"anyhow",
"bincode",

View File

@ -1,6 +1,6 @@
[package]
name = "trust-graph"
version = "0.2.8"
version = "0.2.9"
authors = ["Fluence Labs"]
edition = "2018"
description = "trust graph"
@ -11,7 +11,7 @@ repository = "https://github.com/fluencelabs/trust-graph"
libp2p-core = { package = "fluence-fork-libp2p-core", version = "0.27.2", features = ["secp256k1"] }
serde = { version = "=1.0.118", features = ["derive"] }
fluence-keypair = { path = "./keypair", version = "0.4.0" }
fluence-keypair = { path = "./keypair", version = "0.4.1" }
serde_json = "1.0.58"
bs58 = "0.3.1"
failure = "0.1.6"

View File

@ -120,6 +120,99 @@ h.on('getDataSrv', 'issuer_peer_id', () => {return issuer_peer_id;});
export function revoke(node: string, revoke: {revoked_at:number;revoked_by:string;revoked_peer_id:string;sig_type:string;signature:string}, config?: {ttl?: number}) : Promise<{error:string;success:boolean}>;
export function revoke(peer: FluencePeer, node: string, revoke: {revoked_at:number;revoked_by:string;revoked_peer_id:string;sig_type:string;signature:string}, config?: {ttl?: number}) : Promise<{error:string;success:boolean}>;
export function revoke(...args: any) {
let peer: FluencePeer;
let node: any;
let revoke: any;
let config: any;
if (FluencePeer.isInstance(args[0])) {
peer = args[0];
node = args[1];
revoke = args[2];
config = args[3];
} else {
peer = Fluence.getPeer();
node = args[0];
revoke = args[1];
config = args[2];
}
let request: RequestFlow;
const promise = new Promise<{error:string;success:boolean}>((resolve, reject) => {
const r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "node") [] node)
)
(call %init_peer_id% ("getDataSrv" "revoke") [] revoke)
)
(call -relay- ("op" "noop") [])
)
(xor
(seq
(call node ("peer" "timestamp_sec") [] timestamp_sec)
(call node ("trust-graph" "revoke") [revoke timestamp_sec] result)
)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "response") [result])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return peer.getStatus().relayPeerId;
});
h.on('getDataSrv', 'node', () => {return node;});
h.on('getDataSrv', 'revoke', () => {return revoke;});
h.onEvent('callbackSrv', 'response', (args) => {
const [res] = args;
resolve(res);
});
h.onEvent('errorHandlingSrv', 'error', (args) => {
const [err] = args;
reject(err);
});
})
.handleScriptError(reject)
.handleTimeout(() => {
reject('Request timed out for revoke');
})
if(config && config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
peer.internals.initiateFlow(request!);
return promise;
}
export function issue_trust(node: string, issued_for_peer_id: string, expires_at_sec: number, issued_at_sec: number, trust_bytes: number[], config?: {ttl?: number}) : Promise<{error:string;success:boolean;trust:{expires_at:number;issued_at:number;issued_for:string;sig_type:string;signature:string}}>;
export function issue_trust(peer: FluencePeer, node: string, issued_for_peer_id: string, expires_at_sec: number, issued_at_sec: number, trust_bytes: number[], config?: {ttl?: number}) : Promise<{error:string;success:boolean;trust:{expires_at:number;issued_at:number;issued_for:string;sig_type:string;signature:string}}>;
export function issue_trust(...args: any) {
@ -231,6 +324,214 @@ h.on('getDataSrv', 'trust_bytes', () => {return trust_bytes;});
export function get_revoke_bytes(node: string, revoked_peer_id: string, revoked_at: number, config?: {ttl?: number}) : Promise<{error:string;result:number[];success:boolean}>;
export function get_revoke_bytes(peer: FluencePeer, node: string, revoked_peer_id: string, revoked_at: number, config?: {ttl?: number}) : Promise<{error:string;result:number[];success:boolean}>;
export function get_revoke_bytes(...args: any) {
let peer: FluencePeer;
let node: any;
let revoked_peer_id: any;
let revoked_at: any;
let config: any;
if (FluencePeer.isInstance(args[0])) {
peer = args[0];
node = args[1];
revoked_peer_id = args[2];
revoked_at = args[3];
config = args[4];
} else {
peer = Fluence.getPeer();
node = args[0];
revoked_peer_id = args[1];
revoked_at = args[2];
config = args[3];
}
let request: RequestFlow;
const promise = new Promise<{error:string;result:number[];success:boolean}>((resolve, reject) => {
const r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "node") [] node)
)
(call %init_peer_id% ("getDataSrv" "revoked_peer_id") [] revoked_peer_id)
)
(call %init_peer_id% ("getDataSrv" "revoked_at") [] revoked_at)
)
(call -relay- ("op" "noop") [])
)
(xor
(call node ("trust-graph" "get_revoke_bytes") [revoked_peer_id revoked_at] result)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "response") [result])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return peer.getStatus().relayPeerId;
});
h.on('getDataSrv', 'node', () => {return node;});
h.on('getDataSrv', 'revoked_peer_id', () => {return revoked_peer_id;});
h.on('getDataSrv', 'revoked_at', () => {return revoked_at;});
h.onEvent('callbackSrv', 'response', (args) => {
const [res] = args;
resolve(res);
});
h.onEvent('errorHandlingSrv', 'error', (args) => {
const [err] = args;
reject(err);
});
})
.handleScriptError(reject)
.handleTimeout(() => {
reject('Request timed out for get_revoke_bytes');
})
if(config && config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
peer.internals.initiateFlow(request!);
return promise;
}
export function issue_revocation(node: string, revoked_peer_id: string, revoked_by_peer_id: string, revoked_at_sec: number, signature_bytes: number[], config?: {ttl?: number}) : Promise<{error:string;revoke:{revoked_at:number;revoked_by:string;revoked_peer_id:string;sig_type:string;signature:string};success:boolean}>;
export function issue_revocation(peer: FluencePeer, node: string, revoked_peer_id: string, revoked_by_peer_id: string, revoked_at_sec: number, signature_bytes: number[], config?: {ttl?: number}) : Promise<{error:string;revoke:{revoked_at:number;revoked_by:string;revoked_peer_id:string;sig_type:string;signature:string};success:boolean}>;
export function issue_revocation(...args: any) {
let peer: FluencePeer;
let node: any;
let revoked_peer_id: any;
let revoked_by_peer_id: any;
let revoked_at_sec: any;
let signature_bytes: any;
let config: any;
if (FluencePeer.isInstance(args[0])) {
peer = args[0];
node = args[1];
revoked_peer_id = args[2];
revoked_by_peer_id = args[3];
revoked_at_sec = args[4];
signature_bytes = args[5];
config = args[6];
} else {
peer = Fluence.getPeer();
node = args[0];
revoked_peer_id = args[1];
revoked_by_peer_id = args[2];
revoked_at_sec = args[3];
signature_bytes = args[4];
config = args[5];
}
let request: RequestFlow;
const promise = new Promise<{error:string;revoke:{revoked_at:number;revoked_by:string;revoked_peer_id:string;sig_type:string;signature:string};success:boolean}>((resolve, reject) => {
const r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "node") [] node)
)
(call %init_peer_id% ("getDataSrv" "revoked_peer_id") [] revoked_peer_id)
)
(call %init_peer_id% ("getDataSrv" "revoked_by_peer_id") [] revoked_by_peer_id)
)
(call %init_peer_id% ("getDataSrv" "revoked_at_sec") [] revoked_at_sec)
)
(call %init_peer_id% ("getDataSrv" "signature_bytes") [] signature_bytes)
)
(call -relay- ("op" "noop") [])
)
(xor
(call node ("trust-graph" "issue_revocation") [revoked_peer_id revoked_by_peer_id revoked_at_sec signature_bytes] result)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "response") [result])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return peer.getStatus().relayPeerId;
});
h.on('getDataSrv', 'node', () => {return node;});
h.on('getDataSrv', 'revoked_peer_id', () => {return revoked_peer_id;});
h.on('getDataSrv', 'revoked_by_peer_id', () => {return revoked_by_peer_id;});
h.on('getDataSrv', 'revoked_at_sec', () => {return revoked_at_sec;});
h.on('getDataSrv', 'signature_bytes', () => {return signature_bytes;});
h.onEvent('callbackSrv', 'response', (args) => {
const [res] = args;
resolve(res);
});
h.onEvent('errorHandlingSrv', 'error', (args) => {
const [err] = args;
reject(err);
});
})
.handleScriptError(reject)
.handleTimeout(() => {
reject('Request timed out for issue_revocation');
})
if(config && config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
peer.internals.initiateFlow(request!);
return promise;
}
export function insert_cert(node: string, certificate: {chain:{expires_at:number;issued_at:number;issued_for:string;sig_type:string;signature:string}[]}, config?: {ttl?: number}) : Promise<{error:string;success:boolean}>;
export function insert_cert(peer: FluencePeer, node: string, certificate: {chain:{expires_at:number;issued_at:number;issued_for:string;sig_type:string;signature:string}[]}, config?: {ttl?: number}) : Promise<{error:string;success:boolean}>;
export function insert_cert(...args: any) {

View File

@ -33,7 +33,7 @@ let local: Node[] = [
];
async function main(environment: Node[]) {
let builtins_keypair = await KeyPair.fromBytes(bs58.decode("5CGiJio6m76GxJ2wLj46PzSu6V7SRa5agv6meR3SJBKtvTgethRCmgBJKXWDSpSEBpgNUPd7Re5cZjF8mWW4kBfs"));
let builtins_keypair = await KeyPair.fromBytes(bs58.decode("5CGiJio6m76GxJ2wLj46PzSu6V7SRa5agv6meR3SJBKtvTgethRCmgBJKXWDSpSEBpgNUPd7Re5cZjF8mWW4kBfs").slice(32));
await Fluence.start({ connectTo: environment[0], KeyPair: builtins_keypair});
console.log(
"📗 created a fluence peer %s with relay %s",

View File

@ -1,6 +1,6 @@
[package]
name = "fluence-keypair"
version = "0.4.0"
version = "0.4.1"
authors = ["Fluence Labs"]
edition = "2018"
description = "identity"

View File

@ -0,0 +1 @@
5FwE32bDcphFzuMca7Y2qW1gdR64fTBYoRNvD4MLE1hecDGhCMQGKn8aseMr5wRo4Xo2CRFdrEAawUNLYkgQD78K

View File

@ -18,6 +18,7 @@ services:
volumes:
- fluence-0:/.fluence
- data-0:/config
- ./builtins_secret_key.ed25519:/.fluence/v1/builtins_secret_key.ed25519
networks:
- fluence

View File

@ -1,6 +1,6 @@
[package]
name = "trust-graph-wasm"
version = "0.2.0"
version = "0.2.1"
authors = ["Fluence Labs"]
edition = "2018"
description = "trust graph wasm"
@ -12,7 +12,7 @@ path = "src/main.rs"
[dependencies]
trust-graph = { version = "0.2.6", path = "../." }
fluence-keypair = { version = "0.4.0", path = "../keypair" }
fluence-keypair = { version = "0.4.1", path = "../keypair" }
marine-rs-sdk = { version = "0.6.11", features = ["logger"] }
marine-sqlite-connector = "0.5.1"