package ownwire_sdk import ( "fmt" "strconv" "strings" ) type SessionInit struct { SessionId string ServerPubKeyB64 string SaltB64 string SeqOut uint64 SeqInMax uint64 } // ParseSessionInit parses: // "/session:::::" func ParseSessionInit(line string) (SessionInit, error) { if !strings.HasPrefix(line, "/session:") { return SessionInit{}, fmt.Errorf("invalid session line prefix: %q", line) } parts := strings.Split(line, ":") if len(parts) < 6 || parts[0] != "/session" { return SessionInit{}, fmt.Errorf("invalid session line: %q", line) } seq_out, err := strconv.ParseUint(parts[4], 10, 64) if err != nil { return SessionInit{}, fmt.Errorf("invalid seq_out: %w", err) } seq_in_max, err := strconv.ParseUint(parts[5], 10, 64) if err != nil { return SessionInit{}, fmt.Errorf("invalid seq_in_max: %w", err) } out := SessionInit{ SessionId: parts[1], ServerPubKeyB64: parts[2], SaltB64: parts[3], SeqOut: seq_out, SeqInMax: seq_in_max, } return out, nil }