Replying to Avatar hodlbod

Ok I need some more help, nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7qgewaehxw309aex2mrp0yh8xmn0wf6zuum0vd5kzmp0qqsdr8lv2sp86ztsv4yz9q9wz7ng6zk40u84cta8fcj08kamrek9f9gsq8th3 nostr:nprofile1qyvhwumn8ghj7un9d3shjtndd3jkkafwdahxc6twv5hszyrhwden5te0vyhxummn9ekx7mp0qythwumn8ghj7ct5d3shxtnwdaehgu3wd3skuep0qqsyeqqz27jc32pgf8gynqtu90d2mxztykj94k0kmttxu37nk3lrktctmwr4h nostr:nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qgmwaehxw309aex2mrp0yh8wetnw3jhymnzw33jucm0d5hsqgpm7rrrljungc6q0tuh5hj7ue863q73qlheu4vywtzwhx42a7j9n5zr9h9m

I'm trying to decrypt an event using nip44, but I'm getting an "invalid hmac" warning on a valid payload (at least, according to the javascript implementation). Any hints? Code below.

func getNip44ConversationKey(sk string, pk string) []byte {

sk_bytes, _ := hex.DecodeString("02" + sk)

sk_obj := secp256k1.PrivKeyFromBytes(sk_bytes)

pk_bytes, _ := hex.DecodeString("02" + pk)

pk_obj, _ := secp256k1.ParsePubKey(pk_bytes)

return nip44.GenerateConversationKey(sk_obj, pk_obj)

}

func getNip44Rumor(sk string, wrap *nostr.Event) (*nostr.Event, error) {

wrap_key := getNip44ConversationKey(sk, wrap.PubKey)

nip44.Decrypt(wrap_key, wrap.Content) // invalid hmac

...

}

nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7qgewaehxw309aex2mrp0yh8xmn0wf6zuum0vd5kzmp0qqsdr8lv2sp86ztsv4yz9q9wz7ng6zk40u84cta8fcj08kamrek9f9gsq8th3 have you actually tested that Go algorithm to see that it can decode outputs from other language versions?

also nostr:nprofile1qyfhwumn8ghj7mmxve3ksctfdch8qatz9uqsuamnwvaz7tmwdaejumr0dshszxthwden5te0dphkgmrzdajzumn0wd68yvfwvdhk6tcqyztuwzjyxe4x2dwpgken87tna2rdlhpd02va5cvvgrrywpddnr3jyhdw0my i presume that it's possible to send and receive NIP-44s through coracle from one coracle client to another, so i'm going to examine the coracle implementation, as it is clearly different to the one implemented in #golang

and the link on the page from the NIP-44 to the js/ts version is just a link to the nips repo, wth

i'm going with the idea that coracle is the authoritative client implementation because my task at the moment is to have my code function with it so i'm going to see what actual javascript code is in coracle for encrypting and decrypting these messages

i'm not gonna enjoy reading #javascript code but i will definitely make it possible for a #golang NIP-44 capable chat client to encode and decode

i kinda had hoped i'd have a bit more relaxed second half of february as a deadline is coming up but i think that maybe i'm going to put this chatbot thing on the backburner, stick to supporting NIP-44 and enforcing privacy with NIP-42 and to hell with this insane encryption scheme

you should have asked me how it's done and i'd have come up with a much clearer, simpler scheme that would have been implemented properly in Go instead of this sick joke that someone paid an inordinate amount of money to a crypto auditing company to basically not really tell us anything

Reply to this note

Please Login to reply.

Discussion

No replies yet.