diff --git a/cpf/lib.go b/cpf/lib.go index c58828f..60ee8a6 100644 --- a/cpf/lib.go +++ b/cpf/lib.go @@ -39,8 +39,12 @@ func Check(s string) bool { d1 = d1 + (v * mul) mul-- } - mod1 := (d1 * 10) % 11 - + mod1 := (d1) % 11 + if mod1 < 2 { + mod1 = 0 + } else { + mod1 = 11 - mod1 + } d2 := 0 mul = 11 for _, v := range nums[0 : len(nums)-2] { @@ -49,6 +53,11 @@ func Check(s string) bool { } d2 = d2 + (mod1 * mul) - mod2 := (d2 * 10) % 11 + mod2 := (d2) % 11 + if mod2 < 2 { + mod2 = 0 + } else { + mod2 = 11 - mod2 + } return mod1 == nums[len(nums)-2] && mod2 == nums[len(nums)-1] } diff --git a/cpf/lib_test.go b/cpf/lib_test.go index aa0b4dc..5d2a008 100644 --- a/cpf/lib_test.go +++ b/cpf/lib_test.go @@ -15,6 +15,8 @@ func TestCheck(t *testing.T) { "377.100.400-46", "845.846.910-37", "845.846.910-17", + "39412818602", + "768.974.608-00", } { ret := Check(v) log.Printf("%s=>%v", v, ret)