12345678910111213141516171819202122232425262728 |
- import { getAddress } from "../address/index.js";
- import { keccak256, SigningKey } from "../crypto/index.js";
- import type { SignatureLike } from "../crypto/index.js";
- import type { BytesLike } from "../utils/index.js";
- /**
- * Returns the address for the %%key%%.
- *
- * The key may be any standard form of public key or a private key.
- */
- export function computeAddress(key: string | SigningKey): string {
- let pubkey: string;
- if (typeof(key) === "string") {
- pubkey = SigningKey.computePublicKey(key, false);
- } else {
- pubkey = key.publicKey;
- }
- return getAddress(keccak256("0x" + pubkey.substring(4)).substring(26));
- }
- /**
- * Returns the recovered address for the private key that was
- * used to sign %%digest%% that resulted in %%signature%%.
- */
- export function recoverAddress(digest: BytesLike, signature: SignatureLike): string {
- return computeAddress(SigningKey.recoverPublicKey(digest, signature));
- }
|