/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2022 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
DefaultP = 2
)
-var (
- MagicNNCPBv3 [8]byte = [8]byte{'N', 'N', 'C', 'P', 'B', 0, 0, 3}
-)
-
type EBlob struct {
Magic [8]byte
SCost uint32
return nil, err
}
eblob := EBlob{
- Magic: MagicNNCPBv3,
+ Magic: MagicNNCPBv3.B,
SCost: uint32(sCost),
TCost: uint32(tCost),
PCost: uint32(pCost),
if _, err = xdr.Unmarshal(bytes.NewReader(eblobRaw), &eblob); err != nil {
return nil, err
}
- if eblob.Magic != MagicNNCPBv3 {
- return nil, BadMagic
+ switch eblob.Magic {
+ case MagicNNCPBv1.B:
+ err = MagicNNCPBv1.TooOld()
+ case MagicNNCPBv2.B:
+ err = MagicNNCPBv1.TooOld()
+ case MagicNNCPBv3.B:
+ default:
+ err = BadMagic
+ }
+ if err != nil {
+ return nil, err
}
key := balloon.H(
blake256,