2022-04-09 09:26:25 +01:00
|
|
|
/* eslint-disable import/export */
|
|
|
|
/* eslint-disable @typescript-eslint/no-namespace */
|
|
|
|
|
|
|
|
import { encodeMessage, decodeMessage, message, bytes, enumeration } from 'protons-runtime'
|
2022-05-10 12:35:33 +01:00
|
|
|
import type { Codec } from 'protons-runtime'
|
2022-08-03 14:15:35 +01:00
|
|
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
2022-04-09 09:26:25 +01:00
|
|
|
|
|
|
|
export interface Exchange {
|
|
|
|
id?: Uint8Array
|
|
|
|
pubkey?: PublicKey
|
|
|
|
}
|
|
|
|
|
|
|
|
export namespace Exchange {
|
2022-05-10 12:35:33 +01:00
|
|
|
export const codec = (): Codec<Exchange> => {
|
2022-04-09 09:26:25 +01:00
|
|
|
return message<Exchange>({
|
|
|
|
1: { name: 'id', codec: bytes, optional: true },
|
|
|
|
2: { name: 'pubkey', codec: PublicKey.codec(), optional: true }
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2022-08-03 14:15:35 +01:00
|
|
|
export const encode = (obj: Exchange): Uint8ArrayList => {
|
2022-04-09 09:26:25 +01:00
|
|
|
return encodeMessage(obj, Exchange.codec())
|
|
|
|
}
|
|
|
|
|
2022-08-03 14:15:35 +01:00
|
|
|
export const decode = (buf: Uint8Array | Uint8ArrayList): Exchange => {
|
2022-04-09 09:26:25 +01:00
|
|
|
return decodeMessage(buf, Exchange.codec())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export enum KeyType {
|
|
|
|
RSA = 'RSA',
|
|
|
|
Ed25519 = 'Ed25519',
|
|
|
|
Secp256k1 = 'Secp256k1',
|
|
|
|
ECDSA = 'ECDSA'
|
|
|
|
}
|
|
|
|
|
2022-05-10 12:35:33 +01:00
|
|
|
enum __KeyTypeValues {
|
|
|
|
RSA = 0,
|
|
|
|
Ed25519 = 1,
|
|
|
|
Secp256k1 = 2,
|
|
|
|
ECDSA = 3
|
|
|
|
}
|
|
|
|
|
2022-04-09 09:26:25 +01:00
|
|
|
export namespace KeyType {
|
|
|
|
export const codec = () => {
|
2022-05-10 12:35:33 +01:00
|
|
|
return enumeration<typeof KeyType>(__KeyTypeValues)
|
2022-04-09 09:26:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
export interface PublicKey {
|
|
|
|
Type: KeyType
|
|
|
|
Data: Uint8Array
|
|
|
|
}
|
|
|
|
|
|
|
|
export namespace PublicKey {
|
2022-05-10 12:35:33 +01:00
|
|
|
export const codec = (): Codec<PublicKey> => {
|
2022-04-09 09:26:25 +01:00
|
|
|
return message<PublicKey>({
|
|
|
|
1: { name: 'Type', codec: KeyType.codec() },
|
|
|
|
2: { name: 'Data', codec: bytes }
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2022-08-03 14:15:35 +01:00
|
|
|
export const encode = (obj: PublicKey): Uint8ArrayList => {
|
2022-04-09 09:26:25 +01:00
|
|
|
return encodeMessage(obj, PublicKey.codec())
|
|
|
|
}
|
|
|
|
|
2022-08-03 14:15:35 +01:00
|
|
|
export const decode = (buf: Uint8Array | Uint8ArrayList): PublicKey => {
|
2022-04-09 09:26:25 +01:00
|
|
|
return decodeMessage(buf, PublicKey.codec())
|
|
|
|
}
|
|
|
|
}
|