0

GoでWebサーバーを開発していますが
、一番上にあります

import ("net/http"
    "log"
    "fmt"
    "encoding/json"
    "encoding/hex"
    "time"
    "math/rand"
    "crypto/sha256"
    "crypto/hmac"
    "strconv"
    "strings"
    "github.com/crowdmob/goamz/aws"
    "github.com/crowdmob/goamz/dynamodb"
)

後で私は持っています

func singSomething(someid string) string {
mac := hmac.New(sha256.New, key)
    mac.Write([]byte(id))
    b := mac.Sum(nil)
return hex.EncodeToString(b)
}

func validateSignature(id, signature string) bool {
mac := hmac.New(sha256.New, key)
    mac.Write([]byte(id))
    expectedMAC := mac.Sum(nil)
    signatureMAC, err := hex.DecodeString(signature)
    if err != nil {
    fmt.Println("PROBLEM IN DECODING HUH!")
    return false
    }
return hmac.Equal(expectedMAC,signatureMAC)

}

発行するとこのエラーが発生しますgo run CSServer
/CSServer.go:54: undefined: hmac.Equal

なんで?何が起こっている?どうしてhmac.Newいいのにhmac.Equalsそうじゃないの?

4

2 に答える 2

0

何が問題だったのかわかりませんが
、コードを削除して play.golang.org に配置し、自分のマシンでは問題なく動作することを確認した後、自分のバージョンをチェックしてgo1.0.3、最新のものをインストールしましたgo1.1.2 darwin/amd64そして問題は解決しました、非常に奇妙です。

于 2013-08-16T00:44:16.290 に答える
0

質問するときは、最小限の完全なプログラムを投稿してください。それがなければ、私が提供できる唯一のものは、問題なくコンパイルできる例です。未定義hmac.Equalは示していません。あなたが示していないコードのどこかに問題があるはずです。

package main

import (
        "crypto/hmac"
        "crypto/sha256"
        "encoding/hex"
        "fmt"
)

func singSomething(someid string) string {
        mac := hmac.New(sha256.New, []byte{})
        mac.Write([]byte(someid))
        b := mac.Sum(nil)
        return hex.EncodeToString(b)
}

func validateSignature(id, signature string) bool {
        mac := hmac.New(sha256.New, []byte{})
        mac.Write([]byte(id))
        expectedMAC := mac.Sum(nil)
        signatureMAC, err := hex.DecodeString(signature)
        if err != nil {
                fmt.Println("PROBLEM IN DECODING HUH!")
                return false
        }
        return hmac.Equal(expectedMAC, signatureMAC)
}

func main() {}

遊び場

于 2013-08-15T21:35:08.507 に答える