{"version":3,"file":"index.mjs","sources":["../../../../../../src/mods/secp256k1/signing/index.ts"],"sourcesContent":["import { Base16 } from \"@hazae41/base16\";\nimport { Box } from \"@hazae41/box\";\nimport { Bytes, Uint8Array } from \"@hazae41/bytes\";\nimport { RawHexString, ZeroHexString } from \"@hazae41/hexane\";\nimport { Keccak256 } from \"@hazae41/keccak256\";\nimport { Secp256k1 } from \"@hazae41/secp256k1\";\nimport { Copiable } from \"libs/copiable/index.js\";\nimport { Address } from \"mods/address/index.js\";\nimport { BytesAsInteger, BytesAsUtf8, ZeroHexAsInteger } from \"mods/convert/index.js\";\nimport { ExtSignature, RsvBytesSignature } from \"../signature/index.js\";\nimport { ExtVerifyingKey } from \"../verifying/index.js\";\n\nexport type SigningKey =\n  | ZeroHexSigningKey\n  | BytesSigningKey\n  | ExtSigningKey\n\nexport namespace SigningKey {\n\n  export type From =\n    | ZeroHexSigningKey.Lose\n    | BytesSigningKey.Lose\n    | ExtSigningKey.Lose\n\n  export function randomOrThrow() {\n    return ExtSigningKey.randomOrThrow()\n  }\n\n  export function getVerifyingKeyOrThrow(signingKey: SigningKey.From): ExtVerifyingKey {\n    using signingKeyExtBox = ExtSigningKey.fromOrThrow(signingKey)\n    return signingKeyExtBox.get().getVerifyingKeyOrThrow()\n  }\n\n  export function getUncheckedAddressOrThrow(signingKey: SigningKey.From): ZeroHexString<20> {\n    using signingKeyExtBox = ExtSigningKey.fromOrThrow(signingKey)\n\n    using verifyingKeyExt = signingKeyExtBox.get().getVerifyingKeyOrThrow()\n    using verifyingKeyMemoryExt = verifyingKeyExt.exportUncompressedOrThrow()\n\n    using hashMemoryExt = Keccak256.get().getOrThrow().hashOrThrow(verifyingKeyMemoryExt.bytes.subarray(1))\n    const rawLowerCase = Base16.get().getOrThrow().encodeOrThrow(hashMemoryExt)\n\n    return `0x${rawLowerCase.slice(-40)}` as ZeroHexString<20>\n  }\n\n  export function getAddressOrThrow(signingKey: SigningKey.From): Address {\n    using signingKeyExtBox = ExtSigningKey.fromOrThrow(signingKey)\n\n    using verifyingKeyExt = signingKeyExtBox.get().getVerifyingKeyOrThrow()\n    using verifyingKeyMemoryExt = verifyingKeyExt.exportUncompressedOrThrow()\n\n    using hashMemoryExt = Keccak256.get().getOrThrow().hashOrThrow(verifyingKeyMemoryExt.bytes.subarray(1))\n    const rawLowerCase = Base16.get().getOrThrow().encodeOrThrow(hashMemoryExt)\n\n    return Address.fromRawHexOrThrow(rawLowerCase.slice(-40) as RawHexString<20>)\n  }\n\n  export function signUnprefixedMessageNoOffsetOrThrow(signingKey: SigningKey.From, message: BytesAsUtf8.From): ExtSignature {\n    using signingKeyExtBox = ExtSigningKey.fromOrThrow(signingKey)\n    const messageBytes = BytesAsUtf8.fromOrThrow(message)\n\n    using hashMemoryExt = Keccak256.get().getOrThrow().hashOrThrow(messageBytes)\n    return signingKeyExtBox.get().signOrThrow(hashMemoryExt)\n  }\n\n  export function signUnprefixedMessageOrThrow(signingKey: SigningKey.From, message: BytesAsUtf8.From): RsvBytesSignature {\n    using signatureExt = signUnprefixedMessageNoOffsetOrThrow(signingKey, message)\n    const signatureRsvBytes = RsvBytesSignature.fromExtOrThrow(signatureExt)\n\n    const { r, s } = signatureRsvBytes\n    const v = signatureRsvBytes.v + 27\n\n    return { r, s, v }\n  }\n\n  export function signMessageNoOffsetOrThrow(signingKey: SigningKey.From, message: BytesAsUtf8.From): ExtSignature {\n    using signingKeyExtBox = ExtSigningKey.fromOrThrow(signingKey)\n    const messageBytes = BytesAsUtf8.fromOrThrow(message)\n\n    const prefixBytes = Bytes.fromUtf8(\"\\x19Ethereum Signed Message:\\n\" + messageBytes.length.toString())\n    const concatBytes = Bytes.concat([prefixBytes, messageBytes])\n\n    using hashMemoryExt = Keccak256.get().getOrThrow().hashOrThrow(concatBytes)\n    return signingKeyExtBox.get().signOrThrow(hashMemoryExt)\n  }\n\n  export function signMessageOrThrow(signingKey: SigningKey.From, message: BytesAsUtf8.From): RsvBytesSignature {\n    using signatureExt = signMessageNoOffsetOrThrow(signingKey, message)\n    const signatureRsvBytes = RsvBytesSignature.fromExtOrThrow(signatureExt)\n\n    const { r, s } = signatureRsvBytes\n    const v = signatureRsvBytes.v + 27\n\n    return { r, s, v }\n  }\n\n\n}\n\nexport type ZeroHexSigningKey = ZeroHexString<32>\n\nexport namespace ZeroHexSigningKey {\n\n  export type Lose = ZeroHexAsInteger.From\n\n  export type From = SigningKey.From\n\n  export function fromOrThrow(from: ZeroHexSigningKey.From): ZeroHexSigningKey {\n    if (from instanceof Secp256k1.SigningKey)\n      return fromExtOrThrow(from)\n    return fromOtherOrThrow(from)\n  }\n\n  export function fromExtOrThrow(from: ExtSigningKey): ZeroHexSigningKey {\n    using slice = from.exportOrThrow()\n\n    const base16 = Base16.get().getOrThrow().encodeOrThrow(slice.bytes)\n\n    return `0x${base16}` as ZeroHexString<32>\n  }\n\n  export function fromOtherOrThrow(from: ZeroHexAsInteger.From): ZeroHexSigningKey {\n    return ZeroHexAsInteger.Length.fromOrThrow(from, 32)\n  }\n\n  export function getVerifyingKeyOrThrow(signingKey: ZeroHexSigningKey.From) {\n    return SigningKey.getVerifyingKeyOrThrow(signingKey)\n  }\n\n  export function getUncheckedAddressOrThrow(signingKey: ZeroHexSigningKey.From) {\n    return SigningKey.getUncheckedAddressOrThrow(signingKey)\n  }\n\n  export function getAddressOrThrow(signingKey: ZeroHexSigningKey.From) {\n    return SigningKey.getAddressOrThrow(signingKey)\n  }\n\n  export function signUnprefixedMessageNoOffsetOrThrow(signingKey: ZeroHexSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signUnprefixedMessageNoOffsetOrThrow(signingKey, message)\n  }\n\n  export function signUnprefixedMessageOrThrow(signingKey: ZeroHexSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signUnprefixedMessageOrThrow(signingKey, message)\n  }\n\n  export function signMessageNoOffsetOrThrow(signingKey: ZeroHexSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signMessageNoOffsetOrThrow(signingKey, message)\n  }\n\n  export function signMessageOrThrow(signingKey: ZeroHexSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signMessageOrThrow(signingKey, message)\n  }\n\n}\n\nexport type BytesSigningKey = Uint8Array<32>\n\nexport namespace BytesSigningKey {\n\n  export type Lose = BytesAsInteger.From\n\n  export type From = SigningKey.From\n\n  export function fromOrThrow(from: BytesSigningKey.From): BytesSigningKey {\n    if (from instanceof Secp256k1.SigningKey)\n      return fromExtOrThrow(from)\n    return fromOtherOrThrow(from)\n  }\n\n  export function fromExtOrThrow(from: ExtSigningKey): BytesSigningKey {\n    return Copiable.copyAndDispose(from.exportOrThrow()) as Uint8Array<32>\n  }\n\n  export function fromOtherOrThrow(from: BytesAsInteger.From): BytesSigningKey {\n    return BytesAsInteger.Length.fromOrThrow(from, 32)\n  }\n\n  export function getVerifyingKeyOrThrow(signingKey: BytesSigningKey.From) {\n    return SigningKey.getVerifyingKeyOrThrow(signingKey)\n  }\n\n  export function getUncheckedAddressOrThrow(signingKey: BytesSigningKey.From) {\n    return SigningKey.getUncheckedAddressOrThrow(signingKey)\n  }\n\n  export function getAddressOrThrow(signingKey: BytesSigningKey.From) {\n    return SigningKey.getAddressOrThrow(signingKey)\n  }\n\n  export function signUnprefixedMessageNoOffsetOrThrow(signingKey: BytesSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signUnprefixedMessageNoOffsetOrThrow(signingKey, message)\n  }\n\n  export function signUnprefixedMessageOrThrow(signingKey: BytesSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signUnprefixedMessageOrThrow(signingKey, message)\n  }\n\n  export function signMessageNoOffsetOrThrow(signingKey: BytesSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signMessageNoOffsetOrThrow(signingKey, message)\n  }\n\n  export function signMessageOrThrow(signingKey: BytesSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signMessageOrThrow(signingKey, message)\n  }\n\n}\n\nexport type ExtSigningKey = Secp256k1.SigningKey\n\nexport namespace ExtSigningKey {\n\n  export type Lose = Secp256k1.SigningKey\n\n  export function randomOrThrow(): ExtSigningKey {\n    return Secp256k1.get().getOrThrow().SigningKey.randomOrThrow()\n  }\n\n  export type From = SigningKey.From\n\n  export function fromOrThrow(from: ExtSigningKey.From): Box<ExtSigningKey> {\n    if (from instanceof Secp256k1.SigningKey)\n      return fromExtOrThrow(from)\n    return fromOtherOrThrow(from)\n  }\n\n  export function fromExtOrThrow(from: ExtSigningKey): Box<ExtSigningKey> {\n    return Box.createAsDropped(from)\n  }\n\n  export function fromOtherOrThrow(from: BytesAsInteger.From): Box<ExtSigningKey> {\n    return new Box(Secp256k1.get().getOrThrow().SigningKey.importOrThrow(BytesAsInteger.Length.fromOrThrow(from, 32)))\n  }\n\n  export function getVerifyingKeyOrThrow(signingKey: ExtSigningKey.From) {\n    return SigningKey.getVerifyingKeyOrThrow(signingKey)\n  }\n\n  export function getUncheckedAddressOrThrow(signingKey: ExtSigningKey.From) {\n    return SigningKey.getUncheckedAddressOrThrow(signingKey)\n  }\n\n  export function getAddressOrThrow(signingKey: ExtSigningKey.From) {\n    return SigningKey.getAddressOrThrow(signingKey)\n  }\n\n  export function signUnprefixedMessageNoOffsetOrThrow(signingKey: ExtSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signUnprefixedMessageNoOffsetOrThrow(signingKey, message)\n  }\n\n  export function signUnprefixedMessageOrThrow(signingKey: ExtSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signUnprefixedMessageOrThrow(signingKey, message)\n  }\n\n  export function signMessageNoOffsetOrThrow(signingKey: ExtSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signMessageNoOffsetOrThrow(signingKey, message)\n  }\n\n  export function signMessageOrThrow(signingKey: ExtSigningKey.From, message: BytesAsUtf8.From) {\n    return SigningKey.signMessageOrThrow(signingKey, message)\n  }\n\n}"],"names":[],"mappings":"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"}