aptok/verify.go
2024-09-08 19:01:18 +03:00

54 lines
1.6 KiB
Go

package main
import (
"crypto/ed25519"
"crypto/sha256"
"encoding/json"
"fmt"
"github.com/btcsuite/btcutil/base58"
"place.re128.org/ofs/aptok"
// "crypto"
)
func main() {
actor, err := activityserve.LoadActor("ED4xVR2hw6frfBNFJataKYZn58WnaotS8d8WKg4H5rfC")
if err != nil {
fmt.Println(err)
}
activityserve.Setup("config.ini", false)
// rActor, err := activityserve.NewRemoteActor(actor, "https://mitra.social/.well-known/apgateway/did:key:z6MknVmyPtQmD2SaGnqyGgTVEqfqkkJJnY3YVKBmbzSUNCcX/actor")
rActor, err := activityserve.NewRemoteActor(actor, "http://localhost:8000/silverpill.json")
if err != nil {
fmt.Println(err)
}
ractorRaw := rActor.GetRaw()
proof := ractorRaw["proof"].(map[string]interface{})
delete(ractorRaw, "proof")
ractorJson, err := json.Marshal(ractorRaw)
if err != nil {
fmt.Println(err)
}
ractorJsonString := string(ractorJson)
hashActor := sha256.New()
hashActor.Write([]byte(ractorJsonString))
hashActorRes := hashActor.Sum(nil)
verificationMethod := proof["verificationMethod"].(string)
proofValue := proof["proofValue"].(string)[0:]
proofValueDecoded := base58.Decode(proofValue)
proofValueStripped := proofValueDecoded[2:]
publicKeyDecoded := base58.Decode(verificationMethod[9:])
publicKeyDecoded32 := publicKeyDecoded[2:]
// publicKey := ed25519.PublicKey(publicKeyDecoded32)
// fmt.Println(publicKey)
fmt.Println(publicKeyDecoded32)
fmt.Println(hashActorRes)
fmt.Println(proofValueStripped)
err = ed25519.VerifyWithOptions(publicKeyDecoded32, hashActorRes, proofValueStripped, &ed25519.Options{
Hash: 0,
})
if err != nil {
fmt.Println(err)
}
}