{"version":3,"file":"index.cjs","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":["SigningKey","ExtSigningKey","__addDisposableResource","Keccak256","Base16","Address","BytesAsUtf8","RsvBytesSignature","Bytes","ZeroHexSigningKey","Secp256k1","base16","ZeroHexAsInteger","BytesSigningKey","Copiable","BytesAsInteger","Box"],"mappings":"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"}