|
|
@@ -1,6 +1,6 @@ |
|
|
|
// SPDX-License-Identifier: GPL-2.0 |
|
|
|
/* |
|
|
|
* Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. |
|
|
|
* Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. |
|
|
|
*/ |
|
|
|
|
|
|
|
#include <stdbool.h> |
|
|
@@ -62,11 +62,32 @@ static bool is_valid_key(string_span_t s) |
|
|
|
if (s.len != 44 || s.s[43] != '=') |
|
|
|
return false; |
|
|
|
|
|
|
|
for (size_t i = 0; i < 43; ++i) { |
|
|
|
for (size_t i = 0; i < 42; ++i) { |
|
|
|
if (!is_decimal(s.s[i]) && !is_alphabet(s.s[i]) && |
|
|
|
s.s[i] != '/' && s.s[i] != '+') |
|
|
|
return false; |
|
|
|
} |
|
|
|
switch (s.s[42]) { |
|
|
|
case 'A': |
|
|
|
case 'E': |
|
|
|
case 'I': |
|
|
|
case 'M': |
|
|
|
case 'Q': |
|
|
|
case 'U': |
|
|
|
case 'Y': |
|
|
|
case 'c': |
|
|
|
case 'g': |
|
|
|
case 'k': |
|
|
|
case 'o': |
|
|
|
case 's': |
|
|
|
case 'w': |
|
|
|
case '4': |
|
|
|
case '8': |
|
|
|
case '0': |
|
|
|
break; |
|
|
|
default: |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|