fix: if the registry entry hash type is not ed25519, return a new cid with the type set to raw

This commit is contained in:
Derrick Hammer 2023-09-09 15:55:44 -04:00
parent bef8f1fd8c
commit 517446310d
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
1 changed files with 8 additions and 2 deletions

View File

@ -1,6 +1,6 @@
import Multibase from "#multibase.js"; import Multibase from "#multibase.js";
import { Multihash } from "#multihash.js"; import { Multihash } from "#multihash.js";
import { CID_TYPES, REGISTRY_TYPES } from "#constants.js"; import { CID_HASH_TYPES, CID_TYPES, REGISTRY_TYPES } from "#constants.js";
import { decodeEndian, encodeEndian } from "#util.js"; import { decodeEndian, encodeEndian } from "#util.js";
import { concatBytes, equalBytes } from "@noble/curves/abstract/utils"; import { concatBytes, equalBytes } from "@noble/curves/abstract/utils";
import { hexToBytes } from "@noble/hashes/utils"; import { hexToBytes } from "@noble/hashes/utils";
@ -29,7 +29,13 @@ export default class CID extends Multibase {
bytes = bytes.slice(1); bytes = bytes.slice(1);
return CID._init(bytes); const cid = CID._init(bytes);
if (cid.hash.functionType !== CID_HASH_TYPES.ED25519) {
return cid.copyWith({ type: CID_TYPES.RAW });
}
return cid;
} }
static fromBytes(bytes: Uint8Array): CID { static fromBytes(bytes: Uint8Array): CID {