60 lines
2.3 KiB
TypeScript
60 lines
2.3 KiB
TypeScript
import { Encoding } from "@iov/encoding";
|
|
|
|
import { encodeSecp256k1Signature } from "./encoding";
|
|
|
|
const { fromBase64 } = Encoding;
|
|
|
|
describe("encoding", () => {
|
|
describe("encodeSecp256k1Signature", () => {
|
|
it("encodes a full signature", () => {
|
|
const pubkey = fromBase64("AtQaCqFnshaZQp6rIkvAPyzThvCvXSDO+9AzbxVErqJP");
|
|
const signature = fromBase64(
|
|
"1nUcIH0CLT0/nQ0mBTDrT6kMG20NY/PsH7P2gc4bpYNGLEYjBmdWevXUJouSE/9A/60QG9cYeqyTe5kFDeIPxQ==",
|
|
);
|
|
expect(encodeSecp256k1Signature(pubkey, signature)).toEqual({
|
|
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
pub_key: {
|
|
type: "tendermint/PubKeySecp256k1",
|
|
value: "AtQaCqFnshaZQp6rIkvAPyzThvCvXSDO+9AzbxVErqJP",
|
|
},
|
|
signature: "1nUcIH0CLT0/nQ0mBTDrT6kMG20NY/PsH7P2gc4bpYNGLEYjBmdWevXUJouSE/9A/60QG9cYeqyTe5kFDeIPxQ==",
|
|
});
|
|
});
|
|
|
|
it("compresses uncompressed public keys", () => {
|
|
const pubkey = fromBase64(
|
|
"BE8EGB7ro1ORuFhjOnZcSgwYlpe0DSFjVNUIkNNQxwKQE7WHpoHoNswYeoFkuYpYSKK4mzFzMV/dB0DVAy4lnNU=",
|
|
);
|
|
const signature = fromBase64(
|
|
"1nUcIH0CLT0/nQ0mBTDrT6kMG20NY/PsH7P2gc4bpYNGLEYjBmdWevXUJouSE/9A/60QG9cYeqyTe5kFDeIPxQ==",
|
|
);
|
|
expect(encodeSecp256k1Signature(pubkey, signature)).toEqual({
|
|
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
pub_key: {
|
|
type: "tendermint/PubKeySecp256k1",
|
|
value: "A08EGB7ro1ORuFhjOnZcSgwYlpe0DSFjVNUIkNNQxwKQ",
|
|
},
|
|
signature: "1nUcIH0CLT0/nQ0mBTDrT6kMG20NY/PsH7P2gc4bpYNGLEYjBmdWevXUJouSE/9A/60QG9cYeqyTe5kFDeIPxQ==",
|
|
});
|
|
});
|
|
|
|
it("removes recovery values from signature data", () => {
|
|
const pubkey = fromBase64("AtQaCqFnshaZQp6rIkvAPyzThvCvXSDO+9AzbxVErqJP");
|
|
const signature = Uint8Array.from([
|
|
...fromBase64(
|
|
"1nUcIH0CLT0/nQ0mBTDrT6kMG20NY/PsH7P2gc4bpYNGLEYjBmdWevXUJouSE/9A/60QG9cYeqyTe5kFDeIPxQ==",
|
|
),
|
|
99,
|
|
]);
|
|
expect(encodeSecp256k1Signature(pubkey, signature)).toEqual({
|
|
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
pub_key: {
|
|
type: "tendermint/PubKeySecp256k1",
|
|
value: "AtQaCqFnshaZQp6rIkvAPyzThvCvXSDO+9AzbxVErqJP",
|
|
},
|
|
signature: "1nUcIH0CLT0/nQ0mBTDrT6kMG20NY/PsH7P2gc4bpYNGLEYjBmdWevXUJouSE/9A/60QG9cYeqyTe5kFDeIPxQ==",
|
|
});
|
|
});
|
|
});
|
|
});
|