Wed, 31 Jul 2013 19:48:00 +0200
Introduce port to the Tizen OS.
1.1 --- a/.hgignore Tue Jul 30 20:23:00 2013 +0200 1.2 +++ b/.hgignore Wed Jul 31 19:48:00 2013 +0200 1.3 @@ -14,3 +14,8 @@ 1.4 src/firefoxos/test/qunit-*.js 1.5 src/firefoxos/jquery.core 1.6 src/firefoxos/jquery.mobile 1.7 + 1.8 +src/tizen/test/qunit-*.css 1.9 +src/tizen/test/qunit-*.js 1.10 +src/tizen/jquery.core 1.11 +src/tizen/jquery.mobile
2.1 --- a/src/firefoxos/img/otpwcalc-ico.svg Tue Jul 30 20:23:00 2013 +0200 2.2 +++ b/src/firefoxos/img/otpwcalc-ico.svg Wed Jul 31 19:48:00 2013 +0200 2.3 @@ -7,10 +7,39 @@ 2.4 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 2.5 xmlns:svg="http://www.w3.org/2000/svg" 2.6 xmlns="http://www.w3.org/2000/svg" 2.7 + xmlns:xlink="http://www.w3.org/1999/xlink" 2.8 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 2.9 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 2.10 version="1.1" 2.11 - width="114.23945" 2.12 - height="89.92881" 2.13 - id="svg5004"> 2.14 + width="264.23944" 2.15 + height="150" 2.16 + id="svg5004" 2.17 + inkscape:version="0.48.3.1 r9886" 2.18 + sodipodi:docname="otpwcalc-ico.svg"> 2.19 + <sodipodi:namedview 2.20 + pagecolor="#ffffff" 2.21 + bordercolor="#666666" 2.22 + borderopacity="1" 2.23 + objecttolerance="10" 2.24 + gridtolerance="10" 2.25 + guidetolerance="10" 2.26 + inkscape:pageopacity="0" 2.27 + inkscape:pageshadow="2" 2.28 + inkscape:window-width="1127" 2.29 + inkscape:window-height="955" 2.30 + id="namedview12" 2.31 + showgrid="false" 2.32 + fit-margin-top="0" 2.33 + fit-margin-left="0" 2.34 + fit-margin-right="0" 2.35 + fit-margin-bottom="0" 2.36 + inkscape:zoom="2.624298" 2.37 + inkscape:cx="115.33854" 2.38 + inkscape:cy="58.844916" 2.39 + inkscape:window-x="0" 2.40 + inkscape:window-y="27" 2.41 + inkscape:window-maximized="0" 2.42 + inkscape:current-layer="svg5004" /> 2.43 <metadata 2.44 id="metadata11"> 2.45 <rdf:RDF> 2.46 @@ -24,36 +53,152 @@ 2.47 </rdf:RDF> 2.48 </metadata> 2.49 <defs 2.50 - id="defs5006" /> 2.51 - <path 2.52 - d="m 92.903322,52.648305 c -2.480475,-1.542963 -4.750975,-5.18555 -5.04395,-8.0957 L 83.894535,4.8895175 C 83.60156,1.9842425 80.979497,-0.21302 78.06446,0.0164675 L 4.0312475,5.7635425 C 1.11621,5.99303 -0.607415,8.473505 0.1982475,11.286005 l 15.5273375,54.21875 c 0.805662,2.8125 3.657225,6.069337 6.337887,7.231437 L 59.55371,89.069205 c 2.68555,1.166987 7.06055,1.142575 9.726562,-0.05375 L 112.13672,69.79183 c 2.66601,-1.1963 2.81738,-3.4375 0.33691,-4.980475 L 92.903322,52.648268 z m 0,0" 2.53 - id="path8310" 2.54 - style="fill:#54b87d;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.55 - <path 2.56 - d="M 83.069335,46.969593 79.202147,5.2361925 6.848635,12.360218 22.639647,64.074092 83.069335,46.969592 z m 0,0" 2.57 - id="path8312" 2.58 - style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.59 - <path 2.60 - d="m 36.096685,68.126818 49.8584,-13.911125 4.306637,1.967775 -49.321287,14.370112 -4.84375,-2.426762 z m 0,0" 2.61 - id="path8314" 2.62 - style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.63 - <path 2.64 - d="m 47.42481,75.265493 46.914062,-16.376951 4.5459,2.353513 -45.297862,16.440437 -6.1621,-2.416999 z m 0,0" 2.65 - id="path8316" 2.66 - style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.67 - <path 2.68 - d="m 69.563472,76.300655 23.569338,-8.8916 5.175787,2.109375 -23.56445,8.73535 -5.180675,-1.953125 z m 0,0" 2.69 - id="path8318" 2.70 - style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.71 - <text 2.72 - x="11.861032" 2.73 - y="48.059319" 2.74 - transform="matrix(0.97683017,-0.21401593,0.21401593,0.97683017,0,0)" 2.75 - id="text2988" 2.76 - xml:space="preserve" 2.77 - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan 2.78 + id="defs5006"> 2.79 + <linearGradient 2.80 + id="linearGradient3768"> 2.81 + <stop 2.82 + style="stop-color:#969696;stop-opacity:1;" 2.83 + offset="0" 2.84 + id="stop3770" /> 2.85 + <stop 2.86 + id="stop3776" 2.87 + offset="0.72289157" 2.88 + style="stop-color:#cdcdcd;stop-opacity:1;" /> 2.89 + <stop 2.90 + style="stop-color:#e6e6e6;stop-opacity:1;" 2.91 + offset="1" 2.92 + id="stop3772" /> 2.93 + </linearGradient> 2.94 + <filter 2.95 + inkscape:collect="always" 2.96 + id="filter3848" 2.97 + color-interpolation-filters="sRGB"> 2.98 + <feGaussianBlur 2.99 + inkscape:collect="always" 2.100 + stdDeviation="3.4271843" 2.101 + id="feGaussianBlur3850" /> 2.102 + </filter> 2.103 + <linearGradient 2.104 + y2="37.914902" 2.105 + x2="142.13324" 2.106 + y1="37.914902" 2.107 + x1="-15.623226" 2.108 + gradientUnits="userSpaceOnUse" 2.109 + id="linearGradient3964" 2.110 + xlink:href="#linearGradient3768" 2.111 + inkscape:collect="always" /> 2.112 + <linearGradient 2.113 + inkscape:collect="always" 2.114 + xlink:href="#linearGradient3768" 2.115 + id="linearGradient4028" 2.116 + gradientUnits="userSpaceOnUse" 2.117 + x1="-15.623226" 2.118 + y1="37.914902" 2.119 + x2="142.13324" 2.120 + y2="37.914902" /> 2.121 + </defs> 2.122 + <g 2.123 + id="g4007" 2.124 + transform="translate(3.6811383e-6,60.071191)"> 2.125 + <path 2.126 + style="fill:#54b87d;fill-opacity:1;fill-rule:nonzero;stroke:none" 2.127 + id="path8310" 2.128 + d="m 92.903322,52.648305 c -2.480475,-1.542963 -4.750975,-5.18555 -5.04395,-8.0957 L 83.894535,4.8895175 C 83.60156,1.9842425 80.979497,-0.21302 78.06446,0.0164675 L 4.0312475,5.7635425 C 1.11621,5.99303 -0.607415,8.473505 0.1982475,11.286005 l 15.5273375,54.21875 c 0.805662,2.8125 3.657225,6.069337 6.337887,7.231437 L 59.55371,89.069205 c 2.68555,1.166987 7.06055,1.142575 9.726562,-0.05375 L 112.13672,69.79183 c 2.66601,-1.1963 2.81738,-3.4375 0.33691,-4.980475 L 92.903322,52.648268 z m 0,0" 2.129 + inkscape:connector-curvature="0" /> 2.130 + <path 2.131 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 2.132 + id="path8312" 2.133 + d="M 83.069335,46.969593 79.202147,5.2361925 6.848635,12.360218 22.639647,64.074092 83.069335,46.969592 z m 0,0" 2.134 + inkscape:connector-curvature="0" /> 2.135 + <path 2.136 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 2.137 + id="path8314" 2.138 + d="m 36.096685,68.126818 49.8584,-13.911125 4.306637,1.967775 -49.321287,14.370112 -4.84375,-2.426762 z m 0,0" 2.139 + inkscape:connector-curvature="0" /> 2.140 + <path 2.141 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 2.142 + id="path8316" 2.143 + d="m 47.42481,75.265493 46.914062,-16.376951 4.5459,2.353513 -45.297862,16.440437 -6.1621,-2.416999 z m 0,0" 2.144 + inkscape:connector-curvature="0" /> 2.145 + <path 2.146 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 2.147 + id="path8318" 2.148 + d="m 69.563472,76.300655 23.569338,-8.8916 5.175787,2.109375 -23.56445,8.73535 -5.180675,-1.953125 z m 0,0" 2.149 + inkscape:connector-curvature="0" /> 2.150 + <text 2.151 + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" 2.152 + xml:space="preserve" 2.153 + id="text2988" 2.154 + transform="matrix(0.97683017,-0.21401593,0.21401593,0.97683017,0,0)" 2.155 + y="48.059319" 2.156 x="11.861032" 2.157 - y="48.059319" 2.158 - id="tspan2990" 2.159 - style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold">OTP</tspan></text> 2.160 + sodipodi:linespacing="125%"><tspan 2.161 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold" 2.162 + id="tspan2990" 2.163 + y="48.059319" 2.164 + x="11.861032">OTP</tspan></text> 2.165 + </g> 2.166 + <g 2.167 + id="g4016" 2.168 + transform="translate(-10.814052,58.614666)" 2.169 + inkscape:export-filename="/tmp/otpwcalc-512px.png" 2.170 + inkscape:export-xdpi="307.20001" 2.171 + inkscape:export-ydpi="307.20001"> 2.172 + <path 2.173 + transform="matrix(0,-0.95083264,0.98165763,0,162.83405,76.530261)" 2.174 + d="m 142.13324,37.914902 c 0,42.195318 -35.31499,76.401378 -78.878231,76.401378 -43.563247,0 -78.878235,-34.20606 -78.878235,-76.401378 0,-42.1953187 35.314988,-76.401383 78.878235,-76.401383 43.563241,0 78.878231,34.2060643 78.878231,76.401383 z" 2.175 + sodipodi:ry="76.401382" 2.176 + sodipodi:rx="78.878235" 2.177 + sodipodi:cy="37.914902" 2.178 + sodipodi:cx="63.255009" 2.179 + id="path2998" 2.180 + style="fill:url(#linearGradient4028);fill-opacity:1;fill-rule:nonzero;stroke:none" 2.181 + sodipodi:type="arc" /> 2.182 + <path 2.183 + inkscape:connector-curvature="0" 2.184 + id="path8310-7" 2.185 + d="m 225.54605,-36.739747 c -0.1794,-0.005 -0.38031,0.013 -0.5625,0.0312 l -74.03125,7.281255 c -2.91502,0.29152 -4.61816,3.45845 -3.8125,7.03125 l 15.5,68.874993 c 0.80566,3.5728 3.66309,7.71126 6.34375,9.1875 l 37.5,20.75 c 2.68553,1.48246 7.05275,1.45723 9.71875,-0.0625 l 42.875,-24.4375 c 2.666,-1.51969 2.79296,-4.35241 0.3125,-6.3125 L 239.8273,30.135208 c -2.48047,-1.96007 -4.73828,-6.58441 -5.03125,-10.28125 l -3.96875,-50.375 c -0.27466,-3.459995 -2.5902,-6.138795 -5.28125,-6.218755 z" 2.186 + style="opacity:0.8;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3848)" /> 2.187 + <g 2.188 + transform="matrix(0.99999606,0,0,1.2703271,146.93401,-36.734187)" 2.189 + id="g2989"> 2.190 + <path 2.191 + inkscape:connector-curvature="0" 2.192 + d="m 92.903322,52.648305 c -2.480475,-1.542963 -4.750975,-5.18555 -5.04395,-8.0957 L 83.894535,4.8895175 C 83.60156,1.9842425 80.979497,-0.21302 78.06446,0.0164675 L 4.0312475,5.7635425 C 1.11621,5.99303 -0.607415,8.473505 0.1982475,11.286005 l 15.5273375,54.21875 c 0.805662,2.8125 3.657225,6.069337 6.337887,7.231437 L 59.55371,89.069205 c 2.68555,1.166987 7.06055,1.142575 9.726562,-0.05375 L 112.13672,69.79183 c 2.66601,-1.1963 2.81738,-3.4375 0.33691,-4.980475 L 92.903322,52.648268 z m 0,0" 2.193 + id="path8310-5" 2.194 + style="fill:#54b87d;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.195 + <path 2.196 + inkscape:connector-curvature="0" 2.197 + d="M 83.069335,46.969593 79.202147,5.2361925 6.848635,12.360218 22.639647,64.074092 83.069335,46.969592 z m 0,0" 2.198 + id="path8312-6" 2.199 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.200 + <path 2.201 + inkscape:connector-curvature="0" 2.202 + d="m 36.096685,68.126818 49.8584,-13.911125 4.306637,1.967775 -49.321287,14.370112 -4.84375,-2.426762 z m 0,0" 2.203 + id="path8314-4" 2.204 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.205 + <path 2.206 + inkscape:connector-curvature="0" 2.207 + d="m 47.42481,75.265493 46.914062,-16.376951 4.5459,2.353513 -45.297862,16.440437 -6.1621,-2.416999 z m 0,0" 2.208 + id="path8316-5" 2.209 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.210 + <path 2.211 + inkscape:connector-curvature="0" 2.212 + d="m 69.563472,76.300655 23.569338,-8.8916 5.175787,2.109375 -23.56445,8.73535 -5.180675,-1.953125 z m 0,0" 2.213 + id="path8318-3" 2.214 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 2.215 + <text 2.216 + sodipodi:linespacing="125%" 2.217 + x="11.861032" 2.218 + y="48.059319" 2.219 + transform="matrix(0.97683017,-0.21401593,0.21401593,0.97683017,0,0)" 2.220 + id="text2988-2" 2.221 + xml:space="preserve" 2.222 + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan 2.223 + x="11.861032" 2.224 + y="48.059319" 2.225 + id="tspan2990-7" 2.226 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold">OTP</tspan></text> 2.227 + </g> 2.228 + </g> 2.229 </svg>
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/src/tizen/.project Wed Jul 31 19:48:00 2013 +0200 3.3 @@ -0,0 +1,57 @@ 3.4 +<?xml version="1.0" encoding="UTF-8"?> 3.5 +<projectDescription> 3.6 + <name>OTPWCalc</name> 3.7 + <comment></comment> 3.8 + <projects> 3.9 + </projects> 3.10 + <buildSpec> 3.11 + <buildCommand> 3.12 + <name>org.eclipse.wst.common.project.facet.core.builder</name> 3.13 + <arguments> 3.14 + </arguments> 3.15 + </buildCommand> 3.16 + <buildCommand> 3.17 + <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> 3.18 + <arguments> 3.19 + </arguments> 3.20 + </buildCommand> 3.21 + <buildCommand> 3.22 + <name>json.validation.builder</name> 3.23 + <arguments> 3.24 + </arguments> 3.25 + </buildCommand> 3.26 + <buildCommand> 3.27 + <name>org.tizen.web.jslint.nature.JSLintBuilder</name> 3.28 + <arguments> 3.29 + </arguments> 3.30 + </buildCommand> 3.31 + <buildCommand> 3.32 + <name>org.tizen.web.css.nature.CSSBuilder</name> 3.33 + <arguments> 3.34 + </arguments> 3.35 + </buildCommand> 3.36 + <buildCommand> 3.37 + <name>org.eclipse.wst.validation.validationbuilder</name> 3.38 + <arguments> 3.39 + </arguments> 3.40 + </buildCommand> 3.41 + <buildCommand> 3.42 + <name>org.tizen.web.project.builder.WebBuilder</name> 3.43 + <arguments> 3.44 + <dictionary> 3.45 + <key>usedLibraryType</key> 3.46 + <value>jQueryMobile</value> 3.47 + </dictionary> 3.48 + </arguments> 3.49 + </buildCommand> 3.50 + </buildSpec> 3.51 + <natures> 3.52 + <nature>json.validation.nature</nature> 3.53 + <nature>org.tizen.web.jslint.nature.JSLintNature</nature> 3.54 + <nature>org.tizen.web.css.nature.CSSNature</nature> 3.55 + <nature>org.eclipse.wst.jsdt.core.jsNature</nature> 3.56 + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> 3.57 + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> 3.58 + <nature>org.tizen.web.project.builder.WebNature</nature> 3.59 + </natures> 3.60 +</projectDescription>
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/src/tizen/Makefile Wed Jul 31 19:48:00 2013 +0200 4.3 @@ -0,0 +1,46 @@ 4.4 +## 4.5 +## OTPWCalc - One time password challenge response calculator client 4.6 +## Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 4.7 +## 4.8 +## OTPWCalc is free software: you can redistribute it and/or modify 4.9 +## it under the terms of the European Union Public Licence, either 4.10 +## version 1.1 of the license, or (at your option) any later version. 4.11 +## 4.12 +## OTPWCalc is distributed in the hope that it will be useful, 4.13 +## but WITHOUT ANY WARRANTY; without even the implied warranty 4.14 +## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 4.15 +## the European Union Public License for more details. 4.16 +## 4.17 +## You should have received a copy of the European Union Public 4.18 +## Licence along with OTPWCalc. If not, please refer to 4.19 +## <http://joinup.ec.europa.eu/software/page/eupl/>. 4.20 +## 4.21 +## This file is part of project OTWPCalc, a one time password challenge 4.22 +## response calculator client and is found at http://otpwcalc.europalab.com/ 4.23 +## 4.24 +## Makefile: Autoconf Makefile configuration 4.25 +## 4.26 + 4.27 +# Paths 4.28 +distdir = ../../dist 4.29 + 4.30 +# Files 4.31 +WIDGET = otpwcalc-tizen-$(VERSION).wgt 4.32 + 4.33 +# Vars 4.34 +VERSION = 0.7.5 4.35 + 4.36 +# Progs 4.37 +PROGWGT = unknown 4.38 +PROGECHO = echo 4.39 + 4.40 +# Logic 4.41 +all: 4.42 + @$(PROGECHO) 'Nothing to do... To roll a zipball please make the dist target.' 4.43 + 4.44 +dist: Makefile 4.45 + @if [ -e $(distdir)/$(WIDGET) ]; \ 4.46 + then $(PROGECHO) '$(distdir)/$(WIDGET) already exists, aborting.'; \ 4.47 + else \ 4.48 + $(PROGWGT) -r9 $(distdir)/$(WIDGET) . -x Makefile -x test/\* -x otpwcalc.appcache -x jquery.plugins/\* -x img/\*.svg -x img/\*.xcf; \ 4.49 + fi
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/src/tizen/about.html Wed Jul 31 19:48:00 2013 +0200 5.3 @@ -0,0 +1,65 @@ 5.4 +<!DOCTYPE html> 5.5 +<!-- 5.6 +OTPWCalc - One time password challenge response calculator client 5.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 5.8 + 5.9 +OTPWCalc is free software: you can redistribute it and/or modify 5.10 +it under the terms of the European Union Public Licence, either 5.11 +version 1.1 of the license, or (at your option) any later version. 5.12 + 5.13 +OTPWCalc is distributed in the hope that it will be useful, 5.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 5.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 5.16 +the European Union Public License for more details. 5.17 + 5.18 +You should have received a copy of the European Union Public 5.19 +Licence along with OTPWCalc. If not, please refer to 5.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 5.21 + 5.22 +This file is part of project OTWPCalc, a one time password challenge 5.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 5.24 + 5.25 +about.html: W3C HTML implementation 5.26 +--> 5.27 + 5.28 +<html> 5.29 + <head> 5.30 + <meta charset="utf-8"> 5.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 5.32 + <title>OTPWCalc</title> 5.33 + <link rel="stylesheet" href="css/jquery.mobile-1.3.2.min.css" /> 5.34 + <script src="js/jquery-2.0.0.min.js"></script> 5.35 + <script type="text/javascript"> 5.36 + $(document).on("pageinit", "#unknown", function() { 5.37 + // If this device supports the vibrate API... 5.38 + if('vibrate' in navigator) { 5.39 + // ...vibrate for a second 5.40 + navigator.vibrate(1000); 5.41 + } 5.42 + alert("Pageinit is bound!"); 5.43 + }); 5.44 + </script> 5.45 + <script src="js/jquery.mobile-1.3.2.min.js"></script> 5.46 +</head> 5.47 +<body> 5.48 + <!-- Data attributes reserved by JQuery Mobile: 5.49 + data-theme, data-ajax, data-filter, data-icon, data-grid, 5.50 + data-rel, data-icon, data-url, data-role, and data-type --> 5.51 + <div data-role="page" class="type-interior"> 5.52 + <!-- H1 header data-role good for Search Engine Optimization --> 5.53 + <!--<div data-role="header" data-position="inline">--> 5.54 + <div data-role="header" data-id="headabout"> 5.55 + <h1>About</h1> 5.56 + </div><!-- /header --> 5.57 + <div data-role="content"> 5.58 + <h1 style="float: left; margin: 0 0 0.25em;">OTPWCalc</h1> 5.59 + <img src="img/tastatur.png" alt="Computer keyboard" height="38" width="90" style="float: right;" /> 5.60 + <h2 style="clear: both; margin-left: 1em; line-height: 1em;">One Time Password Calculator 0.7.5</h2> 5.61 + <img src="img/datahost.png" alt="Datacenter host computer" height="68" width="245" style="display: block; margin: 0.75em auto;" /> 5.62 + <p>Visit the <a target="_blank" href="http://otpwcalc.europalab.com/">OTPWCalc Homepage</a></p> 5.63 + <p>Copyright © 2012 – 2013<br /><a target="_blank" href="http://michael.schloh.com/">Michael Schloh von Bennewitz</a></p> 5.64 + <p>This software is distributed under the terms of the <a target="_blank" href="http://joinup.ec.europa.eu/software/page/eupl/">European Union Public Licence (EUPL) version 1.1</a></p> 5.65 + </div><!-- /content --> 5.66 + </div><!-- /page --> 5.67 +</body> 5.68 +</html>
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/src/tizen/config.xml Wed Jul 31 19:48:00 2013 +0200 6.3 @@ -0,0 +1,7 @@ 6.4 +<?xml version="1.0" encoding="UTF-8"?> 6.5 +<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/OTPWCalc" version="1.0.0" viewmodes="maximized"> 6.6 + <tizen:application id="6yHB0wWzCc.OTPWCalc" package="6yHB0wWzCc" required_version="2.1"/> 6.7 + <content src="main.html"/> 6.8 + <icon src="img/otpwcalc-117px.png"/> 6.9 + <name>OTPWCalc</name> 6.10 +</widget>
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/src/tizen/eupl-1.1.txt Wed Jul 31 19:48:00 2013 +0200 7.3 @@ -0,0 +1,295 @@ 7.4 + European Union Public Licence 7.5 + V. 1.1 7.6 + EUPL © the European Community 2007 7.7 + 7.8 +This Europe an Union Public Licence (the “EUPL”) applies to the Work 7.9 +or Software (as defined below) which is provided under the terms of 7.10 +this Licence. Any use of the Work, other than as authorised under this 7.11 +Licence is prohibited (to the extent such use is covered by a right of 7.12 +the copyright holder of the Work). 7.13 + 7.14 +The Original Work is provided under the terms of this Licence when the 7.15 +Licensor (as defined below) has placed the following notice immediately 7.16 +following the copyright notice for the Original Work: 7.17 + 7.18 + Licensed under the EUPL V.1.1 7.19 + 7.20 +or has expressed by any other mean his willingness to license under the EUPL. 7.21 + 7.22 +1. Definitions 7.23 + 7.24 +In this Licence, the following terms have the following meaning: 7.25 + 7.26 +- The Licence: this Licence. 7.27 + 7.28 +- The Original Work or the Software: the software distributed and/or 7.29 +communicated by the Licensor under this Licence, available as Source 7.30 +Code and also as Executable Code as the case may be. 7.31 + 7.32 +- Derivative Works: the works or software that could be created by the 7.33 +Licensee, based upon the Original Work or modifications thereof. This 7.34 +Licence does not define the extent of modification or dependence on the 7.35 +Original Work required in order to classify a work as a Derivative Work; 7.36 +this extent is determined by copyright law applicable in the country 7.37 +mentioned in Article 15. 7.38 + 7.39 +- The Work: the Original Work and/or its Derivative Works. 7.40 + 7.41 +- The Source Code: the human-readable form of the Work which 7.42 + is the most convenient for people to study and modify. 7.43 + 7.44 +- The Executable Code: any code which has generally been compiled 7.45 + and which is meant to be interpreted by a computer as a program. 7.46 + 7.47 +- The Licensor: the natural or legal person that distributes 7.48 + and/or communicates the Work under the Licence. 7.49 + 7.50 +- Contributor(s): any natural or legal person who modifies the Work under 7.51 + the Licence, or otherwise contributes to the creation of a Derivative Work. 7.52 + 7.53 +- The Licensee or “You”: any natural or legal person who makes 7.54 + any usage of the Software under the terms of the Licence. 7.55 + 7.56 +- Distribution and/or Communication: any act of selling, giving, 7.57 + lending, renting, distributing, communicating, transmitting, or 7.58 + otherwise making available, on-line or off-line, copies of the 7.59 + Work or providing access to its essential functionalities at 7.60 + the disposal of any other natural or legal person. 7.61 + 7.62 +2. Scope of the rights granted by the Licence 7.63 + 7.64 +The Licensor hereby grants You a world-wide, royalty-free, non-exclusive, 7.65 +sublicensable licence to do the following, for the duration of copyright 7.66 +vested in the Original Work: 7.67 + 7.68 +- use the Work in any circumstance and for all usage, 7.69 +- reproduce the Work, 7.70 +- modify the Original Work, and make Derivative Works based upon the Work, 7.71 +- communicate to the public, including the right to make available or 7.72 + display the Work or copies thereof to the public and perform publicly, 7.73 + as the case may be, the Work, 7.74 +- distribute the Work or copies thereof, 7.75 +- lend and rent the Work or copies thereof, 7.76 +- sub-license rights in the Work or copies thereof. 7.77 + 7.78 +Those rights can be exercised on any media, supports and formats, whether 7.79 +now known or later invented, as far as the applicable law permits so. 7.80 + 7.81 +In the countries where moral rights apply, the Licensor waives his right 7.82 +to exercise his moral right to the extent allowed by law in order to 7.83 +make effective the licence of the economic rights here above listed. 7.84 + 7.85 +The Licensor grants to the Licensee royalty-free, non exclusive usage 7.86 +rights to any patents held by the Licensor, to the extent necessary to 7.87 +make use of the rights granted on the Work under this Licence. 7.88 + 7.89 +3. Communication of the Source Code 7.90 + 7.91 +The Licensor may provide the Work either in its Source Code form, or 7.92 +as Executable Code. If the Work is provided as Executable Code, the 7.93 +Licensor provides in addition a machine-readable copy of the Source 7.94 +Code of the Work along with each copy of the Work that the Licensor 7.95 +distributes or indicates, in a notice following the copyright notice 7.96 +attached to the Work, a repository where the Source Code is easily and 7.97 +freely accessible for as long as the Licensor continues to distribute 7.98 +and/or communicate the Work. 7.99 + 7.100 +4. Limitations on copyright 7.101 + 7.102 +Nothing in this Licence is intended to deprive the Licensee of the 7.103 +benefits from any exception or limitation to the exclusive rights of the 7.104 +rights owners in the Original Work or Software, of the exhaustion of 7.105 +those rights or of other applicable limitations thereto. 7.106 + 7.107 +5. Obligations of the Licensee 7.108 + 7.109 +The grant of the rights mentioned above is subject to some restrictions 7.110 +and obligations imposed on the Licensee. Those obligations are the 7.111 +following: 7.112 + 7.113 +Attribution right: the Licensee shall keep intact all 7.114 +copyright, patent or trademarks notices and all notices that refer to 7.115 +the Licence and to the disclaimer of warranties. 7.116 + 7.117 +The Licensee must include a copy of such notices and a copy of 7.118 +the Licence with every copy of the Work he/she distributes and/or 7.119 +communicates. The Licensee must cause any Derivative Work to carry 7.120 +prominent notices stating that the Work has been modified and the date 7.121 +of modification. 7.122 + 7.123 +Copyleft clause: If the Licensee distributes and/or communicates copies 7.124 +of the Original Works or Derivative Works based upon the Original 7.125 +Work, this Distribution and/or Communication will be done under the 7.126 +terms of this Licence or of a later version of this Licence unless the 7.127 +Original Work is expressly distributed only under this version of the 7.128 +Licence. The Licensee (becoming Licensor) cannot offer or impose any 7.129 +additional terms or conditions on the Work or Derivative Work that alter 7.130 +or restrict the terms of the Licence. 7.131 + 7.132 +Compatibility clause: If the Licensee Distributes and/or Communicates 7.133 +Derivative Works or copies thereof based upon both the Original Work 7.134 +and another work licensed under a Compatible Licence, this Distribution 7.135 +and/or Communication can be done under the terms of this Compatible 7.136 +Licence. For the sake of this clause, “Compatible Licence” refers 7.137 +to the licences listed in the appendix attached to this Licence. Should 7.138 +the Licensee’s obligations under the Compatible Licence conflict 7.139 +with his/her obligations under this Licence, the obligations of the 7.140 +Compatible Licence shall prevail. 7.141 + 7.142 +Provision of Source Code: When distributing and/or communicating copies 7.143 +of the Work, the Licensee will provide a machine-readable copy of the 7.144 +Source Code or indicate a repository where this Source will be easily 7.145 +and freely available for as long as the Licensee continues to distribute 7.146 +and/or communicate the Work. 7.147 + 7.148 +Legal Protection: This Licence does not grant permission to use the 7.149 +trade names, trademarks, service marks, or names of the Licensor, except 7.150 +as required for reasonable and customary use in describing the origin of 7.151 +the Work and reproducing the content of the copyright notice. 7.152 + 7.153 +6. Chain of Authorship 7.154 + 7.155 +The original Licensor warrants that the copyright in the Original Work 7.156 +granted hereunder is owned by him/her or licensed to him/her and that 7.157 +he/she has the power and authority to grant the Licence. 7.158 + 7.159 +Each Contributor warrants that the copyright in the modifications he/she 7.160 +brings to the Work are owned by him/her or licensed to him/her and that 7.161 +he/she has the power and authority to grant the Licence. 7.162 + 7.163 +Each time You accept the Licence, the original Licensor and subsequent 7.164 +Contributors grant You a licence to their contributions to the Work, 7.165 +under the terms of this Licence. 7.166 + 7.167 +7. Disclaimer of Warranty 7.168 + 7.169 +The Work is a work in progress, which is continuously improved by 7.170 +numerous contributors. It is not a finished work and may therefore 7.171 +contain defects or “bugs” inherent to this type of software 7.172 +development. 7.173 + 7.174 +For the above reason, the Work is provided under the Licence on an 7.175 +“as is” basis and without warranties of any kind concerning the Work, 7.176 +including without limitation merchantability, fitness for a particular 7.177 +purpose, absence of defects or errors, accuracy, non-infringement of 7.178 +intellectual property rights other than copyright as stated in Article 7.179 +6 of this Licence. 7.180 + 7.181 +This disclaimer of warranty is an essential part of the Licence 7.182 +and a condition for the grant of any rights to the Work. 7.183 + 7.184 +8. Disclaimer of Liability 7.185 + 7.186 +Except in the cases of wilful misconduct or damages directly caused to 7.187 +natural persons, the Licensor will in no event be liable for any direct 7.188 +or indirect, material or moral, damages of any kind, arising out of the 7.189 +Licence or of the use of the Work, including without limitation, damages 7.190 +for loss of goodwill, work stoppage, computer failure or malfunction, 7.191 +loss of data or any commercial damage, even if the Licensor has been 7.192 +advised of the possibility of such damage. However, the Licensor will be 7.193 +liable under statutory product liability laws as far such laws apply to 7.194 +the Work. 7.195 + 7.196 +9. Additional agreements 7.197 + 7.198 +While distributing the Original Work or Derivative Works, You may 7.199 +choose to conclude an additional agreement to offer, and charge a fee 7.200 +for, acceptance of support, warranty, indemnity, or other liability 7.201 +obligations and/or services consistent with this Licence. However, in 7.202 +accepting such obligations, You may act only on your own behalf and on 7.203 +your sole responsibility, not on behalf of the original Licensor or 7.204 +any other Contributor, and only if You agree to indemnify, defend, and 7.205 +hold each Contributor harmless for any liability incurred by, or claims 7.206 +asserted against such Contributor by the fact You have accepted any such 7.207 +warranty or additional liability. 7.208 + 7.209 +10. Acceptance of the Licence 7.210 + 7.211 +The provisions of this Licence can be accepted by clicking on an icon 7.212 +“I agree” placed under the bottom of a window displaying the text 7.213 +of this Licence or by affirming consent in any other similar way, in 7.214 +accordance with the rules of applicable law. Clicking on that icon 7.215 +indicates your clear and irrevocable acceptance of this Licence and all 7.216 +of its terms and conditions. 7.217 + 7.218 +Similarly, you irrevocably accept this Licence and all of its terms 7.219 +and conditions by exercising any rights granted to You by Article 2 of 7.220 +this Licence, such as the use of the Work, the creation by You of a 7.221 +Derivative Work or the Distribution and/or Communication by You of the 7.222 +Work or copies thereof. 7.223 + 7.224 +11. Information to the public 7.225 + 7.226 +In case of any Distribution and/or Communication of the Work by means of 7.227 +electronic communication by You (for example, by offering to download 7.228 +the Work from a remote location) the distribution channel or media (for 7.229 +example, a website) must at least provide to the public the information 7.230 +requested by the applicable law regarding the Licensor, the Licence and 7.231 +the way it may be accessible, concluded, stored and reproduced by the 7.232 +Licensee. 7.233 + 7.234 +12. Termination of the Licence 7.235 + 7.236 +The Licence and the rights granted hereunder will terminate 7.237 +automatically upon any breach by the Licensee of the terms of the 7.238 +Licence. Such a termination will not terminate the licences of any 7.239 +person who has received the Work from the Licensee under the Licence, 7.240 +provided such persons remain in full compliance with the Licence. 7.241 + 7.242 +13. Miscellaneous 7.243 + 7.244 +Without prejudice of Article 9 above, the Licence represents the 7.245 +complete agreement between the Parties as to the Work licensed 7.246 +hereunder. 7.247 + 7.248 +If any provision of the Licence is invalid or unenforceable under 7.249 +applicable law, this will not affect the validity or enforceability 7.250 +of the Licence as a whole. Such provision will be construed and/or 7.251 +reformed so as necessary to make it valid and enforceable. The European 7.252 +Commission may publish other linguistic versions and/or new versions of 7.253 +this Licence, so far this is required and reasonable, without reducing 7.254 +the scope of the rights granted by the Licence. New versions of the 7.255 +Licence will be published with a unique version number. 7.256 + 7.257 +All linguistic versions of this Licence, approved by the European 7.258 +Commission, have identical value. Parties can take advantage of the 7.259 +linguistic version of their choice. 7.260 + 7.261 +14. Jurisdiction 7.262 + 7.263 +Any litigation resulting from the interpretation of this License, 7.264 +arising between the European Commission, as a Licensor, and any 7.265 +Licensee, will be subject to the jurisdiction of the Court of Justice 7.266 +of the European Communities, as laid down in article 238 of the Treaty 7.267 +establishing the European Community. 7.268 + 7.269 +Any litigation arising between Parties, other than the European 7.270 +Commission, and resulting from the interpretation of this License, will 7.271 +be subject to the exclusive jurisdiction of the competent court where 7.272 +the Licensor resides or conducts its primary business. 7.273 + 7.274 +15. Applicable Law 7.275 + 7.276 +This Licence shall be governed by the law of the European Union 7.277 +country where the Licensor resides or has his registered office. 7.278 + 7.279 +This licence shall be governed by the Belgian law if: 7.280 + 7.281 +- a litigation arises between the European 7.282 + Commission, as a Licensor, and any Licensee; 7.283 +- the Licensor, other than the European Commission, has no 7.284 + residence or registered office inside a European Union country. 7.285 + 7.286 + 7.287 + === 7.288 + 7.289 + 7.290 + Appendix 7.291 + 7.292 + “Compatible Licences” according to article 5 EUPL are: 7.293 + 7.294 + - GNU General Public License (GNU GPL) v. 2 7.295 + - Open Software License (OSL) v. 2.1, v. 3.0 7.296 + - Common Public License v. 1.0 7.297 + - Eclipse Public License v. 1.0 7.298 + - Cecill v. 2.0
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 8.2 +++ b/src/tizen/hashes/md4.js Wed Jul 31 19:48:00 2013 +0200 8.3 @@ -0,0 +1,236 @@ 8.4 +/* 8.5 + * A JavaScript implementation of the RSA Data Security, Inc. MD4 Message 8.6 + * Digest Algorithm, as defined in RFC 1320. 8.7 + * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002. 8.8 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet 8.9 + * Distributed under the BSD License 8.10 + * See http://pajhome.org.uk/crypt/md5 for more info. 8.11 + */ 8.12 + 8.13 +/* 8.14 + * Configurable variables. You may need to tweak these to be compatible with 8.15 + * the server-side, but the defaults work in most cases. 8.16 + */ 8.17 +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ 8.18 +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ 8.19 +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ 8.20 + 8.21 +/* 8.22 + * These are the functions you'll usually want to call 8.23 + */ 8.24 +function hexmd4(s){ return binl2hex(coremd4(str2binl(s), s.length * chrsz));} 8.25 +function b64md4(s){ return binl2b64(coremd4(str2binl(s), s.length * chrsz));} 8.26 +function strmd4(s){ return binl2str(coremd4(str2binl(s), s.length * chrsz));} 8.27 +function hexhmacmd4(key, data) { return binl2hex(corehmacmd4(key, data)); } 8.28 +function b64hmacmd4(key, data) { return binl2b64(corehmacmd4(key, data)); } 8.29 +function strhmacmd4(key, data) { return binl2str(corehmacmd4(key, data)); } 8.30 + 8.31 +/* 8.32 + * Perform a simple self-test to see if the VM is working 8.33 + */ 8.34 +function md4vmtest() 8.35 +{ 8.36 + return hexmd4("abc") == "a448017aaf21d8525fc10ae87aa6729d"; 8.37 +} 8.38 + 8.39 +/* 8.40 + * Calculate the MD4 of an array of little-endian words, and a bit length 8.41 + */ 8.42 +function coremd4(x, len) 8.43 +{ 8.44 + /* append padding */ 8.45 + x[len >> 5] |= 0x80 << (len % 32); 8.46 + x[(((len + 64) >>> 9) << 4) + 14] = len; 8.47 + 8.48 + var a = 1732584193; 8.49 + var b = -271733879; 8.50 + var c = -1732584194; 8.51 + var d = 271733878; 8.52 + 8.53 + for(var i = 0; i < x.length; i += 16) 8.54 + { 8.55 + var olda = a; 8.56 + var oldb = b; 8.57 + var oldc = c; 8.58 + var oldd = d; 8.59 + 8.60 + a = md4ff(a, b, c, d, x[i+ 0], 3 ); 8.61 + d = md4ff(d, a, b, c, x[i+ 1], 7 ); 8.62 + c = md4ff(c, d, a, b, x[i+ 2], 11); 8.63 + b = md4ff(b, c, d, a, x[i+ 3], 19); 8.64 + a = md4ff(a, b, c, d, x[i+ 4], 3 ); 8.65 + d = md4ff(d, a, b, c, x[i+ 5], 7 ); 8.66 + c = md4ff(c, d, a, b, x[i+ 6], 11); 8.67 + b = md4ff(b, c, d, a, x[i+ 7], 19); 8.68 + a = md4ff(a, b, c, d, x[i+ 8], 3 ); 8.69 + d = md4ff(d, a, b, c, x[i+ 9], 7 ); 8.70 + c = md4ff(c, d, a, b, x[i+10], 11); 8.71 + b = md4ff(b, c, d, a, x[i+11], 19); 8.72 + a = md4ff(a, b, c, d, x[i+12], 3 ); 8.73 + d = md4ff(d, a, b, c, x[i+13], 7 ); 8.74 + c = md4ff(c, d, a, b, x[i+14], 11); 8.75 + b = md4ff(b, c, d, a, x[i+15], 19); 8.76 + 8.77 + a = md4gg(a, b, c, d, x[i+ 0], 3 ); 8.78 + d = md4gg(d, a, b, c, x[i+ 4], 5 ); 8.79 + c = md4gg(c, d, a, b, x[i+ 8], 9 ); 8.80 + b = md4gg(b, c, d, a, x[i+12], 13); 8.81 + a = md4gg(a, b, c, d, x[i+ 1], 3 ); 8.82 + d = md4gg(d, a, b, c, x[i+ 5], 5 ); 8.83 + c = md4gg(c, d, a, b, x[i+ 9], 9 ); 8.84 + b = md4gg(b, c, d, a, x[i+13], 13); 8.85 + a = md4gg(a, b, c, d, x[i+ 2], 3 ); 8.86 + d = md4gg(d, a, b, c, x[i+ 6], 5 ); 8.87 + c = md4gg(c, d, a, b, x[i+10], 9 ); 8.88 + b = md4gg(b, c, d, a, x[i+14], 13); 8.89 + a = md4gg(a, b, c, d, x[i+ 3], 3 ); 8.90 + d = md4gg(d, a, b, c, x[i+ 7], 5 ); 8.91 + c = md4gg(c, d, a, b, x[i+11], 9 ); 8.92 + b = md4gg(b, c, d, a, x[i+15], 13); 8.93 + 8.94 + a = md4hh(a, b, c, d, x[i+ 0], 3 ); 8.95 + d = md4hh(d, a, b, c, x[i+ 8], 9 ); 8.96 + c = md4hh(c, d, a, b, x[i+ 4], 11); 8.97 + b = md4hh(b, c, d, a, x[i+12], 15); 8.98 + a = md4hh(a, b, c, d, x[i+ 2], 3 ); 8.99 + d = md4hh(d, a, b, c, x[i+10], 9 ); 8.100 + c = md4hh(c, d, a, b, x[i+ 6], 11); 8.101 + b = md4hh(b, c, d, a, x[i+14], 15); 8.102 + a = md4hh(a, b, c, d, x[i+ 1], 3 ); 8.103 + d = md4hh(d, a, b, c, x[i+ 9], 9 ); 8.104 + c = md4hh(c, d, a, b, x[i+ 5], 11); 8.105 + b = md4hh(b, c, d, a, x[i+13], 15); 8.106 + a = md4hh(a, b, c, d, x[i+ 3], 3 ); 8.107 + d = md4hh(d, a, b, c, x[i+11], 9 ); 8.108 + c = md4hh(c, d, a, b, x[i+ 7], 11); 8.109 + b = md4hh(b, c, d, a, x[i+15], 15); 8.110 + 8.111 + a = safeadd(a, olda); 8.112 + b = safeadd(b, oldb); 8.113 + c = safeadd(c, oldc); 8.114 + d = safeadd(d, oldd); 8.115 + 8.116 + } 8.117 + return Array(a, b, c, d); 8.118 + 8.119 +} 8.120 + 8.121 +/* 8.122 + * These functions implement the basic operation for each round of the 8.123 + * algorithm. 8.124 + */ 8.125 +function md4cmn(q, a, b, x, s, t) 8.126 +{ 8.127 + return safeadd(rol(safeadd(safeadd(a, q), safeadd(x, t)), s), b); 8.128 +} 8.129 +function md4ff(a, b, c, d, x, s) 8.130 +{ 8.131 + return md4cmn((b & c) | ((~b) & d), a, 0, x, s, 0); 8.132 +} 8.133 +function md4gg(a, b, c, d, x, s) 8.134 +{ 8.135 + return md4cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249); 8.136 +} 8.137 +function md4hh(a, b, c, d, x, s) 8.138 +{ 8.139 + return md4cmn(b ^ c ^ d, a, 0, x, s, 1859775393); 8.140 +} 8.141 + 8.142 +/* 8.143 + * Calculate the HMAC-MD4, of a key and some data 8.144 + */ 8.145 +function corehmacmd4(key, data) 8.146 +{ 8.147 + var bkey = str2binl(key); 8.148 + if(bkey.length > 16) bkey = coremd4(bkey, key.length * chrsz); 8.149 + 8.150 + var ipad = Array(16), opad = Array(16); 8.151 + for(var i = 0; i < 16; i++) 8.152 + { 8.153 + ipad[i] = bkey[i] ^ 0x36363636; 8.154 + opad[i] = bkey[i] ^ 0x5C5C5C5C; 8.155 + } 8.156 + 8.157 + var hash = coremd4(ipad.concat(str2binl(data)), 512 + data.length * chrsz); 8.158 + return coremd4(opad.concat(hash), 512 + 128); 8.159 +} 8.160 + 8.161 +/* 8.162 + * Add integers, wrapping at 2^32. This uses 16-bit operations internally 8.163 + * to work around bugs in some JS interpreters. 8.164 + */ 8.165 +function safeadd(x, y) 8.166 +{ 8.167 + var lsw = (x & 0xFFFF) + (y & 0xFFFF); 8.168 + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 8.169 + return (msw << 16) | (lsw & 0xFFFF); 8.170 +} 8.171 + 8.172 +/* 8.173 + * Bitwise rotate a 32-bit number to the left. 8.174 + */ 8.175 +function rol(num, cnt) 8.176 +{ 8.177 + return (num << cnt) | (num >>> (32 - cnt)); 8.178 +} 8.179 + 8.180 +/* 8.181 + * Convert a string to an array of little-endian words 8.182 + * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. 8.183 + */ 8.184 +function str2binl(str) 8.185 +{ 8.186 + var bin = Array(); 8.187 + var mask = (1 << chrsz) - 1; 8.188 + for(var i = 0; i < str.length * chrsz; i += chrsz) 8.189 + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); 8.190 + return bin; 8.191 +} 8.192 + 8.193 +/* 8.194 + * Convert an array of little-endian words to a string 8.195 + */ 8.196 +function binl2str(bin) 8.197 +{ 8.198 + var str = ""; 8.199 + var mask = (1 << chrsz) - 1; 8.200 + for(var i = 0; i < bin.length * 32; i += chrsz) 8.201 + str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); 8.202 + return str; 8.203 +} 8.204 + 8.205 +/* 8.206 + * Convert an array of little-endian words to a hex string. 8.207 + */ 8.208 +function binl2hex(binarray) 8.209 +{ 8.210 + var hextab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 8.211 + var str = ""; 8.212 + for(var i = 0; i < binarray.length * 4; i++) 8.213 + { 8.214 + str += hextab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + 8.215 + hextab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); 8.216 + } 8.217 + return str; 8.218 +} 8.219 + 8.220 +/* 8.221 + * Convert an array of little-endian words to a base-64 string 8.222 + */ 8.223 +function binl2b64(binarray) 8.224 +{ 8.225 + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 8.226 + var str = ""; 8.227 + for(var i = 0; i < binarray.length * 4; i += 3) 8.228 + { 8.229 + var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) 8.230 + | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) 8.231 + | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); 8.232 + for(var j = 0; j < 4; j++) 8.233 + { 8.234 + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; 8.235 + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); 8.236 + } 8.237 + } 8.238 + return str; 8.239 +}
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/src/tizen/hashes/md5.js Wed Jul 31 19:48:00 2013 +0200 9.3 @@ -0,0 +1,256 @@ 9.4 +/* 9.5 + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message 9.6 + * Digest Algorithm, as defined in RFC 1321. 9.7 + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. 9.8 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet 9.9 + * Distributed under the BSD License 9.10 + * See http://pajhome.org.uk/crypt/md5 for more info. 9.11 + */ 9.12 + 9.13 +/* 9.14 + * Configurable variables. You may need to tweak these to be compatible with 9.15 + * the server-side, but the defaults work in most cases. 9.16 + */ 9.17 +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ 9.18 +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ 9.19 +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ 9.20 + 9.21 +/* 9.22 + * These are the functions you'll usually want to call 9.23 + * They take string arguments and return either hex or base-64 encoded strings 9.24 + */ 9.25 +function hexmd5(s){ return binl2hex(coremd5(str2binl(s), s.length * chrsz));} 9.26 +function b64md5(s){ return binl2b64(coremd5(str2binl(s), s.length * chrsz));} 9.27 +function strmd5(s){ return binl2str(coremd5(str2binl(s), s.length * chrsz));} 9.28 +function hexhmacmd5(key, data) { return binl2hex(corehmacmd5(key, data)); } 9.29 +function b64hmacmd5(key, data) { return binl2b64(corehmacmd5(key, data)); } 9.30 +function strhmacmd5(key, data) { return binl2str(corehmacmd5(key, data)); } 9.31 + 9.32 +/* 9.33 + * Perform a simple self-test to see if the VM is working 9.34 + */ 9.35 +function md5vmtest() 9.36 +{ 9.37 + return hexmd5("abc") == "900150983cd24fb0d6963f7d28e17f72"; 9.38 +} 9.39 + 9.40 +/* 9.41 + * Calculate the MD5 of an array of little-endian words, and a bit length 9.42 + */ 9.43 +function coremd5(x, len) 9.44 +{ 9.45 + /* append padding */ 9.46 + x[len >> 5] |= 0x80 << ((len) % 32); 9.47 + x[(((len + 64) >>> 9) << 4) + 14] = len; 9.48 + 9.49 + var a = 1732584193; 9.50 + var b = -271733879; 9.51 + var c = -1732584194; 9.52 + var d = 271733878; 9.53 + 9.54 + for(var i = 0; i < x.length; i += 16) 9.55 + { 9.56 + var olda = a; 9.57 + var oldb = b; 9.58 + var oldc = c; 9.59 + var oldd = d; 9.60 + 9.61 + a = md5ff(a, b, c, d, x[i+ 0], 7 , -680876936); 9.62 + d = md5ff(d, a, b, c, x[i+ 1], 12, -389564586); 9.63 + c = md5ff(c, d, a, b, x[i+ 2], 17, 606105819); 9.64 + b = md5ff(b, c, d, a, x[i+ 3], 22, -1044525330); 9.65 + a = md5ff(a, b, c, d, x[i+ 4], 7 , -176418897); 9.66 + d = md5ff(d, a, b, c, x[i+ 5], 12, 1200080426); 9.67 + c = md5ff(c, d, a, b, x[i+ 6], 17, -1473231341); 9.68 + b = md5ff(b, c, d, a, x[i+ 7], 22, -45705983); 9.69 + a = md5ff(a, b, c, d, x[i+ 8], 7 , 1770035416); 9.70 + d = md5ff(d, a, b, c, x[i+ 9], 12, -1958414417); 9.71 + c = md5ff(c, d, a, b, x[i+10], 17, -42063); 9.72 + b = md5ff(b, c, d, a, x[i+11], 22, -1990404162); 9.73 + a = md5ff(a, b, c, d, x[i+12], 7 , 1804603682); 9.74 + d = md5ff(d, a, b, c, x[i+13], 12, -40341101); 9.75 + c = md5ff(c, d, a, b, x[i+14], 17, -1502002290); 9.76 + b = md5ff(b, c, d, a, x[i+15], 22, 1236535329); 9.77 + 9.78 + a = md5gg(a, b, c, d, x[i+ 1], 5 , -165796510); 9.79 + d = md5gg(d, a, b, c, x[i+ 6], 9 , -1069501632); 9.80 + c = md5gg(c, d, a, b, x[i+11], 14, 643717713); 9.81 + b = md5gg(b, c, d, a, x[i+ 0], 20, -373897302); 9.82 + a = md5gg(a, b, c, d, x[i+ 5], 5 , -701558691); 9.83 + d = md5gg(d, a, b, c, x[i+10], 9 , 38016083); 9.84 + c = md5gg(c, d, a, b, x[i+15], 14, -660478335); 9.85 + b = md5gg(b, c, d, a, x[i+ 4], 20, -405537848); 9.86 + a = md5gg(a, b, c, d, x[i+ 9], 5 , 568446438); 9.87 + d = md5gg(d, a, b, c, x[i+14], 9 , -1019803690); 9.88 + c = md5gg(c, d, a, b, x[i+ 3], 14, -187363961); 9.89 + b = md5gg(b, c, d, a, x[i+ 8], 20, 1163531501); 9.90 + a = md5gg(a, b, c, d, x[i+13], 5 , -1444681467); 9.91 + d = md5gg(d, a, b, c, x[i+ 2], 9 , -51403784); 9.92 + c = md5gg(c, d, a, b, x[i+ 7], 14, 1735328473); 9.93 + b = md5gg(b, c, d, a, x[i+12], 20, -1926607734); 9.94 + 9.95 + a = md5hh(a, b, c, d, x[i+ 5], 4 , -378558); 9.96 + d = md5hh(d, a, b, c, x[i+ 8], 11, -2022574463); 9.97 + c = md5hh(c, d, a, b, x[i+11], 16, 1839030562); 9.98 + b = md5hh(b, c, d, a, x[i+14], 23, -35309556); 9.99 + a = md5hh(a, b, c, d, x[i+ 1], 4 , -1530992060); 9.100 + d = md5hh(d, a, b, c, x[i+ 4], 11, 1272893353); 9.101 + c = md5hh(c, d, a, b, x[i+ 7], 16, -155497632); 9.102 + b = md5hh(b, c, d, a, x[i+10], 23, -1094730640); 9.103 + a = md5hh(a, b, c, d, x[i+13], 4 , 681279174); 9.104 + d = md5hh(d, a, b, c, x[i+ 0], 11, -358537222); 9.105 + c = md5hh(c, d, a, b, x[i+ 3], 16, -722521979); 9.106 + b = md5hh(b, c, d, a, x[i+ 6], 23, 76029189); 9.107 + a = md5hh(a, b, c, d, x[i+ 9], 4 , -640364487); 9.108 + d = md5hh(d, a, b, c, x[i+12], 11, -421815835); 9.109 + c = md5hh(c, d, a, b, x[i+15], 16, 530742520); 9.110 + b = md5hh(b, c, d, a, x[i+ 2], 23, -995338651); 9.111 + 9.112 + a = md5ii(a, b, c, d, x[i+ 0], 6 , -198630844); 9.113 + d = md5ii(d, a, b, c, x[i+ 7], 10, 1126891415); 9.114 + c = md5ii(c, d, a, b, x[i+14], 15, -1416354905); 9.115 + b = md5ii(b, c, d, a, x[i+ 5], 21, -57434055); 9.116 + a = md5ii(a, b, c, d, x[i+12], 6 , 1700485571); 9.117 + d = md5ii(d, a, b, c, x[i+ 3], 10, -1894986606); 9.118 + c = md5ii(c, d, a, b, x[i+10], 15, -1051523); 9.119 + b = md5ii(b, c, d, a, x[i+ 1], 21, -2054922799); 9.120 + a = md5ii(a, b, c, d, x[i+ 8], 6 , 1873313359); 9.121 + d = md5ii(d, a, b, c, x[i+15], 10, -30611744); 9.122 + c = md5ii(c, d, a, b, x[i+ 6], 15, -1560198380); 9.123 + b = md5ii(b, c, d, a, x[i+13], 21, 1309151649); 9.124 + a = md5ii(a, b, c, d, x[i+ 4], 6 , -145523070); 9.125 + d = md5ii(d, a, b, c, x[i+11], 10, -1120210379); 9.126 + c = md5ii(c, d, a, b, x[i+ 2], 15, 718787259); 9.127 + b = md5ii(b, c, d, a, x[i+ 9], 21, -343485551); 9.128 + 9.129 + a = safeadd(a, olda); 9.130 + b = safeadd(b, oldb); 9.131 + c = safeadd(c, oldc); 9.132 + d = safeadd(d, oldd); 9.133 + } 9.134 + return Array(a, b, c, d); 9.135 + 9.136 +} 9.137 + 9.138 +/* 9.139 + * These functions implement the four basic operations the algorithm uses. 9.140 + */ 9.141 +function md5cmn(q, a, b, x, s, t) 9.142 +{ 9.143 + return safeadd(bitrol(safeadd(safeadd(a, q), safeadd(x, t)), s),b); 9.144 +} 9.145 +function md5ff(a, b, c, d, x, s, t) 9.146 +{ 9.147 + return md5cmn((b & c) | ((~b) & d), a, b, x, s, t); 9.148 +} 9.149 +function md5gg(a, b, c, d, x, s, t) 9.150 +{ 9.151 + return md5cmn((b & d) | (c & (~d)), a, b, x, s, t); 9.152 +} 9.153 +function md5hh(a, b, c, d, x, s, t) 9.154 +{ 9.155 + return md5cmn(b ^ c ^ d, a, b, x, s, t); 9.156 +} 9.157 +function md5ii(a, b, c, d, x, s, t) 9.158 +{ 9.159 + return md5cmn(c ^ (b | (~d)), a, b, x, s, t); 9.160 +} 9.161 + 9.162 +/* 9.163 + * Calculate the HMAC-MD5, of a key and some data 9.164 + */ 9.165 +function corehmacmd5(key, data) 9.166 +{ 9.167 + var bkey = str2binl(key); 9.168 + if(bkey.length > 16) bkey = coremd5(bkey, key.length * chrsz); 9.169 + 9.170 + var ipad = Array(16), opad = Array(16); 9.171 + for(var i = 0; i < 16; i++) 9.172 + { 9.173 + ipad[i] = bkey[i] ^ 0x36363636; 9.174 + opad[i] = bkey[i] ^ 0x5C5C5C5C; 9.175 + } 9.176 + 9.177 + var hash = coremd5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); 9.178 + return coremd5(opad.concat(hash), 512 + 128); 9.179 +} 9.180 + 9.181 +/* 9.182 + * Add integers, wrapping at 2^32. This uses 16-bit operations internally 9.183 + * to work around bugs in some JS interpreters. 9.184 + */ 9.185 +function safeadd(x, y) 9.186 +{ 9.187 + var lsw = (x & 0xFFFF) + (y & 0xFFFF); 9.188 + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 9.189 + return (msw << 16) | (lsw & 0xFFFF); 9.190 +} 9.191 + 9.192 +/* 9.193 + * Bitwise rotate a 32-bit number to the left. 9.194 + */ 9.195 +function bitrol(num, cnt) 9.196 +{ 9.197 + return (num << cnt) | (num >>> (32 - cnt)); 9.198 +} 9.199 + 9.200 +/* 9.201 + * Convert a string to an array of little-endian words 9.202 + * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. 9.203 + */ 9.204 +function str2binl(str) 9.205 +{ 9.206 + var bin = Array(); 9.207 + var mask = (1 << chrsz) - 1; 9.208 + for(var i = 0; i < str.length * chrsz; i += chrsz) 9.209 + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); 9.210 + return bin; 9.211 +} 9.212 + 9.213 +/* 9.214 + * Convert an array of little-endian words to a string 9.215 + */ 9.216 +function binl2str(bin) 9.217 +{ 9.218 + var str = ""; 9.219 + var mask = (1 << chrsz) - 1; 9.220 + for(var i = 0; i < bin.length * 32; i += chrsz) 9.221 + str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); 9.222 + return str; 9.223 +} 9.224 + 9.225 +/* 9.226 + * Convert an array of little-endian words to a hex string. 9.227 + */ 9.228 +function binl2hex(binarray) 9.229 +{ 9.230 + var hextab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 9.231 + var str = ""; 9.232 + for(var i = 0; i < binarray.length * 4; i++) 9.233 + { 9.234 + str += hextab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + 9.235 + hextab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); 9.236 + } 9.237 + return str; 9.238 +} 9.239 + 9.240 +/* 9.241 + * Convert an array of little-endian words to a base-64 string 9.242 + */ 9.243 +function binl2b64(binarray) 9.244 +{ 9.245 + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 9.246 + var str = ""; 9.247 + for(var i = 0; i < binarray.length * 4; i += 3) 9.248 + { 9.249 + var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) 9.250 + | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) 9.251 + | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); 9.252 + for(var j = 0; j < 4; j++) 9.253 + { 9.254 + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; 9.255 + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); 9.256 + } 9.257 + } 9.258 + return str; 9.259 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/src/tizen/hashes/rmd160.js Wed Jul 31 19:48:00 2013 +0200 10.3 @@ -0,0 +1,249 @@ 10.4 +/* A JavaScript implementation of RIPEMD-160, as specified at 10.5 + * 10.6 + * http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/ 10.7 + * 10.8 + * This is pretty much a straight translation of the pseudocode, which is 10.9 + * shorter than the reference version which has loops unrolled, but is 10.10 + * also somewhat slower. 10.11 + * 10.12 + * More information about RIPEMD-160 can be found at 10.13 + * 10.14 + * http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html 10.15 + * 10.16 + * Copyright (c) 2004, Jeremy Lin. Written 2004/02/29. 10.17 + * 10.18 + * You may use this code under the terms of the BSD-style jsotp license: 10.19 + * 10.20 + * http://www.ocf.berkeley.edu/~jjlin/jsotp/license.html 10.21 + * 10.22 + * The utility functions and general framework are borrowed from Paul Johnston's 10.23 + * MD4/MD5/SHA-1 JavaScript implementations (http://pajhome.org.uk/crypt/md5), so 10.24 + * 10.25 + * Portions copyright (c) 1999-2002, Paul Johnston. 10.26 + */ 10.27 + 10.28 +/* 10.29 + * Configurable variables. You may need to tweak these to be compatible with 10.30 + * the server-side, but the defaults work in most cases. 10.31 + */ 10.32 +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ 10.33 +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ 10.34 +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ 10.35 + 10.36 +/* 10.37 + * These are the functions you'll usually want to call 10.38 + * They take string arguments and return either hex or base-64 encoded strings 10.39 + */ 10.40 +function hexrmd160(s){return binl2hex(corermd160(str2binl(s),s.length * chrsz));} 10.41 +function b64rmd160(s){return binl2b64(corermd160(str2binl(s),s.length * chrsz));} 10.42 +function strrmd160(s){return binl2str(corermd160(str2binl(s),s.length * chrsz));} 10.43 +function hexhmacrmd160(key, data){ return binl2hex(corehmacrmd160(key, data));} 10.44 +function b64hmacrmd160(key, data){ return binl2b64(corehmacrmd160(key, data));} 10.45 +function strhmacrmd160(key, data){ return binl2str(corehmacrmd160(key, data));} 10.46 + 10.47 +/* 10.48 + * Perform a simple self-test to see if the VM is working 10.49 + */ 10.50 +function rmd160vmtest() 10.51 +{ 10.52 + return hexrmd160("abc") == "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"; 10.53 +} 10.54 + 10.55 +/* 10.56 + * Calculate the RMD-160 of an array of big-endian words, and a bit length 10.57 + */ 10.58 +function corermd160(x, len) 10.59 +{ 10.60 + /* append padding */ 10.61 + x[len >> 5] |= 0x80 << (len % 32); 10.62 + x[(((len + 64) >>> 9) << 4) + 14] = len; 10.63 + 10.64 + var h0 = 0x67452301; 10.65 + var h1 = 0xefcdab89; 10.66 + var h2 = 0x98badcfe; 10.67 + var h3 = 0x10325476; 10.68 + var h4 = 0xc3d2e1f0; 10.69 + 10.70 + for (var i = 0; i < x.length; i += 16) { 10.71 + var T; 10.72 + var A1 = h0, B1 = h1, C1 = h2, D1 = h3, E1 = h4; 10.73 + var A2 = h0, B2 = h1, C2 = h2, D2 = h3, E2 = h4; 10.74 + for (var j = 0; j <= 79; ++j) { 10.75 + T = safeadd(A1, rmd160f(j, B1, C1, D1)); 10.76 + T = safeadd(T, x[i + rmd160r1[j]]); 10.77 + T = safeadd(T, rmd160K1(j)); 10.78 + T = safeadd(rol(T, rmd160s1[j]), E1); 10.79 + A1 = E1; E1 = D1; D1 = rol(C1, 10); C1 = B1; B1 = T; 10.80 + T = safeadd(A2, rmd160f(79-j, B2, C2, D2)); 10.81 + T = safeadd(T, x[i + rmd160r2[j]]); 10.82 + T = safeadd(T, rmd160K2(j)); 10.83 + T = safeadd(rol(T, rmd160s2[j]), E2); 10.84 + A2 = E2; E2 = D2; D2 = rol(C2, 10); C2 = B2; B2 = T; 10.85 + } 10.86 + T = safeadd(h1, safeadd(C1, D2)); 10.87 + h1 = safeadd(h2, safeadd(D1, E2)); 10.88 + h2 = safeadd(h3, safeadd(E1, A2)); 10.89 + h3 = safeadd(h4, safeadd(A1, B2)); 10.90 + h4 = safeadd(h0, safeadd(B1, C2)); 10.91 + h0 = T; 10.92 + } 10.93 + return [h0, h1, h2, h3, h4]; 10.94 +} 10.95 + 10.96 +function rmd160f(j, x, y, z) 10.97 +{ 10.98 + return ( 0 <= j && j <= 15) ? (x ^ y ^ z) : 10.99 + (16 <= j && j <= 31) ? (x & y) | (~x & z) : 10.100 + (32 <= j && j <= 47) ? (x | ~y) ^ z : 10.101 + (48 <= j && j <= 63) ? (x & z) | (y & ~z) : 10.102 + (64 <= j && j <= 79) ? x ^ (y | ~z) : 10.103 + "rmd160f: j out of range"; 10.104 +} 10.105 + 10.106 +function rmd160K1(j) 10.107 +{ 10.108 + return ( 0 <= j && j <= 15) ? 0x00000000 : 10.109 + (16 <= j && j <= 31) ? 0x5a827999 : 10.110 + (32 <= j && j <= 47) ? 0x6ed9eba1 : 10.111 + (48 <= j && j <= 63) ? 0x8f1bbcdc : 10.112 + (64 <= j && j <= 79) ? 0xa953fd4e : 10.113 + "rmd160K1: j out of range"; 10.114 +} 10.115 + 10.116 +function rmd160K2(j) 10.117 +{ 10.118 + return ( 0 <= j && j <= 15) ? 0x50a28be6 : 10.119 + (16 <= j && j <= 31) ? 0x5c4dd124 : 10.120 + (32 <= j && j <= 47) ? 0x6d703ef3 : 10.121 + (48 <= j && j <= 63) ? 0x7a6d76e9 : 10.122 + (64 <= j && j <= 79) ? 0x00000000 : 10.123 + "rmd160K2: j out of range"; 10.124 +} 10.125 + 10.126 +var rmd160r1 = [ 10.127 + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 10.128 + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 10.129 + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 10.130 + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 10.131 + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 10.132 +]; 10.133 +var rmd160r2 = [ 10.134 + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 10.135 + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 10.136 + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 10.137 + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 10.138 + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 10.139 +]; 10.140 +var rmd160s1 = [ 10.141 + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 10.142 + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 10.143 + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 10.144 + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 10.145 + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 10.146 +]; 10.147 +var rmd160s2 = [ 10.148 + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 10.149 + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 10.150 + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 10.151 + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 10.152 + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 10.153 +]; 10.154 + 10.155 +/* 10.156 + * Calculate the HMAC-RMD160 of a key and some data 10.157 + */ 10.158 +function corehmacrmd160(key, data) 10.159 +{ 10.160 + var bkey = str2binl(key); 10.161 + if(bkey.length > 16) bkey = corermd160(bkey, key.length * chrsz); 10.162 + 10.163 + var ipad = Array(16), opad = Array(16); 10.164 + for(var i = 0; i < 16; i++) 10.165 + { 10.166 + ipad[i] = bkey[i] ^ 0x36363636; 10.167 + opad[i] = bkey[i] ^ 0x5C5C5C5C; 10.168 + } 10.169 + 10.170 + var hash = corermd160(ipad.concat(str2binl(data)), 512 + data.length * chrsz); 10.171 + return corermd160(opad.concat(hash), 512 + 160); 10.172 +} 10.173 + 10.174 +/* 10.175 + * Add integers, wrapping at 2^32. This uses 16-bit operations internally 10.176 + * to work around bugs in some JS interpreters. 10.177 + */ 10.178 +function safeadd(x, y) 10.179 +{ 10.180 + var lsw = (x & 0xFFFF) + (y & 0xFFFF); 10.181 + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 10.182 + return (msw << 16) | (lsw & 0xFFFF); 10.183 +} 10.184 + 10.185 +/* 10.186 + * Bitwise rotate a 32-bit number to the left. 10.187 + */ 10.188 +function rol(num, cnt) 10.189 +{ 10.190 + return (num << cnt) | (num >>> (32 - cnt)); 10.191 +} 10.192 + 10.193 +/* 10.194 + * Convert a string to an array of little-endian words 10.195 + * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. 10.196 + */ 10.197 +function str2binl(str) 10.198 +{ 10.199 + var bin = Array(); 10.200 + var mask = (1 << chrsz) - 1; 10.201 + for(var i = 0; i < str.length * chrsz; i += chrsz) 10.202 + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); 10.203 + return bin; 10.204 +} 10.205 + 10.206 +/* 10.207 + * Convert an array of little-endian words to a string 10.208 + */ 10.209 +function binl2str(bin) 10.210 +{ 10.211 + var str = ""; 10.212 + var mask = (1 << chrsz) - 1; 10.213 + for(var i = 0; i < bin.length * 32; i += chrsz) 10.214 + str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); 10.215 + return str; 10.216 +} 10.217 + 10.218 +/* 10.219 + * Convert an array of little-endian words to a hex string. 10.220 + */ 10.221 +function binl2hex(binarray) 10.222 +{ 10.223 + var hextab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 10.224 + var str = ""; 10.225 + for(var i = 0; i < binarray.length * 4; i++) 10.226 + { 10.227 + str += hextab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + 10.228 + hextab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); 10.229 + } 10.230 + return str; 10.231 +} 10.232 + 10.233 +/* 10.234 + * Convert an array of little-endian words to a base-64 string 10.235 + */ 10.236 +function binl2b64(binarray) 10.237 +{ 10.238 + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 10.239 + var str = ""; 10.240 + for(var i = 0; i < binarray.length * 4; i += 3) 10.241 + { 10.242 + var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) 10.243 + | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) 10.244 + | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); 10.245 + for(var j = 0; j < 4; j++) 10.246 + { 10.247 + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; 10.248 + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); 10.249 + } 10.250 + } 10.251 + return str; 10.252 +}
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/src/tizen/hashes/sha1.js Wed Jul 31 19:48:00 2013 +0200 11.3 @@ -0,0 +1,202 @@ 11.4 +/* 11.5 + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined 11.6 + * in FIPS PUB 180-1 11.7 + * Version 2.1 Copyright Paul Johnston 2000 - 2002. 11.8 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet 11.9 + * Distributed under the BSD License 11.10 + * See http://pajhome.org.uk/crypt/md5 for details. 11.11 + */ 11.12 + 11.13 +/* 11.14 + * Configurable variables. You may need to tweak these to be compatible with 11.15 + * the server-side, but the defaults work in most cases. 11.16 + */ 11.17 +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ 11.18 +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ 11.19 +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ 11.20 + 11.21 +/* 11.22 + * These are the functions you'll usually want to call 11.23 + * They take string arguments and return either hex or base-64 encoded strings 11.24 + */ 11.25 +function hexsha1(s){return binb2hex(coresha1(str2binb(s),s.length * chrsz));} 11.26 +function b64sha1(s){return binb2b64(coresha1(str2binb(s),s.length * chrsz));} 11.27 +function strsha1(s){return binb2str(coresha1(str2binb(s),s.length * chrsz));} 11.28 +function hexhmacsha1(key, data){ return binb2hex(corehmacsha1(key, data));} 11.29 +function b64hmacsha1(key, data){ return binb2b64(corehmacsha1(key, data));} 11.30 +function strhmacsha1(key, data){ return binb2str(corehmacsha1(key, data));} 11.31 + 11.32 +/* 11.33 + * Perform a simple self-test to see if the VM is working 11.34 + */ 11.35 +function sha1vmtest() 11.36 +{ 11.37 + return hexsha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; 11.38 +} 11.39 + 11.40 +/* 11.41 + * Calculate the SHA-1 of an array of big-endian words, and a bit length 11.42 + */ 11.43 +function coresha1(x, len) 11.44 +{ 11.45 + /* append padding */ 11.46 + x[len >> 5] |= 0x80 << (24 - len % 32); 11.47 + x[((len + 64 >> 9) << 4) + 15] = len; 11.48 + 11.49 + var w = Array(80); 11.50 + var a = 1732584193; 11.51 + var b = -271733879; 11.52 + var c = -1732584194; 11.53 + var d = 271733878; 11.54 + var e = -1009589776; 11.55 + 11.56 + for(var i = 0; i < x.length; i += 16) 11.57 + { 11.58 + var olda = a; 11.59 + var oldb = b; 11.60 + var oldc = c; 11.61 + var oldd = d; 11.62 + var olde = e; 11.63 + 11.64 + for(var j = 0; j < 80; j++) 11.65 + { 11.66 + if(j < 16) w[j] = x[i + j]; 11.67 + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); 11.68 + var t = safeadd(safeadd(rol(a, 5), sha1ft(j, b, c, d)), 11.69 + safeadd(safeadd(e, w[j]), sha1kt(j))); 11.70 + e = d; 11.71 + d = c; 11.72 + c = rol(b, 30); 11.73 + b = a; 11.74 + a = t; 11.75 + } 11.76 + 11.77 + a = safeadd(a, olda); 11.78 + b = safeadd(b, oldb); 11.79 + c = safeadd(c, oldc); 11.80 + d = safeadd(d, oldd); 11.81 + e = safeadd(e, olde); 11.82 + } 11.83 + return Array(a, b, c, d, e); 11.84 + 11.85 +} 11.86 + 11.87 +/* 11.88 + * Perform the appropriate triplet combination function for the current 11.89 + * iteration 11.90 + */ 11.91 +function sha1ft(t, b, c, d) 11.92 +{ 11.93 + if(t < 20) return (b & c) | ((~b) & d); 11.94 + if(t < 40) return b ^ c ^ d; 11.95 + if(t < 60) return (b & c) | (b & d) | (c & d); 11.96 + return b ^ c ^ d; 11.97 +} 11.98 + 11.99 +/* 11.100 + * Determine the appropriate additive constant for the current iteration 11.101 + */ 11.102 +function sha1kt(t) 11.103 +{ 11.104 + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : 11.105 + (t < 60) ? -1894007588 : -899497514; 11.106 +} 11.107 + 11.108 +/* 11.109 + * Calculate the HMAC-SHA1 of a key and some data 11.110 + */ 11.111 +function corehmacsha1(key, data) 11.112 +{ 11.113 + var bkey = str2binb(key); 11.114 + if(bkey.length > 16) bkey = coresha1(bkey, key.length * chrsz); 11.115 + 11.116 + var ipad = Array(16), opad = Array(16); 11.117 + for(var i = 0; i < 16; i++) 11.118 + { 11.119 + ipad[i] = bkey[i] ^ 0x36363636; 11.120 + opad[i] = bkey[i] ^ 0x5C5C5C5C; 11.121 + } 11.122 + 11.123 + var hash = coresha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); 11.124 + return coresha1(opad.concat(hash), 512 + 160); 11.125 +} 11.126 + 11.127 +/* 11.128 + * Add integers, wrapping at 2^32. This uses 16-bit operations internally 11.129 + * to work around bugs in some JS interpreters. 11.130 + */ 11.131 +function safeadd(x, y) 11.132 +{ 11.133 + var lsw = (x & 0xFFFF) + (y & 0xFFFF); 11.134 + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 11.135 + return (msw << 16) | (lsw & 0xFFFF); 11.136 +} 11.137 + 11.138 +/* 11.139 + * Bitwise rotate a 32-bit number to the left. 11.140 + */ 11.141 +function rol(num, cnt) 11.142 +{ 11.143 + return (num << cnt) | (num >>> (32 - cnt)); 11.144 +} 11.145 + 11.146 +/* 11.147 + * Convert an 8-bit or 16-bit string to an array of big-endian words 11.148 + * In 8-bit function, characters >255 have their hi-byte silently ignored. 11.149 + */ 11.150 +function str2binb(str) 11.151 +{ 11.152 + var bin = Array(); 11.153 + var mask = (1 << chrsz) - 1; 11.154 + for(var i = 0; i < str.length * chrsz; i += chrsz) 11.155 + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32); 11.156 + return bin; 11.157 +} 11.158 + 11.159 +/* 11.160 + * Convert an array of big-endian words to a string 11.161 + */ 11.162 +function binb2str(bin) 11.163 +{ 11.164 + var str = ""; 11.165 + var mask = (1 << chrsz) - 1; 11.166 + for(var i = 0; i < bin.length * 32; i += chrsz) 11.167 + str += String.fromCharCode((bin[i>>5] >>> (24 - i%32)) & mask); 11.168 + return str; 11.169 +} 11.170 + 11.171 +/* 11.172 + * Convert an array of big-endian words to a hex string. 11.173 + */ 11.174 +function binb2hex(binarray) 11.175 +{ 11.176 + var hextab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 11.177 + var str = ""; 11.178 + for(var i = 0; i < binarray.length * 4; i++) 11.179 + { 11.180 + str += hextab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + 11.181 + hextab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); 11.182 + } 11.183 + return str; 11.184 +} 11.185 + 11.186 +/* 11.187 + * Convert an array of big-endian words to a base-64 string 11.188 + */ 11.189 +function binb2b64(binarray) 11.190 +{ 11.191 + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 11.192 + var str = ""; 11.193 + for(var i = 0; i < binarray.length * 4; i += 3) 11.194 + { 11.195 + var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) 11.196 + | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) 11.197 + | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); 11.198 + for(var j = 0; j < 4; j++) 11.199 + { 11.200 + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; 11.201 + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); 11.202 + } 11.203 + } 11.204 + return str; 11.205 +}
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/src/tizen/help/help.html Wed Jul 31 19:48:00 2013 +0200 12.3 @@ -0,0 +1,60 @@ 12.4 +<!DOCTYPE html> 12.5 +<!-- 12.6 +OTPWCalc - One time password challenge response calculator client 12.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 12.8 + 12.9 +OTPWCalc is free software: you can redistribute it and/or modify 12.10 +it under the terms of the European Union Public Licence, either 12.11 +version 1.1 of the license, or (at your option) any later version. 12.12 + 12.13 +OTPWCalc is distributed in the hope that it will be useful, 12.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 12.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 12.16 +the European Union Public License for more details. 12.17 + 12.18 +You should have received a copy of the European Union Public 12.19 +Licence along with OTPWCalc. If not, please refer to 12.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 12.21 + 12.22 +This file is part of project OTWPCalc, a one time password challenge 12.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 12.24 + 12.25 +help.html: W3C HTML implementation 12.26 +--> 12.27 + 12.28 +<html> 12.29 + <head> 12.30 + <meta charset="utf-8"> 12.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 12.32 + <title>OTPWCalc</title> 12.33 + <link rel="stylesheet" href="../css/jquery.mobile-1.3.2.min.css" /> 12.34 + <link rel="stylesheet" href="../main.css" /> 12.35 + <script src="../js/jquery-2.0.0.min.js"></script> 12.36 + <script src="help.js"></script> 12.37 + <script src="../js/jquery.mobile-1.3.2.min.js"></script> 12.38 +</head> 12.39 +<body> 12.40 + <!-- Data attributes reserved by JQuery Mobile: 12.41 + data-theme, data-ajax, data-filter, data-icon, data-grid, 12.42 + data-rel, data-icon, data-url, data-role, and data-type --> 12.43 + <!-- Also data-dom-cache="true" --> 12.44 + <div data-role="page" class="type-interior oc-swipage" id="helphaupt"> 12.45 + <!-- H1 header data-role good for Search Engine Optimization --> 12.46 + <!--<div data-role="header" data-position="inline">--> 12.47 + <div data-role="header" data-position="fixed" data-id="headhelp"> 12.48 + <h1>OTPWCalc</h1> 12.49 + </div><!-- /header --> 12.50 + <div data-role="content"> 12.51 + <div class="content-primary"> 12.52 + <h1 style="text-align: center; margin: 0;">Help</h1> 12.53 + <a href="hfaq.html" data-prefetch="true" data-role="button" data-transition="slide" data-theme="e" data-icon="otpwcalc-question" data-iconpos="right">F. A. Q.</a> 12.54 + <a href="hqst.html" data-prefetch="true" data-role="button" data-transition="slide" data-theme="e" data-icon="otpwcalc-qstart" data-iconpos="right">Quickstart</a> 12.55 + <a href="hman.html" data-prefetch="true" data-role="button" data-transition="slide" data-theme="e" data-icon="otpwcalc-manpage" data-iconpos="right">Manpage</a> 12.56 + <a target="_blank" href="http://list.europalab.com/mailman/listinfo/otpwcalc/" data-role="button" data-transition="slide" data-theme="e" data-icon="otpwcalc-email" data-iconpos="right">Mailinglist</a> 12.57 + <a href="hsec.html" data-prefetch="true" data-role="button" data-transition="slide" data-theme="e" data-icon="otpwcalc-security" data-iconpos="right">Security</a> 12.58 + <a href="hsta.html" data-prefetch="true" data-role="button" data-transition="slide" data-theme="e" data-icon="otpwcalc-document" data-iconpos="right">Standards</a> 12.59 + </div><!-- /content-primary --> 12.60 + </div><!-- /content --> 12.61 + </div><!-- /page --> 12.62 +</body> 12.63 +</html>
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/src/tizen/help/help.js Wed Jul 31 19:48:00 2013 +0200 13.3 @@ -0,0 +1,75 @@ 13.4 +/* 13.5 + * OTPWCalc - One time password challenge response calculator client 13.6 + * Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 13.7 + * 13.8 + * OTPWCalc is free software: you can redistribute it and/or modify 13.9 + * it under the terms of the European Union Public Licence, either 13.10 + * version 1.1 of the license, or (at your option) any later version. 13.11 + * 13.12 + * OTPWCalc is distributed in the hope that it will be useful, 13.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty 13.14 + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 13.15 + * the European Union Public License for more details. 13.16 + * 13.17 + * You should have received a copy of the European Union Public 13.18 + * Licence along with OTPWCalc. If not, please refer to 13.19 + * <http://joinup.ec.europa.eu/software/page/eupl/>. 13.20 + * 13.21 + * This file is part of project OTWPCalc, a one time password challenge 13.22 + * response calculator client and is found at http://otpwcalc.europalab.com/ 13.23 + * 13.24 + * help.js: ECMA JavaScript implementation 13.25 + */ 13.26 + 13.27 +// <![CDATA[ 13.28 +//// This doesn't work with AJAX (use pageinit instead) 13.29 +//// That means JavaScript in the head of any other HTML 13.30 +//// will be ignored, only the data-role="page" is parsed 13.31 +//$(document).ready(function() { 13.32 + //$.mobile.ajaxLinksEnabled = false; 13.33 +//}); 13.34 +$(document).on("mobileinit", function() { 13.35 + $.extend( $.mobile , { 13.36 + pageLoadErrorMessage: 'Either the page cannot be found or it cannot be loaded.' 13.37 + }); 13.38 + //$("#pageid").on("pagebeforeshow", function(event, data) { 13.39 + // alert("the previous page was: " + data.prevPage.attr("id")); 13.40 + //}); 13.41 +}); 13.42 +$(document).on("pageinit", "[data-role='page'].type-interior", function() { 13.43 + $(".ui-collapsible[data-allow-collapse=false]").off("expand collapse"); 13.44 +}); 13.45 +$(document).on("pageinit", "[data-role='page'].oc-swipage", function() { 13.46 + var makepage = "#" + $(this).attr("id"), 13.47 + next = $(this).jqmData("next"), // Next page stored in data-next 13.48 + prev = $(this).jqmData("prev"); // Previous page stored in data-prev 13.49 + 13.50 + if (next) { // Check if data-next attribute is indeed set 13.51 + //// Prefetch next page 13.52 + //$.mobile.loadPage(next); 13.53 + // Navigate to next page on swipe left 13.54 + $(document).on("swipeleft", makepage, function(inev) { 13.55 + inev.stopImmediatePropagation(); 13.56 + $.mobile.changePage(next, {transition: "slide"}); 13.57 + }); 13.58 + } 13.59 + else { // If data-next not set then default to history 13.60 + $(document).on("swipeleft", makepage, function(inev) { 13.61 + inev.stopImmediatePropagation(); 13.62 + window.history.forward({transition: "slide"}); 13.63 + }); 13.64 + } 13.65 + if (prev) { // Check if data-prev attribute is set 13.66 + $(document).on("swiperight", makepage, function(inev) { 13.67 + inev.stopImmediatePropagation(); 13.68 + $.mobile.changePage(prev, {transition: "slide", reverse: true}); 13.69 + }); 13.70 + } 13.71 + else { // If data-prev not set then default to history 13.72 + $(document).on("swiperight", makepage, function(inev) { 13.73 + inev.stopImmediatePropagation(); 13.74 + //history.back(); // or window.history.back(); 13.75 + $.mobile.back({transition: "slide", reverse: true}); 13.76 + }); 13.77 + } 13.78 +});
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 14.2 +++ b/src/tizen/help/hfaq.html Wed Jul 31 19:48:00 2013 +0200 14.3 @@ -0,0 +1,174 @@ 14.4 +<!DOCTYPE html> 14.5 +<!-- 14.6 +OTPWCalc - One time password challenge response calculator client 14.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 14.8 + 14.9 +OTPWCalc is free software: you can redistribute it and/or modify 14.10 +it under the terms of the European Union Public Licence, either 14.11 +version 1.1 of the license, or (at your option) any later version. 14.12 + 14.13 +OTPWCalc is distributed in the hope that it will be useful, 14.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 14.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 14.16 +the European Union Public License for more details. 14.17 + 14.18 +You should have received a copy of the European Union Public 14.19 +Licence along with OTPWCalc. If not, please refer to 14.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 14.21 + 14.22 +This file is part of project OTWPCalc, a one time password challenge 14.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 14.24 + 14.25 +hfaq.html: W3C HTML implementation 14.26 +--> 14.27 + 14.28 +<html> 14.29 + <head> 14.30 + <meta charset="utf-8"> 14.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 14.32 + <title>OTPWCalc</title> 14.33 + <link rel="stylesheet" href="../css/jquery.mobile-1.3.2.min.css" /> 14.34 + <link rel="stylesheet" href="../main.css" /> 14.35 + <script src="../js/jquery-2.0.0.min.js"></script> 14.36 + <script src="help.js"></script> 14.37 + <script src="../js/jquery.mobile-1.3.2.min.js"></script> 14.38 + </head> 14.39 + <body> 14.40 + <!-- Data attributes reserved by JQuery Mobile: 14.41 + data-theme, data-ajax, data-filter, data-icon, data-grid, 14.42 + data-rel, data-icon, data-url, data-role, and data-type --> 14.43 + <!-- Also data-dom-cache="true" --> 14.44 + <div data-role="page" class="type-interior oc-swipage" id="faq"> 14.45 + <div data-role="header" data-id="headfaq"> 14.46 + <h1>OTPWCalc</h1> 14.47 + </div><!-- /header --> 14.48 + <div data-role="content"> 14.49 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d" data-inset="false" data-theme="c" data-content-theme="c"> 14.50 + <h3 style="margin-top: 0; margin-bottom: 0;">What is a One Time Password?</h3> 14.51 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">A One Time Password (OTP) is a password valid only for a <strong>single use</strong> and, once used, cannot be used again for authentication. OTPs avoid a number of shortcomings that are associated with traditional (static) passwords.</p> 14.52 + </div> 14.53 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.54 + <h3>What can I do with this app?</h3> 14.55 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">This application serves one purpose only. It calculates and prints a OTP.</p> 14.56 + </div> 14.57 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.58 + <h3>What can I do with OTPs?</h3> 14.59 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Most people use OTPs to log in to their website administration, CMS, or remote console.</p> 14.60 + </div> 14.61 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.62 + <h3>Can I log into my Google account?</h3> 14.63 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">No. Google uses OTPs, but in a slightly nonstandard way. OTPWCalc cannot calculate OTPs useful for Google authentication yet.</p> 14.64 + </div> 14.65 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.66 + <h3>Can I log in to Win/OSX/Oracle?</h3> 14.67 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Yes, but some work is needed on the Windows/OSX/Oracle computer to configure the authentication subsystem.</p> 14.68 + </div> 14.69 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.70 + <h3>Can I log in to Unix/Linux?</h3> 14.71 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Yes, by using PAM and it's quite easy.</p> 14.72 + </div> 14.73 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.74 + <h3>What else can I do with it?</h3> 14.75 + <ol style="margin-top: 0.5em;"> 14.76 + <li>Impress your friends</li> 14.77 + <li>VPN authentication</li> 14.78 + <li>Single sign on</li> 14.79 + <li>Remote access</li> 14.80 + <li>Computer login</li> 14.81 + <li>Disk encryption</li> 14.82 + <li>Internet services</li> 14.83 + <li>Systems integration</li> 14.84 + <li>CMS authentication</li> 14.85 + <li>Password management</li> 14.86 + <li>Email and money transfer</li> 14.87 + <li>Bank transaction validation</li> 14.88 + </ol> 14.89 + </div> 14.90 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.91 + <h3>Can I install OTPWCalc on …?</h3> 14.92 + <ul style="margin-top: 0.5em;"> 14.93 + <li>FirefoxOS: <strong>Yes</strong></li> 14.94 + <li>Sailfish: No</li> 14.95 + <li>Android: No</li> 14.96 + <li>Tizen: <strong>Yes</strong></li> 14.97 + <li>MeeGo: No</li> 14.98 + <li>Bada: No</li> 14.99 + <li>iOS: No</li> 14.100 + <li>Unix: No</li> 14.101 + <li>Linux: No</li> 14.102 + <li>Mac OSX: No</li> 14.103 + <li>BlackBerry QNX: No</li> 14.104 + <li>Windows Phone: <strong>Yes</strong></li> 14.105 + <li>Windows Store: <strong>Yes</strong></li> 14.106 + </ul> 14.107 + </div> 14.108 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.109 + <h3>Why isn't OTPWCalc compatible?</h3> 14.110 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">OTPWCalc might not be compatible with your platform of choice, usually because the necessary hardware isn't available to the author for development.</p> 14.111 + </div> 14.112 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.113 + <h3>What happens to my password?</h3> 14.114 + <p style="margin-top: 0.25em;">Take a look at the entry point in 14.115 + <strong>main.js</strong>:</p> 14.116 + <code style="margin-left: 2em; display:inline-block; line-height: 120%;"> 14.117 + var secr = $('#paswrd').val();<br /> 14.118 + var resp = hash(secr, user, iter); 14.119 + </code> 14.120 + <p style="margin-bottom: 0.25em;">In other words, the password you enter is neither stored nor transmitted. In fact, OTPWCalc doesn't store or transmit any data input <strong>at all</strong> (see James Bond question later.) It's a <em>calculator</em> in the true sense, just like a pocket calculator that adds numbers.</p> 14.121 + </div> 14.122 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.123 + <h3>Is OTPWCalc safe and secure?</h3> 14.124 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">The algorithms of OTP have proven worthy of <strong>high security applications</strong>. OTPWCalc has been carefully designed and is tested thoroughly. It's both secure and safe to use.</p> 14.125 + </div> 14.126 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.127 + <h3>Is it useful in a corporate setting?</h3> 14.128 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Yes. Custom built enterprise versions are available accompanied with commercial support. Visit the <a href="http://otpwcalc.europalab.com/">OTPWCalc homepage</a> for information.</p> 14.129 + </div> 14.130 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.131 + <h3>Does James Bond use OTPWCalc?</h3> 14.132 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Maybe, but spies probably just look over shoulders or use cameras to steal the static passwords used in OTP systems.</p> 14.133 + </div> 14.134 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.135 + <h3>Same as Yubikey or RSA SecurID?</h3> 14.136 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Yubikey, RSA SecurID, and OTPWCalc use similar technologies for similar applications, but OTPWCalc is strictly software and doesn't depend on the time or date.</p> 14.137 + </div> 14.138 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.139 + <h3>How can I upgrade my OTPWCalc?</h3> 14.140 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">This varies according to the operating system used so there's no single answer.</p> 14.141 + </div> 14.142 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.143 + <h3>Who owns OTPWCalc?</h3> 14.144 + <p style="margin-top: 0.25em; margin-bottom: 0;">OTPWCalc is the property of the copyright holder, Michael Schloh von Bennewitz.</p> 14.145 + </div> 14.146 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.147 + <h3>Is OTPWCalc licensed?</h3> 14.148 + <p style="margin-top: 0.25em; margin-bottom: 0;">OTPWCalc is distributed under the terms of the <a href="http://joinup.ec.europa.eu/software/page/eupl/">European Union Public Licence</a>. This liberal license grants you freedom to use the software and much more.</p> 14.149 + </div> 14.150 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.151 + <h3>Which programming language?</h3> 14.152 + <p style="margin-top: 0.25em; margin-bottom: 0;">OTPWCalc is built using the HTML, CSS, and JavaScript languages.</p> 14.153 + <p style="margin-top: 0.5em; margin-bottom: 0.25em;">The jQuery Mobile and Apache Cordova development frameworks provide important additional features.</p> 14.154 + </div> 14.155 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.156 + <h3>What are ongoing developments?</h3> 14.157 + <p style="margin-top: 0.25em;">OTPWCalc is both active and stable, and follows a project management plan.</p> 14.158 + <ul> 14.159 + <li>It is undergoing i18n and l10n to several european languages.</li> 14.160 + <li style="margin-top: 0.5em;"><strong>HMAC</strong>-based RFC 4226 (HOTP) is being implemented.</li> 14.161 + <li style="margin-top: 0.5em;">Features like QR and OpenID integration are being explored.</li> 14.162 + <li style="margin-top: 0.5em;">Most of all, OTPWCalc is being <em>ported to new platforms</em>.</li> 14.163 + </ul> 14.164 + <p style="margin-top: 0.5em; margin-bottom: 0.25em;">To request features or pose questions please write to the <a href="http://list.europalab.com/mailman/listinfo/otpwcalc/">mailing list</a>.</p> 14.165 + </div> 14.166 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.167 + <h3>How can I report a bogue (bug)?</h3> 14.168 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Please write to the <a href="http://list.europalab.com/mailman/listinfo/otpwcalc/">mailing list</a> stating the OTPWCalc version and platform. Thanks for every bug report!</p> 14.169 + </div> 14.170 + <div data-role="collapsible" data-inset="false" data-theme="c" data-content-theme="d"> 14.171 + <h3>My question isn't answered,<br />or this is just not working!</h3> 14.172 + <p style="margin-top: 0.25em; margin-bottom: 0.25em;">Please turn to the <a href="http://list.europalab.com/mailman/listinfo/otpwcalc/">mailing list</a> and ask for help there. Answers appear in a day.</p> 14.173 + </div> 14.174 + </div><!-- /content --> 14.175 + </div><!-- /page --> 14.176 +</body> 14.177 +</html>
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 15.2 +++ b/src/tizen/help/hman.html Wed Jul 31 19:48:00 2013 +0200 15.3 @@ -0,0 +1,158 @@ 15.4 +<!DOCTYPE html> 15.5 +<!-- 15.6 +OTPWCalc - One time password challenge response calculator client 15.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 15.8 + 15.9 +OTPWCalc is free software: you can redistribute it and/or modify 15.10 +it under the terms of the European Union Public Licence, either 15.11 +version 1.1 of the license, or (at your option) any later version. 15.12 + 15.13 +OTPWCalc is distributed in the hope that it will be useful, 15.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 15.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 15.16 +the European Union Public License for more details. 15.17 + 15.18 +You should have received a copy of the European Union Public 15.19 +Licence along with OTPWCalc. If not, please refer to 15.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 15.21 + 15.22 +This file is part of project OTWPCalc, a one time password challenge 15.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 15.24 + 15.25 +hman.html: W3C HTML implementation 15.26 +--> 15.27 + 15.28 +<html> 15.29 + <head> 15.30 + <meta charset="utf-8"> 15.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 15.32 + <title>OTPWCalc</title> 15.33 + <link rel="stylesheet" href="../css/jquery.mobile-1.3.2.min.css" /> 15.34 + <link rel="stylesheet" href="../main.css" /> 15.35 + <script src="../js/jquery-2.0.0.min.js"></script> 15.36 + <script src="help.js"></script> 15.37 + <script src="../js/jquery.mobile-1.3.2.min.js"></script> 15.38 + </head> 15.39 + <body> 15.40 + <!-- Data attributes reserved by JQuery Mobile: 15.41 + data-theme, data-ajax, data-filter, data-icon, data-grid, 15.42 + data-rel, data-icon, data-url, data-role, and data-type --> 15.43 + <!-- Also data-dom-cache="true" --> 15.44 + <div data-role="page" class="type-interior oc-swipage" id="manpage"> 15.45 + <div data-role="header" data-position="fixed" data-id="headman"> 15.46 + <h1>OTPWCalc</h1> 15.47 + </div><!-- /header --> 15.48 + <div data-role="content"> 15.49 + <div style="float: left;">User Commands</div> 15.50 + <div style="float: right;">OTPWCalc(1)</div> 15.51 + <div style="clear: both;"></div> 15.52 + <div style="margin-top: 1.5em; text-transform: uppercase; font-size: 0.75em;">Name</div> 15.53 + <div style="margin-left: 2em; font-size: 0.75em;">OTPWCalc - Client application for calculating responses to OTP challenges.</div> 15.54 + <div style="margin-top: 1.5em; text-transform: uppercase; font-size: 0.75em;">Synopsis</div> 15.55 + <div style="margin-left: 2em; font-size: 0.75em;">OTPWCalc [-h] [-v] [-V]</div> 15.56 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Description</div> 15.57 + <div style="margin-left: 2em; font-size: 0.75em;">Playing the role of a hardware 15.58 + token in a client server authentication system as described 15.59 + in RFC 2289, OTPWCalc calculates responses to incoming 15.60 + authentication challenges as typed in by the user.</div> 15.61 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Options</div> 15.62 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.63 + -h Display a brief help message and exit.<br /> 15.64 + -v Print verbose text to the calling terminal.<br /> 15.65 + -V Print the version number and exit. 15.66 + </div> 15.67 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Terms</div> 15.68 + <div style="margin-left: 2em; font-size: 0.75em;">Username</div> 15.69 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.70 + The name that the server knows. For example, 'albertc'. 15.71 + </div> 15.72 + <div style="margin-left: 2em; font-size: 0.75em;">Secret</div> 15.73 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.74 + A password, usually selected by the user, that is 15.75 + needed to gain access to the server. For example, 15.76 + 'Mysec2-pw'. 15.77 + </div> 15.78 + <div style="margin-left: 2em; font-size: 0.75em;">Challenge</div> 15.79 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.80 + Information printed by the server when it tries to 15.81 + authenticate a user. This information is needed by 15.82 + OTPWCalc to generate a proper response. For example, 15.83 + 'otp-md5 820 dinw23612'. 15.84 + </div> 15.85 + <div style="margin-left: 2em; font-size: 0.75em;">Response</div> 15.86 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.87 + Information generated from a challenge that is used 15.88 + by the server to authenticate the user. For example, 15.89 + 'BIEM ROSE JINX HARD BALL SKY NEW'. 15.90 + </div> 15.91 + <div style="margin-left: 2em; font-size: 0.75em;">Seed</div> 15.92 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.93 + Information used in conjunction with the secret and 15.94 + sequence number to compute the response. It allows 15.95 + the same secret to be used for multiple sequences 15.96 + by changing the seed, or for authentication to 15.97 + multiple servers by using different seeds. 15.98 + </div> 15.99 + <div style="margin-left: 2em; font-size: 0.75em;">Sequence #</div> 15.100 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.101 + A counter used to track key iterations. Each time 15.102 + a successful response is received by the server the 15.103 + sequence number is decremented. For example, 71. 15.104 + </div> 15.105 + <div style="margin-left: 2em; font-size: 0.75em;">Hash ID</div> 15.106 + <div style="margin-left: 4em; font-size: 0.75em;"> 15.107 + Text that identifies the cryptographical algorithm 15.108 + used. The valid hash identifiers are 'otpmd4' 15.109 + corresponding to MD4, and 'otp-md5' corresponding 15.110 + to MD5. 15.111 + </div> 15.112 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Files</div> 15.113 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.114 + The application may store a cookie in a file used to 15.115 + restore the most recent settings. The location of this 15.116 + file (or arbitrary data structure) varies according to 15.117 + the operating system. 15.118 + </div> 15.119 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Bugs</div> 15.120 + <div style="margin-left: 2em; font-size: 0.75em;">This manual.</div> 15.121 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Security</div> 15.122 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.123 + All of the authentication strategies covered in the 15.124 + standards implemented by this application are vulnerable 15.125 + to man in the middle (MITM) attacks. The strategies can 15.126 + be combined with public key logic to defeat such attacks. 15.127 + </div> 15.128 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Standards</div> 15.129 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.130 + The IETF standards RFC 1760 (The S/KEY One-Time Password 15.131 + System) and RFC 2289 (A One-Time Password System) are 15.132 + implemented. 15.133 + </div> 15.134 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">See also</div> 15.135 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.136 + None. This is a self contained, stand alone application with 15.137 + no alias commands. It is unique in that it leverages open 15.138 + technologies like Javascript to run unmodified on a variety 15.139 + of operating systems. 15.140 + </div> 15.141 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Author</div> 15.142 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.143 + This application was written by <a href="http://michael.schloh.com/"> 15.144 + Michael Schloh von Bennewitz</a>. 15.145 + </div> 15.146 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Contact</div> 15.147 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.148 + Please refer to the <a href="http://otpwcalc.europalab.com/"> 15.149 + OTPWCalc homepage</a> for contact information. 15.150 + </div> 15.151 + <div style="margin-top: 1.25em; text-transform: uppercase; font-size: 0.75em;">Support</div> 15.152 + <div style="margin-left: 2em; font-size: 0.75em;"> 15.153 + The <a href="http://list.europalab.com/mailman/listinfo/otpwcalc/"> 15.154 + OTPWCalc mailing list</a> provides information and answers to 15.155 + questions. Commercial support is provided by the 15.156 + <a href="mailto:michael@schloh.com">author</a>. 15.157 + </div> 15.158 + </div><!-- /content --> 15.159 + </div><!-- /page --> 15.160 +</body> 15.161 +</html>
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 16.2 +++ b/src/tizen/help/hqst.html Wed Jul 31 19:48:00 2013 +0200 16.3 @@ -0,0 +1,60 @@ 16.4 +<!DOCTYPE html> 16.5 +<!-- 16.6 +OTPWCalc - One time password challenge response calculator client 16.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 16.8 + 16.9 +OTPWCalc is free software: you can redistribute it and/or modify 16.10 +it under the terms of the European Union Public Licence, either 16.11 +version 1.1 of the license, or (at your option) any later version. 16.12 + 16.13 +OTPWCalc is distributed in the hope that it will be useful, 16.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 16.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 16.16 +the European Union Public License for more details. 16.17 + 16.18 +You should have received a copy of the European Union Public 16.19 +Licence along with OTPWCalc. If not, please refer to 16.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 16.21 + 16.22 +This file is part of project OTWPCalc, a one time password challenge 16.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 16.24 + 16.25 +hqst.html: W3C HTML implementation 16.26 +--> 16.27 + 16.28 +<html> 16.29 + <head> 16.30 + <meta charset="utf-8"> 16.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 16.32 + <title>OTPWCalc</title> 16.33 + <link rel="stylesheet" href="../css/jquery.mobile-1.3.2.min.css" /> 16.34 + <link rel="stylesheet" href="../main.css" /> 16.35 + <script src="../js/jquery-2.0.0.min.js"></script> 16.36 + <script src="help.js"></script> 16.37 + <script src="../js/jquery.mobile-1.3.2.min.js"></script> 16.38 + </head> 16.39 + <body> 16.40 + <!-- Data attributes reserved by JQuery Mobile: 16.41 + data-theme, data-ajax, data-filter, data-icon, data-grid, 16.42 + data-rel, data-icon, data-url, data-role, and data-type --> 16.43 + <!-- Also data-dom-cache="true" --> 16.44 + <div data-role="page" class="type-interior oc-swipage" id="quickstart"> 16.45 + <div data-role="header" data-position="fixed" data-id="headquick"> 16.46 + <h1>OTPWCalc</h1> 16.47 + </div><!-- /header --> 16.48 + <div data-role="content"> 16.49 + <h3 style="margin-top: 0; margin-bottom: 0;"> 16.50 + To start using OTPWCalc now… 16.51 + </h3> 16.52 + <ol style="margin-top: 0.5em; margin-bottom: 0;"> 16.53 + <li style="margin-bottom: 0.5em;">Install and configure a OTP authentication server on the <strong>host computer</strong>.</li> 16.54 + <li style="margin-bottom: 0.5em;">Add a username, seed ID, and password to the OTP <strong>authentication server</strong>.</li> 16.55 + <li style="margin-bottom: 0.5em;">Log in to the host computer providing the recently added username. The host computer will reply with a challange including the appropriate <strong>seed ID</strong> and a new <strong>counter number</strong>.</li> 16.56 + <li style="margin-bottom: 0.5em;">Type the seed ID and counter number along with the corresponding password into OTPWCalc. Click <strong>Submit</strong>.</li> 16.57 + <li style="margin-bottom: 0.5em;">Read the resulting OTP in <div style="display: inline-block; color: rgb(192,0,0); text-transform: none;">red uppercase characters</div>.</li> 16.58 + <li style="margin-bottom: 0.5em;">Type the OTP into the host computer console and…<br /><em>Enjoy <strong>secure</strong> access!</em></li> 16.59 + </ol> 16.60 + </div><!-- /content --> 16.61 + </div><!-- /page --> 16.62 +</body> 16.63 +</html>
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 17.2 +++ b/src/tizen/help/hsec.html Wed Jul 31 19:48:00 2013 +0200 17.3 @@ -0,0 +1,54 @@ 17.4 +<!DOCTYPE html> 17.5 +<!-- 17.6 +OTPWCalc - One time password challenge response calculator client 17.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 17.8 + 17.9 +OTPWCalc is free software: you can redistribute it and/or modify 17.10 +it under the terms of the European Union Public Licence, either 17.11 +version 1.1 of the license, or (at your option) any later version. 17.12 + 17.13 +OTPWCalc is distributed in the hope that it will be useful, 17.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 17.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 17.16 +the European Union Public License for more details. 17.17 + 17.18 +You should have received a copy of the European Union Public 17.19 +Licence along with OTPWCalc. If not, please refer to 17.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 17.21 + 17.22 +This file is part of project OTWPCalc, a one time password challenge 17.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 17.24 + 17.25 +hsec.html: W3C HTML implementation 17.26 +--> 17.27 + 17.28 +<html> 17.29 + <head> 17.30 + <meta charset="utf-8"> 17.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 17.32 + <title>OTPWCalc</title> 17.33 + <link rel="stylesheet" href="../css/jquery.mobile-1.3.2.min.css" /> 17.34 + <link rel="stylesheet" href="../main.css" /> 17.35 + <script src="../js/jquery-2.0.0.min.js"></script> 17.36 + <script src="help.js"></script> 17.37 + <script src="../js/jquery.mobile-1.3.2.min.js"></script> 17.38 + </head> 17.39 + <body> 17.40 + <!-- Data attributes reserved by JQuery Mobile: 17.41 + data-theme, data-ajax, data-filter, data-icon, data-grid, 17.42 + data-rel, data-icon, data-url, data-role, and data-type --> 17.43 + <!-- Also data-dom-cache="true" --> 17.44 + <div data-role="page" class="type-interior oc-swipage" id="security"> 17.45 + <div data-role="header" data-position="fixed" data-id="headsecurity"> 17.46 + <h1>OTPWCalc</h1> 17.47 + </div><!-- /header --> 17.48 + <div data-role="content"> 17.49 + <div data-role="collapsible" data-allow-collapse="false" data-collapsed="false" data-expanded-icon="otpwcalc-security" data-theme="c" data-content-theme="d"> 17.50 + <h1>Security</h1> 17.51 + <p style="margin-top: 0; margin-bottom: 0; font-size: 1.1em; line-height: 125%;">General <strong>security concerns</strong> should be directed to the <a target="_blank" href="http://list.europalab.com/mailman/listinfo/otpwcalc/">mailing list</a>, while those of a private nature should be sent directly to the <a href="mailto:michael@schloh.com">author</a>. X.509 certificates (for exchanging S/MIME encrypted email) and GnuPG keys (to verify released software signatures) reside on the <a target="_blank" href="http://michael.schloh.com/">author's website</a>.</p> 17.52 + <p style="margin-top: 0.5em; margin-bottom: 0; font-size: 1.1em; line-height: 125%;">Please monitor the mailing list and keep your installation of OTPWCalc <strong>up to date</strong>!</p> 17.53 + </div><!-- /collapsible --> 17.54 + </div><!-- /content --> 17.55 + </div><!-- /page --> 17.56 +</body> 17.57 +</html>
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 18.2 +++ b/src/tizen/help/hsta.html Wed Jul 31 19:48:00 2013 +0200 18.3 @@ -0,0 +1,58 @@ 18.4 +<!DOCTYPE html> 18.5 +<!-- 18.6 +OTPWCalc - One time password challenge response calculator client 18.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 18.8 + 18.9 +OTPWCalc is free software: you can redistribute it and/or modify 18.10 +it under the terms of the European Union Public Licence, either 18.11 +version 1.1 of the license, or (at your option) any later version. 18.12 + 18.13 +OTPWCalc is distributed in the hope that it will be useful, 18.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 18.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 18.16 +the European Union Public License for more details. 18.17 + 18.18 +You should have received a copy of the European Union Public 18.19 +Licence along with OTPWCalc. If not, please refer to 18.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 18.21 + 18.22 +This file is part of project OTWPCalc, a one time password challenge 18.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 18.24 + 18.25 +hsta.html: W3C HTML implementation 18.26 +--> 18.27 + 18.28 +<html> 18.29 + <head> 18.30 + <meta charset="utf-8"> 18.31 + <meta name="viewport" content="width=device-width, initial-scale=1"> 18.32 + <title>OTPWCalc</title> 18.33 + <link rel="stylesheet" href="../css/jquery.mobile-1.3.2.min.css" /> 18.34 + <link rel="stylesheet" href="../main.css" /> 18.35 + <script src="../js/jquery-2.0.0.min.js"></script> 18.36 + <script src="help.js"></script> 18.37 + <script src="../js/jquery.mobile-1.3.2.min.js"></script> 18.38 + </head> 18.39 +<body> 18.40 + <!-- Data attributes reserved by JQuery Mobile: 18.41 + data-theme, data-ajax, data-filter, data-icon, data-grid, 18.42 + data-rel, data-icon, data-url, data-role, and data-type --> 18.43 + <!-- Also data-dom-cache="true" --> 18.44 + <div data-role="page" class="type-interior oc-swipage" id="standrfc"> 18.45 + <div data-role="header" data-position="fixed" data-id="headrfc"> 18.46 + <h1>OTPWCalc</h1> 18.47 + </div><!-- /header --> 18.48 + <div data-role="content"> 18.49 + <div data-role="collapsible" data-allow-collapse="false" data-collapsed="false" data-expanded-icon="otpwcalc-document" data-theme="c" data-content-theme="d"> 18.50 + <h1>Standards</h1> 18.51 + <p style="font-size: 1.1em; line-height: 125%;">This application implements<br />the following <strong>standards</strong>:</p> 18.52 + <ul> 18.53 + <li> 18.54 + <a target="_blank" href="http://tools.ietf.org/html/rfc2289/">RFC 2289, A One-Time Password System</a> 18.55 + </li> 18.56 + </ul> 18.57 + </div><!-- /collapsible --> 18.58 + </div><!-- /content --> 18.59 + </div><!-- /page --> 18.60 +</body> 18.61 +</html>
19.1 Binary file src/tizen/img/compute-hd.png has changed
20.1 Binary file src/tizen/img/compute-sd.png has changed
21.1 Binary file src/tizen/img/datahost.png has changed
22.1 Binary file src/tizen/img/document-hd.png has changed
23.1 Binary file src/tizen/img/document-sd.png has changed
24.1 Binary file src/tizen/img/email-hd.png has changed
25.1 Binary file src/tizen/img/email-sd.png has changed
26.1 Binary file src/tizen/img/manpage-hd.png has changed
27.1 Binary file src/tizen/img/manpage-sd.png has changed
28.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 28.2 +++ b/src/tizen/img/manpage.svg Wed Jul 31 19:48:00 2013 +0200 28.3 @@ -0,0 +1,125 @@ 28.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?> 28.5 +<svg 28.6 + xmlns:dc="http://purl.org/dc/elements/1.1/" 28.7 + xmlns:cc="http://creativecommons.org/ns#" 28.8 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 28.9 + xmlns:svg="http://www.w3.org/2000/svg" 28.10 + xmlns="http://www.w3.org/2000/svg" 28.11 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 28.12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 28.13 + version="1.1" 28.14 + x="0px" 28.15 + y="0px" 28.16 + width="32" 28.17 + height="32" 28.18 + viewBox="0 0 32 32" 28.19 + enable-background="new 0 0 32 32" 28.20 + xml:space="preserve" 28.21 + id="svg2" 28.22 + inkscape:version="0.48.3.1 r9886" 28.23 + sodipodi:docname="manpage.svg"><defs 28.24 + id="defs3011" /><sodipodi:namedview 28.25 + pagecolor="#ffffff" 28.26 + bordercolor="#666666" 28.27 + borderopacity="1" 28.28 + objecttolerance="10" 28.29 + gridtolerance="10" 28.30 + guidetolerance="10" 28.31 + inkscape:pageopacity="0" 28.32 + inkscape:pageshadow="2" 28.33 + inkscape:window-width="640" 28.34 + inkscape:window-height="480" 28.35 + id="namedview3009" 28.36 + showgrid="false" 28.37 + fit-margin-top="0" 28.38 + fit-margin-left="0" 28.39 + fit-margin-right="0" 28.40 + fit-margin-bottom="0" 28.41 + inkscape:zoom="7.375" 28.42 + inkscape:cx="12" 28.43 + inkscape:cy="16" 28.44 + inkscape:window-x="217" 28.45 + inkscape:window-y="174" 28.46 + inkscape:window-maximized="0" 28.47 + inkscape:current-layer="svg2" /> 28.48 + 28.49 +<metadata 28.50 + id="metadata2993"><rdf:RDF> 28.51 + 28.52 + <cc:Work 28.53 + rdf:about=""> 28.54 + <dc:format>image/svg+xml</dc:format> 28.55 + <dc:type 28.56 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 28.57 + <dc:title>PICOL Icon</dc:title> 28.58 + <dc:date>2009-03-15</dc:date> 28.59 + <dc:creator><cc:Agent><dc:title>Melih Bilgil</dc:title></cc:Agent></dc:creator> 28.60 + <dc:rights><cc:Agent><dc:title>Creative Commons BY-SA</dc:title></cc:Agent></dc:rights> 28.61 + <dc:publisher><cc:Agent><dc:title>PICOL - Pictorial Communication Language</dc:title></cc:Agent></dc:publisher> 28.62 + <dc:identifier>http://blog.picol.org</dc:identifier> 28.63 + <dc:source>http://blog.picol.org</dc:source> 28.64 + <dc:language>en</dc:language> 28.65 + <dc:subject> 28.66 + <rdf:Bag> 28.67 + <rdf:li>PICOL</rdf:li> 28.68 + <rdf:li>icon</rdf:li> 28.69 + <rdf:li>icons</rdf:li> 28.70 + <rdf:li>sign</rdf:li> 28.71 + <rdf:li>GUI</rdf:li> 28.72 + <rdf:li>vector</rdf:li> 28.73 + <rdf:li>interface</rdf:li> 28.74 + </rdf:Bag> 28.75 + </dc:subject> 28.76 + <dc:description>This is one icon out of all PICOL icons</dc:description> 28.77 + <dc:contributor> 28.78 + <cc:Agent><dc:title>Melih Bilgil (www.lonja.de), Christopher Adjei (www.boffer.net)</dc:title></cc:Agent></dc:contributor> 28.79 + <cc:license 28.80 + rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /></cc:Work> 28.81 + <cc:License 28.82 + rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> 28.83 + <cc:permits 28.84 + rdf:resource="http://creativecommons.org/ns#Reproduction" /> 28.85 + <cc:permits 28.86 + rdf:resource="http://creativecommons.org/ns#Distribution" /> 28.87 + <cc:requires 28.88 + rdf:resource="http://creativecommons.org/ns#Notice" /> 28.89 + <cc:requires 28.90 + rdf:resource="http://creativecommons.org/ns#Attribution" /> 28.91 + <cc:permits 28.92 + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> 28.93 + <cc:requires 28.94 + rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License> 28.95 + 28.96 + </rdf:RDF> 28.97 +</metadata> 28.98 + 28.99 + 28.100 +<g 28.101 + id="user_x5F_profile" 28.102 + transform="translate(4,0)"> 28.103 + <g 28.104 + id="g2999"> 28.105 + <path 28.106 + d="m 4,28 h 16 v -6 c 0,0 0,-2 -2,-2 -1,0 -12,0 -12,0 0,0 -2,0 -2,2 0,1 0,6 0,6 z" 28.107 + id="path3001" 28.108 + inkscape:connector-curvature="0" /> 28.109 + </g> 28.110 + <g 28.111 + id="g3003"> 28.112 + <circle 28.113 + cx="12" 28.114 + cy="14" 28.115 + r="4" 28.116 + id="circle3005" 28.117 + sodipodi:cx="12" 28.118 + sodipodi:cy="14" 28.119 + sodipodi:rx="4" 28.120 + sodipodi:ry="4" 28.121 + d="m 16,14 c 0,2.209139 -1.790861,4 -4,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 2.209139,0 4,1.790861 4,4 z" /> 28.122 + </g> 28.123 + <path 28.124 + d="M 18.414,0 H 0 V 32 H 24 V 5.584 L 18.414,0 z M 17.998,2.413 21.586,6 H 17.998 V 2.413 z M 2,30 V 1.998 h 14 v 6.001 h 6 V 30 H 2 z" 28.125 + id="path3007" 28.126 + inkscape:connector-curvature="0" /> 28.127 +</g> 28.128 +</svg> 28.129 \ No newline at end of file
29.1 Binary file src/tizen/img/otpwcalc-117px.png has changed
30.1 Binary file src/tizen/img/otpwcalc-512px.png has changed
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 31.2 +++ b/src/tizen/img/otpwcalc-ico.svg Wed Jul 31 19:48:00 2013 +0200 31.3 @@ -0,0 +1,204 @@ 31.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?> 31.5 +<!-- Created with Inkscape (http://www.inkscape.org/) --> 31.6 + 31.7 +<svg 31.8 + xmlns:dc="http://purl.org/dc/elements/1.1/" 31.9 + xmlns:cc="http://creativecommons.org/ns#" 31.10 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 31.11 + xmlns:svg="http://www.w3.org/2000/svg" 31.12 + xmlns="http://www.w3.org/2000/svg" 31.13 + xmlns:xlink="http://www.w3.org/1999/xlink" 31.14 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 31.15 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 31.16 + version="1.1" 31.17 + width="264.23944" 31.18 + height="150" 31.19 + id="svg5004" 31.20 + inkscape:version="0.48.3.1 r9886" 31.21 + sodipodi:docname="otpwcalc-ico.svg"> 31.22 + <sodipodi:namedview 31.23 + pagecolor="#ffffff" 31.24 + bordercolor="#666666" 31.25 + borderopacity="1" 31.26 + objecttolerance="10" 31.27 + gridtolerance="10" 31.28 + guidetolerance="10" 31.29 + inkscape:pageopacity="0" 31.30 + inkscape:pageshadow="2" 31.31 + inkscape:window-width="1127" 31.32 + inkscape:window-height="955" 31.33 + id="namedview12" 31.34 + showgrid="false" 31.35 + fit-margin-top="0" 31.36 + fit-margin-left="0" 31.37 + fit-margin-right="0" 31.38 + fit-margin-bottom="0" 31.39 + inkscape:zoom="2.624298" 31.40 + inkscape:cx="115.33854" 31.41 + inkscape:cy="58.844916" 31.42 + inkscape:window-x="0" 31.43 + inkscape:window-y="27" 31.44 + inkscape:window-maximized="0" 31.45 + inkscape:current-layer="svg5004" /> 31.46 + <metadata 31.47 + id="metadata11"> 31.48 + <rdf:RDF> 31.49 + <cc:Work 31.50 + rdf:about=""> 31.51 + <dc:format>image/svg+xml</dc:format> 31.52 + <dc:type 31.53 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 31.54 + <dc:title></dc:title> 31.55 + </cc:Work> 31.56 + </rdf:RDF> 31.57 + </metadata> 31.58 + <defs 31.59 + id="defs5006"> 31.60 + <linearGradient 31.61 + id="linearGradient3768"> 31.62 + <stop 31.63 + style="stop-color:#969696;stop-opacity:1;" 31.64 + offset="0" 31.65 + id="stop3770" /> 31.66 + <stop 31.67 + id="stop3776" 31.68 + offset="0.72289157" 31.69 + style="stop-color:#cdcdcd;stop-opacity:1;" /> 31.70 + <stop 31.71 + style="stop-color:#e6e6e6;stop-opacity:1;" 31.72 + offset="1" 31.73 + id="stop3772" /> 31.74 + </linearGradient> 31.75 + <filter 31.76 + inkscape:collect="always" 31.77 + id="filter3848" 31.78 + color-interpolation-filters="sRGB"> 31.79 + <feGaussianBlur 31.80 + inkscape:collect="always" 31.81 + stdDeviation="3.4271843" 31.82 + id="feGaussianBlur3850" /> 31.83 + </filter> 31.84 + <linearGradient 31.85 + y2="37.914902" 31.86 + x2="142.13324" 31.87 + y1="37.914902" 31.88 + x1="-15.623226" 31.89 + gradientUnits="userSpaceOnUse" 31.90 + id="linearGradient3964" 31.91 + xlink:href="#linearGradient3768" 31.92 + inkscape:collect="always" /> 31.93 + <linearGradient 31.94 + inkscape:collect="always" 31.95 + xlink:href="#linearGradient3768" 31.96 + id="linearGradient4028" 31.97 + gradientUnits="userSpaceOnUse" 31.98 + x1="-15.623226" 31.99 + y1="37.914902" 31.100 + x2="142.13324" 31.101 + y2="37.914902" /> 31.102 + </defs> 31.103 + <g 31.104 + id="g4007" 31.105 + transform="translate(3.6811383e-6,60.071191)"> 31.106 + <path 31.107 + style="fill:#54b87d;fill-opacity:1;fill-rule:nonzero;stroke:none" 31.108 + id="path8310" 31.109 + d="m 92.903322,52.648305 c -2.480475,-1.542963 -4.750975,-5.18555 -5.04395,-8.0957 L 83.894535,4.8895175 C 83.60156,1.9842425 80.979497,-0.21302 78.06446,0.0164675 L 4.0312475,5.7635425 C 1.11621,5.99303 -0.607415,8.473505 0.1982475,11.286005 l 15.5273375,54.21875 c 0.805662,2.8125 3.657225,6.069337 6.337887,7.231437 L 59.55371,89.069205 c 2.68555,1.166987 7.06055,1.142575 9.726562,-0.05375 L 112.13672,69.79183 c 2.66601,-1.1963 2.81738,-3.4375 0.33691,-4.980475 L 92.903322,52.648268 z m 0,0" 31.110 + inkscape:connector-curvature="0" /> 31.111 + <path 31.112 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 31.113 + id="path8312" 31.114 + d="M 83.069335,46.969593 79.202147,5.2361925 6.848635,12.360218 22.639647,64.074092 83.069335,46.969592 z m 0,0" 31.115 + inkscape:connector-curvature="0" /> 31.116 + <path 31.117 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 31.118 + id="path8314" 31.119 + d="m 36.096685,68.126818 49.8584,-13.911125 4.306637,1.967775 -49.321287,14.370112 -4.84375,-2.426762 z m 0,0" 31.120 + inkscape:connector-curvature="0" /> 31.121 + <path 31.122 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 31.123 + id="path8316" 31.124 + d="m 47.42481,75.265493 46.914062,-16.376951 4.5459,2.353513 -45.297862,16.440437 -6.1621,-2.416999 z m 0,0" 31.125 + inkscape:connector-curvature="0" /> 31.126 + <path 31.127 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" 31.128 + id="path8318" 31.129 + d="m 69.563472,76.300655 23.569338,-8.8916 5.175787,2.109375 -23.56445,8.73535 -5.180675,-1.953125 z m 0,0" 31.130 + inkscape:connector-curvature="0" /> 31.131 + <text 31.132 + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" 31.133 + xml:space="preserve" 31.134 + id="text2988" 31.135 + transform="matrix(0.97683017,-0.21401593,0.21401593,0.97683017,0,0)" 31.136 + y="48.059319" 31.137 + x="11.861032" 31.138 + sodipodi:linespacing="125%"><tspan 31.139 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold" 31.140 + id="tspan2990" 31.141 + y="48.059319" 31.142 + x="11.861032">OTP</tspan></text> 31.143 + </g> 31.144 + <g 31.145 + id="g4016" 31.146 + transform="translate(-10.814052,58.614666)" 31.147 + inkscape:export-filename="/tmp/otpwcalc-512px.png" 31.148 + inkscape:export-xdpi="307.20001" 31.149 + inkscape:export-ydpi="307.20001"> 31.150 + <path 31.151 + transform="matrix(0,-0.95083264,0.98165763,0,162.83405,76.530261)" 31.152 + d="m 142.13324,37.914902 c 0,42.195318 -35.31499,76.401378 -78.878231,76.401378 -43.563247,0 -78.878235,-34.20606 -78.878235,-76.401378 0,-42.1953187 35.314988,-76.401383 78.878235,-76.401383 43.563241,0 78.878231,34.2060643 78.878231,76.401383 z" 31.153 + sodipodi:ry="76.401382" 31.154 + sodipodi:rx="78.878235" 31.155 + sodipodi:cy="37.914902" 31.156 + sodipodi:cx="63.255009" 31.157 + id="path2998" 31.158 + style="fill:url(#linearGradient4028);fill-opacity:1;fill-rule:nonzero;stroke:none" 31.159 + sodipodi:type="arc" /> 31.160 + <path 31.161 + inkscape:connector-curvature="0" 31.162 + id="path8310-7" 31.163 + d="m 225.54605,-36.739747 c -0.1794,-0.005 -0.38031,0.013 -0.5625,0.0312 l -74.03125,7.281255 c -2.91502,0.29152 -4.61816,3.45845 -3.8125,7.03125 l 15.5,68.874993 c 0.80566,3.5728 3.66309,7.71126 6.34375,9.1875 l 37.5,20.75 c 2.68553,1.48246 7.05275,1.45723 9.71875,-0.0625 l 42.875,-24.4375 c 2.666,-1.51969 2.79296,-4.35241 0.3125,-6.3125 L 239.8273,30.135208 c -2.48047,-1.96007 -4.73828,-6.58441 -5.03125,-10.28125 l -3.96875,-50.375 c -0.27466,-3.459995 -2.5902,-6.138795 -5.28125,-6.218755 z" 31.164 + style="opacity:0.8;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3848)" /> 31.165 + <g 31.166 + transform="matrix(0.99999606,0,0,1.2703271,146.93401,-36.734187)" 31.167 + id="g2989"> 31.168 + <path 31.169 + inkscape:connector-curvature="0" 31.170 + d="m 92.903322,52.648305 c -2.480475,-1.542963 -4.750975,-5.18555 -5.04395,-8.0957 L 83.894535,4.8895175 C 83.60156,1.9842425 80.979497,-0.21302 78.06446,0.0164675 L 4.0312475,5.7635425 C 1.11621,5.99303 -0.607415,8.473505 0.1982475,11.286005 l 15.5273375,54.21875 c 0.805662,2.8125 3.657225,6.069337 6.337887,7.231437 L 59.55371,89.069205 c 2.68555,1.166987 7.06055,1.142575 9.726562,-0.05375 L 112.13672,69.79183 c 2.66601,-1.1963 2.81738,-3.4375 0.33691,-4.980475 L 92.903322,52.648268 z m 0,0" 31.171 + id="path8310-5" 31.172 + style="fill:#54b87d;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 31.173 + <path 31.174 + inkscape:connector-curvature="0" 31.175 + d="M 83.069335,46.969593 79.202147,5.2361925 6.848635,12.360218 22.639647,64.074092 83.069335,46.969592 z m 0,0" 31.176 + id="path8312-6" 31.177 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 31.178 + <path 31.179 + inkscape:connector-curvature="0" 31.180 + d="m 36.096685,68.126818 49.8584,-13.911125 4.306637,1.967775 -49.321287,14.370112 -4.84375,-2.426762 z m 0,0" 31.181 + id="path8314-4" 31.182 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 31.183 + <path 31.184 + inkscape:connector-curvature="0" 31.185 + d="m 47.42481,75.265493 46.914062,-16.376951 4.5459,2.353513 -45.297862,16.440437 -6.1621,-2.416999 z m 0,0" 31.186 + id="path8316-5" 31.187 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 31.188 + <path 31.189 + inkscape:connector-curvature="0" 31.190 + d="m 69.563472,76.300655 23.569338,-8.8916 5.175787,2.109375 -23.56445,8.73535 -5.180675,-1.953125 z m 0,0" 31.191 + id="path8318-3" 31.192 + style="fill:#232323;fill-opacity:1;fill-rule:nonzero;stroke:none" /> 31.193 + <text 31.194 + sodipodi:linespacing="125%" 31.195 + x="11.861032" 31.196 + y="48.059319" 31.197 + transform="matrix(0.97683017,-0.21401593,0.21401593,0.97683017,0,0)" 31.198 + id="text2988-2" 31.199 + xml:space="preserve" 31.200 + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan 31.201 + x="11.861032" 31.202 + y="48.059319" 31.203 + id="tspan2990-7" 31.204 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold">OTP</tspan></text> 31.205 + </g> 31.206 + </g> 31.207 +</svg>
32.1 Binary file src/tizen/img/question-hd.png has changed
33.1 Binary file src/tizen/img/question-sd.png has changed
34.1 Binary file src/tizen/img/quickstart-hd.png has changed
35.1 Binary file src/tizen/img/quickstart-sd.png has changed
36.1 Binary file src/tizen/img/security-hd.png has changed
37.1 Binary file src/tizen/img/security-sd.png has changed
38.1 Binary file src/tizen/img/seeye-hd.png has changed
39.1 Binary file src/tizen/img/seeye-sd.png has changed
40.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 40.2 +++ b/src/tizen/img/seeye.svg Wed Jul 31 19:48:00 2013 +0200 40.3 @@ -0,0 +1,111 @@ 40.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?> 40.5 +<svg 40.6 + xmlns:dc="http://purl.org/dc/elements/1.1/" 40.7 + xmlns:cc="http://creativecommons.org/ns#" 40.8 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 40.9 + xmlns:svg="http://www.w3.org/2000/svg" 40.10 + xmlns="http://www.w3.org/2000/svg" 40.11 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 40.12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 40.13 + version="1.1" 40.14 + x="0px" 40.15 + y="0px" 40.16 + width="32" 40.17 + height="32" 40.18 + viewBox="0 0 32 32" 40.19 + enable-background="new 0 0 32 32" 40.20 + xml:space="preserve" 40.21 + id="svg2" 40.22 + inkscape:version="0.48.3.1 r9886" 40.23 + sodipodi:docname="seeye.svg"><defs 40.24 + id="defs15" /><sodipodi:namedview 40.25 + pagecolor="#ffffff" 40.26 + bordercolor="#666666" 40.27 + borderopacity="1" 40.28 + objecttolerance="10" 40.29 + gridtolerance="10" 40.30 + guidetolerance="10" 40.31 + inkscape:pageopacity="0" 40.32 + inkscape:pageshadow="2" 40.33 + inkscape:window-width="608" 40.34 + inkscape:window-height="561" 40.35 + id="namedview13" 40.36 + showgrid="false" 40.37 + fit-margin-top="0" 40.38 + fit-margin-left="0" 40.39 + fit-margin-right="0" 40.40 + fit-margin-bottom="0" 40.41 + inkscape:zoom="10.15625" 40.42 + inkscape:cx="16" 40.43 + inkscape:cy="16" 40.44 + inkscape:window-x="134" 40.45 + inkscape:window-y="44" 40.46 + inkscape:window-maximized="0" 40.47 + inkscape:current-layer="svg2" /> 40.48 + 40.49 +<metadata 40.50 + id="metadata3"><rdf:RDF> 40.51 + 40.52 + <cc:Work 40.53 + rdf:about=""> 40.54 + <dc:format>image/svg+xml</dc:format> 40.55 + <dc:type 40.56 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 40.57 + <dc:title>PICOL Icon</dc:title> 40.58 + <dc:date>2009-03-15</dc:date> 40.59 + <dc:creator><cc:Agent><dc:title>Melih Bilgil</dc:title></cc:Agent></dc:creator> 40.60 + <dc:rights><cc:Agent><dc:title>Creative Commons BY-SA</dc:title></cc:Agent></dc:rights> 40.61 + <dc:publisher><cc:Agent><dc:title>PICOL - Pictorial Communication Language</dc:title></cc:Agent></dc:publisher> 40.62 + <dc:identifier>http://blog.picol.org</dc:identifier> 40.63 + <dc:source>http://blog.picol.org</dc:source> 40.64 + <dc:language>en</dc:language> 40.65 + <dc:subject> 40.66 + <rdf:Bag> 40.67 + <rdf:li>PICOL</rdf:li> 40.68 + <rdf:li>icon</rdf:li> 40.69 + <rdf:li>icons</rdf:li> 40.70 + <rdf:li>sign</rdf:li> 40.71 + <rdf:li>GUI</rdf:li> 40.72 + <rdf:li>vector</rdf:li> 40.73 + <rdf:li>interface</rdf:li> 40.74 + </rdf:Bag> 40.75 + </dc:subject> 40.76 + <dc:description>This is one icon out of all PICOL icons</dc:description> 40.77 + <dc:contributor> 40.78 + <cc:Agent><dc:title>Melih Bilgil (www.lonja.de), Christopher Adjei (www.boffer.net)</dc:title></cc:Agent></dc:contributor> 40.79 + <cc:license 40.80 + rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /></cc:Work> 40.81 + <cc:License 40.82 + rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> 40.83 + <cc:permits 40.84 + rdf:resource="http://creativecommons.org/ns#Reproduction" /> 40.85 + <cc:permits 40.86 + rdf:resource="http://creativecommons.org/ns#Distribution" /> 40.87 + <cc:requires 40.88 + rdf:resource="http://creativecommons.org/ns#Notice" /> 40.89 + <cc:requires 40.90 + rdf:resource="http://creativecommons.org/ns#Attribution" /> 40.91 + <cc:permits 40.92 + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> 40.93 + <cc:requires 40.94 + rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License> 40.95 + 40.96 + </rdf:RDF> 40.97 +</metadata> 40.98 + 40.99 + 40.100 +<g 40.101 + id="g3016"><circle 40.102 + cx="16" 40.103 + cy="16" 40.104 + r="6" 40.105 + id="circle9" 40.106 + sodipodi:cx="16" 40.107 + sodipodi:cy="16" 40.108 + sodipodi:rx="6" 40.109 + sodipodi:ry="6" 40.110 + d="m 22,16 c 0,3.313708 -2.686292,6 -6,6 -3.313708,0 -6,-2.686292 -6,-6 0,-3.313708 2.686292,-6 6,-6 3.313708,0 6,2.686292 6,6 z" /><path 40.111 + d="M 16,6 C 6,6 0,15.938 0,15.938 0,15.938 6,26 16,26 26,26 32,16 32,16 32,16 26,6 16,6 z m 0,18 C 7.25,24 2.5,16 2.5,16 2.5,16 7.25,8 16,8 c 8.75,0 13.5,8 13.5,8 0,0 -4.75,8 -13.5,8 z" 40.112 + id="path11" 40.113 + inkscape:connector-curvature="0" /></g> 40.114 +</svg> 40.115 \ No newline at end of file
41.1 Binary file src/tizen/img/tastatur.png has changed
42.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 42.2 +++ b/src/tizen/main.css Wed Jul 31 19:48:00 2013 +0200 42.3 @@ -0,0 +1,116 @@ 42.4 +/* 42.5 + * OTPWCalc - One time password challenge response calculator client 42.6 + * Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 42.7 + * 42.8 + * OTPWCalc is free software: you can redistribute it and/or modify 42.9 + * it under the terms of the European Union Public Licence, either 42.10 + * version 1.1 of the license, or (at your option) any later version. 42.11 + * 42.12 + * OTPWCalc is distributed in the hope that it will be useful, 42.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty 42.14 + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 42.15 + * the European Union Public License for more details. 42.16 + * 42.17 + * You should have received a copy of the European Union Public 42.18 + * Licence along with OTPWCalc. If not, please refer to 42.19 + * <http://joinup.ec.europa.eu/software/page/eupl/>. 42.20 + * 42.21 + * This file is part of project OTWPCalc, a one time password challenge 42.22 + * response calculator client and is found at http://otpwcalc.europalab.com/ 42.23 + * 42.24 + * main.css: W3C CSS design 42.25 + */ 42.26 + 42.27 +/* CSS media queries */ 42.28 + 42.29 +/* Basic desktop/screen width */ 42.30 +@media only screen and (min-width : 1224px) { 42.31 + /* placeholder */ 42.32 +} 42.33 +/* Traditional iPhone width */ 42.34 +@media 42.35 + only screen and (-webkit-min-device-pixel-ratio : 1.5), 42.36 + only screen and (min-device-pixel-ratio : 1.5) { 42.37 + /* placeholder */ 42.38 + } 42.39 +/* Diverse orientations */ 42.40 +@media screen and (orientation:portrait) { 42.41 + /* placeholder */ 42.42 +} 42.43 +@media screen and (orientation:landscape) { 42.44 + /* placeholder */ 42.45 +} 42.46 + 42.47 +/* Custom icons */ 42.48 + 42.49 +.ui-icon-otpwcalc-seepass { 42.50 + background-image: url("img/seeye-sd.png"); 42.51 +} 42.52 +.ui-icon-otpwcalc-email { 42.53 + background-image: url("img/email-sd.png"); 42.54 +} 42.55 +.ui-icon-otpwcalc-question { 42.56 + background-image: url("img/question-sd.png"); 42.57 +} 42.58 +.ui-icon-otpwcalc-document { 42.59 + background-image: url("img/document-sd.png"); 42.60 +} 42.61 +.ui-icon-otpwcalc-security { 42.62 + background-image: url("img/security-sd.png"); 42.63 +} 42.64 +.ui-icon-otpwcalc-manpage { 42.65 + background-image: url("img/manpage-sd.png"); 42.66 +} 42.67 +.ui-icon-otpwcalc-qstart { 42.68 + background-image: url("img/quickstart-sd.png"); 42.69 +} 42.70 +@media only screen and (-webkit-min-device-pixel-ratio: 2) { 42.71 + .ui-icon-otpwcalc-seepass { 42.72 + background-image: url("img/seeye-hd.png"); 42.73 + background-size: 18px 18px; 42.74 + } 42.75 + .ui-icon-otpwcalc-email { 42.76 + background-image: url("img/email-hd.png"); 42.77 + background-size: 18px 18px; 42.78 + } 42.79 + .ui-icon-otpwcalc-question { 42.80 + background-image: url("img/question-hd.png"); 42.81 + background-size: 18px 18px; 42.82 + } 42.83 + .ui-icon-otpwcalc-document { 42.84 + background-image: url("img/document-hd.png"); 42.85 + background-size: 18px 18px; 42.86 + } 42.87 + .ui-icon-otpwcalc-security { 42.88 + background-image: url("img/security-hd.png"); 42.89 + background-size: 18px 18px; 42.90 + } 42.91 + .ui-icon-otpwcalc-manpage { 42.92 + background-image: url("img/manpage-hd.png"); 42.93 + background-size: 18px 18px; 42.94 + } 42.95 + .ui-icon-otpwcalc-qstart { 42.96 + background-image: url("img/quickstart-hd.png"); 42.97 + background-size: 18px 18px; 42.98 + } 42.99 +} 42.100 +/* Trying to stretch buttons (not working) */ 42.101 +/*.ui-controlgroup-controls 42.102 +{ 42.103 + width:100%; 42.104 +} 42.105 +.ui-radio { 42.106 + width:33%; 42.107 +}*/ 42.108 +/* HTML5 validation */ 42.109 +/*input:required:invalid, input:focus:invalid { 42.110 + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeVJREFUeNqkU01oE1EQ/mazSTdRmqSxLVSJVKU9RYoHD8WfHr16kh5EFA8eSy6hXrwUPBSKZ6E9V1CU4tGf0DZWDEQrGkhprRDbCvlpavan3ezu+LLSUnADLZnHwHvzmJlvvpkhZkY7IqFNaTuAfPhhP/8Uo87SGSaDsP27hgYM/lUpy6lHdqsAtM+BPfvqKp3ufYKwcgmWCug6oKmrrG3PoaqngWjdd/922hOBs5C/jJA6x7AiUt8VYVUAVQXXShfIqCYRMZO8/N1N+B8H1sOUwivpSUSVCJ2MAjtVwBAIdv+AQkHQqbOgc+fBvorjyQENDcch16/BtkQdAlC4E6jrYHGgGU18Io3gmhzJuwub6/fQJYNi/YBpCifhbDaAPXFvCBVxXbvfbNGFeN8DkjogWAd8DljV3KRutcEAeHMN/HXZ4p9bhncJHCyhNx52R0Kv/XNuQvYBnM+CP7xddXL5KaJw0TMAF8qjnMvegeK/SLHubhpKDKIrJDlvXoMX3y9xcSMZyBQ+tpyk5hzsa2Ns7LGdfWdbL6fZvHn92d7dgROH/730YBLtiZmEdGPkFnhX4kxmjVe2xgPfCtrRd6GHRtEh9zsL8xVe+pwSzj+OtwvletZZ/wLeKD71L+ZeHHWZ/gowABkp7AwwnEjFAAAAAElFTkSuQmCC'); 42.111 + background-position: right top; 42.112 + background-repeat: no-repeat; 42.113 + -moz-box-shadow: none; 42.114 +}*/ 42.115 +/*input:required:valid { 42.116 + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAepJREFUeNrEk79PFEEUx9/uDDd7v/AAQQnEQokmJCRGwc7/QeM/YGVxsZJQYI/EhCChICYmUJigNBSGzobQaI5SaYRw6imne0d2D/bYmZ3dGd+YQKEHYiyc5GUyb3Y+77vfeWNpreFfhvXfAWAAJtbKi7dff1rWK9vPHx3mThP2Iaipk5EzTg8Qmru38H7izmkFHAF4WH1R52654PR0Oamzj2dKxYt/Bbg1OPZuY3d9aU82VGem/5LtnJscLxWzfzRxaWNqWJP0XUadIbSzu5DuvUJpzq7sfYBKsP1GJeLB+PWpt8cCXm4+2+zLXx4guKiLXWA2Nc5ChOuacMEPv20FkT+dIawyenVi5VcAbcigWzXLeNiDRCdwId0LFm5IUMBIBgrp8wOEsFlfeCGm23/zoBZWn9a4C314A1nCoM1OAVccuGyCkPs/P+pIdVIOkG9pIh6YlyqCrwhRKD3GygK9PUBImIQQxRi4b2O+JcCLg8+e8NZiLVEygwCrWpYF0jQJziYU/ho2TUuCPTn8hHcQNuZy1/94sAMOzQHDeqaij7Cd8Dt8CatGhX3iWxgtFW/m29pnUjR7TSQcRCIAVW1FSr6KAVYdi+5Pj8yunviYHq7f72po3Y9dbi7CxzDO1+duzCXH9cEPAQYAhJELY/AqBtwAAAAASUVORK5CYII='); 42.117 + background-position: right top; 42.118 + background-repeat: no-repeat; 42.119 +}*/
43.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 43.2 +++ b/src/tizen/main.html Wed Jul 31 19:48:00 2013 +0200 43.3 @@ -0,0 +1,147 @@ 43.4 +<!DOCTYPE html> 43.5 +<!-- 43.6 +OTPWCalc - One time password challenge response calculator client 43.7 +Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 43.8 + 43.9 +OTPWCalc is free software: you can redistribute it and/or modify 43.10 +it under the terms of the European Union Public Licence, either 43.11 +version 1.1 of the license, or (at your option) any later version. 43.12 + 43.13 +OTPWCalc is distributed in the hope that it will be useful, 43.14 +but WITHOUT ANY WARRANTY; without even the implied warranty 43.15 +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 43.16 +the European Union Public License for more details. 43.17 + 43.18 +You should have received a copy of the European Union Public 43.19 +Licence along with OTPWCalc. If not, please refer to 43.20 +<http://joinup.ec.europa.eu/software/page/eupl/>. 43.21 + 43.22 +This file is part of project OTWPCalc, a one time password challenge 43.23 +response calculator client and is found at http://otpwcalc.europalab.com/ 43.24 + 43.25 +main.html: W3C HTML implementation 43.26 +--> 43.27 + 43.28 +<html> 43.29 + <head> 43.30 + <meta charset="utf-8"> 43.31 + <!--<meta http-equiv="Content-Type" content="text/html;charset=utf-8">--> 43.32 + <meta name="viewport" content="width=device-width, initial-scale=1"> 43.33 + <title>OTPWCalc</title> 43.34 + <link rel="stylesheet" type="text/css" href="css/jquery.mobile-1.3.2.min.css" /> 43.35 + <link rel="stylesheet" type="text/css" href="main.css" /> 43.36 + <!--<script src="sjcl-0.0/sjcl.js"></script>--> 43.37 + <script src="hashes/md5.js"></script> 43.38 + <script src="hashes/sha1.js"></script> 43.39 + <script src="hashes/rmd160.js"></script> 43.40 + <script src="otpalg/dict.js"></script> 43.41 + <script src="otpalg/otpalg.js"></script> 43.42 + <script src="js/jquery-2.0.0.min.js"></script> 43.43 + <script src="main.js"></script> 43.44 + <script src="js/jquery.mobile-1.3.2.min.js"></script> 43.45 +</head> 43.46 +<body> 43.47 + <!-- Data attributes reserved by JQuery Mobile: 43.48 + data-theme, data-ajax, data-filter, data-icon, data-grid, 43.49 + data-rel, data-icon, data-url, data-role, and data-type --> 43.50 + <!-- http://api.jquerymobile.com/data-attribute/ --> 43.51 + <!--<div data-role="page" data-fullscreen="true" class="type-interior">--> 43.52 + <div data-role="page" class="type-interior oc-swipage" id="mainhaupt"> 43.53 + <!-- H1 header data-role good for Search Engine Optimization --> 43.54 + <!--<div data-role="header" data-position="inline">--> 43.55 + <div data-role="header" data-position="fixed" data-id="headmain"> 43.56 + <a href="about.html" data-prefetch="true" data-transition="turn" data-rel="dialog" style="margin-left: 8px; width: 5em">About</a> 43.57 + <h1>OTPWCalc</h1> 43.58 + <a href="help/help.html" data-prefetch="true" data-transition="slide" style="margin-right: 8px; width: 5em">Help</a> 43.59 + </div><!-- /header --> 43.60 + <div data-role="content"> 43.61 + <div class="content-primary"> 43.62 + 43.63 + <!-- This describes how to use AJAX without a server side script --> 43.64 + <!-- http://www.terminally-incoherent.com/blog/2011/12/05/making-ajax-driven-websites-without-server-side-scripting/ --> 43.65 + 43.66 + <form method="post" onsubmit="return dosubmit();" onreset="return doreset();" data-ajax="false"> 43.67 + <ul data-role="listview"> 43.68 + <!--<h2>OTPWCalc</h2>--> 43.69 + 43.70 + <!-- Implement embedded help system later 43.71 + <p>Type the given hash value and sequence number, your 43.72 + secret passphrase, and choose the encryption algorythm 43.73 + to receive a one time password (OTPW) for login.</p> 43.74 + --> 43.75 + 43.76 + <li> 43.77 + <div data-role="collapsible" data-collapsed="false" data-theme="e" data-content-theme="c"> 43.78 + <h3>Input Values</h3> 43.79 + <fieldset class="ui-grid-a"> 43.80 + <div class="ui-block-a" style="padding-right: 1em;"> 43.81 + <input type="text" name="seedid" id="seedid" value="" placeholder="Seed ID" pattern="[0-9A-Za-z]*" required /> 43.82 + </div> 43.83 + <div class="ui-block-b"> 43.84 + <input type="number" name="crement" id="crement" pattern="[0-9]*" value="" placeholder="Sequence #" min="1" required /> 43.85 + </div> 43.86 + </fieldset> 43.87 + 43.88 + <div data-role="fieldcontain" style="text-align: right; border: none;"> 43.89 + <label for="selectdecr" style="float: left; width: 40%;">Automatic<br />Decrement</label> 43.90 + <select name="selectdecr" id="selectdecr" data-iconpos="left" data-inline="true"> 43.91 + <option value="0">Disabled</option> 43.92 + <option value="1">Offset 1</option> 43.93 + <option value="2">Offset 2</option> 43.94 + <option value="3">Offset 3</option> 43.95 + <option value="4">Offset 4</option> 43.96 + </select> 43.97 + </div> 43.98 + 43.99 + <input type="password" data-clear-btn="true" name="paswrd" id="paswrd" value="" placeholder="Secret" /> 43.100 + 43.101 + <!-- JQM miscalculated spacing --> 43.102 + <div style="height: 0.25em;"></div> 43.103 + 43.104 + <a type=button name="viewpass" id="viewpass" data-theme="b" data-icon="otpwcalc-seepass" onmousedown="$('#paswrd').get(0).type='text'; return false;" ontouchstart="$('#paswrd').get(0).type='text'; return false;" onmouseup="$('#paswrd').get(0).type='password'; return false;" ontouchend="$('#paswrd').get(0).type='password'; return false;">Press to Reveal Secret</a> 43.105 + </div> 43.106 + </li> 43.107 + 43.108 + <li> 43.109 + <div data-role="collapsible" data-collapsed="true" data-theme="e" data-content-theme="c"> 43.110 + <h3>Output Format</h3> 43.111 + <fieldset data-role="controlgroup" data-type="horizontal" style="width: 100%;"> 43.112 + <!--<input type="radio" name="radio-choice-b" id="radio-choice-a" value="off" /> 43.113 + <label for="radio-choice-a">MD4</label>--> 43.114 + <input type="radio" name="radiohash" id="hashmd5" value="on" checked="checked" style="width: 33%;" /> 43.115 + <label for="hashmd5">MD5</label> 43.116 + <input type="radio" name="radiohash" id="hashsha1" value="off" style="width: 33%;" /> 43.117 + <label for="hashsha1">SHA1</label> 43.118 + <input type="radio" name="radiohash" id="hashr160" value="off" style="width: 33%;" /> 43.119 + <label for="hashr160">R160</label> 43.120 + </fieldset> 43.121 + 43.122 + <!-- JQM miscalculated spacing --> 43.123 + <div style="height: 0.25em;"></div> 43.124 + 43.125 + <fieldset data-role="controlgroup"> 43.126 + <input type="radio" name="radiodisplay" id="displaysix" class="custom" value="on" checked="checked" /> 43.127 + <label for="displaysix">Display six words</label> 43.128 + <input type="radio" name="radiodisplay" id="displayhex" class="custom" value="off" /> 43.129 + <label for="displayhex">Display hexadecimal</label> 43.130 + </fieldset> 43.131 + </div> 43.132 + </li> 43.133 + 43.134 + <li> 43.135 + <div class="ui-body" style="text-align: center; height: 2em; padding-left: 0; padding-right: 0; padding-top: 0.5em; padding-bottom: 0.5em;"> 43.136 + <label><div id="outext" style="color: rgb(192,0,0); font-size: 1.125em;">Please Click Submit For A OTP</div></label> 43.137 + </div> 43.138 + 43.139 + <fieldset class="ui-grid-a"> 43.140 + <div class="ui-block-a"><button type="reset" data-theme="c" data-icon="delete">Reset</button></div> 43.141 + <div class="ui-block-b"><button type="submit" data-theme="b" data-icon="check">Submit</button></div> 43.142 + </fieldset> 43.143 + </li> 43.144 + </ul> 43.145 + </form> 43.146 + </div><!-- /content-primary --> 43.147 + </div><!-- /content --> 43.148 + </div><!-- /page --> 43.149 +</body> 43.150 +</html>
44.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 44.2 +++ b/src/tizen/main.js Wed Jul 31 19:48:00 2013 +0200 44.3 @@ -0,0 +1,113 @@ 44.4 +/* 44.5 + * OTPWCalc - One time password challenge response calculator client 44.6 + * Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 44.7 + * 44.8 + * OTPWCalc is free software: you can redistribute it and/or modify 44.9 + * it under the terms of the European Union Public Licence, either 44.10 + * version 1.1 of the license, or (at your option) any later version. 44.11 + * 44.12 + * OTPWCalc is distributed in the hope that it will be useful, 44.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty 44.14 + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 44.15 + * the European Union Public License for more details. 44.16 + * 44.17 + * You should have received a copy of the European Union Public 44.18 + * Licence along with OTPWCalc. If not, please refer to 44.19 + * <http://joinup.ec.europa.eu/software/page/eupl/>. 44.20 + * 44.21 + * This file is part of project OTWPCalc, a one time password challenge 44.22 + * response calculator client and is found at http://otpwcalc.europalab.com/ 44.23 + * 44.24 + * main.js: ECMA JavaScript implementation 44.25 + */ 44.26 + 44.27 +// <![CDATA[ 44.28 +//// This doesn't work with AJAX (use pageinit instead) 44.29 +//// That means JavaScript in the head of any other HTML 44.30 +//// will be ignored, only the data-role="page" is parsed 44.31 +//$(document).ready(function() { 44.32 + //$.mobile.ajaxLinksEnabled = false; 44.33 +//}); 44.34 +$(document).on("mobileinit", function() { 44.35 + $.extend($.mobile, { 44.36 + pageLoadErrorMessage: 'Either the page cannot be found or it cannot be loaded.' 44.37 + }); 44.38 +}); 44.39 +//$(document).on("pageinit", function() { 44.40 +//}); 44.41 +$(document).on("pageinit", "[data-role='page'].oc-swipage", function() { 44.42 + var makepage = "#" + $(this).attr("id"), 44.43 + next = $(this).jqmData("next"), // Next page stored in data-next 44.44 + prev = $(this).jqmData("prev"); // Previous page stored in data-prev 44.45 + 44.46 + if (next) { // Check if data-next attribute is indeed set 44.47 + //// Prefetch next page 44.48 + //$.mobile.loadPage(next); 44.49 + // Navigate to next page on swipe left 44.50 + $(document).on("swipeleft", makepage, function(inev) { 44.51 + inev.stopImmediatePropagation(); 44.52 + $.mobile.changePage(next, {transition: "slide"}); 44.53 + }); 44.54 + } 44.55 + else { // If data-next not set then default to history 44.56 + $(document).on("swipeleft", makepage, function(inev) { 44.57 + inev.stopImmediatePropagation(); 44.58 + window.history.forward({transition: "slide"}); 44.59 + }); 44.60 + } 44.61 + if (prev) { // Check if data-prev attribute is set 44.62 + $(document).on("swiperight", makepage, function(inev) { 44.63 + inev.stopImmediatePropagation(); 44.64 + $.mobile.changePage(prev, {transition: "slide", reverse: true}); 44.65 + }); 44.66 + } 44.67 + else { // If data-prev not set then default to history 44.68 + $(document).on("swiperight", makepage, function(inev) { 44.69 + inev.stopImmediatePropagation(); 44.70 + //history.back(); // or window.history.back(); 44.71 + $.mobile.back({transition: "slide", reverse: true}); 44.72 + }); 44.73 + } 44.74 +}); 44.75 + 44.76 +// the main logical entry point 44.77 +function otpwcalc() { 44.78 + var secr = $('#paswrd').val(); 44.79 + var user = $('#seedid').val(); 44.80 + var iter = parseInt($('#crement').val(), 10); 44.81 + var hash = genotpmd5; 44.82 + if ($('form input[name=radiohash]:checked').attr('id') == 'hashsha1') 44.83 + hash = genotpsha1; 44.84 + else if ($('form input[name=radiohash]:checked').attr('id') == 'hashr160') 44.85 + hash = genotprmd160; 44.86 + var form = arrtosix; 44.87 + if ($('form input[name=radiodisplay]:checked').attr('id') == 'displayhex') 44.88 + form = arrtohex; 44.89 + var resp = hash(secr, user, iter); 44.90 + //var resp = sjcl.random.randomWords(1,0); 44.91 + return form(resp); 44.92 +} 44.93 + 44.94 +// helper function 44.95 +function dosubmit() { 44.96 + if ($('#seedid').val().length == 0) { 44.97 + $('#outext').css({'font-size': '1.125em', 'padding-top': '0em'}).text('Please enter exactly one Seed ID'); 44.98 + return false; 44.99 + } 44.100 + else if ($('#crement').val().length == 0 || isNaN($('#crement').val())) { 44.101 + $('#outext').css({'font-size': '1.125em', 'padding-top': '0em'}).text('Please enter exactly one Sequence #'); 44.102 + return false; 44.103 + } 44.104 + else { 44.105 + $('#outext').css({'font-size': '0.9em', 'padding-top': '0.25em'}).text(otpwcalc()); 44.106 + $('#crement').val(parseInt($("#crement").val()) - $('#selectdecr').val()); 44.107 + return false; 44.108 + } 44.109 +} 44.110 + 44.111 +// helper function 44.112 +function doreset() { 44.113 + $('#outext').css({'font-size': '1.125em', 'padding-top': '0'}).text('Please Click Submit For A OTP'); 44.114 + return true; 44.115 +} 44.116 +// ]]>
45.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 45.2 +++ b/src/tizen/otpalg/dict.js Wed Jul 31 19:48:00 2013 +0200 45.3 @@ -0,0 +1,260 @@ 45.4 +// Words as presented in RFC 2289 (http://www.ietf.org/rfc/rfc2289.txt) 45.5 +words = [ 45.6 + "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD", 45.7 + "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", 45.8 + "AN", "ANA", "AND", "ANN", "ANT", "ANY", "APE", "APS", 45.9 + "APT", "ARC", "ARE", "ARK", "ARM", "ART", "AS", "ASH", 45.10 + "ASK", "AT", "ATE", "AUG", "AUK", "AVE", "AWE", "AWK", 45.11 + "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM", 45.12 + "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", 45.13 + "BEN", "BET", "BEY", "BIB", "BID", "BIG", "BIN", "BIT", 45.14 + "BOB", "BOG", "BON", "BOO", "BOP", "BOW", "BOY", "BUB", 45.15 + "BUD", "BUG", "BUM", "BUN", "BUS", "BUT", "BUY", "BY", 45.16 + "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT", 45.17 + "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", 45.18 + "COW", "COY", "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", 45.19 + "DAB", "DAD", "DAM", "DAN", "DAR", "DAY", "DEE", "DEL", 45.20 + "DEN", "DES", "DEW", "DID", "DIE", "DIG", "DIN", "DIP", 45.21 + "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB", 45.22 + "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", 45.23 + "EGG", "EGO", "ELI", "ELK", "ELM", "ELY", "EM", "END", 45.24 + "EST", "ETC", "EVA", "EVE", "EWE", "EYE", "FAD", "FAN", 45.25 + "FAR", "FAT", "FAY", "FED", "FEE", "FEW", "FIB", "FIG", 45.26 + "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR", 45.27 + "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", 45.28 + "GAM", "GAP", "GAS", "GAY", "GEE", "GEL", "GEM", "GET", 45.29 + "GIG", "GIL", "GIN", "GO", "GOT", "GUM", "GUN", "GUS", 45.30 + "GUT", "GUY", "GYM", "GYP", "HA", "HAD", "HAL", "HAM", 45.31 + "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM", 45.32 + "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", 45.33 + "HIS", "HIT", "HO", "HOB", "HOC", "HOE", "HOG", "HOP", 45.34 + "HOT", "HOW", "HUB", "HUE", "HUG", "HUH", "HUM", "HUT", 45.35 + "I", "ICY", "IDA", "IF", "IKE", "ILL", "INK", "INN", 45.36 + "IO", "ION", "IQ", "IRA", "IRE", "IRK", "IS", "IT", 45.37 + "ITS", "IVY", "JAB", "JAG", "JAM", "JAN", "JAR", "JAW", 45.38 + "JAY", "JET", "JIG", "JIM", "JO", "JOB", "JOE", "JOG", 45.39 + "JOT", "JOY", "JUG", "JUT", "KAY", "KEG", "KEN", "KEY", 45.40 + "KID", "KIM", "KIN", "KIT", "LA", "LAB", "LAC", "LAD", 45.41 + "LAG", "LAM", "LAP", "LAW", "LAY", "LEA", "LED", "LEE", 45.42 + "LEG", "LEN", "LEO", "LET", "LEW", "LID", "LIE", "LIN", 45.43 + "LIP", "LIT", "LO", "LOB", "LOG", "LOP", "LOS", "LOT", 45.44 + "LOU", "LOW", "LOY", "LUG", "LYE", "MA", "MAC", "MAD", 45.45 + "MAE", "MAN", "MAO", "MAP", "MAT", "MAW", "MAY", "ME", 45.46 + "MEG", "MEL", "MEN", "MET", "MEW", "MID", "MIN", "MIT", 45.47 + "MOB", "MOD", "MOE", "MOO", "MOP", "MOS", "MOT", "MOW", 45.48 + "MUD", "MUG", "MUM", "MY", "NAB", "NAG", "NAN", "NAP", 45.49 + "NAT", "NAY", "NE", "NED", "NEE", "NET", "NEW", "NIB", 45.50 + "NIL", "NIP", "NIT", "NO", "NOB", "NOD", "NON", "NOR", 45.51 + "NOT", "NOV", "NOW", "NU", "NUN", "NUT", "O", "OAF", 45.52 + "OAK", "OAR", "OAT", "ODD", "ODE", "OF", "OFF", "OFT", 45.53 + "OH", "OIL", "OK", "OLD", "ON", "ONE", "OR", "ORB", 45.54 + "ORE", "ORR", "OS", "OTT", "OUR", "OUT", "OVA", "OW", 45.55 + "OWE", "OWL", "OWN", "OX", "PA", "PAD", "PAL", "PAM", 45.56 + "PAN", "PAP", "PAR", "PAT", "PAW", "PAY", "PEA", "PEG", 45.57 + "PEN", "PEP", "PER", "PET", "PEW", "PHI", "PI", "PIE", 45.58 + "PIN", "PIT", "PLY", "PO", "POD", "POE", "POP", "POT", 45.59 + "POW", "PRO", "PRY", "PUB", "PUG", "PUN", "PUP", "PUT", 45.60 + "QUO", "RAG", "RAM", "RAN", "RAP", "RAT", "RAW", "RAY", 45.61 + "REB", "RED", "REP", "RET", "RIB", "RID", "RIG", "RIM", 45.62 + "RIO", "RIP", "ROB", "ROD", "ROE", "RON", "ROT", "ROW", 45.63 + "ROY", "RUB", "RUE", "RUG", "RUM", "RUN", "RYE", "SAC", 45.64 + "SAD", "SAG", "SAL", "SAM", "SAN", "SAP", "SAT", "SAW", 45.65 + "SAY", "SEA", "SEC", "SEE", "SEN", "SET", "SEW", "SHE", 45.66 + "SHY", "SIN", "SIP", "SIR", "SIS", "SIT", "SKI", "SKY", 45.67 + "SLY", "SO", "SOB", "SOD", "SON", "SOP", "SOW", "SOY", 45.68 + "SPA", "SPY", "SUB", "SUD", "SUE", "SUM", "SUN", "SUP", 45.69 + "TAB", "TAD", "TAG", "TAN", "TAP", "TAR", "TEA", "TED", 45.70 + "TEE", "TEN", "THE", "THY", "TIC", "TIE", "TIM", "TIN", 45.71 + "TIP", "TO", "TOE", "TOG", "TOM", "TON", "TOO", "TOP", 45.72 + "TOW", "TOY", "TRY", "TUB", "TUG", "TUM", "TUN", "TWO", 45.73 + "UN", "UP", "US", "USE", "VAN", "VAT", "VET", "VIE", 45.74 + "WAD", "WAG", "WAR", "WAS", "WAY", "WE", "WEB", "WED", 45.75 + "WEE", "WET", "WHO", "WHY", "WIN", "WIT", "WOK", "WON", 45.76 + "WOO", "WOW", "WRY", "WU", "YAM", "YAP", "YAW", "YE", 45.77 + "YEA", "YES", "YET", "YOU", "ABED", "ABEL", "ABET", "ABLE", 45.78 + "ABUT", "ACHE", "ACID", "ACME", "ACRE", "ACTA", "ACTS", "ADAM", 45.79 + "ADDS", "ADEN", "AFAR", "AFRO", "AGEE", "AHEM", "AHOY", "AIDA", 45.80 + "AIDE", "AIDS", "AIRY", "AJAR", "AKIN", "ALAN", "ALEC", "ALGA", 45.81 + "ALIA", "ALLY", "ALMA", "ALOE", "ALSO", "ALTO", "ALUM", "ALVA", 45.82 + "AMEN", "AMES", "AMID", "AMMO", "AMOK", "AMOS", "AMRA", "ANDY", 45.83 + "ANEW", "ANNA", "ANNE", "ANTE", "ANTI", "AQUA", "ARAB", "ARCH", 45.84 + "AREA", "ARGO", "ARID", "ARMY", "ARTS", "ARTY", "ASIA", "ASKS", 45.85 + "ATOM", "AUNT", "AURA", "AUTO", "AVER", "AVID", "AVIS", "AVON", 45.86 + "AVOW", "AWAY", "AWRY", "BABE", "BABY", "BACH", "BACK", "BADE", 45.87 + "BAIL", "BAIT", "BAKE", "BALD", "BALE", "BALI", "BALK", "BALL", 45.88 + "BALM", "BAND", "BANE", "BANG", "BANK", "BARB", "BARD", "BARE", 45.89 + "BARK", "BARN", "BARR", "BASE", "BASH", "BASK", "BASS", "BATE", 45.90 + "BATH", "BAWD", "BAWL", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", 45.91 + "BEAT", "BEAU", "BECK", "BEEF", "BEEN", "BEER", "BEET", "BELA", 45.92 + "BELL", "BELT", "BEND", "BENT", "BERG", "BERN", "BERT", "BESS", 45.93 + "BEST", "BETA", "BETH", "BHOY", "BIAS", "BIDE", "BIEN", "BILE", 45.94 + "BILK", "BILL", "BIND", "BING", "BIRD", "BITE", "BITS", "BLAB", 45.95 + "BLAT", "BLED", "BLEW", "BLOB", "BLOC", "BLOT", "BLOW", "BLUE", 45.96 + "BLUM", "BLUR", "BOAR", "BOAT", "BOCA", "BOCK", "BODE", "BODY", 45.97 + "BOGY", "BOHR", "BOIL", "BOLD", "BOLO", "BOLT", "BOMB", "BONA", 45.98 + "BOND", "BONE", "BONG", "BONN", "BONY", "BOOK", "BOOM", "BOON", 45.99 + "BOOT", "BORE", "BORG", "BORN", "BOSE", "BOSS", "BOTH", "BOUT", 45.100 + "BOWL", "BOYD", "BRAD", "BRAE", "BRAG", "BRAN", "BRAY", "BRED", 45.101 + "BREW", "BRIG", "BRIM", "BROW", "BUCK", "BUDD", "BUFF", "BULB", 45.102 + "BULK", "BULL", "BUNK", "BUNT", "BUOY", "BURG", "BURL", "BURN", 45.103 + "BURR", "BURT", "BURY", "BUSH", "BUSS", "BUST", "BUSY", "BYTE", 45.104 + "CADY", "CAFE", "CAGE", "CAIN", "CAKE", "CALF", "CALL", "CALM", 45.105 + "CAME", "CANE", "CANT", "CARD", "CARE", "CARL", "CARR", "CART", 45.106 + "CASE", "CASH", "CASK", "CAST", "CAVE", "CEIL", "CELL", "CENT", 45.107 + "CERN", "CHAD", "CHAR", "CHAT", "CHAW", "CHEF", "CHEN", "CHEW", 45.108 + "CHIC", "CHIN", "CHOU", "CHOW", "CHUB", "CHUG", "CHUM", "CITE", 45.109 + "CITY", "CLAD", "CLAM", "CLAN", "CLAW", "CLAY", "CLOD", "CLOG", 45.110 + "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COCA", "COCK", "COCO", 45.111 + "CODA", "CODE", "CODY", "COED", "COIL", "COIN", "COKE", "COLA", 45.112 + "COLD", "COLT", "COMA", "COMB", "COME", "COOK", "COOL", "COON", 45.113 + "COOT", "CORD", "CORE", "CORK", "CORN", "COST", "COVE", "COWL", 45.114 + "CRAB", "CRAG", "CRAM", "CRAY", "CREW", "CRIB", "CROW", "CRUD", 45.115 + "CUBA", "CUBE", "CUFF", "CULL", "CULT", "CUNY", "CURB", "CURD", 45.116 + "CURE", "CURL", "CURT", "CUTS", "DADE", "DALE", "DAME", "DANA", 45.117 + "DANE", "DANG", "DANK", "DARE", "DARK", "DARN", "DART", "DASH", 45.118 + "DATA", "DATE", "DAVE", "DAVY", "DAWN", "DAYS", "DEAD", "DEAF", 45.119 + "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED", "DEEM", "DEER", 45.120 + "DEFT", "DEFY", "DELL", "DENT", "DENY", "DESK", "DIAL", "DICE", 45.121 + "DIED", "DIET", "DIME", "DINE", "DING", "DINT", "DIRE", "DIRT", 45.122 + "DISC", "DISH", "DISK", "DIVE", "DOCK", "DOES", "DOLE", "DOLL", 45.123 + "DOLT", "DOME", "DONE", "DOOM", "DOOR", "DORA", "DOSE", "DOTE", 45.124 + "DOUG", "DOUR", "DOVE", "DOWN", "DRAB", "DRAG", "DRAM", "DRAW", 45.125 + "DREW", "DRUB", "DRUG", "DRUM", "DUAL", "DUCK", "DUCT", "DUEL", 45.126 + "DUET", "DUKE", "DULL", "DUMB", "DUNE", "DUNK", "DUSK", "DUST", 45.127 + "DUTY", "EACH", "EARL", "EARN", "EASE", "EAST", "EASY", "EBEN", 45.128 + "ECHO", "EDDY", "EDEN", "EDGE", "EDGY", "EDIT", "EDNA", "EGAN", 45.129 + "ELAN", "ELBA", "ELLA", "ELSE", "EMIL", "EMIT", "EMMA", "ENDS", 45.130 + "ERIC", "EROS", "EVEN", "EVER", "EVIL", "EYED", "FACE", "FACT", 45.131 + "FADE", "FAIL", "FAIN", "FAIR", "FAKE", "FALL", "FAME", "FANG", 45.132 + "FARM", "FAST", "FATE", "FAWN", "FEAR", "FEAT", "FEED", "FEEL", 45.133 + "FEET", "FELL", "FELT", "FEND", "FERN", "FEST", "FEUD", "FIEF", 45.134 + "FIGS", "FILE", "FILL", "FILM", "FIND", "FINE", "FINK", "FIRE", 45.135 + "FIRM", "FISH", "FISK", "FIST", "FITS", "FIVE", "FLAG", "FLAK", 45.136 + "FLAM", "FLAT", "FLAW", "FLEA", "FLED", "FLEW", "FLIT", "FLOC", 45.137 + "FLOG", "FLOW", "FLUB", "FLUE", "FOAL", "FOAM", "FOGY", "FOIL", 45.138 + "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL", "FOOT", "FORD", 45.139 + "FORE", "FORK", "FORM", "FORT", "FOSS", "FOUL", "FOUR", "FOWL", 45.140 + "FRAU", "FRAY", "FRED", "FREE", "FRET", "FREY", "FROG", "FROM", 45.141 + "FUEL", "FULL", "FUME", "FUND", "FUNK", "FURY", "FUSE", "FUSS", 45.142 + "GAFF", "GAGE", "GAIL", "GAIN", "GAIT", "GALA", "GALE", "GALL", 45.143 + "GALT", "GAME", "GANG", "GARB", "GARY", "GASH", "GATE", "GAUL", 45.144 + "GAUR", "GAVE", "GAWK", "GEAR", "GELD", "GENE", "GENT", "GERM", 45.145 + "GETS", "GIBE", "GIFT", "GILD", "GILL", "GILT", "GINA", "GIRD", 45.146 + "GIRL", "GIST", "GIVE", "GLAD", "GLEE", "GLEN", "GLIB", "GLOB", 45.147 + "GLOM", "GLOW", "GLUE", "GLUM", "GLUT", "GOAD", "GOAL", "GOAT", 45.148 + "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG", "GOOD", "GOOF", 45.149 + "GORE", "GORY", "GOSH", "GOUT", "GOWN", "GRAB", "GRAD", "GRAY", 45.150 + "GREG", "GREW", "GREY", "GRID", "GRIM", "GRIN", "GRIT", "GROW", 45.151 + "GRUB", "GULF", "GULL", "GUNK", "GURU", "GUSH", "GUST", "GWEN", 45.152 + "GWYN", "HAAG", "HAAS", "HACK", "HAIL", "HAIR", "HALE", "HALF", 45.153 + "HALL", "HALO", "HALT", "HAND", "HANG", "HANK", "HANS", "HARD", 45.154 + "HARK", "HARM", "HART", "HASH", "HAST", "HATE", "HATH", "HAUL", 45.155 + "HAVE", "HAWK", "HAYS", "HEAD", "HEAL", "HEAR", "HEAT", "HEBE", 45.156 + "HECK", "HEED", "HEEL", "HEFT", "HELD", "HELL", "HELM", "HERB", 45.157 + "HERD", "HERE", "HERO", "HERS", "HESS", "HEWN", "HICK", "HIDE", 45.158 + "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT", "HIRE", "HISS", 45.159 + "HIVE", "HOBO", "HOCK", "HOFF", "HOLD", "HOLE", "HOLM", "HOLT", 45.160 + "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK", "HOOT", "HORN", 45.161 + "HOSE", "HOST", "HOUR", "HOVE", "HOWE", "HOWL", "HOYT", "HUCK", 45.162 + "HUED", "HUFF", "HUGE", "HUGH", "HUGO", "HULK", "HULL", "HUNK", 45.163 + "HUNT", "HURD", "HURL", "HURT", "HUSH", "HYDE", "HYMN", "IBIS", 45.164 + "ICON", "IDEA", "IDLE", "IFFY", "INCA", "INCH", "INTO", "IONS", 45.165 + "IOTA", "IOWA", "IRIS", "IRMA", "IRON", "ISLE", "ITCH", "ITEM", 45.166 + "IVAN", "JACK", "JADE", "JAIL", "JAKE", "JANE", "JAVA", "JEAN", 45.167 + "JEFF", "JERK", "JESS", "JEST", "JIBE", "JILL", "JILT", "JIVE", 45.168 + "JOAN", "JOBS", "JOCK", "JOEL", "JOEY", "JOHN", "JOIN", "JOKE", 45.169 + "JOLT", "JOVE", "JUDD", "JUDE", "JUDO", "JUDY", "JUJU", "JUKE", 45.170 + "JULY", "JUNE", "JUNK", "JUNO", "JURY", "JUST", "JUTE", "KAHN", 45.171 + "KALE", "KANE", "KANT", "KARL", "KATE", "KEEL", "KEEN", "KENO", 45.172 + "KENT", "KERN", "KERR", "KEYS", "KICK", "KILL", "KIND", "KING", 45.173 + "KIRK", "KISS", "KITE", "KLAN", "KNEE", "KNEW", "KNIT", "KNOB", 45.174 + "KNOT", "KNOW", "KOCH", "KONG", "KUDO", "KURD", "KURT", "KYLE", 45.175 + "LACE", "LACK", "LACY", "LADY", "LAID", "LAIN", "LAIR", "LAKE", 45.176 + "LAMB", "LAME", "LAND", "LANE", "LANG", "LARD", "LARK", "LASS", 45.177 + "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS", "LAYS", "LEAD", 45.178 + "LEAF", "LEAK", "LEAN", "LEAR", "LEEK", "LEER", "LEFT", "LEND", 45.179 + "LENS", "LENT", "LEON", "LESK", "LESS", "LEST", "LETS", "LIAR", 45.180 + "LICE", "LICK", "LIED", "LIEN", "LIES", "LIEU", "LIFE", "LIFT", 45.181 + "LIKE", "LILA", "LILT", "LILY", "LIMA", "LIMB", "LIME", "LIND", 45.182 + "LINE", "LINK", "LINT", "LION", "LISA", "LIST", "LIVE", "LOAD", 45.183 + "LOAF", "LOAM", "LOAN", "LOCK", "LOFT", "LOGE", "LOIS", "LOLA", 45.184 + "LONE", "LONG", "LOOK", "LOON", "LOOT", "LORD", "LORE", "LOSE", 45.185 + "LOSS", "LOST", "LOUD", "LOVE", "LOWE", "LUCK", "LUCY", "LUGE", 45.186 + "LUKE", "LULU", "LUND", "LUNG", "LURA", "LURE", "LURK", "LUSH", 45.187 + "LUST", "LYLE", "LYNN", "LYON", "LYRA", "MACE", "MADE", "MAGI", 45.188 + "MAID", "MAIL", "MAIN", "MAKE", "MALE", "MALI", "MALL", "MALT", 45.189 + "MANA", "MANN", "MANY", "MARC", "MARE", "MARK", "MARS", "MART", 45.190 + "MARY", "MASH", "MASK", "MASS", "MAST", "MATE", "MATH", "MAUL", 45.191 + "MAYO", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK", "MEET", "MELD", 45.192 + "MELT", "MEMO", "MEND", "MENU", "MERT", "MESH", "MESS", "MICE", 45.193 + "MIKE", "MILD", "MILE", "MILK", "MILL", "MILT", "MIMI", "MIND", 45.194 + "MINE", "MINI", "MINK", "MINT", "MIRE", "MISS", "MIST", "MITE", 45.195 + "MITT", "MOAN", "MOAT", "MOCK", "MODE", "MOLD", "MOLE", "MOLL", 45.196 + "MOLT", "MONA", "MONK", "MONT", "MOOD", "MOON", "MOOR", "MOOT", 45.197 + "MORE", "MORN", "MORT", "MOSS", "MOST", "MOTH", "MOVE", "MUCH", 45.198 + "MUCK", "MUDD", "MUFF", "MULE", "MULL", "MURK", "MUSH", "MUST", 45.199 + "MUTE", "MUTT", "MYRA", "MYTH", "NAGY", "NAIL", "NAIR", "NAME", 45.200 + "NARY", "NASH", "NAVE", "NAVY", "NEAL", "NEAR", "NEAT", "NECK", 45.201 + "NEED", "NEIL", "NELL", "NEON", "NERO", "NESS", "NEST", "NEWS", 45.202 + "NEWT", "NIBS", "NICE", "NICK", "NILE", "NINA", "NINE", "NOAH", 45.203 + "NODE", "NOEL", "NOLL", "NONE", "NOOK", "NOON", "NORM", "NOSE", 45.204 + "NOTE", "NOUN", "NOVA", "NUDE", "NULL", "NUMB", "OATH", "OBEY", 45.205 + "OBOE", "ODIN", "OHIO", "OILY", "OINT", "OKAY", "OLAF", "OLDY", 45.206 + "OLGA", "OLIN", "OMAN", "OMEN", "OMIT", "ONCE", "ONES", "ONLY", 45.207 + "ONTO", "ONUS", "ORAL", "ORGY", "OSLO", "OTIS", "OTTO", "OUCH", 45.208 + "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OWLY", "OWNS", "QUAD", 45.209 + "QUIT", "QUOD", "RACE", "RACK", "RACY", "RAFT", "RAGE", "RAID", 45.210 + "RAIL", "RAIN", "RAKE", "RANK", "RANT", "RARE", "RASH", "RATE", 45.211 + "RAVE", "RAYS", "READ", "REAL", "REAM", "REAR", "RECK", "REED", 45.212 + "REEF", "REEK", "REEL", "REID", "REIN", "RENA", "REND", "RENT", 45.213 + "REST", "RICE", "RICH", "RICK", "RIDE", "RIFT", "RILL", "RIME", 45.214 + "RING", "RINK", "RISE", "RISK", "RITE", "ROAD", "ROAM", "ROAR", 45.215 + "ROBE", "ROCK", "RODE", "ROIL", "ROLL", "ROME", "ROOD", "ROOF", 45.216 + "ROOK", "ROOM", "ROOT", "ROSA", "ROSE", "ROSS", "ROSY", "ROTH", 45.217 + "ROUT", "ROVE", "ROWE", "ROWS", "RUBE", "RUBY", "RUDE", "RUDY", 45.218 + "RUIN", "RULE", "RUNG", "RUNS", "RUNT", "RUSE", "RUSH", "RUSK", 45.219 + "RUSS", "RUST", "RUTH", "SACK", "SAFE", "SAGE", "SAID", "SAIL", 45.220 + "SALE", "SALK", "SALT", "SAME", "SAND", "SANE", "SANG", "SANK", 45.221 + "SARA", "SAUL", "SAVE", "SAYS", "SCAN", "SCAR", "SCAT", "SCOT", 45.222 + "SEAL", "SEAM", "SEAR", "SEAT", "SEED", "SEEK", "SEEM", "SEEN", 45.223 + "SEES", "SELF", "SELL", "SEND", "SENT", "SETS", "SEWN", "SHAG", 45.224 + "SHAM", "SHAW", "SHAY", "SHED", "SHIM", "SHIN", "SHOD", "SHOE", 45.225 + "SHOT", "SHOW", "SHUN", "SHUT", "SICK", "SIDE", "SIFT", "SIGH", 45.226 + "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE", "SING", "SINK", 45.227 + "SIRE", "SITE", "SITS", "SITU", "SKAT", "SKEW", "SKID", "SKIM", 45.228 + "SKIN", "SKIT", "SLAB", "SLAM", "SLAT", "SLAY", "SLED", "SLEW", 45.229 + "SLID", "SLIM", "SLIT", "SLOB", "SLOG", "SLOT", "SLOW", "SLUG", 45.230 + "SLUM", "SLUR", "SMOG", "SMUG", "SNAG", "SNOB", "SNOW", "SNUB", 45.231 + "SNUG", "SOAK", "SOAR", "SOCK", "SODA", "SOFA", "SOFT", "SOIL", 45.232 + "SOLD", "SOME", "SONG", "SOON", "SOOT", "SORE", "SORT", "SOUL", 45.233 + "SOUR", "SOWN", "STAB", "STAG", "STAN", "STAR", "STAY", "STEM", 45.234 + "STEW", "STIR", "STOW", "STUB", "STUN", "SUCH", "SUDS", "SUIT", 45.235 + "SULK", "SUMS", "SUNG", "SUNK", "SURE", "SURF", "SWAB", "SWAG", 45.236 + "SWAM", "SWAN", "SWAT", "SWAY", "SWIM", "SWUM", "TACK", "TACT", 45.237 + "TAIL", "TAKE", "TALE", "TALK", "TALL", "TANK", "TASK", "TATE", 45.238 + "TAUT", "TEAL", "TEAM", "TEAR", "TECH", "TEEM", "TEEN", "TEET", 45.239 + "TELL", "TEND", "TENT", "TERM", "TERN", "TESS", "TEST", "THAN", 45.240 + "THAT", "THEE", "THEM", "THEN", "THEY", "THIN", "THIS", "THUD", 45.241 + "THUG", "TICK", "TIDE", "TIDY", "TIED", "TIER", "TILE", "TILL", 45.242 + "TILT", "TIME", "TINA", "TINE", "TINT", "TINY", "TIRE", "TOAD", 45.243 + "TOGO", "TOIL", "TOLD", "TOLL", "TONE", "TONG", "TONY", "TOOK", 45.244 + "TOOL", "TOOT", "TORE", "TORN", "TOTE", "TOUR", "TOUT", "TOWN", 45.245 + "TRAG", "TRAM", "TRAY", "TREE", "TREK", "TRIG", "TRIM", "TRIO", 45.246 + "TROD", "TROT", "TROY", "TRUE", "TUBA", "TUBE", "TUCK", "TUFT", 45.247 + "TUNA", "TUNE", "TUNG", "TURF", "TURN", "TUSK", "TWIG", "TWIN", 45.248 + "TWIT", "ULAN", "UNIT", "URGE", "USED", "USER", "USES", "UTAH", 45.249 + "VAIL", "VAIN", "VALE", "VARY", "VASE", "VAST", "VEAL", "VEDA", 45.250 + "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERY", "VETO", "VICE", 45.251 + "VIEW", "VINE", "VISE", "VOID", "VOLT", "VOTE", "WACK", "WADE", 45.252 + "WAGE", "WAIL", "WAIT", "WAKE", "WALE", "WALK", "WALL", "WALT", 45.253 + "WAND", "WANE", "WANG", "WANT", "WARD", "WARM", "WARN", "WART", 45.254 + "WASH", "WAST", "WATS", "WATT", "WAVE", "WAVY", "WAYS", "WEAK", 45.255 + "WEAL", "WEAN", "WEAR", "WEED", "WEEK", "WEIR", "WELD", "WELL", 45.256 + "WELT", "WENT", "WERE", "WERT", "WEST", "WHAM", "WHAT", "WHEE", 45.257 + "WHEN", "WHET", "WHOA", "WHOM", "WICK", "WIFE", "WILD", "WILL", 45.258 + "WIND", "WINE", "WING", "WINK", "WINO", "WIRE", "WISE", "WISH", 45.259 + "WITH", "WOLF", "WONT", "WOOD", "WOOL", "WORD", "WORE", "WORK", 45.260 + "WORM", "WORN", "WOVE", "WRIT", "WYNN", "YALE", "YANG", "YANK", 45.261 + "YARD", "YARN", "YAWL", "YAWN", "YEAH", "YEAR", "YELL", "YOGA", 45.262 + "YOKE" 45.263 +];
46.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 46.2 +++ b/src/tizen/otpalg/otpalg.js Wed Jul 31 19:48:00 2013 +0200 46.3 @@ -0,0 +1,169 @@ 46.4 +/* 46.5 + * OTPWCalc - One time password challenge response calculator client 46.6 + * Copyright © 2013 Michael Schloh von Bennewitz <michael@schloh.com> 46.7 + * 46.8 + * OTPWCalc is free software: you can redistribute it and/or modify 46.9 + * it under the terms of the European Union Public Licence, either 46.10 + * version 1.1 of the license, or (at your option) any later version. 46.11 + * 46.12 + * OTPWCalc is distributed in the hope that it will be useful, 46.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty 46.14 + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 46.15 + * the European Union Public License for more details. 46.16 + * 46.17 + * You should have received a copy of the European Union Public 46.18 + * Licence along with OTPWCalc. If not, please refer to 46.19 + * <http://joinup.ec.europa.eu/software/page/eupl/>. 46.20 + * 46.21 + * This file is part of project OTWPCalc, a one time password challenge 46.22 + * response calculator client and is found at http://otpwcalc.europalab.com/ 46.23 + * 46.24 + * otpalg.js: ECMA JavaScript implementation 46.25 + */ 46.26 + 46.27 +// <![CDATA[ 46.28 +function genotpmd4(secret, seed, n) { 46.29 + var t = seed.toString().toLowerCase() + secret; 46.30 + t = mdxfold(coremd4(str2binl(t), t.length * 8)); 46.31 + for (var i = n; i > 0; --i) { t = mdxfold(coremd4(t, 64)); } 46.32 + return t; 46.33 +} 46.34 + 46.35 +function genotpmd5(secret, seed, n) { 46.36 + var t = seed.toString().toLowerCase() + secret; 46.37 + t = mdxfold(coremd5(str2binl(t), t.length * 8)); 46.38 + for (var i = n; i > 0; --i) { t = mdxfold(coremd5(t, 64)); } 46.39 + return t; 46.40 +} 46.41 + 46.42 +function genotpsha1(secret, seed, n) { 46.43 + var t = seed.toString().toLowerCase() + secret; 46.44 + t = sha1fold(coresha1(str2binb(t), t.length * 8)); 46.45 + for (var i = n; i > 0; --i) { t = sha1fold(coresha1(t, 64)); } 46.46 + t = invertendian(t, true); 46.47 + return t; 46.48 +} 46.49 + 46.50 +function genotprmd160(secret, seed, n) { 46.51 + var t = seed.toString().toLowerCase() + secret; 46.52 + t = rmd160fold(corermd160(str2binl(t), t.length * 8)); 46.53 + for (var i = n; i > 0; --i) { t = rmd160fold(corermd160(t, 64)); } 46.54 + return t; 46.55 +} 46.56 + 46.57 +function genotpmultmd4(secret, seed, n, m) { 46.58 + var res = Array(); var lim = n - m + 1; 46.59 + var t = seed.toString().toLowerCase() + secret; 46.60 + t = mdxfold(coremd4(str2binl(t), t.length * 8)); 46.61 + if (lim == 0) res[0] = t; 46.62 + for (var i = 1; i <= n; ++i) { 46.63 + t = mdxfold(coremd4(t, 64)); 46.64 + if (i >= lim) res[i-lim] = t; 46.65 + } 46.66 + return res; 46.67 +} 46.68 + 46.69 +function genotpmultmd5(secret, seed, n, m) { 46.70 + var res = Array(); var lim = n - m + 1; 46.71 + var t = seed.toString().toLowerCase() + secret; 46.72 + t = mdxfold(coremd5(str2binl(t), t.length * 8)); 46.73 + if (lim == 0) res[0] = t; 46.74 + for (var i = 1; i <= n; ++i) { 46.75 + t = mdxfold(coremd5(t, 64)); 46.76 + if (i >= lim) res[i-lim] = t; 46.77 + } 46.78 + return res; 46.79 +} 46.80 + 46.81 +function genotpmultsha1(secret, seed, n, m) { 46.82 + var res = Array(); var lim = n - m + 1; 46.83 + var t = seed.toString().toLowerCase() + secret; 46.84 + t = sha1fold(coresha1(str2binb(t), t.length * 8)); 46.85 + if (lim == 0) res[0] = invertendian(t, false); 46.86 + for (var i = 1; i <= n; ++i) { 46.87 + t = sha1fold(coresha1(t, 64)); 46.88 + if (i >= lim) res[i-lim] = invertendian(t, false); 46.89 + } 46.90 + return res; 46.91 +} 46.92 + 46.93 +function genotpmultrmd160(secret, seed, n, m) { 46.94 + var res = Array(); var lim = n - m + 1; 46.95 + var t = seed.toString().toLowerCase() + secret; 46.96 + t = rmd160fold(corermd160(str2binl(t), t.length * 8)); 46.97 + if (lim == 0) res[0] = t; 46.98 + for (var i = 1; i <= n; ++i) { 46.99 + t = rmd160fold(corermd160(t, 64)); 46.100 + if (i >= lim) res[i-lim] = t; 46.101 + } 46.102 + return res; 46.103 +} 46.104 + 46.105 +function mdxfold(h) { return Array(h[0] ^ h[2], h[1] ^ h[3]); } 46.106 + 46.107 +function sha1fold(h) { 46.108 + h = invertendian(h, true); 46.109 + return Array(h[0] ^ h[2] ^ h[4], h[1] ^ h[3]); 46.110 +} 46.111 + 46.112 +function rmd160fold(h) { return Array(h[0] ^ h[2] ^ h[4], h[1] ^ h[3]); } 46.113 + 46.114 +function invertendian(a, inpl) { 46.115 + var t = inpl ? a : Array(a.length); 46.116 + for (var i = 0; i < a.length; ++i) { 46.117 + var t1 = (a[i] & 0xff) << 24; 46.118 + var t2 = ((a[i] >> 8) & 0xff) << 16; 46.119 + var t3 = ((a[i] >> 16) & 0xff) << 8; 46.120 + var t4 = (a[i] >> 24) & 0xff; 46.121 + t[i] = t1 | t2 | t3 | t4; 46.122 + } 46.123 + return t; 46.124 +} 46.125 + 46.126 +function arrtoboth(a) { return arrtosix(a) + " (" + arrtohex(a) + ")"; } 46.127 + 46.128 +function arrtohex(a) { 46.129 + var s = ""; 46.130 + for (var i = 0; i < 2; ++i) { 46.131 + for (var j = 0; j < 4; ++j) { 46.132 + var t = (a[i] >> (8*j)) & 0xff; 46.133 + t = t.toString(16).toUpperCase(); 46.134 + s += (t.length == 1) ? ('0' + t) : t; // 1 octet = 2 hex digits 46.135 + if (j % 2 == 1) s += ' '; 46.136 + } 46.137 + } 46.138 + return s.substr(0, s.length-1); // drop the last space 46.139 +} 46.140 + 46.141 +function arrtosix(h) { 46.142 + var s = ""; 46.143 + var parity = 0; 46.144 + for (var i = 0; i < 2; ++i) { 46.145 + for (var j = 0; j < 32; j += 2) { 46.146 + parity += (h[i] >> j) & 0x3; 46.147 + } 46.148 + } 46.149 + var ind; 46.150 + ind = (h[0] & 0xff) << 3; 46.151 + ind |= (h[0] >> 13) & 0x7; 46.152 + s += words[ind] + " "; 46.153 + ind = ((h[0] >> 8) & 0x1f) << 6; 46.154 + ind |= (h[0] >> 18) & 0x3f; 46.155 + s += words[ind] + " "; 46.156 + ind = ((h[0] >> 16) & 0x3) << 9; 46.157 + ind |= ((h[0] >> 24) & 0xff) << 1; 46.158 + ind |= (h[1] >> 7) & 0x1; 46.159 + s += words[ind] + " "; 46.160 + ind = (h[1] & 0x7f) << 4; 46.161 + ind |= (h[1] >> 12) & 0xf; 46.162 + s += words[ind] + " "; 46.163 + ind = ((h[1] >> 8) & 0xf) << 7; 46.164 + ind |= (h[1] >> 17) & 0x7f; 46.165 + s += words[ind] + " "; 46.166 + ind = ((h[1] >> 16) & 0x1) << 10; 46.167 + ind |= ((h[1] >> 24) & 0xff) << 2; 46.168 + ind |= (parity & 0x03); 46.169 + s += words[ind]; 46.170 + return s; 46.171 +} 46.172 +// ]]>