Introduce port to the Tizen OS.

Wed, 31 Jul 2013 19:48:00 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Jul 2013 19:48:00 +0200
changeset 14
d1b294812560
parent 13
deac632e477c
child 15
9ca643a77115

Introduce port to the Tizen OS.

.hgignore file | annotate | diff | comparison | revisions
src/firefoxos/img/otpwcalc-ico.svg file | annotate | diff | comparison | revisions
src/tizen/.project file | annotate | diff | comparison | revisions
src/tizen/Makefile file | annotate | diff | comparison | revisions
src/tizen/about.html file | annotate | diff | comparison | revisions
src/tizen/config.xml file | annotate | diff | comparison | revisions
src/tizen/eupl-1.1.txt file | annotate | diff | comparison | revisions
src/tizen/hashes/md4.js file | annotate | diff | comparison | revisions
src/tizen/hashes/md5.js file | annotate | diff | comparison | revisions
src/tizen/hashes/rmd160.js file | annotate | diff | comparison | revisions
src/tizen/hashes/sha1.js file | annotate | diff | comparison | revisions
src/tizen/help/help.html file | annotate | diff | comparison | revisions
src/tizen/help/help.js file | annotate | diff | comparison | revisions
src/tizen/help/hfaq.html file | annotate | diff | comparison | revisions
src/tizen/help/hman.html file | annotate | diff | comparison | revisions
src/tizen/help/hqst.html file | annotate | diff | comparison | revisions
src/tizen/help/hsec.html file | annotate | diff | comparison | revisions
src/tizen/help/hsta.html file | annotate | diff | comparison | revisions
src/tizen/img/compute-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/compute-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/datahost.png file | annotate | diff | comparison | revisions
src/tizen/img/document-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/document-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/email-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/email-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/manpage-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/manpage-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/manpage.svg file | annotate | diff | comparison | revisions
src/tizen/img/otpwcalc-117px.png file | annotate | diff | comparison | revisions
src/tizen/img/otpwcalc-512px.png file | annotate | diff | comparison | revisions
src/tizen/img/otpwcalc-ico.svg file | annotate | diff | comparison | revisions
src/tizen/img/question-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/question-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/quickstart-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/quickstart-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/security-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/security-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/seeye-hd.png file | annotate | diff | comparison | revisions
src/tizen/img/seeye-sd.png file | annotate | diff | comparison | revisions
src/tizen/img/seeye.svg file | annotate | diff | comparison | revisions
src/tizen/img/tastatur.png file | annotate | diff | comparison | revisions
src/tizen/main.css file | annotate | diff | comparison | revisions
src/tizen/main.html file | annotate | diff | comparison | revisions
src/tizen/main.js file | annotate | diff | comparison | revisions
src/tizen/otpalg/dict.js file | annotate | diff | comparison | revisions
src/tizen/otpalg/otpalg.js file | annotate | diff | comparison | revisions
     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 &copy; 2012 &#8211; 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 &hellip;?</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&hellip;
   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&hellip;<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 +// ]]>

mercurial