Skip to content

Commit a43b0d9

Browse files
committed
use base64 for shorter signature payloads
1 parent 1ef4de2 commit a43b0d9

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/index.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,6 @@ yS6CCva4O1bQailhOWHMCXusEMvoSMCg7Xfs8bw1zEqkEGY6yvD3yDoHAOrkfJun
104104
testWithKeyPair(
105105
publicKey,
106106
privateKey,
107-
`v=1600000000000,d=3b01f67f6ccabbc0c7cc2ae514a5b7e95cce646ea19a1b4c08de6456a5f70504c59233e5edcae2e00afeca4cb49f23cd61f646f90d4a7f77e2b6157cb9fcbeab6e53642d885f284fa67cad6537caa6d9692d3dc1189d10d53331d60417ac414dda4ce5d691f97abb7137533062e527402c1fc228002ca79a4ad0034990095554b6e53a7ee8307c3ab369cb08deaee419e9f5085ad59c17dab63bdf3bce3fae52ac9ae06bd4b1ad4d23d3c521751bf367ba657a70fb47ea2cdb072d88fad18a9d09f7a2bf1b373be1c625e92fab026e8ff6cf09fb5b0c14f80a3e2ce6c8c5607b55dd17f6111ceed32708243e015c2de83b27a4d4f5f995b68844bec9c0ca535a2afdf058d611b49294d6cd791fc413356d286c2059c10094edf71f8b012a1735fce3ca700c8c53c345bae75e512ac648dce5f7ea8b209917fa817272de6292c64f6e2cb2a48d8db2b4d9718e16eb23a96f996af2098dbbe37619fc242b9ee82f42a3e2afb366e56b185450613ae05951db2613211699c82869c583bd682247eac639fa7567ac00355580ac8ba10d1913c13fda473c2adfa980f92e9ffcb031fc88b4e7fd032220ba5b46b0ac9080fa52dda222a092c4c6e89c36c722edbadb5c95cca3e82b71c57b1a18039db18b9f5b8baed134cc287d77f3a9d1ccd62916cb57308f340288616d7e864693351386b3f0aeeef84ecbb83beba62d117e845a9a`
107+
`v=1600000000000,d=OwH2f2zKu8DHzCrlFKW36VzOZG6hmhtMCN5kVqX3BQTFkjPl7cri4Ar+yky0nyPNYfZG+Q1Kf3fithV8ufy+q25TZC2IXyhPpnytZTfKptlpLT3BGJ0Q1TMx1gQXrEFN2kzl1pH5ertxN1MwYuUnQCwfwigALKeaStADSZAJVVS25Tp+6DB8OrNpywjeruQZ6fUIWtWcF9q2O987zj+uUqya4GvUsa1NI9PFIXUb82e6ZXpw+0fqLNsHLYj60YqdCfeivxs3O+HGJekvqwJuj/bPCftbDBT4Cj4s5sjFYHtV3Rf2ERzu0ycIJD4BXC3oOyek1PX5lbaIRL7JwMpTWir98FjWEbSSlNbNeR/EEzVtKGwgWcEAlO33H4sBKhc1/OPKcAyMU8NFuudeUSrGSNzl9+qLIJkX+oFyct5iksZPbiyypI2NsrTZcY4W6yOpb5lq8gmNu+N2GfwkK57oL0Kj4q+zZuVrGFRQYTrgWVHbJhMhFpnIKGnFg71oIkfqxjn6dWesADVVgKyLoQ0ZE8E/2kc8Kt+pgPkun/ywMfyItOf9AyIgultGsKyQgPpS3aIioJLExuicNsci7brbXJXMo+grccV7GhgDnbGLn1uLrtE0zCh9d/Op0czWKRbLVzCPNAKIYW1+hkaTNROGs/Cu7vhOy7g766YtEX6EWpo=`
108108
);
109109
});

src/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ function getSigner(secretOrPrivateKey: string): (input: string) => string {
4141
function signWithPrivate(input: string, priv: string): string {
4242
return createSign('sha256')
4343
.update(input)
44-
.sign(priv, 'hex');
44+
.sign(priv, 'base64');
4545
}
4646

4747
function verifyWithPublic(input: string, digest: string, pub: string): boolean {
4848
return createVerify('sha256')
4949
.update(input)
50-
.verify(pub, digest, 'hex');
50+
.verify(pub, digest, 'base64');
5151
}
5252

5353
function getVerifier(
@@ -78,7 +78,12 @@ export function verify(
7878
signature: string,
7979
opts: { timeout?: number; timestamp?: number } = {}
8080
) {
81-
const match = /v=(\d+),d=([\da-f]+)/.exec(signature);
81+
const useBase64 = isPublicKey(secretOrPublicKey);
82+
const regex = useBase64
83+
? /v=(\d+),d=((?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?)/
84+
: /v=(\d+),d=([\da-f]+)/;
85+
const match = regex.exec(signature);
86+
8287
if (!match) {
8388
return false;
8489
}

0 commit comments

Comments
 (0)