Skip to content

Instantly share code, notes, and snippets.

@zauberstuhl
Last active February 24, 2018 00:28
Show Gist options
  • Save zauberstuhl/fc7f19f33d178faf0e25a2f7b913b3a2 to your computer and use it in GitHub Desktop.
Save zauberstuhl/fc7f19f33d178faf0e25a2f7b913b3a2 to your computer and use it in GitHub Desktop.
GangGo validate Message
package main
import (
"fmt"
federation "github.com/ganggo/federation"
)
//<me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">\n <me:data type="application/xml">PHN0YXR1c19tZXNzYWdlPjxhdXRob3I-amF5d2lua0BnZ2cuc29jaWFsPC9hdXRob3I-PGd1aWQ-ZmQ2NWEwMjNmZWE2MmU2NDNiNWM5ZTgxMWJlODI5YmQ8L2d1aWQ-PGNyZWF0ZWRfYXQ-MjAxOC0wMi0yM1QyMzoyMTo0Nlo8L2NyZWF0ZWRfYXQ-PHByb3ZpZGVyX2Rpc3BsYXlfbmFtZT5HYW5nR288L3Byb3ZpZGVyX2Rpc3BsYXlfbmFtZT48dGV4dD5QaW5nIHBvbmc8L3RleHQ-PHB1YmxpYz50cnVlPC9wdWJsaWM-PC9zdGF0dXNfbWVzc2FnZT4=</me:data>\n <me:encoding>base64url</me:encoding>\n <me:alg>RSA-SHA256</me:alg>\n <me:sig key_id="amF5d2lua0BnZ2cuc29jaWFs">m0Al iIlJziasAdCZ9mfYbtm1nnhImd31wCtu2rZ9dQL46wjoHI9yD6EYsR5p1XS1FNm9A3PqAszVpJxWO2UGUlVvCote6 m7MbOWQ9lAjnhgfYKhwHeHiZt8lbbC/UaPJz1ZOWi4SUfr7nPOR/aoK5LzYyy4Ls6rUUXSEsbx5NVbj5TBiC/h1UjNTG28ZMnCnNrpViD5pWNhpUuinRmmQc9RLvOcKZNKTezkzsjEhbu5cXc9kZsPhlM WALyYRedpNcW4BsoF4bTWYQSqJsJLz3Jp/4wDc0pN2nPvn8rBvA6NPNJWZMrJxeYUXFwO aFctcSh8ByubXNifEa8wNQ==</me:sig>\n</me:env>
var pubkey = []byte(`-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA34PmYypSX8kgLGwC8UO6
wOm2CBsxr+J0Q5+7dE58oRdgMJCd324+dA0i4pexL3KjPHrh106+ta5yAuwe5TUK
MeV7OK7wuxQjZbCMSF+XqDTSDDmhHrjtw89uYbMvaU/BauPcVG1sysZPCXRLmiPH
vr6lnLsdKqbWng4ZnTx9b/sE7aIECPQwwAjRoF3qEk8x6h6nfv8uLkgIBnkhWuOI
2iEXy8soM9pJwR5LTsJWEsicTXDqpO5fvBeediHjr19VUQPCAiV+RGorQzY90efs
rZuym3gimUvD26+nVahMCs9DjDTxUXg5xYXL/VfqQWMD5ICueXz0VVmL72Nlga/i
PwIDAQAB
-----END PUBLIC KEY-----`)
func main() {
pubKey, err := federation.ParseRSAPublicKey(pubkey)
if err != nil {
fmt.Println(err)
return
}
var message federation.Message
message.Encoding = "base64url"
message.Alg = "RSA-SHA256"
message.Data.Data = `PHN0YXR1c19tZXNzYWdlPjxhdXRob3I-amF5d2lua0BnZ2cuc29jaWFsPC9hdXRob3I-PGd1aWQ-ZmQ2NWEwMjNmZWE2MmU2NDNiNWM5ZTgxMWJlODI5YmQ8L2d1aWQ-PGNyZWF0ZWRfYXQ-MjAxOC0wMi0yM1QyMzoyMTo0Nlo8L2NyZWF0ZWRfYXQ-PHByb3ZpZGVyX2Rpc3BsYXlfbmFtZT5HYW5nR288L3Byb3ZpZGVyX2Rpc3BsYXlfbmFtZT48dGV4dD5QaW5nIHBvbmc8L3RleHQ-PHB1YmxpYz50cnVlPC9wdWJsaWM-PC9zdGF0dXNfbWVzc2FnZT4=`
message.Data.Type = "application/xml"
message.Sig.Sig = `m0AliIlJziasAdCZ9mfYbtm1nnhImd31wCtu2rZ9dQL46wjoHI9yD6EYsR5p1XS1FNm9A3PqAszVpJxWO2UGUlVvCote6m7MbOWQ9lAjnhgfYKhwHeHiZt8lbbC/UaPJz1ZOWi4SUfr7nPOR/aoK5LzYyy4Ls6rUUXSEsbx5NVbj5TBiC/h1UjNTG28ZMnCnNrpViD5pWNhpUuinRmmQc9RLvOcKZNKTezkzsjEhbu5cXc9kZsPhlMWALyYRedpNcW4BsoF4bTWYQSqJsJLz3Jp/4wDc0pN2nPvn8rBvA6NPNJWZMrJxeYUXFwOaFctcSh8ByubXNifEa8wNQ==`
var signature federation.Signature
if signature.New(message).Verify("", pubKey) {
fmt.Println("signature valid")
return
}
fmt.Println("signature invalid")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment