dom/wappush/tests/test_cp_pdu_helper.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/dom/wappush/tests/test_cp_pdu_helper.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,724 @@
     1.4 +/* Any copyright is dedicated to the Public Domain.
     1.5 +   http://creativecommons.org/publicdomain/zero/1.0/ */
     1.6 +
     1.7 +let CP = {};
     1.8 +subscriptLoader.loadSubScript("resource://gre/modules/CpPduHelper.jsm", CP);
     1.9 +CP.debug = do_print;
    1.10 +
    1.11 +function run_test() {
    1.12 +  run_next_test();
    1.13 +}
    1.14 +
    1.15 +function test_parser(rawDataArray, contentType, expectResult) {
    1.16 +  let data = { array: rawDataArray, offset: 0 };
    1.17 +  let msg = CP.PduHelper.parse(data, contentType);
    1.18 +  do_check_eq(msg.contentType, expectResult.contentType);
    1.19 +  do_check_eq(msg.content, expectResult.content);
    1.20 +  do_check_eq(msg.content.length, expectResult.content.length);
    1.21 +}
    1.22 +
    1.23 +function test_hmac(rawDataArray, mac, key, expectResult) {
    1.24 +  let authInfo = CP.Authenticator.check(rawDataArray, 0, mac, function getNetworkPin() {
    1.25 +    return key;
    1.26 +  });
    1.27 +  do_check_eq(authInfo.data, rawDataArray);
    1.28 +  do_check_eq(authInfo.data.length, rawDataArray.length);
    1.29 +  do_check_eq(authInfo.checked, expectResult.checked);
    1.30 +  do_check_eq(authInfo.pass, expectResult.pass);
    1.31 +}
    1.32 +
    1.33 +/*
    1.34 + * Test data from OMA-TS-WAP_ProvCont-V1_1-2009 0421-C.pdf, clause 6.1
    1.35 + */
    1.36 +let text_data_array = new Uint8Array([
    1.37 +  0x3C, 0x3F, 0x78, 0x6D, 0x6C, 0x20, 0x76, 0x65,
    1.38 +  0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3D, 0x22, 0x31,
    1.39 +  0x2E, 0x30, 0x22, 0x3F, 0x3E, 0x3C, 0x21, 0x44,
    1.40 +  0x4F, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x77,
    1.41 +  0x61, 0x70, 0x2D, 0x70, 0x72, 0x6F, 0x76, 0x69,
    1.42 +  0x73, 0x69, 0x6F, 0x6E, 0x69, 0x6E, 0x67, 0x64,
    1.43 +  0x6F, 0x63, 0x20, 0x50, 0x55, 0x42, 0x4C, 0x49,
    1.44 +  0x43, 0x20, 0x22, 0x2D, 0x2F, 0x2F, 0x57, 0x41,
    1.45 +  0x50, 0x46, 0x4F, 0x52, 0x55, 0x4D, 0x2F, 0x2F,
    1.46 +  0x44, 0x54, 0x44, 0x20, 0x50, 0x52, 0x4F, 0x56,
    1.47 +  0x20, 0x31, 0x2E, 0x30, 0x2F, 0x2F, 0x45, 0x4E,
    1.48 +  0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A,
    1.49 +  0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x61,
    1.50 +  0x70, 0x66, 0x6F, 0x72, 0x75, 0x6D, 0x2E, 0x6F,
    1.51 +  0x72, 0x67, 0x2F, 0x44, 0x54, 0x44, 0x2F, 0x70,
    1.52 +  0x72, 0x6F, 0x76, 0x2E, 0x64, 0x74, 0x64, 0x22,
    1.53 +  0x3E, 0x3C, 0x77, 0x61, 0x70, 0x2D, 0x70, 0x72,
    1.54 +  0x6F, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x69,
    1.55 +  0x6E, 0x67, 0x64, 0x6F, 0x63, 0x20, 0x76, 0x65,
    1.56 +  0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3D, 0x22, 0x31,
    1.57 +  0x2E, 0x30, 0x22, 0x3E, 0x3C, 0x63, 0x68, 0x61,
    1.58 +  0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x73,
    1.59 +  0x74, 0x69, 0x63, 0x20, 0x74, 0x79, 0x70, 0x65,
    1.60 +  0x3D, 0x22, 0x50, 0x58, 0x4C, 0x4F, 0x47, 0x49,
    1.61 +  0x43, 0x41, 0x4C, 0x22, 0x3E, 0x3C, 0x70, 0x61,
    1.62 +  0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D,
    1.63 +  0x22, 0x50, 0x52, 0x4F, 0x58, 0x59, 0x2D, 0x49,
    1.64 +  0x44, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65,
    1.65 +  0x3D, 0x22, 0x31, 0x37, 0x30, 0x2E, 0x31, 0x38,
    1.66 +  0x37, 0x2E, 0x35, 0x31, 0x2E, 0x34, 0x22, 0x2F,
    1.67 +  0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E,
    1.68 +  0x61, 0x6D, 0x65, 0x3D, 0x22, 0x50, 0x52, 0x4F,
    1.69 +  0x58, 0x59, 0x2D, 0x50, 0x57, 0x22, 0x20, 0x76,
    1.70 +  0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x70, 0x72,
    1.71 +  0x6F, 0x78, 0x79, 0x70, 0x61, 0x73, 0x73, 0x77,
    1.72 +  0x64, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72,
    1.73 +  0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22,
    1.74 +  0x50, 0x50, 0x47, 0x41, 0x55, 0x54, 0x48, 0x2D,
    1.75 +  0x54, 0x59, 0x50, 0x45, 0x22, 0x20, 0x76, 0x61,
    1.76 +  0x6C, 0x75, 0x65, 0x3D, 0x22, 0x48, 0x54, 0x54,
    1.77 +  0x50, 0x2D, 0x42, 0x41, 0x53, 0x49, 0x43, 0x22,
    1.78 +  0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20,
    1.79 +  0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x4E, 0x41,
    1.80 +  0x4D, 0x45, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75,
    1.81 +  0x65, 0x3D, 0x22, 0x42, 0x61, 0x6E, 0x6B, 0x4D,
    1.82 +  0x61, 0x69, 0x6E, 0x50, 0x72, 0x6F, 0x78, 0x79,
    1.83 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
    1.84 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x53,
    1.85 +  0x54, 0x41, 0x52, 0x54, 0x50, 0x41, 0x47, 0x45,
    1.86 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
    1.87 +  0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F,
    1.88 +  0x77, 0x77, 0x77, 0x2E, 0x62, 0x61, 0x6E, 0x6B,
    1.89 +  0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x74, 0x61,
    1.90 +  0x72, 0x74, 0x70, 0x61, 0x67, 0x65, 0x2E, 0x77,
    1.91 +  0x6D, 0x6C, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61,
    1.92 +  0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D,
    1.93 +  0x22, 0x50, 0x55, 0x4C, 0x4C, 0x45, 0x4E, 0x41,
    1.94 +  0x42, 0x4C, 0x45, 0x44, 0x22, 0x20, 0x76, 0x61,
    1.95 +  0x6C, 0x75, 0x65, 0x3D, 0x22, 0x31, 0x22, 0x2F,
    1.96 +  0x3E, 0x3C, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
    1.97 +  0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
    1.98 +  0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x50,
    1.99 +  0x58, 0x41, 0x55, 0x54, 0x48, 0x49, 0x4E, 0x46,
   1.100 +  0x4F, 0x22, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.101 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x50,
   1.102 +  0x58, 0x41, 0x55, 0x54, 0x48, 0x2D, 0x54, 0x59,
   1.103 +  0x50, 0x45, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75,
   1.104 +  0x65, 0x3D, 0x22, 0x48, 0x54, 0x54, 0x50, 0x2D,
   1.105 +  0x42, 0x41, 0x53, 0x49, 0x43, 0x22, 0x2F, 0x3E,
   1.106 +  0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61,
   1.107 +  0x6D, 0x65, 0x3D, 0x22, 0x50, 0x58, 0x41, 0x55,
   1.108 +  0x54, 0x48, 0x2D, 0x49, 0x44, 0x22, 0x20, 0x76,
   1.109 +  0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x70, 0x78,
   1.110 +  0x75, 0x73, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x65,
   1.111 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.112 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x50,
   1.113 +  0x58, 0x41, 0x55, 0x54, 0x48, 0x2D, 0x50, 0x57,
   1.114 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.115 +  0x22, 0x70, 0x78, 0x75, 0x73, 0x65, 0x72, 0x70,
   1.116 +  0x61, 0x73, 0x73, 0x77, 0x64, 0x22, 0x2F, 0x3E,
   1.117 +  0x3C, 0x2F, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
   1.118 +  0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
   1.119 +  0x3E, 0x3C, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
   1.120 +  0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
   1.121 +  0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x50,
   1.122 +  0x58, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41,
   1.123 +  0x4C, 0x22, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.124 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x50,
   1.125 +  0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4C, 0x2D,
   1.126 +  0x50, 0x52, 0x4F, 0x58, 0x59, 0x2D, 0x49, 0x44,
   1.127 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.128 +  0x22, 0x50, 0x52, 0x4F, 0x58, 0x59, 0x20, 0x31,
   1.129 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.130 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x44,
   1.131 +  0x4F, 0x4D, 0x41, 0x49, 0x4E, 0x22, 0x20, 0x76,
   1.132 +  0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x77, 0x77,
   1.133 +  0x77, 0x2E, 0x62, 0x61, 0x6E, 0x6B, 0x2E, 0x63,
   1.134 +  0x6F, 0x6D, 0x2F, 0x22, 0x2F, 0x3E, 0x3C, 0x70,
   1.135 +  0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65,
   1.136 +  0x3D, 0x22, 0x50, 0x58, 0x41, 0x44, 0x44, 0x52,
   1.137 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.138 +  0x22, 0x31, 0x37, 0x30, 0x2E, 0x31, 0x38, 0x37,
   1.139 +  0x2E, 0x35, 0x31, 0x2E, 0x33, 0x22, 0x2F, 0x3E,
   1.140 +  0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61,
   1.141 +  0x6D, 0x65, 0x3D, 0x22, 0x50, 0x58, 0x41, 0x44,
   1.142 +  0x44, 0x52, 0x54, 0x59, 0x50, 0x45, 0x22, 0x20,
   1.143 +  0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x49,
   1.144 +  0x50, 0x56, 0x34, 0x22, 0x2F, 0x3E, 0x3C, 0x70,
   1.145 +  0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65,
   1.146 +  0x3D, 0x22, 0x50, 0x58, 0x41, 0x44, 0x44, 0x52,
   1.147 +  0x2D, 0x46, 0x51, 0x44, 0x4E, 0x22, 0x20, 0x76,
   1.148 +  0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x70, 0x72,
   1.149 +  0x6F, 0x78, 0x79, 0x31, 0x2E, 0x6F, 0x70, 0x65,
   1.150 +  0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x63, 0x6F,
   1.151 +  0x6D, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72,
   1.152 +  0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22,
   1.153 +  0x54, 0x4F, 0x2D, 0x4E, 0x41, 0x50, 0x49, 0x44,
   1.154 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.155 +  0x22, 0x49, 0x4E, 0x54, 0x45, 0x52, 0x4E, 0x45,
   1.156 +  0x54, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72,
   1.157 +  0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22,
   1.158 +  0x54, 0x4F, 0x2D, 0x4E, 0x41, 0x50, 0x49, 0x44,
   1.159 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.160 +  0x22, 0x4E, 0x41, 0x50, 0x31, 0x22, 0x2F, 0x3E,
   1.161 +  0x3C, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
   1.162 +  0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x20,
   1.163 +  0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x50, 0x4F,
   1.164 +  0x52, 0x54, 0x22, 0x3E, 0x3C, 0x70, 0x61, 0x72,
   1.165 +  0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22,
   1.166 +  0x50, 0x4F, 0x52, 0x54, 0x4E, 0x42, 0x52, 0x22,
   1.167 +  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22,
   1.168 +  0x39, 0x32, 0x30, 0x33, 0x22, 0x2F, 0x3E, 0x3C,
   1.169 +  0x2F, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
   1.170 +  0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x3E,
   1.171 +  0x3C, 0x2F, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
   1.172 +  0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
   1.173 +  0x3E, 0x3C, 0x2F, 0x63, 0x68, 0x61, 0x72, 0x61,
   1.174 +  0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69,
   1.175 +  0x63, 0x3E, 0x3C, 0x63, 0x68, 0x61, 0x72, 0x61,
   1.176 +  0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69,
   1.177 +  0x63, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22,
   1.178 +  0x4E, 0x41, 0x50, 0x44, 0x45, 0x46, 0x22, 0x3E,
   1.179 +  0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61,
   1.180 +  0x6D, 0x65, 0x3D, 0x22, 0x4E, 0x41, 0x50, 0x49,
   1.181 +  0x44, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65,
   1.182 +  0x3D, 0x22, 0x4E, 0x41, 0x50, 0x31, 0x22, 0x2F,
   1.183 +  0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E,
   1.184 +  0x61, 0x6D, 0x65, 0x3D, 0x22, 0x42, 0x45, 0x41,
   1.185 +  0x52, 0x45, 0x52, 0x22, 0x20, 0x76, 0x61, 0x6C,
   1.186 +  0x75, 0x65, 0x3D, 0x22, 0x47, 0x53, 0x4D, 0x2D,
   1.187 +  0x43, 0x53, 0x44, 0x22, 0x2F, 0x3E, 0x3C, 0x70,
   1.188 +  0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65,
   1.189 +  0x3D, 0x22, 0x4E, 0x41, 0x4D, 0x45, 0x22, 0x20,
   1.190 +  0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x4D,
   1.191 +  0x59, 0x20, 0x49, 0x53, 0x50, 0x20, 0x43, 0x53,
   1.192 +  0x44, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72,
   1.193 +  0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22,
   1.194 +  0x4E, 0x41, 0x50, 0x2D, 0x41, 0x44, 0x44, 0x52,
   1.195 +  0x45, 0x53, 0x53, 0x22, 0x20, 0x76, 0x61, 0x6C,
   1.196 +  0x75, 0x65, 0x3D, 0x22, 0x2B, 0x33, 0x35, 0x38,
   1.197 +  0x30, 0x38, 0x31, 0x32, 0x34, 0x30, 0x30, 0x32,
   1.198 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.199 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x4E,
   1.200 +  0x41, 0x50, 0x2D, 0x41, 0x44, 0x44, 0x52, 0x54,
   1.201 +  0x59, 0x50, 0x45, 0x22, 0x20, 0x76, 0x61, 0x6C,
   1.202 +  0x75, 0x65, 0x3D, 0x22, 0x45, 0x31, 0x36, 0x34,
   1.203 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.204 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x44,
   1.205 +  0x4E, 0x53, 0x2D, 0x41, 0x44, 0x44, 0x52, 0x22,
   1.206 +  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22,
   1.207 +  0x31, 0x37, 0x30, 0x2E, 0x31, 0x38, 0x37, 0x2E,
   1.208 +  0x35, 0x31, 0x2E, 0x32, 0x22, 0x2F, 0x3E, 0x3C,
   1.209 +  0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D,
   1.210 +  0x65, 0x3D, 0x22, 0x43, 0x41, 0x4C, 0x4C, 0x54,
   1.211 +  0x59, 0x50, 0x45, 0x22, 0x20, 0x76, 0x61, 0x6C,
   1.212 +  0x75, 0x65, 0x3D, 0x22, 0x41, 0x4E, 0x41, 0x4C,
   1.213 +  0x4F, 0x47, 0x2D, 0x4D, 0x4F, 0x44, 0x45, 0x4D,
   1.214 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.215 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x4D,
   1.216 +  0x41, 0x58, 0x2D, 0x4E, 0x55, 0x4D, 0x2D, 0x52,
   1.217 +  0x45, 0x54, 0x52, 0x59, 0x22, 0x20, 0x76, 0x61,
   1.218 +  0x6C, 0x75, 0x65, 0x3D, 0x22, 0x33, 0x22, 0x2F,
   1.219 +  0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E,
   1.220 +  0x61, 0x6D, 0x65, 0x3D, 0x22, 0x46, 0x49, 0x52,
   1.221 +  0x53, 0x54, 0x2D, 0x52, 0x45, 0x54, 0x52, 0x59,
   1.222 +  0x2D, 0x54, 0x49, 0x4D, 0x45, 0x4F, 0x55, 0x54,
   1.223 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.224 +  0x22, 0x36, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61,
   1.225 +  0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D,
   1.226 +  0x22, 0x52, 0x45, 0x52, 0x45, 0x47, 0x2D, 0x54,
   1.227 +  0x48, 0x52, 0x45, 0x53, 0x48, 0x4F, 0x4C, 0x44,
   1.228 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.229 +  0x22, 0x33, 0x30, 0x22, 0x2F, 0x3E, 0x3C, 0x70,
   1.230 +  0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65,
   1.231 +  0x3D, 0x22, 0x54, 0x2D, 0x42, 0x49, 0x54, 0x22,
   1.232 +  0x2F, 0x3E, 0x3C, 0x63, 0x68, 0x61, 0x72, 0x61,
   1.233 +  0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69,
   1.234 +  0x63, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22,
   1.235 +  0x4E, 0x41, 0x50, 0x41, 0x55, 0x54, 0x48, 0x49,
   1.236 +  0x4E, 0x46, 0x4F, 0x22, 0x3E, 0x3C, 0x70, 0x61,
   1.237 +  0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D,
   1.238 +  0x22, 0x41, 0x55, 0x54, 0x48, 0x54, 0x59, 0x50,
   1.239 +  0x45, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65,
   1.240 +  0x3D, 0x22, 0x50, 0x41, 0x50, 0x22, 0x2F, 0x3E,
   1.241 +  0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61,
   1.242 +  0x6D, 0x65, 0x3D, 0x22, 0x41, 0x55, 0x54, 0x48,
   1.243 +  0x4E, 0x41, 0x4D, 0x45, 0x22, 0x20, 0x76, 0x61,
   1.244 +  0x6C, 0x75, 0x65, 0x3D, 0x22, 0x77, 0x77, 0x77,
   1.245 +  0x6D, 0x6D, 0x6D, 0x75, 0x73, 0x65, 0x72, 0x22,
   1.246 +  0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20,
   1.247 +  0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x41, 0x55,
   1.248 +  0x54, 0x48, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54,
   1.249 +  0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D,
   1.250 +  0x22, 0x77, 0x77, 0x77, 0x6D, 0x6D, 0x6D, 0x73,
   1.251 +  0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x2F, 0x3E,
   1.252 +  0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E, 0x61,
   1.253 +  0x6D, 0x65, 0x3D, 0x22, 0x41, 0x55, 0x54, 0x48,
   1.254 +  0x2D, 0x45, 0x4E, 0x54, 0x49, 0x54, 0x59, 0x22,
   1.255 +  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22,
   1.256 +  0x48, 0x41, 0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61,
   1.257 +  0x72, 0x6D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D,
   1.258 +  0x22, 0x53, 0x50, 0x49, 0x22, 0x20, 0x76, 0x61,
   1.259 +  0x6C, 0x75, 0x65, 0x3D, 0x22, 0x46, 0x45, 0x44,
   1.260 +  0x43, 0x42, 0x41, 0x39, 0x38, 0x22, 0x2F, 0x3E,
   1.261 +  0x3C, 0x2F, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
   1.262 +  0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
   1.263 +  0x3E, 0x3C, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
   1.264 +  0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
   1.265 +  0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x56,
   1.266 +  0x41, 0x4C, 0x49, 0x44, 0x49, 0x54, 0x59, 0x22,
   1.267 +  0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D, 0x20, 0x6E,
   1.268 +  0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x4F, 0x55,
   1.269 +  0x4E, 0x54, 0x52, 0x59, 0x22, 0x20, 0x76, 0x61,
   1.270 +  0x6C, 0x75, 0x65, 0x3D, 0x22, 0x32, 0x32, 0x38,
   1.271 +  0x22, 0x2F, 0x3E, 0x3C, 0x70, 0x61, 0x72, 0x6D,
   1.272 +  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x4E,
   1.273 +  0x45, 0x54, 0x57, 0x4F, 0x52, 0x4B, 0x22, 0x20,
   1.274 +  0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x30,
   1.275 +  0x30, 0x31, 0x22, 0x2F, 0x3E, 0x3C, 0x2F, 0x63,
   1.276 +  0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72,
   1.277 +  0x69, 0x73, 0x74, 0x69, 0x63, 0x3E, 0x3C, 0x2F,
   1.278 +  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65,
   1.279 +  0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x3E, 0x3C,
   1.280 +  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65,
   1.281 +  0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x20, 0x74,
   1.282 +  0x79, 0x70, 0x65, 0x3D, 0x22, 0x41, 0x43, 0x43,
   1.283 +  0x45, 0x53, 0x53, 0x22, 0x3E, 0x3C, 0x2F, 0x63,
   1.284 +  0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72,
   1.285 +  0x69, 0x73, 0x74, 0x69, 0x63, 0x3E, 0x3C, 0x2F,
   1.286 +  0x77, 0x61, 0x70, 0x2D, 0x70, 0x72, 0x6F, 0x76,
   1.287 +  0x69, 0x73, 0x69, 0x6F, 0x6E, 0x69, 0x6E, 0x67,
   1.288 +  0x64, 0x6F, 0x63, 0x3E
   1.289 +]);
   1.290 +
   1.291 +/*
   1.292 + * Test data from OMA-TS-WAP_ProvCont-V1_1-20090421-C.pdf, Appendix C
   1.293 + */
   1.294 +let wbxml_data_array = new Uint8Array([
   1.295 +  // WBXML version 1.3
   1.296 +  0x03,
   1.297 +  // The Public Identifier for "-//WAPFORUM//DTD PROV 1.0//EN"
   1.298 +  0x0b,
   1.299 +  // Character set UTF-8
   1.300 +  0x6a,
   1.301 +  // String table length = 05
   1.302 +  0x05,
   1.303 +  // String table: 'N', 'A', 'P', '1', 00
   1.304 +  0x4e, 0x41, 0x50, 0x31, 0x00,
   1.305 +  // <wap-provisioningdoc version="1.0">
   1.306 +  0xc5, 0x46, 0x01,
   1.307 +  //   <characteristic type="PXLOGICAL">
   1.308 +  0xc6, 0x51, 0x01,
   1.309 +  //     <parm name="PROXY-ID" value="170.187.51.4"/>
   1.310 +  0x87, 0x15, 0x06, 0x03, 0x31, 0x37, 0x30, 0x2e,
   1.311 +  0x31, 0x38, 0x37, 0x2e, 0x35, 0x31, 0x2e, 0x34,
   1.312 +  0x00, 0x01,
   1.313 +  //     <parm name="PROXY-PW" value="proxypasswd"/>
   1.314 +  0x87, 0x3E, 0x06, 0x03, 0x70, 0x72, 0x6f, 0x78,
   1.315 +  0x79, 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00,
   1.316 +  0x01,
   1.317 +  //     <parm name="PPGAUTH-TYPE" value="HTTP-BASIC"/>
   1.318 +  0x87, 0x3F, 0x06, 0x9C, 0x01,
   1.319 +  //     <parm name="NAME" value="BankMainProxy"/>
   1.320 +  0x87, 0x07, 0x06, 0x03, 0x42, 0x61, 0x6e, 0x6b,
   1.321 +  0x4d, 0x61, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x78,
   1.322 +  0x79, 0x00, 0x01,
   1.323 +  //     <parm name="STARTPAGE" value="http://www.bank.com/startpage.wml"/>
   1.324 +  0x87, 0x1c, 0x06, 0x03, 0x68, 0x74, 0x74, 0x70,
   1.325 +  0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x62,
   1.326 +  0x61, 0x6e, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
   1.327 +  0x73, 0x74, 0x61, 0x72, 0x74, 0x70, 0x61, 0x67,
   1.328 +  0x65, 0x2e, 0x77, 0x6d, 0x6c, 0x00, 0x01,
   1.329 +  //     <parm name="PULLENABLED" value="1"/>
   1.330 +  0x87, 0x47, 0x06, 0x03, 0x31, 0x00, 0x01,
   1.331 +  //     <characteristic type="PXAUTHINFO">
   1.332 +  0xc6, 0x59, 0x01,
   1.333 +  //       <parm name="PXAUTH-TYPE" value="HTTP-BASIC"/>
   1.334 +  0x87, 0x19, 0x06, 0x9c, 0x01,
   1.335 +  //       <parm name="PXAUTH-ID" value="pxusername"/>
   1.336 +  0x87, 0x1a, 0x06, 0x03, 0x70, 0x78, 0x75, 0x73,
   1.337 +  0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x01,
   1.338 +  //       <parm name="PXAUTH-PW" value="pxuserpasswd"/>
   1.339 +  0x87, 0x1b, 0x06, 0x03, 0x70, 0x78, 0x75, 0x73,
   1.340 +  0x65, 0x72, 0x70, 0x61, 0x73, 0x73, 0x77, 0x64,
   1.341 +  0x00, 0x01,
   1.342 +  //     </characteristic>
   1.343 +  0x01,
   1.344 +  //     <characteristic type="PXPHYSICAL">
   1.345 +  0xc6, 0x52, 0x01,
   1.346 +  //       <parm name="PHYSICAL-PROXY-ID" value="PROXY 1"/>
   1.347 +  0x87, 0x2f, 0x06, 0x03, 0x50, 0x52, 0x4f, 0x58,
   1.348 +  0x59, 0x20, 0x31, 0x00, 0x01,
   1.349 +  //       <parm name="DOMAIN" value="www.bank.com/"/>
   1.350 +  0x87, 0x17, 0x06, 0x03, 0x77, 0x77, 0x77, 0x2e,
   1.351 +  0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x63, 0x6f, 0x6d,
   1.352 +  0x2f, 0x00, 0x01,
   1.353 +  //       <parm name="PXADDR" value="170.187.51.3"/>
   1.354 +  0x87, 0x20, 0x06, 0x03, 0x31, 0x37, 0x30, 0x2e,
   1.355 +  0x31, 0x38, 0x37, 0x2e, 0x35, 0x31, 0x2e, 0x33,
   1.356 +  0x00, 0x01,
   1.357 +  //       <parm name="PXADDRTYPE" value="IPV4"/>
   1.358 +  0x87, 0x21, 0x06, 0x85, 0x01,
   1.359 +  //       <parm name="PXADDR-FQDN" value="proxy1.operator.com"/>
   1.360 +  0x87, 0x3D, 0x06, 0x03, 0x70, 0x72, 0x6f, 0x78,
   1.361 +  0x79, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61,
   1.362 +  0x74, 0x6f, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x00,
   1.363 +  0x01,
   1.364 +  //       <parm name="TO-NAPID" value="INTERNET"/>
   1.365 +  0x87, 0x22, 0x06, 0x03, 0x49, 0x4e, 0x54, 0x45,
   1.366 +  0x52, 0x4e, 0x45, 0x54, 0x00, 0x01,
   1.367 +  //       <parm name="TO-NAPID" value="NAP1"/>
   1.368 +  0x87, 0x22, 0x06, 0x83, 0x00, 0x01,
   1.369 +  //       <characteristic type="PORT">
   1.370 +  0xc6, 0x53, 0x01,
   1.371 +  //         <parm name="PORTNBR" value="9203"/>
   1.372 +  0x87, 0x23, 0x06, 0x03, 0x39, 0x32, 0x30, 0x33,
   1.373 +  0x00, 0x01,
   1.374 +  //       </characteristic>
   1.375 +  0x01,
   1.376 +  //     </characteristic>
   1.377 +  0x01,
   1.378 +  //   </characteristic>
   1.379 +  0x01,
   1.380 +  //   <characteristic type="NAPDEF">
   1.381 +  0xc6, 0x55, 0x01,
   1.382 +  //     <parm name="NAPID" value="NAP1"/>
   1.383 +  0x87, 0x11, 0x06, 0x83, 0x00, 0x01,
   1.384 +  //     <parm name="BEARER" value="GSM-CSD"/>
   1.385 +  0x87, 0x10, 0x06, 0xaa, 0x01,
   1.386 +  //     <parm name="NAME" value="MY ISP CSD"/>
   1.387 +  0x87, 0x07, 0x06, 0x03, 0x4d, 0x59, 0x20, 0x49,
   1.388 +  0x53, 0x50, 0x20, 0x43, 0x53, 0x44, 0x00, 0x01,
   1.389 +  //     <parm name="NAP-ADDRESS" value="+35808124002"/>
   1.390 +  0x87, 0x08, 0x06, 0x03, 0x2b, 0x33, 0x35, 0x38,
   1.391 +  0x30, 0x38, 0x31, 0x32, 0x34, 0x30, 0x30, 0x32,
   1.392 +  0x00, 0x01,
   1.393 +  //     <parm name="NAP-ADDRTYPE" value="E164"/>
   1.394 +  0x87, 0x09, 0x06, 0x87, 0x01,
   1.395 +  //     <parm name="DNS-ADDR" value="170.187.51.2"/>
   1.396 +  0x87, 0x48, 0x06, 0x03, 0x31, 0x37, 0x30, 0x2e,
   1.397 +  0x31, 0x38, 0x37, 0x2e, 0x35, 0x31, 0x2e, 0x32,
   1.398 +  0x00, 0x01,
   1.399 +  //     <parm name="CALLTYPE" value="ANALOG-MODEM"/>
   1.400 +  0x87, 0x0a, 0x06, 0x90, 0x01,
   1.401 +  //     <parm name="MAX-NUM-RETRY" value="3"/>
   1.402 +  0x87, 0x49, 0x06, 0x03, 0x33, 0x00, 0x01,
   1.403 +  //     <parm name="FIRST-RETRY-TIMEOUT" value="6"/>
   1.404 +  0x87, 0x4A, 0x06, 0x03, 0x36, 0x00, 0x01,
   1.405 +  //     <parm name="REREG-THRESHOLD" value="30"/>
   1.406 +  0x87, 0x4B, 0x06, 0x03, 0x33, 0x30, 0x00, 0x01,
   1.407 +  //     <parm name="T-BIT"/>
   1.408 +  0x87, 0x4C, 0x01,
   1.409 +  //     <characteristic type="NAPAUTHINFO">
   1.410 +  0xc6, 0x5a, 0x01,
   1.411 +  //       <parm name="AUTHTYPE" value="PAP"/>
   1.412 +  0x87, 0x0c, 0x06, 0x9a, 0x01,
   1.413 +  //       <parm name="AUTHNAME" value="wwwmmmuser"/>
   1.414 +  0x87, 0x0d, 0x06, 0x03, 0x77, 0x77, 0x77, 0x6d,
   1.415 +  0x6d, 0x6d, 0x75, 0x73, 0x65, 0x72, 0x00, 0x01,
   1.416 +  //       <parm name="AUTHSECRET" value="wwwmmmsecret"/>
   1.417 +  0x87, 0x0e, 0x06, 0x03, 0x77, 0x77, 0x77, 0x6d,
   1.418 +  0x6d, 0x6d, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
   1.419 +  0x00, 0x01,
   1.420 +  //       <parm name="AUTH-ENTITY" value="HA"/>
   1.421 +  0x87, 0x4E, 0x06, 0xE1, 0x01,
   1.422 +  //       <parm name="SPI" value="FEDCBA98"/>
   1.423 +  0x87, 0x4F, 0x06, 0x03, 0x46, 0x45, 0x44, 0x43,
   1.424 +  0x42, 0x41, 0x39, 0x38, 0x00, 0x01,
   1.425 +  //     </characteristic>
   1.426 +  0x01,
   1.427 +  //     <characteristic type="VALIDITY">
   1.428 +  0xc6, 0x54, 0x01,
   1.429 +  //       <parm name="COUNTRY" value="228"/>
   1.430 +  0x87, 0x12, 0x06, 0x03, 0x32, 0x32, 0x38, 0x00,
   1.431 +  0x01,
   1.432 +  //       <parm name="NETWORK" value="001"/>
   1.433 +  0x87, 0x13, 0x06, 0x03, 0x30, 0x30, 0x31, 0x00,
   1.434 +  0x01,
   1.435 +  //     </characteristic>
   1.436 +  0x01,
   1.437 +  //   </characteristic>
   1.438 +  0x01,
   1.439 +  //   <characteristic type="ACCESS">
   1.440 +  0xC6, 0x5B, 0x01,
   1.441 +  //   </characteristic>
   1.442 +  0x01,
   1.443 +  // </wap-provisioningdoc>
   1.444 +  0x01
   1.445 +]);
   1.446 +
   1.447 +/*
   1.448 + * Test data from CHT CP, with code page change
   1.449 + */
   1.450 +let wbxml_code_page_data_array = new Uint8Array([
   1.451 +  0x03, 0x0B, 0x6A, 0x00, 0x45, 0xC6, 0x56, 0x01,
   1.452 +  0x87, 0x07, 0x06, 0x03, 0x43, 0x48, 0x54, 0x5F,
   1.453 +  0x65, 0x6D, 0x6F, 0x6D, 0x65, 0x00, 0x01, 0x01,
   1.454 +  0xC6, 0x00, 0x01, 0x55, 0x01, 0x87, 0x36, 0x00,
   1.455 +  0x00, 0x06, 0x03, 0x77, 0x32, 0x00, 0x01, 0x87,
   1.456 +  0x00, 0x01, 0x39, 0x00, 0x00, 0x06, 0x03, 0x57,
   1.457 +  0x50, 0x52, 0x4F, 0x58, 0x59, 0x00, 0x01, 0x87,
   1.458 +  0x07, 0x06, 0x03, 0x43, 0x48, 0x54, 0x5F, 0x65,
   1.459 +  0x6D, 0x6F, 0x6D, 0x65, 0x00, 0x01, 0xC6, 0x00,
   1.460 +  0x01, 0x59, 0x01, 0x87, 0x3A, 0x00, 0x00, 0x06,
   1.461 +  0x03, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F,
   1.462 +  0x77, 0x61, 0x70, 0x2E, 0x65, 0x6D, 0x6F, 0x6D,
   1.463 +  0x65, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x00, 0x01,
   1.464 +  0x87, 0x07, 0x06, 0x03, 0x43, 0x48, 0x54, 0x5F,
   1.465 +  0x65, 0x6D, 0x6F, 0x6D, 0x65, 0x00, 0x01, 0x87,
   1.466 +  0x1C, 0x01, 0x01, 0x01, 0xC6, 0x00, 0x01, 0x55,
   1.467 +  0x01, 0x87, 0x36, 0x00, 0x00, 0x06, 0x03, 0x77,
   1.468 +  0x34, 0x00, 0x01, 0x87, 0x00, 0x01, 0x39, 0x00,
   1.469 +  0x00, 0x06, 0x03, 0x4D, 0x50, 0x52, 0x4F, 0x58,
   1.470 +  0x59, 0x00, 0x01, 0x87, 0x00, 0x01, 0x34, 0x00,
   1.471 +  0x00, 0x06, 0x03, 0x68, 0x74, 0x74, 0x70, 0x3A,
   1.472 +  0x2F, 0x2F, 0x6D, 0x6D, 0x73, 0x3A, 0x38, 0x30,
   1.473 +  0x30, 0x32, 0x00, 0x01, 0x01, 0xC6, 0x51, 0x01,
   1.474 +  0x87, 0x15, 0x06, 0x03, 0x57, 0x50, 0x52, 0x4F,
   1.475 +  0x58, 0x59, 0x00, 0x01, 0x87, 0x07, 0x06, 0x03,
   1.476 +  0x43, 0x48, 0x54, 0x5F, 0x65, 0x6D, 0x6F, 0x6D,
   1.477 +  0x65, 0x00, 0x01, 0x87, 0x1C, 0x06, 0x03, 0x68,
   1.478 +  0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x61,
   1.479 +  0x70, 0x2E, 0x65, 0x6D, 0x6F, 0x6D, 0x65, 0x2E,
   1.480 +  0x6E, 0x65, 0x74, 0x2F, 0x00, 0x01, 0xC6, 0x52,
   1.481 +  0x01, 0x87, 0x2F, 0x06, 0x03, 0x50, 0x52, 0x4F,
   1.482 +  0x58, 0x59, 0x31, 0x00, 0x01, 0x87, 0x20, 0x06,
   1.483 +  0x03, 0x31, 0x30, 0x2E, 0x31, 0x2E, 0x31, 0x2E,
   1.484 +  0x31, 0x00, 0x01, 0x87, 0x21, 0x06, 0x85, 0x01,
   1.485 +  0x87, 0x22, 0x06, 0x03, 0x43, 0x48, 0x54, 0x5F,
   1.486 +  0x65, 0x6D, 0x6F, 0x6D, 0x65, 0x00, 0x01, 0xC6,
   1.487 +  0x53, 0x01, 0x87, 0x23, 0x06, 0x03, 0x38, 0x30,
   1.488 +  0x38, 0x30, 0x00, 0x01, 0x01, 0x01, 0x01, 0xC6,
   1.489 +  0x51, 0x01, 0x87, 0x15, 0x06, 0x03, 0x4D, 0x50,
   1.490 +  0x52, 0x4F, 0x58, 0x59, 0x00, 0x01, 0x87, 0x07,
   1.491 +  0x06, 0x03, 0x43, 0x48, 0x54, 0x5F, 0x4D, 0x4D,
   1.492 +  0x53, 0x00, 0x01, 0xC6, 0x52, 0x01, 0x87, 0x2F,
   1.493 +  0x06, 0x03, 0x50, 0x52, 0x4F, 0x58, 0x59, 0x32,
   1.494 +  0x00, 0x01, 0x87, 0x20, 0x06, 0x03, 0x31, 0x30,
   1.495 +  0x2E, 0x31, 0x2E, 0x31, 0x2E, 0x31, 0x00, 0x01,
   1.496 +  0x87, 0x21, 0x06, 0x85, 0x01, 0x87, 0x22, 0x06,
   1.497 +  0x03, 0x43, 0x48, 0x54, 0x5F, 0x4D, 0x4D, 0x53,
   1.498 +  0x00, 0x01, 0xC6, 0x53, 0x01, 0x87, 0x23, 0x06,
   1.499 +  0x03, 0x38, 0x30, 0x38, 0x30, 0x00, 0x01, 0x01,
   1.500 +  0x01, 0x01, 0xC6, 0x55, 0x01, 0x87, 0x11, 0x06,
   1.501 +  0x03, 0x43, 0x48, 0x54, 0x5F, 0x65, 0x6D, 0x6F,
   1.502 +  0x6D, 0x65, 0x00, 0x01, 0x87, 0x07, 0x06, 0x03,
   1.503 +  0x43, 0x48, 0x54, 0x5F, 0x65, 0x6D, 0x6F, 0x6D,
   1.504 +  0x65, 0x00, 0x01, 0x87, 0x10, 0x06, 0xAB, 0x01,
   1.505 +  0x87, 0x08, 0x06, 0x03, 0x65, 0x6D, 0x6F, 0x6D,
   1.506 +  0x65, 0x00, 0x01, 0x87, 0x09, 0x06, 0x89, 0x01,
   1.507 +  0x01, 0xC6, 0x55, 0x01, 0x87, 0x11, 0x06, 0x03,
   1.508 +  0x43, 0x48, 0x54, 0x5F, 0x4D, 0x4D, 0x53, 0x00,
   1.509 +  0x01, 0x87, 0x07, 0x06, 0x03, 0x43, 0x48, 0x54,
   1.510 +  0x5F, 0x4D, 0x4D, 0x53, 0x00, 0x01, 0x87, 0x10,
   1.511 +  0x06, 0xAB, 0x01, 0x87, 0x08, 0x06, 0x03, 0x65,
   1.512 +  0x6D, 0x6F, 0x6D, 0x65, 0x00, 0x01, 0x87, 0x09,
   1.513 +  0x06, 0x89, 0x01, 0x01, 0x01
   1.514 +]);
   1.515 +
   1.516 +/*
   1.517 + * Test data from OMA-TS-WAP_ProvCont-V1_1-20090421-C.pdf, clause 6.1
   1.518 + */
   1.519 +let xml_header =
   1.520 +  "<?xml version=\"1.0\"?>" +
   1.521 +  "<!DOCTYPE wap-provisioningdoc PUBLIC \"-//WAPFORUM//DTD PROV 1.0//EN\" \"http://www.wapforum.org/DTD/prov.dtd\">";
   1.522 +
   1.523 +let xml_body =
   1.524 +  "<wap-provisioningdoc version=\"1.0\">" +
   1.525 +    "<characteristic type=\"PXLOGICAL\">" +
   1.526 +      "<parm name=\"PROXY-ID\" value=\"170.187.51.4\"/>" +
   1.527 +      "<parm name=\"PROXY-PW\" value=\"proxypasswd\"/>" +
   1.528 +      "<parm name=\"PPGAUTH-TYPE\" value=\"HTTP-BASIC\"/>" +
   1.529 +      "<parm name=\"NAME\" value=\"BankMainProxy\"/>" +
   1.530 +      "<parm name=\"STARTPAGE\" value=\"http://www.bank.com/startpage.wml\"/>" +
   1.531 +      "<parm name=\"PULLENABLED\" value=\"1\"/>" +
   1.532 +      "<characteristic type=\"PXAUTHINFO\">" +
   1.533 +        "<parm name=\"PXAUTH-TYPE\" value=\"HTTP-BASIC\"/>" +
   1.534 +        "<parm name=\"PXAUTH-ID\" value=\"pxusername\"/>" +
   1.535 +        "<parm name=\"PXAUTH-PW\" value=\"pxuserpasswd\"/>" +
   1.536 +      "</characteristic>" +
   1.537 +      "<characteristic type=\"PXPHYSICAL\">" +
   1.538 +        "<parm name=\"PHYSICAL-PROXY-ID\" value=\"PROXY 1\"/>" +
   1.539 +        "<parm name=\"DOMAIN\" value=\"www.bank.com/\"/>" +
   1.540 +        "<parm name=\"PXADDR\" value=\"170.187.51.3\"/>" +
   1.541 +        "<parm name=\"PXADDRTYPE\" value=\"IPV4\"/>" +
   1.542 +        "<parm name=\"PXADDR-FQDN\" value=\"proxy1.operator.com\"/>" +
   1.543 +        "<parm name=\"TO-NAPID\" value=\"INTERNET\"/>" +
   1.544 +        "<parm name=\"TO-NAPID\" value=\"NAP1\"/>" +
   1.545 +        "<characteristic type=\"PORT\">" +
   1.546 +          "<parm name=\"PORTNBR\" value=\"9203\"/>" +
   1.547 +        "</characteristic>" +
   1.548 +      "</characteristic>" +
   1.549 +    "</characteristic>" +
   1.550 +    "<characteristic type=\"NAPDEF\">" +
   1.551 +      "<parm name=\"NAPID\" value=\"NAP1\"/>" +
   1.552 +      "<parm name=\"BEARER\" value=\"GSM-CSD\"/>" +
   1.553 +      "<parm name=\"NAME\" value=\"MY ISP CSD\"/>" +
   1.554 +      "<parm name=\"NAP-ADDRESS\" value=\"+35808124002\"/>" +
   1.555 +      "<parm name=\"NAP-ADDRTYPE\" value=\"E164\"/>" +
   1.556 +      "<parm name=\"DNS-ADDR\" value=\"170.187.51.2\"/>" +
   1.557 +      "<parm name=\"CALLTYPE\" value=\"ANALOG-MODEM\"/>" +
   1.558 +      "<parm name=\"MAX-NUM-RETRY\" value=\"3\"/>" +
   1.559 +      "<parm name=\"FIRST-RETRY-TIMEOUT\" value=\"6\"/>" +
   1.560 +      "<parm name=\"REREG-THRESHOLD\" value=\"30\"/>" +
   1.561 +      "<parm name=\"T-BIT\"/>" +
   1.562 +      "<characteristic type=\"NAPAUTHINFO\">" +
   1.563 +        "<parm name=\"AUTHTYPE\" value=\"PAP\"/>" +
   1.564 +        "<parm name=\"AUTHNAME\" value=\"wwwmmmuser\"/>" +
   1.565 +        "<parm name=\"AUTHSECRET\" value=\"wwwmmmsecret\"/>" +
   1.566 +        "<parm name=\"AUTH-ENTITY\" value=\"HA\"/>" +
   1.567 +        "<parm name=\"SPI\" value=\"FEDCBA98\"/>" +
   1.568 +      "</characteristic>" +
   1.569 +      "<characteristic type=\"VALIDITY\">" +
   1.570 +        "<parm name=\"COUNTRY\" value=\"228\"/>" +
   1.571 +        "<parm name=\"NETWORK\" value=\"001\"/>" +
   1.572 +      "</characteristic>" +
   1.573 +    "</characteristic>" +
   1.574 +    "<characteristic type=\"ACCESS\">" +
   1.575 +    "</characteristic>" +
   1.576 +  "</wap-provisioningdoc>";
   1.577 +
   1.578 +let wbxml_code_page_content =
   1.579 +    "<wap-provisioningdoc>" +
   1.580 +    "<characteristic type=\"BOOTSTRAP\">" +
   1.581 +      "<parm name=\"NAME\" value=\"CHT_emome\"/>" +
   1.582 +    "</characteristic>" +
   1.583 +    "<characteristic type=\"APPLICATION\">" +
   1.584 +      "<parm name=\"APPID\" value=\"w2\"/>" +
   1.585 +      "<parm name=\"TO-PROXY\" value=\"WPROXY\"/>" +
   1.586 +      "<parm name=\"NAME\" value=\"CHT_emome\"/>" +
   1.587 +      "<characteristic type=\"RESOURCE\">" +
   1.588 +        "<parm name=\"URI\" value=\"http://wap.emome.net/\"/>" +
   1.589 +        "<parm name=\"NAME\" value=\"CHT_emome\"/>" +
   1.590 +        "<parm name=\"STARTPAGE\"/>" +
   1.591 +      "</characteristic>" +
   1.592 +    "</characteristic>" +
   1.593 +    "<characteristic type=\"APPLICATION\">" +
   1.594 +      "<parm name=\"APPID\" value=\"w4\"/>" +
   1.595 +      "<parm name=\"TO-PROXY\" value=\"MPROXY\"/>" +
   1.596 +      "<parm name=\"ADDR\" value=\"http://mms:8002\"/>" +
   1.597 +    "</characteristic>" +
   1.598 +    "<characteristic type=\"PXLOGICAL\">" +
   1.599 +      "<parm name=\"PROXY-ID\" value=\"WPROXY\"/>" +
   1.600 +      "<parm name=\"NAME\" value=\"CHT_emome\"/>" +
   1.601 +      "<parm name=\"STARTPAGE\" value=\"http://wap.emome.net/\"/>" +
   1.602 +      "<characteristic type=\"PXPHYSICAL\">" +
   1.603 +        "<parm name=\"PHYSICAL-PROXY-ID\" value=\"PROXY1\"/>" +
   1.604 +        "<parm name=\"PXADDR\" value=\"10.1.1.1\"/>" +
   1.605 +        "<parm name=\"PXADDRTYPE\" value=\"IPV4\"/>" +
   1.606 +        "<parm name=\"TO-NAPID\" value=\"CHT_emome\"/>" +
   1.607 +        "<characteristic type=\"PORT\">" +
   1.608 +          "<parm name=\"PORTNBR\" value=\"8080\"/>" +
   1.609 +        "</characteristic>" +
   1.610 +      "</characteristic>" +
   1.611 +    "</characteristic>" +
   1.612 +    "<characteristic type=\"PXLOGICAL\">" +
   1.613 +      "<parm name=\"PROXY-ID\" value=\"MPROXY\"/>" +
   1.614 +      "<parm name=\"NAME\" value=\"CHT_MMS\"/>" +
   1.615 +      "<characteristic type=\"PXPHYSICAL\">" +
   1.616 +        "<parm name=\"PHYSICAL-PROXY-ID\" value=\"PROXY2\"/>" +
   1.617 +        "<parm name=\"PXADDR\" value=\"10.1.1.1\"/>" +
   1.618 +        "<parm name=\"PXADDRTYPE\" value=\"IPV4\"/>" +
   1.619 +        "<parm name=\"TO-NAPID\" value=\"CHT_MMS\"/>" +
   1.620 +        "<characteristic type=\"PORT\">" +
   1.621 +          "<parm name=\"PORTNBR\" value=\"8080\"/>" +
   1.622 +        "</characteristic>" +
   1.623 +      "</characteristic>" +
   1.624 +    "</characteristic>" +
   1.625 +    "<characteristic type=\"NAPDEF\">" +
   1.626 +      "<parm name=\"NAPID\" value=\"CHT_emome\"/>" +
   1.627 +      "<parm name=\"NAME\" value=\"CHT_emome\"/>" +
   1.628 +      "<parm name=\"BEARER\" value=\"GSM-GPRS\"/>" +
   1.629 +      "<parm name=\"NAP-ADDRESS\" value=\"emome\"/>" +
   1.630 +      "<parm name=\"NAP-ADDRTYPE\" value=\"APN\"/>" +
   1.631 +    "</characteristic>" +
   1.632 +    "<characteristic type=\"NAPDEF\">" +
   1.633 +      "<parm name=\"NAPID\" value=\"CHT_MMS\"/>" +
   1.634 +      "<parm name=\"NAME\" value=\"CHT_MMS\"/>" +
   1.635 +      "<parm name=\"BEARER\" value=\"GSM-GPRS\"/>" +
   1.636 +      "<parm name=\"NAP-ADDRESS\" value=\"emome\"/>" +
   1.637 +      "<parm name=\"NAP-ADDRTYPE\" value=\"APN\"/>" +
   1.638 +    "</characteristic>" +
   1.639 +    "</wap-provisioningdoc>";
   1.640 +
   1.641 +/**
   1.642 + * CP in plain text
   1.643 + *
   1.644 + * Test case from OMA-TS-WAP_ProvCont-V1_1-20090421-C.pdf, clause 6.1
   1.645 + */
   1.646 +add_test(function test_cp_parse_plain_text() {
   1.647 +  test_parser(text_data_array, "text/vnd.wap.connectivity-xml", {
   1.648 +    contentType: "text/vnd.wap.connectivity-xml",
   1.649 +    content: xml_header + xml_body
   1.650 +  });
   1.651 +
   1.652 +  run_next_test();
   1.653 +});
   1.654 +
   1.655 +/**
   1.656 + * CP compressed by WBXML
   1.657 + *
   1.658 + * Test case from OMA-TS-WAP_ProvCont-V1_1-20090421-C.pdf, Appendix C
   1.659 + */
   1.660 +add_test(function test_cp_parse_wbxml() {
   1.661 +  test_parser(wbxml_data_array, "application/vnd.wap.connectivity-wbxml", {
   1.662 +    contentType: "text/vnd.wap.connectivity-xml",
   1.663 +    content: xml_body
   1.664 +  });
   1.665 +
   1.666 +  run_next_test();
   1.667 +});
   1.668 +
   1.669 +/**
   1.670 + * CP compressed by WBXML with VENDORCONFIG
   1.671 + */
   1.672 +add_test(function test_cp_parse_wbxml() {
   1.673 +  let wbxml_vendor_config_data_array = new Uint8Array([
   1.674 +    0x03, 0x0b, 0x6a, 0x05, 0x4e, 0x41, 0x50, 0x31,
   1.675 +    0x00, 0xC5, 0x46, 0x01, 0xc6, 0x57, 0x01, 0x01
   1.676 +  ]);
   1.677 +
   1.678 +  test_parser(wbxml_vendor_config_data_array, "application/vnd.wap.connectivity-wbxml", {
   1.679 +                contentType: "application/vnd.wap.connectivity-wbxml",
   1.680 +                content: wbxml_vendor_config_data_array
   1.681 +              });
   1.682 +
   1.683 +  run_next_test();
   1.684 +});
   1.685 +
   1.686 +/**
   1.687 + * CP compressed by WBXML with code page switch
   1.688 + */
   1.689 +add_test(function test_cp_parse_wbxml_code_page() {
   1.690 +  test_parser(wbxml_code_page_data_array, "application/vnd.wap.connectivity-wbxml", {
   1.691 +                contentType: "text/vnd.wap.connectivity-xml",
   1.692 +                content: wbxml_code_page_content
   1.693 +              });
   1.694 +
   1.695 +  run_next_test();
   1.696 +});
   1.697 +
   1.698 +/**
   1.699 + * HMAC test
   1.700 + */
   1.701 +add_test(function test_cp_hmac_userpin() {
   1.702 +  test_hmac(wbxml_code_page_data_array,
   1.703 +            "AA2DC41FC48AEEF3FED7351B1EE704461A8894D4",
   1.704 +            "0000",
   1.705 +            {
   1.706 +              checked: true,
   1.707 +              pass: true
   1.708 +            });
   1.709 +
   1.710 +  run_next_test();
   1.711 +});
   1.712 +
   1.713 +add_test(function test_cp_hmac_networkpin() {
   1.714 +  let wbxml_empty_data_array = new Uint8Array([
   1.715 +    0x03, 0x0b, 0x6a, 0x00, 0x45, 0x01
   1.716 +  ]);
   1.717 +
   1.718 +  test_hmac(wbxml_empty_data_array,
   1.719 +            "1AF545FE2823DC9347064450F90FF1BBF957E146",
   1.720 +            CP.Authenticator.formatImsi("466923103145252"),
   1.721 +            {
   1.722 +              checked: true,
   1.723 +              pass: true
   1.724 +            });
   1.725 +
   1.726 +  run_next_test();
   1.727 +});

mercurial