Golang crypto/dsa.Sign() function example

package crypto/dsa

Sign signs an arbitrary length hash (which should be the result of hashing a larger message) using the given private key input and returns the signature as a pair of integers. The security of the private key depends on the entropy of rand. Note that FIPS 186-3 section 4.6 specifies that the hash should be truncated to the byte-length of the subgroup. This function does not perform that truncation itself.

Golang crypto/dsa.Sign() function usage example

 // Sign
 var h hash.Hash
 h = md5.New()
 r := big.NewInt(0)
 s := big.NewInt(0)

 io.WriteString(h, "This is the message to be signed and verified!")
 signhash := h.Sum(nil)

 r, s, err := dsa.Sign(rand.Reader, privatekey, signhash)
 if err != nil {
 fmt.Println(err)
 }

 signature := r.Bytes()
 signature = append(signature, s.Bytes()...)

 fmt.Printf("Signature : %x\n", signature)

See How to use DSA functions tutorial for more details

Reference :

http://golang.org/pkg/crypto/dsa/#Sign

Advertisement