<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
<link rel="self" type="application/atom+xml" href="https://forum.yubico.com/feed.php?f=30&amp;t=959" />

<title>Yubico Forum</title>
<subtitle>...visit our web-store at</subtitle>
<link href="https://forum.yubico.com/index.php" />
<updated>2013-02-25T08:47:47+01:00</updated>

<author><name><![CDATA[Yubico Forum]]></name></author>
<id>https://forum.yubico.com/feed.php?f=30&amp;t=959</id>
<entry>
<author><name><![CDATA[Tom]]></name></author>
<updated>2013-02-25T08:47:47+01:00</updated>
<published>2013-02-25T08:47:47+01:00</published>
<id>https://forum.yubico.com/viewtopic.php?t=959&amp;p=3630#p3630</id>
<link href="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3630#p3630"/>
<title type="html"><![CDATA[Re: [QUESTION] configure plain text static pass - COM API]]></title>

<content type="html" xml:base="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3630#p3630"><![CDATA[
Hello Gabor,<br /><br />It would be great if you'll take 3 minutes to post this in the community project section.<br /><br />You will join the <strong>YubiCompetition</strong> <!-- l --><a class="postlink-local" href="http://forum.yubico.com/viewtopic.php?f=8&amp;t=943">viewtopic.php?f=8&amp;t=943</a><!-- l --><br />Please follow the <strong>guidelines</strong> available here: <!-- l --><a class="postlink-local" href="http://forum.yubico.com/viewtopic.php?f=8&amp;t=930">viewtopic.php?f=8&amp;t=930</a><!-- l --><br /><br />Thank you,<br />Tom.<p>Statistics: Posted by <a href="https://forum.yubico.com/memberlist.php?mode=viewprofile&amp;u=2195">Tom</a> — Mon Feb 25, 2013 8:47 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gabor]]></name></author>
<updated>2013-02-22T16:10:53+01:00</updated>
<published>2013-02-22T16:10:53+01:00</published>
<id>https://forum.yubico.com/viewtopic.php?t=959&amp;p=3625#p3625</id>
<link href="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3625#p3625"/>
<title type="html"><![CDATA[Re: [RESOLVED] configure plain text static pass - COM API]]></title>

<content type="html" xml:base="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3625#p3625"><![CDATA[
Hi JakobE,<br /><br />thanks for the help. this answers my question.<br /><br />based on your input and the source code of the personalization tool, i could get this working.<br /><!-- m --><a class="postlink" href="https://github.com/Yubico/yubikey-personalization-gui/blob/master/src/ui/staticpage.cpp">https://github.com/Yubico/yubikey-perso ... icpage.cpp</a><!-- m --><br /><!-- m --><a class="postlink" href="https://github.com/Yubico/yubikey-personalization/blob/master/ykcore/ykdef.h">https://github.com/Yubico/yubikey-perso ... re/ykdef.h</a><!-- m --><br /><br />my final javascript PoC code is posted below for future reference.<br />up to 38 characters can be programmed into the yubikey 2.2.<br /><br />cheers,<br />gabor<br /><br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">function programstatic_onclick() {<br />   var FIXED_SIZE = 16;<br />   var UID_SIZE = 6;<br />   var KEY_SIZE = 16;<br /><br />   // read and validate plain text input, max 38 chars<br />   // e.g. 'abcdefghijklmnopqrstuvwxyz1234567890AB'<br />   var input = staticPWD.value;<br />   var maxLength = FIXED_SIZE + UID_SIZE + KEY_SIZE;<br />   if (input.length &gt; maxLength) {<br />      alert('text too long, max ' + maxLength + ' chars');<br />      return;<br />   }<br />   <br />   // encode plain text into keyboard scan codes<br />   var scanCodes = text2scancode(input);<br /><br />   // split key to fit in various yubikey properties<br />   var key1 = scanCodes.substr(0, FIXED_SIZE * 2);<br />   var key2 = scanCodes.substr(FIXED_SIZE * 2, UID_SIZE * 2);<br />   var key3 = scanCodes.substr(FIXED_SIZE * 2 + UID_SIZE * 2);<br />   <br />   //yk.ykEnableDebug = true;<br />   yk.ykClear();<br />   <br />   yk.ykFlagProperty(17) = true; // use 2nd config<br />   yk.ykFlagProperty(5) = true; // append an &quot;enter&quot; at the end.<br /><br />   // use staic password mode, scancode mode<br />   yk.ykFlagProperty(11) = false; // static mode: false =&gt; output scancodes (as opposed to modhex)<br />   yk.ykFlagProperty(12) = true; // short ticket<br /><br />   // set key parts<br />   yk.ykStaticId = key1;<br />   yk.ykUID = key2;<br />   yk.ykKey = key3;<br />   <br />   // write config to yubikey<br />   var programResult = yk.ykProgram;<br />   if (programResult == 0) {<br />      alert('success');<br />   } else {<br />      alert('error: ' + programResult);<br />   }<br />   <br />   // logging<br />   var log = <br />      'input: ' + input + '\n' +<br />      'input length: ' + input.length + '\n' +<br />      'scancodes: ' + scanCodes + '\n' +<br />      'key1: ' + key1 + '\n' +<br />      'key2: ' + key2 + '\n' +<br />      'key3: ' + key3 + '\n';<br />   logBox.value = log;<br />}<br /><br />// scancode conversion table<br />var SHIFT = 0x80;<br />var key2usb = &#91;<br />    0x00,               /*   0 0x00 */<br />    0x00,               /*   1 0x01 */<br />    0x00,               /*   2 0x02 */<br />    0x00,               /*   3 0x03 */<br />    0x00,               /*   4 0x04 */<br />    0x00,               /*   5 0x05 */<br />    0x00,               /*   6 0x06 */<br />    0x00,               /*   7 0x07 */<br />    0x00,               /*   8 0x08 Backspace (0x2a) */<br />    0x00,               /*   9 0x09 Tab (0x2b) */<br />    0x00,               /*  10 0x0a Back Tab (0x2b | SHIFT) */<br />    0x00,               /*  11 0x0b Home (0x4a)*/<br />    0x00,               /*  12 0x0c Form Feed */<br />    0x28,               /*  13 0x0d Return */<br />    0x00,               /*  14 0x0e */<br />    0x00,               /*  15 0x0f */<br />    0x00,               /*  16 0x10 */<br />    0x00,               /*  17 0x11 */<br />    0x00,               /*  18 0x12 */<br />    0x00,               /*  19 0x13 */<br />    0x00,      /*  20 0x14 */<br />    0x00,      /*  21 0x15 */<br />    0x00,      /*  22 0x16 */<br />    0x00,      /*  23 0x17 */<br />    0x00,      /*  24 0x18 Cancel (0x9b) */<br />    0x00,      /*  25 0x19 */<br />    0x00,      /*  26 0x1a */<br />    0x00,               /*  27 0x1b Escape (0x29) */<br />    0x00,               /*  28 0x1c */<br />    0x00,      /*  29 0x1d */<br />    0x00,      /*  30 0x1e */<br />    0x00,               /*  31 0x1f */<br />    0x2c,      /*  32 0x20   */<br />    0x1e | SHIFT,      /*  33 0x21 ! */<br />    0x34 | SHIFT,   /*  34 0x22 &quot; */<br />    0x20 | SHIFT,   /*  35 0x23 # */<br />    0x21 | SHIFT,   /*  36 0x24 $ */<br />    0x22 | SHIFT,   /*  37 0x25 % */<br />    0x24 | SHIFT,   /*  38 0x26 &amp; */<br />    0x34,      /*  39 0x27 ' */<br />    0x26 | SHIFT,   /*  40 0x28 ( */<br />    0x27 | SHIFT,   /*  41 0x29 ) */<br />    0x25 | SHIFT,   /*  42 0x2a * */<br />    0x2e | SHIFT,   /*  43 0x2b + */<br />    0x36,      /*  44 0x2c , */<br />    0x2d,      /*  45 0x2d - */<br />    0x37,      /*  46 0x2e . */<br />    0x38,      /*  47 0x2f / */<br />    0x27,      /*  48 0x30 0 */<br />    0x1e,      /*  49 0x31 1 */<br />    0x1f,      /*  50 0x32 2 */<br />    0x20,      /*  51 0x33 3 */<br />    0x21,      /*  52 0x34 4 */<br />    0x22,      /*  53 0x35 5 */<br />    0x23,      /*  54 0x36 6 */<br />    0x24,      /*  55 0x37 7 */<br />    0x25,      /*  56 0x38 8 */<br />    0x26,      /*  57 0x39 9 */<br />    0x33 | SHIFT,   /*  58 0x3a : */<br />    0x33,      /*  59 0x3b ; */<br />    0x36 | SHIFT,   /*  60 0x3c &lt; */<br />    0x2e,      /*  61 0x3d = */<br />    0x37 | SHIFT,   /*  62 0x3e &gt; */<br />    0x38 | SHIFT,   /*  63 0x3f ? */<br />    0x1f | SHIFT,   /*  64 0x40 @ */<br />    0x04 | SHIFT,   /*  65 0x41 A */<br />    0x05 | SHIFT,   /*  66 0x42 B */<br />    0x06 | SHIFT,   /*  67 0x43 C */<br />    0x07 | SHIFT,   /*  68 0x44 D */<br />    0x08 | SHIFT,   /*  69 0x45 E */<br />    0x09 | SHIFT,   /*  70 0x46 F */<br />    0x0a | SHIFT,   /*  71 0x47 G */<br />    0x0b | SHIFT,   /*  72 0x48 H */<br />    0x0c | SHIFT,   /*  73 0x49 I */<br />    0x0d | SHIFT,   /*  74 0x4a J */<br />    0x0e | SHIFT,   /*  75 0x4b K */<br />    0x0f | SHIFT,   /*  76 0x4c L */<br />    0x10 | SHIFT,   /*  77 0x4d M */<br />    0x11 | SHIFT,   /*  78 0x4e N */<br />    0x12 | SHIFT,   /*  79 0x4f O */<br />    0x13 | SHIFT,   /*  80 0x50 P */<br />    0x14 | SHIFT,   /*  81 0x51 Q */<br />    0x15 | SHIFT,   /*  82 0x52 R */<br />    0x16 | SHIFT,   /*  83 0x53 S */<br />    0x17 | SHIFT,   /*  84 0x54 T */<br />    0x18 | SHIFT,   /*  85 0x55 U */<br />    0x19 | SHIFT,   /*  86 0x56 V */<br />    0x1a | SHIFT,   /*  87 0x57 W */<br />    0x1b | SHIFT,   /*  88 0x58 X */<br />    0x1c | SHIFT,   /*  89 0x59 Y */<br />    0x1d | SHIFT,   /*  90 0x5a Z */<br />    0x2f,      /*  91 0x5b &#91; */<br />    0x32,      /*  92 0x5c \ */<br />    0x30,      /*  93 0x5d &#93; */<br />    0X23 | SHIFT,   /*  94 0x5e ^ */<br />    0x2d | SHIFT,   /*  95 0x5f _ */<br />    0x35,      /*  96 0x60 ` */<br />    0x04,      /*  97 0x61 a */<br />    0x05,      /*  98 0x62 b */<br />    0x06,      /*  99 0x63 c */<br />    0x07,      /* 100 0x64 d */<br />    0x08,      /* 101 0x65 e */<br />    0x09,      /* 102 0x66 f */<br />    0x0a,      /* 103 0x67 g */<br />    0x0b,      /* 104 0x68 h */<br />    0x0c,      /* 105 0x69 i */<br />    0x0d,      /* 106 0x6a j */<br />    0x0e,      /* 107 0x6b k */<br />    0x0f,      /* 108 0x6c l */<br />    0x10,      /* 109 0x6d m */<br />    0x11,      /* 110 0x6e n */<br />    0x12,      /* 111 0x6f o */<br />    0x13,      /* 112 0x70 p */<br />    0x14,      /* 113 0x71 q */<br />    0x15,      /* 114 0x72 r */<br />    0x16,      /* 115 0x73 s */<br />    0x17,      /* 116 0x74 t */<br />    0x18,      /* 117 0x75 u */<br />    0x19,      /* 118 0x76 v */<br />    0x1a,      /* 119 0x77 w */<br />    0x1b,      /* 120 0x78 x */<br />    0x1c,      /* 121 0x79 y */<br />    0x1d,      /* 122 0x7a z */<br />    0x2f | SHIFT,   /* 123 0x7b { */<br />    0x32 | SHIFT,   /* 124 0x7c | */<br />    0x30 | SHIFT,   /* 125 0x7d } */<br />    0x35 | SHIFT,   /* 126 0x7e ~ */<br />    0x00,      /* 127 0x7f  */<br />&#93;;<br /><br />// convert plain text to scancode representation<br />function text2scancode(text) {<br />   var result = '';<br />   for (var i=0; i&lt;text.length; i++) {<br />      var charCode = text.charCodeAt(i);<br />      var scanCode = key2usb&#91;charCode&#93;;<br />      var hexPadded = '00' + scanCode.toString(16);<br />      var hex = hexPadded.substr(hexPadded.length - 2);<br />      result += hex;<br />   }<br />   return result;<br />}<br /></div><p>Statistics: Posted by <a href="https://forum.yubico.com/memberlist.php?mode=viewprofile&amp;u=2312">gabor</a> — Fri Feb 22, 2013 4:10 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jakob]]></name></author>
<updated>2013-02-22T00:16:08+01:00</updated>
<published>2013-02-22T00:16:08+01:00</published>
<id>https://forum.yubico.com/viewtopic.php?t=959&amp;p=3620#p3620</id>
<link href="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3620#p3620"/>
<title type="html"><![CDATA[Re: [QUESTION] configure plain text static pass - COM API]]></title>

<content type="html" xml:base="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3620#p3620"><![CDATA[
Hi Gabor,<br /><br />The catch here is the yk.ykFlagProperty(11) = true which means you're setting the 'static mode' flag to true. This does of course seem sensible to do, but in the case with scan code mode, this flag shall be cleared.<br /><br />We've been keen to maintain backwards compatibility with tools and applications, all way back to the very first Yubikey. This have caused extensive overlaying and re-use of configuration bits, which may appear a bit strange at first sight.<br /><br />The functionality matrix looks like this:<br /><br />Standard OTP, modhex encoded: <br />CFGFLAG_STATIC_TICKET = FALSE, CFGFLAG_SHORT_TICKET = FALSE<br /><br />Static OTP, modhex encoded: <br />CFGFLAG_STATIC_TICKET = TRUE, CFGFLAG_SHORT_TICKET = FALSE<br /><br />Truncated static OTP, modhex encoded<br />CFGFLAG_STATIC_TICKET = TRUE, CFGFLAG_SHORT_TICKET = TRUE<br /><br />Static OTP, scancode mode<br />CFGFLAG_STATIC_TICKET = FALSE, CFGFLAG_SHORT_TICKET = TRUE<br /><br /><br />Please let me know if this resolved your issue.<br /><br />Best regards,<br /><br />JakobE<br />Hardware- and firmware guy @ Yubico<p>Statistics: Posted by <a href="https://forum.yubico.com/memberlist.php?mode=viewprofile&amp;u=83">Jakob</a> — Fri Feb 22, 2013 12:16 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gabor]]></name></author>
<updated>2013-02-19T11:41:26+01:00</updated>
<published>2013-02-19T11:41:26+01:00</published>
<id>https://forum.yubico.com/viewtopic.php?t=959&amp;p=3607#p3607</id>
<link href="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3607#p3607"/>
<title type="html"><![CDATA[[QUESTION] configure plain text static pass - COM API]]></title>

<content type="html" xml:base="https://forum.yubico.com/viewtopic.php?t=959&amp;p=3607#p3607"><![CDATA[
Hi yubico experts!<br /><br />I'd like to configure slot2 of my yubikey 2.2 to emit a plain text static password provided by me.<br /><br />Using the YubiKey Personalisation Tool, I can do this easily:<br /><ul><li>Select &quot;Static Password&quot;</li><li>Select &quot;Scan Code&quot;</li><li>Select &quot;Configuration Slot 2&quot;</li><li>Enter my plain text password in the &quot;Password&quot; field, e.g. YUBITEST123</li><li>This gets automatically converted into &quot;Scan codes&quot;, e.g. 9c98858c978896971e1f20</li><li>Click &quot;Write Configuration&quot;</li><li>Now when pressing YubiKey for 3 sec, it simply writes YUBITEST123</li></ul><br />I want to achieve the exact same thing with the ActiveX COM API.<br />I'm using the yksample.html as a basis, extending it with a new button.<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">function programstatic_onclick() {<br />   yk.ykEnableDebug = true;<br />   yk.ykClear();<br />   yk.ykStaticId = &quot;9c98858c978896971e1f20&quot;;<br />   yk.ykUID = &quot;&quot;;<br />   yk.ykKey = &quot;&quot;;<br />   <br />   yk.ykFlagProperty(11) = true;<br />   yk.ykFlagProperty(5) = true; // append an &quot;enter&quot; at the end.<br />   yk.ykFlagProperty(17) = true; // use 2nd config<br />   yk.ykFlagProperty(12) = true; // short ticket<br />   yk.ykFlagProperty(13) = false; // strong_pw1<br />   yk.ykFlagProperty(14) = false; // strong_pw2<br />   yk.ykFlagProperty(15) = true; // man update<br />   <br />   var programResult = yk.ykProgram;<br />   if (programResult == 0) {<br />      alert('success');<br />   } else {<br />      alert('error: ' + programResult);<br />   }<br />}<br /></div><br /><br />The YubiKey is programmed, but slot 2 writes this static text:<br />krkjjgjrkijjkhkibubvdcncejelrjvjvvcicl<br />This seems to be the modhex representation of my hex string 9c98858c978896971e1f20, plus the string ncejelrjvjvvcicl.<br /><br />How can I program the YubiKey not to emit modhex, but plaintext instead?<br />How do I get it to output the exact text YUBITEST123, without any appended keys?<br /><br />Thanks for the help in advance.<br />Gabor<p>Statistics: Posted by <a href="https://forum.yubico.com/memberlist.php?mode=viewprofile&amp;u=2312">gabor</a> — Tue Feb 19, 2013 11:41 am</p><hr />
]]></content>
</entry>
</feed>