本文整理匯總了Golang中github.com/FactomProject/ed25519.Sign函數的典型用法代碼示例。如果您正苦於以下問題:Golang Sign函數的具體用法?Golang Sign怎麽用?Golang Sign使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Sign函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestSignature
func TestSignature(t *testing.T) {
pub, priv, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
t.Error(err)
}
t.Logf("priv, pub - %x, %x", *priv, *pub)
testData := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}
sig := ed25519.Sign(priv, testData)
ok := ed25519.Verify(pub, testData, sig)
if ok == false {
t.Error("Signature could not be verified")
}
pub2, err := primitives.PrivateKeyToPublicKey(priv[:])
if err != nil {
t.Error(err)
}
t.Logf("pub1 - %x", pub)
t.Logf("pub2 - %x", pub2)
if primitives.AreBytesEqual(pub[:], pub2[:]) == false {
t.Error("Public keys are not equal")
}
}
示例2: newCommitChain
func newCommitChain() *CommitChainMsg {
msg := new(CommitChainMsg)
cc := entryCreditBlock.NewCommitChain()
cc.Version = 0x11
cc.MilliTime = (*primitives.ByteSlice6)(&[6]byte{1, 1, 1, 1, 1, 1})
p, _ := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
cc.ChainIDHash.SetBytes(p)
p, _ = hex.DecodeString("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")
cc.Weld.SetBytes(p)
p, _ = hex.DecodeString("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc")
cc.EntryHash.SetBytes(p)
cc.Credits = 11
// make a key and sign the msg
if pub, privkey, err := ed.GenerateKey(rand.Reader); err != nil {
panic(err)
} else {
cc.ECPubKey = (*primitives.ByteSlice32)(pub)
cc.Sig = (*primitives.ByteSlice64)(ed.Sign(privkey, cc.CommitMsg()))
}
msg.CommitChain = cc
//msg.Timestamp = primitives.NewTimestampNow()
return msg
}
示例3: Sign
// Sign signs msg with PrivateKey and return Signature
func (pk *PrivateKey) Sign(msg []byte) (sig interfaces.IFullSignature) {
sig = new(Signature)
sig.SetPub(pk.Pub[:])
s := ed25519.Sign(pk.Key, msg)
sig.SetSignature(s[:])
return
}
示例4: SignInputs
func (w *SCWallet) SignInputs(trans fct.ITransaction) (bool, error) {
data, err := trans.MarshalBinarySig() // Get the part of the transaction we sign
if err != nil {
return false, err
}
var numSigs int = 0
inputs := trans.GetInputs()
rcds := trans.GetRCDs()
for i, rcd := range rcds {
rcd1, ok := rcd.(*fct.RCD_1)
if ok {
pub := rcd1.GetPublicKey()
we := w.db.GetRaw([]byte(fct.W_ADDRESS_PUB_KEY), pub).(*WalletEntry)
if we != nil {
var pri [fct.SIGNATURE_LENGTH]byte
copy(pri[:], we.private[0])
bsig := ed25519.Sign(&pri, data)
sig := new(fct.Signature)
sig.SetSignature(bsig[:])
sigblk := new(fct.SignatureBlock)
sigblk.AddSignature(sig)
trans.SetSignatureBlock(i, sigblk)
numSigs += 1
}
}
}
return numSigs == len(inputs), nil
}
示例5: TestECBlockMarshal
func TestECBlockMarshal(t *testing.T) {
ecb1 := common.NewECBlock()
// build a CommitChain for testing
cc := common.NewCommitChain()
cc.Version = 0
cc.MilliTime = &[6]byte{1, 1, 1, 1, 1, 1}
cc.ChainIDHash.SetBytes(byteof(0xaa))
cc.Weld.SetBytes(byteof(0xbb))
cc.EntryHash.SetBytes(byteof(0xcc))
cc.Credits = 11
// make a key and sign the msg
if pub, privkey, err := ed.GenerateKey(rand.Reader); err != nil {
t.Error(err)
} else {
cc.ECPubKey = pub
cc.Sig = ed.Sign(privkey, cc.CommitMsg())
}
// create a ECBlock for testing
ecb1.Header.ECChainID.SetBytes(byteof(0x11))
ecb1.Header.BodyHash.SetBytes(byteof(0x22))
ecb1.Header.PrevHeaderHash.SetBytes(byteof(0x33))
ecb1.Header.PrevLedgerKeyMR.SetBytes(byteof(0x44))
ecb1.Header.EBHeight = 10
ecb1.Header.HeaderExpansionArea = byteof(0x55)
ecb1.Header.ObjectCount = 0
// add the CommitChain to the ECBlock
ecb1.AddEntry(cc)
m1 := common.NewMinuteNumber()
m1.Number = 0x01
ecb1.AddEntry(m1)
// add a ServerIndexNumber
si1 := common.NewServerIndexNumber()
si1.Number = 3
ecb1.AddEntry(si1)
// create an IncreaseBalance for testing
ib := common.NewIncreaseBalance()
pub := new([32]byte)
copy(pub[:], byteof(0xaa))
ib.ECPubKey = pub
ib.TXID.SetBytes(byteof(0xbb))
ib.NumEC = uint64(13)
// add the IncreaseBalance
ecb1.AddEntry(ib)
m2 := common.NewMinuteNumber()
m2.Number = 0x02
ecb1.AddEntry(m2)
ecb2 := common.NewECBlock()
if p, err := ecb1.MarshalBinary(); err != nil {
t.Error(err)
} else {
if err := ecb2.UnmarshalBinary(p); err != nil {
t.Error(err)
}
t.Log(spew.Sdump(ecb1))
t.Log(spew.Sdump(ecb2))
if q, err := ecb2.MarshalBinary(); err != nil {
t.Error(err)
} else if string(p) != string(q) {
t.Errorf("ecb1 = %x\n", p)
t.Errorf("ecb2 = %x\n", q)
}
}
}
示例6: TestNewED25519Signature
func TestNewED25519Signature(t *testing.T) {
testData := primitives.Sha([]byte("sig first half one")).Bytes()
priv := testHelper.NewPrivKey(0)
sig := NewED25519Signature(priv, testData)
pub := testHelper.PrivateKeyToEDPub(priv)
pub2 := [32]byte{}
copy(pub2[:], pub)
s := sig.Signature
valid := ed25519.VerifyCanonical(&pub2, testData, &s)
if valid == false {
t.Errorf("Signature is invalid - %v", valid)
}
priv2 := [64]byte{}
copy(priv2[:], append(priv, pub...)[:])
sig2 := ed25519.Sign(&priv2, testData)
valid = ed25519.VerifyCanonical(&pub2, testData, sig2)
if valid == false {
t.Errorf("Test signature is invalid - %v", valid)
}
}
示例7: newCommitEntry
func newCommitEntry() *CommitEntryMsg {
cem := new(CommitEntryMsg)
ce := entryCreditBlock.NewCommitEntry()
// build a CommitEntry for testing
ce.Version = 0
ce.MilliTime = (*primitives.ByteSlice6)(&[6]byte{1, 1, 1, 1, 1, 1})
p, _ := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
ce.EntryHash.SetBytes(p)
ce.Credits = 1
// make a key and sign the msg
if pub, privkey, err := ed.GenerateKey(rand.Reader); err != nil {
panic(err)
} else {
ce.ECPubKey = (*primitives.ByteSlice32)(pub)
ce.Sig = (*primitives.ByteSlice64)(ed.Sign(privkey, ce.CommitMsg()))
}
cem.CommitEntry = ce
//cem.Timestamp = primitives.NewTimestampNow()
return cem
}
示例8: createECBlock
func createECBlock() *ECBlock {
ecb1 := NewECBlock().(*ECBlock)
// build a CommitChain for testing
cc := NewCommitChain()
cc.Version = 0
cc.MilliTime = (*primitives.ByteSlice6)(&[6]byte{1, 1, 1, 1, 1, 1})
cc.ChainIDHash.SetBytes(byteof(0xaa))
cc.Weld.SetBytes(byteof(0xbb))
cc.EntryHash.SetBytes(byteof(0xcc))
cc.Credits = 11
// make a key and sign the msg
if pub, privkey, err := ed.GenerateKey(rand.Reader); err != nil {
panic(err)
} else {
cc.ECPubKey = (*primitives.ByteSlice32)(pub)
cc.Sig = (*primitives.ByteSlice64)(ed.Sign(privkey, cc.CommitMsg()))
}
// create a ECBlock for testing
ecb1.Header.(*ECBlockHeader).ECChainID.SetBytes(byteof(0x11))
ecb1.Header.(*ECBlockHeader).BodyHash.SetBytes(byteof(0x22))
ecb1.Header.(*ECBlockHeader).PrevHeaderHash.SetBytes(byteof(0x33))
ecb1.Header.(*ECBlockHeader).PrevLedgerKeyMR.SetBytes(byteof(0x44))
ecb1.Header.(*ECBlockHeader).DBHeight = 10
ecb1.Header.(*ECBlockHeader).HeaderExpansionArea = byteof(0x55)
ecb1.Header.(*ECBlockHeader).ObjectCount = 0
// add the CommitChain to the ECBlock
ecb1.AddEntry(cc)
m1 := NewMinuteNumber()
m1.Number = 0x01
ecb1.AddEntry(m1)
// add a ServerIndexNumber
si1 := NewServerIndexNumber()
si1.Number = 3
ecb1.AddEntry(si1)
// create an IncreaseBalance for testing
ib := NewIncreaseBalance()
pub := new(primitives.ByteSlice32)
copy(pub[:], byteof(0xaa))
ib.ECPubKey = pub
ib.TXID.SetBytes(byteof(0xbb))
ib.NumEC = uint64(13)
// add the IncreaseBalance
ecb1.AddEntry(ib)
m2 := NewMinuteNumber()
m2.Number = 0x02
ecb1.AddEntry(m2)
return ecb1
}
示例9: SignCommit
// SignCommit will sign the []byte with the Entry Credit Key and return the
// slice with the signature and pubkey appended.
func (w *SCWallet) SignCommit(we interfaces.IWalletEntry, data []byte) []byte {
pub := new([constants.ADDRESS_LENGTH]byte)
copy(pub[:], we.GetKey(0))
pri := new([constants.PRIVATE_LENGTH]byte)
copy(pri[:], we.GetPrivKey(0))
sig := ed25519.Sign(pri, data)
r := append(data, pub[:]...)
r = append(r, sig[:]...)
return r
}
示例10: MakeFEREntryWithHeightFromContent
func MakeFEREntryWithHeightFromContent(passedResidentHeight uint32, passedTargetActivationHeight uint32,
passedTargetPrice uint64, passedExpirationHeight uint32, passedPriority uint32) *FEREntryWithHeight {
// Create and format the signing private key
var signingPrivateKey [64]byte
SigningPrivateKey := "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
signingBytes, err := hex.DecodeString(SigningPrivateKey)
if err != nil {
fmt.Println("Signing private key isn't parsable")
return nil
}
copy(signingPrivateKey[:], signingBytes[:])
_ = ed.GetPublicKey(&signingPrivateKey) // Needed to format the public half of the key set
anFEREntry := new(specialEntries.FEREntry)
anFEREntry.SetExpirationHeight(passedExpirationHeight)
anFEREntry.SetTargetActivationHeight(passedTargetActivationHeight)
anFEREntry.SetPriority(passedPriority)
anFEREntry.SetTargetPrice(passedTargetPrice)
entryJson, err := json.Marshal(anFEREntry)
if err != nil {
fmt.Println("Bad marshal of anFEREntry")
return nil
}
// Create the factom entry with the signing private key
signingSignature := ed.Sign(&signingPrivateKey, entryJson)
// Make a new factom entry and populate it
anEntry := new(factom.Entry)
anEntry.ChainID = "111111118d918a8be684e0dac725493a75862ef96d2d3f43f84b26969329bf03"
anEntry.ExtIDs = append(anEntry.ExtIDs, signingSignature[:])
anEntry.Content = entryJson
// ce := common.NewEntry()
emb, _ := anEntry.MarshalBinary()
// ce.UnmarshalBinary(emb)
EBEntry := entryBlock.NewEntry()
_, err = EBEntry.UnmarshalBinaryData(emb)
if err != nil {
fmt.Println("Error 3: couldn't unmarshal binary")
return nil
}
ewh := new(FEREntryWithHeight)
// Don't set the resident height in the actual FEREntry yet because the state validate loop will handle all that
ewh.Height = passedResidentHeight
ewh.AnFEREntry = EBEntry
return ewh
}
示例11: Sign
func Sign(priv, data []byte) []byte {
priv2 := [64]byte{}
if len(priv) == 64 {
copy(priv2[:], priv[:])
} else if len(priv) == 32 {
copy(priv2[:], priv[:])
pub := ed25519.GetPublicKey(&priv2)
copy(priv2[:], append(priv, pub[:]...)[:])
} else {
return nil
}
return ed25519.Sign(&priv2, data)[:constants.SIGNATURE_LENGTH]
}
示例12: TestCommitChainMarshalUnmarshal
func TestCommitChainMarshalUnmarshal(t *testing.T) {
fmt.Printf("---\nTestCommitChainMarshalUnmarshal\n---\n")
cc := NewCommitChain()
// test MarshalBinary on a zeroed CommitChain
if p, err := cc.MarshalBinary(); err != nil {
t.Error(err)
} else if z := make([]byte, CommitChainSize); string(p) != string(z) {
t.Errorf("Marshal failed on zeroed CommitChain")
}
// build a CommitChain for testing
cc.Version = 0
cc.MilliTime = (*primitives.ByteSlice6)(&[6]byte{1, 1, 1, 1, 1, 1})
p, _ := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
cc.ChainIDHash.SetBytes(p)
p, _ = hex.DecodeString("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")
cc.Weld.SetBytes(p)
p, _ = hex.DecodeString("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc")
cc.EntryHash.SetBytes(p)
cc.Credits = 11
// make a key and sign the msg
if pub, privkey, err := ed.GenerateKey(rand.Reader); err != nil {
t.Error(err)
} else {
cc.ECPubKey = (*primitives.ByteSlice32)(pub)
cc.Sig = (*primitives.ByteSlice64)(ed.Sign(privkey, cc.CommitMsg()))
}
// marshal and unmarshal the commit and see if it matches
cc2 := NewCommitChain()
p, err := cc.MarshalBinary()
if err != nil {
t.Error(err)
}
t.Logf("%x\n", p)
err = cc2.UnmarshalBinary(p)
if err != nil {
t.Error(err)
}
if !cc2.IsValid() {
t.Errorf("signature did not match after unmarshalbinary")
}
}
示例13: TestCommitEntryMarshal
func TestCommitEntryMarshal(t *testing.T) {
fmt.Printf("---\nTestCommitEntryMarshal\n---\n")
ce := common.NewCommitEntry()
// test MarshalBinary on a zeroed CommitEntry
if p, err := ce.MarshalBinary(); err != nil {
t.Error(err)
} else if z := make([]byte, common.CommitEntrySize); string(p) != string(z) {
t.Errorf("Marshal failed on zeroed CommitEntry")
}
// build a CommitEntry for testing
ce.Version = 0
ce.MilliTime = &[6]byte{1, 1, 1, 1, 1, 1}
p, _ := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
ce.EntryHash.SetBytes(p)
ce.Credits = 1
// make a key and sign the msg
if pub, privkey, err := ed.GenerateKey(rand.Reader); err != nil {
t.Error(err)
} else {
ce.ECPubKey = pub
ce.Sig = ed.Sign(privkey, ce.CommitMsg())
}
// marshal and unmarshal the commit and see if it matches
ce2 := common.NewCommitEntry()
if p, err := ce.MarshalBinary(); err != nil {
t.Error(err)
} else {
t.Logf("%x\n", p)
ce2.UnmarshalBinary(p)
}
if !ce2.IsValid() {
t.Errorf("signature did not match after unmarshalbinary")
}
}
示例14: SignInputs
func (w *SCWallet) SignInputs(trans fct.ITransaction) (bool, error) {
data, err := trans.MarshalBinarySig() // Get the part of the transaction we sign
if err != nil {
return false, err
}
var errMsg []byte
rcds := trans.GetRCDs()
for i, rcd := range rcds {
rcd1, ok := rcd.(*fct.RCD_1)
if ok {
pub := rcd1.GetPublicKey()
we, ok := w.db.GetRaw([]byte(fct.W_ADDRESS_PUB_KEY), pub).(*WalletEntry)
if ok {
var pri [fct.SIGNATURE_LENGTH]byte
copy(pri[:], we.private[0])
bsig := ed25519.Sign(&pri, data)
sig := new(fct.Signature)
sig.SetSignature(bsig[:])
sigblk := new(fct.SignatureBlock)
sigblk.AddSignature(sig)
trans.SetSignatureBlock(i, sigblk)
} else {
errMsg = append(errMsg,
[]byte("Do not have the private key for: "+
fct.ConvertFctAddressToUserStr(fct.NewAddress(pub))+"\n")...)
}
}
}
if errMsg != nil {
return false, fmt.Errorf("%s", string(errMsg))
}
return true, nil
}
示例15: Sign
// Sign signs msg with PrivateKey and return Signature
func (pk PrivateKey) Sign(msg []byte) (sig Signature) {
sig.Pub = pk.Pub
sig.Sig = ed25519.Sign(pk.Key, msg)
return
}