UNPKG

interchainjs

Version:

InterchainJS is a JavaScript library for interacting with Cosmos SDK based blockchains.

174 lines (173 loc) 5.59 kB
import { BinaryReader, BinaryWriter } from "../../../binary"; import { bytesFromBase64, base64FromBytes } from "../../../helpers"; function createBasePubKey() { return { key: new Uint8Array() }; } /** * PubKey is an ed25519 public key for handling Tendermint keys in SDK. * It's needed for Any serialization and SDK compatibility. * It must not be used in a non Tendermint key context because it doesn't implement * ADR-28. Nevertheless, you will like to use ed25519 in app user level * then you must create a new proto message and follow ADR-28 for Address construction. * @name PubKey * @package cosmos.crypto.ed25519 * @see proto type: cosmos.crypto.ed25519.PubKey */ export const PubKey = { typeUrl: "/cosmos.crypto.ed25519.PubKey", aminoType: "tendermint/PubKeyEd25519", is(o) { return o && (o.$typeUrl === PubKey.typeUrl || o.key instanceof Uint8Array || typeof o.key === "string"); }, isAmino(o) { return o && (o.$typeUrl === PubKey.typeUrl || o.key instanceof Uint8Array || typeof o.key === "string"); }, encode(message, writer = BinaryWriter.create()) { if (message.key.length !== 0) { writer.uint32(10).bytes(message.key); } return writer; }, decode(input, length) { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePubKey(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.key = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromPartial(object) { const message = createBasePubKey(); message.key = object.key ?? new Uint8Array(); return message; }, fromAmino(object) { const message = createBasePubKey(); if (object.key !== undefined && object.key !== null) { message.key = bytesFromBase64(object.key); } return message; }, toAmino(message) { const obj = {}; obj.key = message.key ? base64FromBytes(message.key) : undefined; return obj; }, fromAminoMsg(object) { return PubKey.fromAmino(object.value); }, toAminoMsg(message) { return { type: "tendermint/PubKeyEd25519", value: PubKey.toAmino(message) }; }, fromProtoMsg(message) { return PubKey.decode(message.value); }, toProto(message) { return PubKey.encode(message).finish(); }, toProtoMsg(message) { return { typeUrl: "/cosmos.crypto.ed25519.PubKey", value: PubKey.encode(message).finish() }; }, registerTypeUrl() { } }; function createBasePrivKey() { return { key: new Uint8Array() }; } /** * PrivKey defines a ed25519 private key. * NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context. * @name PrivKey * @package cosmos.crypto.ed25519 * @see proto type: cosmos.crypto.ed25519.PrivKey */ export const PrivKey = { typeUrl: "/cosmos.crypto.ed25519.PrivKey", aminoType: "tendermint/PrivKeyEd25519", is(o) { return o && (o.$typeUrl === PrivKey.typeUrl || o.key instanceof Uint8Array || typeof o.key === "string"); }, isAmino(o) { return o && (o.$typeUrl === PrivKey.typeUrl || o.key instanceof Uint8Array || typeof o.key === "string"); }, encode(message, writer = BinaryWriter.create()) { if (message.key.length !== 0) { writer.uint32(10).bytes(message.key); } return writer; }, decode(input, length) { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePrivKey(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.key = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromPartial(object) { const message = createBasePrivKey(); message.key = object.key ?? new Uint8Array(); return message; }, fromAmino(object) { const message = createBasePrivKey(); if (object.key !== undefined && object.key !== null) { message.key = bytesFromBase64(object.key); } return message; }, toAmino(message) { const obj = {}; obj.key = message.key ? base64FromBytes(message.key) : undefined; return obj; }, fromAminoMsg(object) { return PrivKey.fromAmino(object.value); }, toAminoMsg(message) { return { type: "tendermint/PrivKeyEd25519", value: PrivKey.toAmino(message) }; }, fromProtoMsg(message) { return PrivKey.decode(message.value); }, toProto(message) { return PrivKey.encode(message).finish(); }, toProtoMsg(message) { return { typeUrl: "/cosmos.crypto.ed25519.PrivKey", value: PrivKey.encode(message).finish() }; }, registerTypeUrl() { } };