Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/fips181/convert.cc

Issue 285263002: Add additional files required for fips181 compliation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/fips181/convert.h ('k') | third_party/fips181/fips181.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/fips181/convert.cc
diff --git a/third_party/fips181/convert.cc b/third_party/fips181/convert.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9b4ef8507ae68b35be45ef7452418f12e096d8c8
--- /dev/null
+++ b/third_party/fips181/convert.cc
@@ -0,0 +1,407 @@
+/*
+** Copyright (c) 1999, 2000, 2001, 2002, 2003
+** Adel I. Mirzazhanov. All rights reserved
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** 1.Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2.Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+** 3.The name of the author may not be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+** OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+** GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#if !defined(WIN32) && !defined(_WIN32) && !defined(__WIN32) && !defined(__WIN32__)
+#include <strings.h>
+#endif
+#ifndef APGBFM
+# include "errs.h"
+# include "randpass.h"
+#endif
+
+#include "convert.h"
+
+/*
+** GLOBALS
+*/
+
+/* small letters */
+char let[26] =
+ {
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
+ 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
+ 'u', 'v', 'w', 'x', 'w', 'z'
+ };
+/* capital letters */
+char clet[26] =
+ {
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+ 'U', 'V', 'W', 'X', 'W', 'Z'
+ };
+
+/*
+** FUNCTIONS
+*/
+
+/*
+** decapitalize() - This routine replaces all capital letters
+** to small letters in the word:
+** INPUT:
+** char * - word.
+** OUTPUT:
+** none.
+** NOTES:
+** none.
+*/
+void
+decapitalize (char *word)
+{
+ int i = 0; /* counter */
+ int j = 0; /* counter */
+ int str_len = strlen(word);
+ for(j = 0; j < str_len; j++)
+ for(i=0; i < 26; i++)
+ if(word[j] == clet[i])
+ word[j] = let[i];
+}
+
+#ifndef APGBFM
+/*
+** capitalize() - This routine designed to modify sullable like this:
+** adel ----> Adel
+** dot ----> Dot
+** etc.
+** INPUT:
+** char * - syllable.
+** OUTPUT:
+** none.
+** NOTES:
+** none.
+*/
+void
+capitalize (char *syllable)
+{
+ char tmp = 0x00;
+ int i = 0;
+ if ( randint(2) == TRUE)
+ {
+ (void)memcpy((void *)&tmp, (void *)syllable, sizeof(tmp));
+ for(i=0; i < 26; i++)
+ if ( let[i] == tmp )
+ if (is_restricted_symbol(clet[i]) != TRUE)
+ (void)memcpy ((void *)syllable, (void *)&clet[i], 1);
+ }
+}
+
+/*
+** numerize() - This routine designed to modify single-letter
+** syllable like this:
+** a ----> 1 or 2 or 3 etc.
+** u ----> 1 or 2 or 3 etc.
+** etc.
+** INPUT:
+** char * - single-letter syllable
+** OUTPUT:
+** none.
+** NOTES:
+** none.
+*/
+void
+numerize (char *syllable)
+{
+ char *tmp;
+ if ( (tmp = (char *)calloc(1, 4)) == NULL)
+ err_sys_fatal("calloc");
+ if ( strlen (syllable) == 1 )
+ {
+ (void) gen_rand_symbol(tmp, S_NB);
+ (void)memcpy ((void *)syllable, (void *)tmp, 1);
+ }
+ free ((void *)tmp);
+}
+/*
+** specialize() - This routine designed to modify single-letter syllable
+** like this:
+** a ----> # or $ or % etc.
+** u ----> # or $ or % etc.
+** etc.
+** INPUT:
+** char * - single-letter syllable.
+** OUTPUT:
+** none.
+** NOTES:
+** none.
+*/
+void
+specialize (char *syllable)
+{
+ char *tmp;
+ if ( (tmp = (char *)calloc(1, 4)) == NULL)
+ err_sys_fatal("calloc");
+ if ( strlen (syllable) == 1 )
+ {
+ (void) gen_rand_symbol(tmp, S_SS);
+ (void)memcpy ((void *)syllable, (void *)tmp, 1);
+ }
+ free ((void *)tmp);
+}
+
+/*
+** symb2name - convert symbol to it's name
+** INPUT:
+** char * - one symbol syllable
+** OUTPUT:
+** none.
+** NOTES:
+** none.
+*/
+void
+symb2name(char * syllable, char * h_syllable)
+{
+ struct ssymb_names
+ {
+ char symbol;
+ char *name;
+ };
+ static struct ssymb_names ssn[42] =
+ {
+ {'1',"ONE"},
+ {'2',"TWO"},
+ {'3',"THREE"},
+ {'4',"FOUR"},
+ {'5',"FIVE"},
+ {'6',"SIX"},
+ {'7',"SEVEN"},
+ {'8',"EIGHT"},
+ {'9',"NINE"},
+ {'0',"ZERO"},
+ {33, "EXCLAMATION_POINT"},
+ {34, "QUOTATION_MARK"},
+ {35, "CROSSHATCH"},
+ {36, "DOLLAR_SIGN"},
+ {37, "PERCENT_SIGN"},
+ {38, "AMPERSAND"},
+ {39, "APOSTROPHE"},
+ {40, "LEFT_PARENTHESIS"},
+ {41, "RIGHT_PARENTHESIS"},
+ {42, "ASTERISK"},
+ {43, "PLUS_SIGN"},
+ {44, "COMMA"},
+ {45, "HYPHEN"},
+ {46, "PERIOD"},
+ {47, "SLASH"},
+ {58, "COLON"},
+ {59, "SEMICOLON"},
+ {60, "LESS_THAN"},
+ {61, "EQUAL_SIGN"},
+ {62, "GREATER_THAN"},
+ {63, "QUESTION_MARK"},
+ {64, "AT_SIGN"},
+ {91, "LEFT_BRACKET"},
+ {92, "BACKSLASH"},
+ {93, "RIGHT_BRACKET"},
+ {94, "CIRCUMFLEX"},
+ {95, "UNDERSCORE"},
+ {96, "GRAVE"},
+ {123, "LEFT_BRACE"},
+ {124, "VERTICAL_BAR"},
+ {125, "RIGHT_BRACE"},
+ {126, "TILDE"}
+ };
+ int i = 0;
+ int flag = FALSE;
+
+ if (strlen(syllable) == 1)
+ {
+ for (i = 0; i < 42; i++)
+ {
+ if(*syllable == ssn[i].symbol)
+ {
+ (void)memcpy((void*)h_syllable, (void*)ssn[i].name, strlen(ssn[i].name));
+ flag = TRUE;
+ }
+ }
+ if (flag != TRUE)
+ (void)memcpy((void*)h_syllable, (void*)syllable, strlen(syllable));
+ }
+}
+
+/*
+** spell_word - spell the word
+** INPUT:
+** char * - pointer to the word
+** char * - pointer to the spelled word
+** OUTPUT:
+** char * - pointer to the spelled word
+** NULL - something is wrong
+** NOTES:
+** You should free() memory pointed by spelled_word after each use of spell_word
+*/
+char *
+spell_word(char * word, char * spelled_word)
+{
+ struct char_spell
+ {
+ char symbol;
+ char *name;
+ };
+ static struct char_spell cs[94] =
+ {
+ {'1',"ONE" },
+ {'2',"TWO" },
+ {'3',"THREE" },
+ {'4',"FOUR" },
+ {'5',"FIVE" },
+ {'6',"SIX" },
+ {'7',"SEVEN" },
+ {'8',"EIGHT" },
+ {'9',"NINE" },
+ {'0',"ZERO" },
+ {'A', "Alfa" },
+ {'B', "Bravo" },
+ {'C', "Charlie" },
+ {'D', "Delta" },
+ {'E', "Echo" },
+ {'F', "Foxtrot" },
+ {'G', "Golf" },
+ {'H', "Hotel" },
+ {'I', "India" },
+ {'J', "Juliett" },
+ {'K', "Kilo" },
+ {'L', "Lima" },
+ {'M', "Mike" },
+ {'N', "November" },
+ {'O', "Oscar" },
+ {'P', "Papa" },
+ {'Q', "Quebec" },
+ {'R', "Romeo" },
+ {'S', "Sierra" },
+ {'T', "Tango" },
+ {'U', "Uniform" },
+ {'V', "Victor" },
+ {'W', "Whiskey" },
+ {'X', "X_ray" },
+ {'Y', "Yankee" },
+ {'Z', "Zulu" },
+ {'a', "alfa" },
+ {'b', "bravo" },
+ {'c', "charlie" },
+ {'d', "delta" },
+ {'e', "echo" },
+ {'f', "foxtrot" },
+ {'g', "golf" },
+ {'h', "hotel" },
+ {'i', "india" },
+ {'j', "juliett" },
+ {'k', "kilo" },
+ {'l', "lima" },
+ {'m', "mike" },
+ {'n', "november" },
+ {'o', "oscar" },
+ {'p', "papa" },
+ {'q', "quebec" },
+ {'r', "romeo" },
+ {'s', "sierra" },
+ {'t', "tango" },
+ {'u', "uniform" },
+ {'v', "victor" },
+ {'w', "whiskey" },
+ {'x', "x_ray" },
+ {'y', "yankee" },
+ {'z', "zulu" },
+ {33, "EXCLAMATION_POINT"},
+ {34, "QUOTATION_MARK" },
+ {35, "CROSSHATCH" },
+ {36, "DOLLAR_SIGN" },
+ {37, "PERCENT_SIGN" },
+ {38, "AMPERSAND" },
+ {39, "APOSTROPHE" },
+ {40, "LEFT_PARENTHESIS" },
+ {41, "RIGHT_PARENTHESIS"},
+ {42, "ASTERISK" },
+ {43, "PLUS_SIGN" },
+ {44, "COMMA" },
+ {45, "HYPHEN" },
+ {46, "PERIOD" },
+ {47, "SLASH" },
+ {58, "COLON" },
+ {59, "SEMICOLON" },
+ {60, "LESS_THAN" },
+ {61, "EQUAL_SIGN" },
+ {62, "GREATER_THAN" },
+ {63, "QUESTION_MARK" },
+ {64, "AT_SIGN" },
+ {91, "LEFT_BRACKET" },
+ {92, "BACKSLASH" },
+ {93, "RIGHT_BRACKET" },
+ {94, "CIRCUMFLEX" },
+ {95, "UNDERSCORE" },
+ {96, "GRAVE" },
+ {123, "LEFT_BRACE" },
+ {124, "VERTICAL_BAR" },
+ {125, "RIGHT_BRACE" },
+ {126, "TILDE" }
+ };
+ int s_length = 0;
+ int i = 0;
+ int j = 0;
+ int word_len = strlen(word);
+ char * tmp_ptr;
+ char hyphen = '-';
+ char zero = 0x00;
+
+ /* Count the length of the spelled word */
+ for (i=0; i <= word_len; i++)
+ for (j=0; j < 94; j++)
+ if (word[i] == cs[j].symbol)
+ {
+ s_length = s_length + strlen(cs[j].name) + 1;
+ continue;
+ }
+
+ /* Allocate memory for spelled word */
+ if ( (spelled_word = (char *)calloc(1, (size_t)s_length)) == NULL)
+ return(NULL);
+
+ /* Construct spelled word */
+ tmp_ptr = spelled_word;
+
+ for (i=0; i < word_len; i++)
+ for (j=0; j < 94; j++)
+ if (word[i] == cs[j].symbol)
+ {
+ (void) memcpy((void *)tmp_ptr, (void *)cs[j].name, strlen(cs[j].name));
+ tmp_ptr = tmp_ptr + strlen(cs[j].name);
+ /* Place the hyphen after each symbol */
+ (void) memcpy((void *)(tmp_ptr), (void *)&hyphen, 1);
+ tmp_ptr = tmp_ptr + 1;
+ continue;
+ }
+
+ /* Remove hyphen at the end of the word */
+ tmp_ptr = tmp_ptr - 1;
+ (void) memcpy((void *)(tmp_ptr), (void *)&zero, 1);
+
+ return (spelled_word);
+}
+
+#endif /* APGBFM */
« no previous file with comments | « third_party/fips181/convert.h ('k') | third_party/fips181/fips181.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698