作者:houndbe
项目:pon
func (s *SharedSecret) toProto() *panda_proto.KeyExchange_SharedSecret {
ret := new(panda_proto.KeyExchange_SharedSecret)
if len(s.Secret) > 0 {
ret.Secret = proto.String(s.Secret)
}
if s.Cards.NumDecks > 0 {
ret.NumDecks = proto.Int32(int32(s.Cards.NumDecks))
canonical := s.Cards.Canonicalise()
ret.CardCount = canonical.counts[:]
}
if s.Year != 0 {
ret.Time = &panda_proto.KeyExchange_SharedSecret_Time{
Day: proto.Int32(int32(s.Day)),
Month: proto.Int32(int32(s.Month)),
Year: proto.Int32(int32(s.Year)),
Hours: proto.Int32(int32(s.Hours)),
Minutes: proto.Int32(int32(s.Minutes)),
}
}
return ret
}
作者:houndbe
项目:pon
func newSharedSecret(p *panda_proto.KeyExchange_SharedSecret) (*SharedSecret, bool) {
ret := &SharedSecret{
Secret: p.GetSecret(),
Day: int(p.Time.GetDay()),
Month: int(p.Time.GetMonth()),
Year: int(p.Time.GetYear()),
Hours: int(p.Time.GetHours()),
Minutes: int(p.Time.GetMinutes()),
}
ret.Cards.NumDecks = int(p.GetNumDecks())
if ret.Cards.NumDecks > 0 {
if len(p.CardCount) != numCards {
return nil, false
}
copy(ret.Cards.counts[:], p.CardCount)
} else {
if len(ret.Secret) == 0 {
return nil, false
}
}
return ret, true
}