diff --git a/bfcodegen/csid-generate.template b/bfcodegen/csid-generate.template index a512320..6fb0c4b 100644 --- a/bfcodegen/csid-generate.template +++ b/bfcodegen/csid-generate.template @@ -65,6 +65,27 @@ func generateID(prefix string) string { return prefix + k + checkstr } +func generateIDFromSeed(prefix string, seed string) string { + h := sha256.New() + + iddata := "" + for len(iddata) < idlen-len(prefix)-checklen { + h.Write([]byte(seed)) + bs := h.Sum(nil) + iddata += langext.NewAnyBaseConverter(idCharset).Encode(bs) + } + + checksum := 0 + for i := 0; i < idlen-len(prefix)-checklen; i++ { + ichr := int(iddata[i]) + checksum = (checksum + charSetReverseMap[ichr]) % (idCharsetLen) + } + + checkstr := string(idCharset[checksum%idCharsetLen]) + + return prefix + iddata[:(idlen-len(prefix)-checklen)] + checkstr +} + func validateID(prefix string, value string) error { if len(value) != idlen { return exerr.New(exerr.TypeInvalidCSID, "id has the wrong length").Str("value", value).Build() diff --git a/goextVersion.go b/goextVersion.go index 5b8aeb2..63028a3 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.295" +const GoextVersion = "0.0.296" -const GoextVersionTimestamp = "2023-11-01T00:23:17+0100" +const GoextVersionTimestamp = "2023-11-01T00:29:58+0100"