I'm creating a signature in javascript using a private key, and I want to verify it in my server using golang. However, I am unable to verify the signature.
Here is how I create the signature in golang using forge.js
var md = forge.md.sha256.create();
md.update(randomString, 'utf8');
var signature = privateKey.sign(md);
signature = forge.util.encode64(signature);
formData.append("sig", signature);
I pass it over using multiform, and then on my golang server using the crypto library, I read it out and try to verify it this way
h := sha256.New()
digest := h.Sum(nil)
signature, err := b64.StdEncoding.DecodeString(string(sig))
if err != nil {
fmt.Println("COULD NOT DECODE")
return
}
cert, err := x509.ParseCertificate(certBytes)
if err != nil {
return
}
pubkey := cert.PublicKey.(*rsa.PublicKey)
err = rsa.VerifyPKCS1v15(pubkey, crypto.SHA256, digest, signature)
if err != nil {
fmt.Println("COULD NOT VERIFY")
return
}
I keep failing to verify the signature. I'm kinda lost as to how to even debug this.