Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / src / lib / support / verhoeff / Verhoeff.cpp
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 int Verhoeff::DihedralMultiply(int x, int y, int n)
28 {
29     int n2 = n * 2;
30
31     x = x % n2;
32     y = y % n2;
33
34     if (x < n)
35     {
36         if (y < n)
37             return (x + y) % n;
38
39         return ((x + (y - n)) % n) + n;
40     }
41
42     if (y < n)
43         return ((n + (x - n) - y) % n) + n;
44
45     return (n + (x - n) - (y - n)) % n;
46 }
47
48 int Verhoeff::DihedralInvert(int val, int n)
49 {
50     if (val > 0 && val < n)
51         return n - val;
52     return val;
53 }
54
55 int Verhoeff::Permute(int val, uint8_t * permTable, int permTableLen, uint64_t iterCount)
56 {
57     val = val % permTableLen;
58     if (iterCount == 0)
59         return val;
60     return Permute(permTable[val], permTable, permTableLen, iterCount - 1);
61 }