package kgc import ( "crypto/elliptic" "fmt" ) // Certificateless_Sign(prikey, pubkey, msg, ID) func Certificateless_Sign(pri_key, pub_key, msg []byte, id string) (signature []byte, err error) { curve := elliptic.P256() s := BytesToBig(pri_key) x, y := bytes_halve(pub_key) Qx := BytesToBig(x) Qy := BytesToBig(y) //fmt.Println("公钥第一部分长度为:", len(x)) //fmt.Println("公钥第二部分长度为:", len(y)) ID := []byte(id) PK_pub := "7196e9722d561a0fea21485fc16140096cc9b88f7174aec7508f14a7b85b61ba299292c726367bbcbf8f00b977849164bf9d3fd6260e55dd6498517bc0dec541" pk1, pk2 := string_halve(PK_pub) //fmt.Println("KGC公钥第二部分长度为:", len([]byte(pk1))) //fmt.Println("KGC公钥第二部分长度为:", len([]byte(pk2))) PKx := BytesToBig([]byte(pk1)) PKy := BytesToBig([]byte(pk2)) Ux, Uy, v := SignThumb(curve, ID, msg, s, Qx, Qy, PKx, PKy) sig := mergeBigInts(Ux, Uy, v) //fmt.Println("打印签名长度:", len(sig)) //fmt.Println("签名得到的v值为:", v) return sig, nil } // Certificateless_Verify(publicKey, ID, signature, msg) func Certificateless_Verify(pubkey []byte, id string, signature, msg []byte) error { //x, y := bytes_halve(pubkey) //fmt.Println("公钥第一部分长度为:", len(x)) //fmt.Println("公钥第二部分长度为:", len(y)) //fmt.Println("接收到消息!!!!!!!!!") curve := elliptic.P256() x, y := bytes_halve(pubkey) Qx := BytesToBig(x) Qy := BytesToBig(y) //fmt.Println(pubkey) ID := []byte(id) PK_pub := "7196e9722d561a0fea21485fc16140096cc9b88f7174aec7508f14a7b85b61ba299292c726367bbcbf8f00b977849164bf9d3fd6260e55dd6498517bc0dec541" pk1, pk2 := string_halve(PK_pub) PKx := BytesToBig([]byte(pk1)) PKy := BytesToBig([]byte(pk2)) Ux, Uy, v := AnalSig(signature) //fmt.Println("打印接收参数111:", v) //fmt.Println("转换后的签名结果为", Ux, Uy, v) err := VerifyThumb(curve, ID, msg, Qx, Qy, PKx, PKy, Ux, Uy, v) if err != nil { fmt.Println("shibai-----------------------------------------") return err } //fmt.Println("签名验证chenggongllllllll!!!!!!!!!!!!sssssssssssssssssss")*/ return nil }