3 * Copyright (c) 2020 Project CHIP Authors
4 * Copyright (c) 2013-2017 Nest Labs, Inc.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 * This file implements an object for the core Verhoeff
21 * check-digit algorithm operations.
27 int Verhoeff::DihedralMultiply(int x, int y, int n)
39 return ((x + (y - n)) % n) + n;
43 return ((n + (x - n) - y) % n) + n;
45 return (n + (x - n) - (y - n)) % n;
48 int Verhoeff::DihedralInvert(int val, int n)
50 if (val > 0 && val < n)
55 int Verhoeff::Permute(int val, uint8_t * permTable, int permTableLen, uint64_t iterCount)
57 val = val % permTableLen;
60 return Permute(permTable[val], permTable, permTableLen, iterCount - 1);