Conversation
ggreif
left a comment
There was a problem hiding this comment.
Were your examples on purpose? Otherwise better fix, or add TODOs.
|
The userlib doesn't check checksums and ignores case, so I was just doing the minimal needed. But since you calculated the checksums anyways, I might as well fix this, thanks! |
|
|
||
| // Drop once we use https://github.com/dfinity-lab/dfinity/pull/2286 | ||
| private changeEndianness(str: string): string { | ||
| const result = []; |
There was a problem hiding this comment.
I did this instead:
const r = str.match(/../g);
if (!r) {
throw new Error(
'Failed to fix the canister id '+str
);
}
// Reverse
const correct_cid=r.reverse().join('');
return correct_cid;
I also modified the test in cbor.test.ts to check for endianess, but it doesn't make sense I think, since we should soon remove this.
This might have issues when we receive the canister id, but I don't think this is used in the LinkedUp demo (as this is not inverse of toHex().
There was a problem hiding this comment.
Correct; Canister ids are only recevied upon canister registration, this is not something the user lib does, so we are good on that front.
Agree that your code is a bit more elegant, I just copied the nible-reversing code from @chenyan-dfinity. But it’ll be removed in a few days anyways, so let’s not worry.
| size: Number, | ||
| tags: Record<number, (val: any) => any>, | ||
| }); | ||
| constructor(opts: { size: Number; tags: Record<number, (val: any) => any> }); |
There was a problem hiding this comment.
does the style checker pass?
There was a problem hiding this comment.
This is the result of running the style checker here…
IC checks the style checker, so I guess the answer is yes?
8333432 to
a1fee1f
Compare
this is the equivalent of what #303 did to `dfx`: When CBOR-encoding a canisterid for submission in a request, we need to make sure it is little endian. We do the change in ``` class CanisterIdEncoder implements CborEncoder<CanisterId> { … ``` where it belongs: As close to the HTTP interface we can. This means that once we migrate to https://github.com/dfinity-lab/dfinity/pull/2286 we will adjust this code to switch to CBOR blob, and the work-around can be dropped here. Note in the code about that. Also cleans up `fromText` to be more robust: It will _only_ accept `ic:` textual representation, and _always_ strip the checksum. With this, I can * build and install Linkedup * copy the `ic:` url printed by `dfx` upon installation * use that in the url (e.g. `http://127.0.0.1:8000/?canisterId=ic:72028DEDFB546FA89A`) * see it load the assets
c1497a9 to
0dc4abe
Compare
|
I am reluctant to merge this into another team’s repo, and will leave it to someone on the SDK team to press the button. Oh well, it has worked on Stanley’s and my machine, clearly that’s progress. And no place like |
|
Follow up in #319 |
|
|
||
| public encode(v: CanisterId): cbor.CborValue { | ||
| return cbor.value.u64(v.toHex(), 16); | ||
| return cbor.value.u64(this.changeEndianness(v.toHex()), 16); |
There was a problem hiding this comment.
Can we changeEndianness inside toHex function?
There was a problem hiding this comment.
No! The toHex is the correct CanisterID to blob conversion that we will want to use once we update dfinity. We should keep the work-around close the CBOR encoding, where we shoehorn a blob into a u64.
## Changelog for advisory-db: Branch: Commits: [rustsec/advisory-db@aa789b9c...6b10ce09](rustsec/advisory-db@aa789b9...6b10ce0) * [`cff4f820`](rustsec/advisory-db@cff4f82) warn about CVE-2020-1967 * [`b0bc62bd`](rustsec/advisory-db@b0bc62b) Add `cargo-deny` to the list RustSec clients * [`e44e26f3`](rustsec/advisory-db@e44e26f) Assign RUSTSEC-2020-0015 to openssl-src * [`b1d3a5e7`](rustsec/advisory-db@b1d3a5e) Advisory for rio * [`25f622ba`](rustsec/advisory-db@25f622b) tempdir crate has been deprecated since 2018-02-13. * [`a3c68605`](rustsec/advisory-db@a3c6860) net2 crate has been deprecated; use socket2 instead * [`1639be65`](rustsec/advisory-db@1639be6) Assign RUSTSEC-2020-0016 to net2 * [`7d4ce9ae`](rustsec/advisory-db@7d4ce9a) Assign RUSTSEC-2018-0017 to tempdir * [`0f5a2dc2`](rustsec/advisory-db@0f5a2dc) Add advisory for internment ([RustSec/advisory-db#306](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/306)) * [`8587ec25`](rustsec/advisory-db@8587ec2) Assign RUSTSEC-2020-0017 to internment ([RustSec/advisory-db#309](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/309)) * [`5049594b`](rustsec/advisory-db@5049594) Add unmaintained crate advisory for `block-cipher-trait` (RUSTSEC-2020-0018) ([RustSec/advisory-db#310](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/310)) * [`ae22eb47`](rustsec/advisory-db@ae22eb4) CONTRIBUTING: mention soundness issues ([RustSec/advisory-db#314](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/314)) * [`7c96397e`](rustsec/advisory-db@7c96397) Security advisory for AtheMathmo/rulinalg[RustSec/advisory-db#201](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/201) * [`8149410e`](rustsec/advisory-db@8149410) Fix toml format error * [`45495b76`](rustsec/advisory-db@45495b7) .github: bump rustsec-admin cache key ([RustSec/advisory-db#321](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/321)) * [`418954a9`](rustsec/advisory-db@418954a) Create github action to assign RUSTSEC ids ([RustSec/advisory-db#311](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/311)) * [`48c86534`](rustsec/advisory-db@48c8653) Attempt to fix failing assign-ids task ([RustSec/advisory-db#322](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/322)) * [`de07a7d2`](rustsec/advisory-db@de07a7d) Add tokio-rustls DoS advisory ([RustSec/advisory-db#304](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/304)) * [`46c23f6c`](rustsec/advisory-db@46c23f6) Assign RUSTSEC IDs ([RustSec/advisory-db#323](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/323)) * [`9cd619f1`](rustsec/advisory-db@9cd619f) make memoffset advisory informational ([RustSec/advisory-db#317](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/317)) * [`1dfcb1d6`](rustsec/advisory-db@1dfcb1d) .github: lint advisories after assigning ID ([RustSec/advisory-db#324](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/324)) * [`6e2241c0`](rustsec/advisory-db@6e2241c) stb_truetype crate has been deprecated; use ttf-parser instead ([RustSec/advisory-db#307](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/307)) * [`07ae3fb2`](rustsec/advisory-db@07ae3fb) Assign RUSTSEC IDs ([RustSec/advisory-db#325](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/325)) * [`49fcc50d`](rustsec/advisory-db@49fcc50) Reflect PR feedback and describe what might happen * [`297725a1`](rustsec/advisory-db@297725a) README.md: bump maintained quarter comment * [`73b40e7d`](rustsec/advisory-db@73b40e7) Assign RUSTSEC IDs ([RustSec/advisory-db#326](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/326)) * [`ee09393d`](rustsec/advisory-db@ee09393) Security advisory for bqv/ozone * [`c649f538`](rustsec/advisory-db@c649f53) Assign RUSTSEC-2020-0022 to ozone ([RustSec/advisory-db#329](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/329)) * [`6b56bccc`](rustsec/advisory-db@6b56bcc) Assign RUSTSEC IDs * [`6b10ce09`](rustsec/advisory-db@6b10ce0) Update yaml-rust advirsory to indicate clap as non-vulnerable ([RustSec/advisory-db#331](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/331))
## Changelog for advisory-db: Branch: Commits: [rustsec/advisory-db@aa789b9c...6b10ce09](rustsec/advisory-db@aa789b9...6b10ce0) * [`cff4f820`](rustsec/advisory-db@cff4f82) warn about CVE-2020-1967 * [`b0bc62bd`](rustsec/advisory-db@b0bc62b) Add `cargo-deny` to the list RustSec clients * [`e44e26f3`](rustsec/advisory-db@e44e26f) Assign RUSTSEC-2020-0015 to openssl-src * [`b1d3a5e7`](rustsec/advisory-db@b1d3a5e) Advisory for rio * [`25f622ba`](rustsec/advisory-db@25f622b) tempdir crate has been deprecated since 2018-02-13. * [`a3c68605`](rustsec/advisory-db@a3c6860) net2 crate has been deprecated; use socket2 instead * [`1639be65`](rustsec/advisory-db@1639be6) Assign RUSTSEC-2020-0016 to net2 * [`7d4ce9ae`](rustsec/advisory-db@7d4ce9a) Assign RUSTSEC-2018-0017 to tempdir * [`0f5a2dc2`](rustsec/advisory-db@0f5a2dc) Add advisory for internment ([RustSec/advisory-db#306](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/306)) * [`8587ec25`](rustsec/advisory-db@8587ec2) Assign RUSTSEC-2020-0017 to internment ([RustSec/advisory-db#309](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/309)) * [`5049594b`](rustsec/advisory-db@5049594) Add unmaintained crate advisory for `block-cipher-trait` (RUSTSEC-2020-0018) ([RustSec/advisory-db#310](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/310)) * [`ae22eb47`](rustsec/advisory-db@ae22eb4) CONTRIBUTING: mention soundness issues ([RustSec/advisory-db#314](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/314)) * [`7c96397e`](rustsec/advisory-db@7c96397) Security advisory for AtheMathmo/rulinalg[RustSec/advisory-db#201](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/201) * [`8149410e`](rustsec/advisory-db@8149410) Fix toml format error * [`45495b76`](rustsec/advisory-db@45495b7) .github: bump rustsec-admin cache key ([RustSec/advisory-db#321](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/321)) * [`418954a9`](rustsec/advisory-db@418954a) Create github action to assign RUSTSEC ids ([RustSec/advisory-db#311](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/311)) * [`48c86534`](rustsec/advisory-db@48c8653) Attempt to fix failing assign-ids task ([RustSec/advisory-db#322](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/322)) * [`de07a7d2`](rustsec/advisory-db@de07a7d) Add tokio-rustls DoS advisory ([RustSec/advisory-db#304](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/304)) * [`46c23f6c`](rustsec/advisory-db@46c23f6) Assign RUSTSEC IDs ([RustSec/advisory-db#323](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/323)) * [`9cd619f1`](rustsec/advisory-db@9cd619f) make memoffset advisory informational ([RustSec/advisory-db#317](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/317)) * [`1dfcb1d6`](rustsec/advisory-db@1dfcb1d) .github: lint advisories after assigning ID ([RustSec/advisory-db#324](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/324)) * [`6e2241c0`](rustsec/advisory-db@6e2241c) stb_truetype crate has been deprecated; use ttf-parser instead ([RustSec/advisory-db#307](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/307)) * [`07ae3fb2`](rustsec/advisory-db@07ae3fb) Assign RUSTSEC IDs ([RustSec/advisory-db#325](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/325)) * [`49fcc50d`](rustsec/advisory-db@49fcc50) Reflect PR feedback and describe what might happen * [`297725a1`](rustsec/advisory-db@297725a) README.md: bump maintained quarter comment * [`73b40e7d`](rustsec/advisory-db@73b40e7) Assign RUSTSEC IDs ([RustSec/advisory-db#326](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/326)) * [`ee09393d`](rustsec/advisory-db@ee09393) Security advisory for bqv/ozone * [`c649f538`](rustsec/advisory-db@c649f53) Assign RUSTSEC-2020-0022 to ozone ([RustSec/advisory-db#329](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/329)) * [`6b56bccc`](rustsec/advisory-db@6b56bcc) Assign RUSTSEC IDs * [`6b10ce09`](rustsec/advisory-db@6b10ce0) Update yaml-rust advirsory to indicate clap as non-vulnerable ([RustSec/advisory-db#331](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/331))
## Changelog for advisory-db: Branch: Commits: [rustsec/advisory-db@aa789b9c...6b10ce09](rustsec/advisory-db@aa789b9...6b10ce0) * [`cff4f820`](rustsec/advisory-db@cff4f82) warn about CVE-2020-1967 * [`b0bc62bd`](rustsec/advisory-db@b0bc62b) Add `cargo-deny` to the list RustSec clients * [`e44e26f3`](rustsec/advisory-db@e44e26f) Assign RUSTSEC-2020-0015 to openssl-src * [`b1d3a5e7`](rustsec/advisory-db@b1d3a5e) Advisory for rio * [`25f622ba`](rustsec/advisory-db@25f622b) tempdir crate has been deprecated since 2018-02-13. * [`a3c68605`](rustsec/advisory-db@a3c6860) net2 crate has been deprecated; use socket2 instead * [`1639be65`](rustsec/advisory-db@1639be6) Assign RUSTSEC-2020-0016 to net2 * [`7d4ce9ae`](rustsec/advisory-db@7d4ce9a) Assign RUSTSEC-2018-0017 to tempdir * [`0f5a2dc2`](rustsec/advisory-db@0f5a2dc) Add advisory for internment ([RustSec/advisory-db#306](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/306)) * [`8587ec25`](rustsec/advisory-db@8587ec2) Assign RUSTSEC-2020-0017 to internment ([RustSec/advisory-db#309](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/309)) * [`5049594b`](rustsec/advisory-db@5049594) Add unmaintained crate advisory for `block-cipher-trait` (RUSTSEC-2020-0018) ([RustSec/advisory-db#310](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/310)) * [`ae22eb47`](rustsec/advisory-db@ae22eb4) CONTRIBUTING: mention soundness issues ([RustSec/advisory-db#314](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/314)) * [`7c96397e`](rustsec/advisory-db@7c96397) Security advisory for AtheMathmo/rulinalg[RustSec/advisory-db#201](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/201) * [`8149410e`](rustsec/advisory-db@8149410) Fix toml format error * [`45495b76`](rustsec/advisory-db@45495b7) .github: bump rustsec-admin cache key ([RustSec/advisory-db#321](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/321)) * [`418954a9`](rustsec/advisory-db@418954a) Create github action to assign RUSTSEC ids ([RustSec/advisory-db#311](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/311)) * [`48c86534`](rustsec/advisory-db@48c8653) Attempt to fix failing assign-ids task ([RustSec/advisory-db#322](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/322)) * [`de07a7d2`](rustsec/advisory-db@de07a7d) Add tokio-rustls DoS advisory ([RustSec/advisory-db#304](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/304)) * [`46c23f6c`](rustsec/advisory-db@46c23f6) Assign RUSTSEC IDs ([RustSec/advisory-db#323](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/323)) * [`9cd619f1`](rustsec/advisory-db@9cd619f) make memoffset advisory informational ([RustSec/advisory-db#317](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/317)) * [`1dfcb1d6`](rustsec/advisory-db@1dfcb1d) .github: lint advisories after assigning ID ([RustSec/advisory-db#324](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/324)) * [`6e2241c0`](rustsec/advisory-db@6e2241c) stb_truetype crate has been deprecated; use ttf-parser instead ([RustSec/advisory-db#307](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/307)) * [`07ae3fb2`](rustsec/advisory-db@07ae3fb) Assign RUSTSEC IDs ([RustSec/advisory-db#325](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/325)) * [`49fcc50d`](rustsec/advisory-db@49fcc50) Reflect PR feedback and describe what might happen * [`297725a1`](rustsec/advisory-db@297725a) README.md: bump maintained quarter comment * [`73b40e7d`](rustsec/advisory-db@73b40e7) Assign RUSTSEC IDs ([RustSec/advisory-db#326](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/326)) * [`ee09393d`](rustsec/advisory-db@ee09393) Security advisory for bqv/ozone * [`c649f538`](rustsec/advisory-db@c649f53) Assign RUSTSEC-2020-0022 to ozone ([RustSec/advisory-db#329](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/329)) * [`6b56bccc`](rustsec/advisory-db@6b56bcc) Assign RUSTSEC IDs * [`6b10ce09`](rustsec/advisory-db@6b10ce0) Update yaml-rust advirsory to indicate clap as non-vulnerable ([RustSec/advisory-db#331](http://r.duckduckgo.com/l/?uddg=https://github.com/RustSec/advisory-db/issues/331))
this is the equivalent of what #303 did to
dfx: When CBOR-encoding acanisterid for submission in a request, we need to make sure it is
little endian.
We do the change in
where it belongs: As close to the HTTP interface we can.
This means that once we migrate to
https://github.com/dfinity-lab/dfinity/pull/2286
we will adjust this code to switch to CBOR blob, and the work-around can
be dropped here. Note in the code about that.
Also cleans up
fromTextto be more robust: It will only acceptic:textual representation, and always strip the checksum.
With this, I can
ic:url printed bydfxupon installationhttp://127.0.0.1:8000/?canisterId=ic:72028DEDFB546FA89A)