Line data Source code
1 : /*
2 : *
3 : * Copyright (c) 2020 Project CHIP Authors
4 : * Copyright (c) 2013-2017 Nest Labs, Inc.
5 : *
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
9 : *
10 : * http://www.apache.org/licenses/LICENSE-2.0
11 : *
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.
17 : */
18 : /**
19 : * @file
20 : * This file implements an object for the core Verhoeff
21 : * check-digit algorithm operations.
22 : *
23 : */
24 :
25 : #include "Verhoeff.h"
26 :
27 87 : int Verhoeff::DihedralInvert(int val, int n)
28 : {
29 87 : if (val > 0 && val < n)
30 37 : return n - val;
31 50 : return val;
32 : }
33 :
34 10074 : int Verhoeff::Permute(int val, const uint8_t * permTable, int permTableLen, uint64_t iterCount)
35 : {
36 10074 : val = val % permTableLen;
37 10074 : if (iterCount == 0)
38 1068 : return val;
39 9006 : return Permute(permTable[val], permTable, permTableLen, iterCount - 1);
40 : }
|