Skip to content

Commit

Permalink
wip fixing CI: signature invalid on fixture keys
Browse files Browse the repository at this point in the history
  • Loading branch information
Ptroger committed Mar 21, 2024
1 parent 65620ac commit 1f767ee
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 49 deletions.
69 changes: 20 additions & 49 deletions packages/policy-engine-shared/src/lib/dev.fixture.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Alg, Curves, KeyTypes, Use } from '@narval/signature'
import { Alg, Curves, KeyTypes, Secp256k1PrivateKey, Use, secp256k1PrivateKeyToJwk, secp256k1PublicKeyToJwk } from '@narval/signature'
import { PrivateKeyAccount } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { Action } from './type/action.type'
Expand Down Expand Up @@ -48,6 +48,14 @@ export const UNSAFE_PRIVATE_KEY: Record<Personas, `0x${string}`> = {
Dave: '0x82a0cf4f0fdfd42d93ff328b73bfdbc9c8b4f95f5aedfae82059753fc08a180f'
}

export const PRIVATE_KEYS_JWK: Record<Personas, Secp256k1PrivateKey> = {
Root: secp256k1PrivateKeyToJwk(UNSAFE_PRIVATE_KEY.Root),
Alice: secp256k1PrivateKeyToJwk(UNSAFE_PRIVATE_KEY.Alice),
Bob: secp256k1PrivateKeyToJwk(UNSAFE_PRIVATE_KEY.Bob),
Carol: secp256k1PrivateKeyToJwk(UNSAFE_PRIVATE_KEY.Carol),
Dave: secp256k1PrivateKeyToJwk(UNSAFE_PRIVATE_KEY.Dave)
}

export const ACCOUNT: Record<Personas, PrivateKeyAccount> = {
Root: privateKeyToAccount(UNSAFE_PRIVATE_KEY.Root),
Alice: privateKeyToAccount(UNSAFE_PRIVATE_KEY.Alice),
Expand Down Expand Up @@ -81,66 +89,29 @@ export const USER: Record<Personas, UserEntity> = {

export const CREDENTIAL: Record<Personas, CredentialEntity> = {
Root: {
id: '0x20FB9603DC2C011aBFdFbf270bD627e94065cBb9',
id: PRIVATE_KEYS_JWK.Root.kid,
userId: USER.Root.id,
key: {
kty: KeyTypes.EC,
use: Use.ENC,
crv: Curves.SECP256K1,
alg: Alg.ES256K,
kid: '0x20FB9603DC2C011aBFdFbf270bD627e94065cBb9',
x: 'crqZ2XkCBgl1XwxjlQ02PKm_JJ4wJAkANJ6DidZRzTw',
y: 'GyAbgM5_HOaPmAHNatWanWmhLgaznyNHUIw5YUe_yyw'
}
key: secp256k1PublicKeyToJwk(UNSAFE_PRIVATE_KEY.Root)
},
Alice: {
id: '0xcdE93dc1C6D8AF279c33069233aEE5542F308594',
userId: USER.Alice.id,
key: {
kty: KeyTypes.EC,
use: Use.SIG,
crv: Curves.SECP256K1,
alg: Alg.ES256K,
kid: '0xcdE93dc1C6D8AF279c33069233aEE5542F308594',
x: 'vjNVzbnLxdazY0M-2BDnX54JexB8Pa9n_fucDJli6Bo',
y: 'jOAwUCXcLz7nhvW2mSwPBCZwv856ybAGK7LS6hvfdFQ'
}
id: PRIVATE_KEYS_JWK.Alice.kid,
key: secp256k1PublicKeyToJwk(UNSAFE_PRIVATE_KEY.Alice)
},
Bob: {
id: '0x9A5Bd18C902887DCc2D881a352010C15eea229d',
key: {
kty: KeyTypes.EC,
crv: Curves.SECP256K1,
alg: Alg.ES256K,
kid: '0xc7916Ee805440bB386a88d09AED8688eFb99CB0F',
x: 'MjsuvdMuxs1AoQ12BuARzzTyilJNh2jQmErMZwR2M-E',
y: 'axLms3pGEX0Xujho5welzcn9mx_oV0Bs3uVeG9-eCqU'
},
userId: USER.Bob.id
userId: USER.Bob.id,
id: PRIVATE_KEYS_JWK.Bob.kid,
key: secp256k1PublicKeyToJwk(UNSAFE_PRIVATE_KEY.Bob)
},
Carol: {
id: '0xe99c6FBb2eE939682AB8A216a893cBD21CC2f982',
userId: USER.Carol.id,
key: {
kty: KeyTypes.EC,
crv: Curves.SECP256K1,
alg: Alg.ES256K,
kid: '0x9AA5Bd18C902887DCc2D881a352010C15eea229d',
x: '4n3yf5qUBU0sDH9yGjdfiVRFEnQndbd5yGEupSdG6R4',
y: 'FESQhctMSQOF2E79YbCE8q1JIQWltMbvoCVwSsO19ck'
}
id: PRIVATE_KEYS_JWK.Carol.kid,
key: secp256k1PublicKeyToJwk(UNSAFE_PRIVATE_KEY.Carol)
},
Dave: {
id: '0xddd26a02e7c54e8dc373b9d2dcb309ecdeca815d',
userId: USER.Dave.id,
key: {
kty: KeyTypes.EC,
crv: Curves.SECP256K1,
alg: Alg.ES256K,
kid: '0xe99c6FBb2eE939682AB8A216a893cBD21CC2f982',
x: 'sdb8VZcfcI6t5i7BD3BTPoZPyYCxaVpw7H1BIUyPZ5M',
y: 'cIcYdzuWF7KqFKJrdQSmdjPpQzrk9_uzNycqtvtH1QI'
}
id: PRIVATE_KEYS_JWK.Dave.kid,
key: secp256k1PublicKeyToJwk(UNSAFE_PRIVATE_KEY.Dave)
}
}

Expand Down
1 change: 1 addition & 0 deletions packages/signature/src/lib/verify.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const verifyEip191WithRecovery = async (sig: Hex, hash: Uint8Array, address: Hex

const verifyEip191WithPublicKey = async (sig: Hex, hash: Uint8Array, jwk: PublicKey): Promise<boolean> => {
if (isSepc256k1PublicKeyJwk(jwk)) {
console.log('\n\n\n jwk', jwk, '\n\n\n')
const pub = secp256k1PublicKeyToHex(jwk)
// A eth sig has a `v` value of 27 or 28, so we need to remove that to get the signature
// And we remove the 0x prefix. So that means we slice the first and last 2 bytes, leaving the 128 character signature
Expand Down

0 comments on commit 1f767ee

Please sign in to comment.