/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "gtest/gtest.h"
#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <cstddef>
#include <memory>
#include <keyhi.h>
#include <nss.h>
#include <pk11pub.h>
#include <pkcs11t.h>
#include <secmodt.h>
#include <cert.h>
#include "ScopedNSSTypes.h"
#include "cosec.h"
namespace mozilla {
// "This is the content."
const uint8_t PAYLOAD[] = {
84 ,
104 ,
105 ,
115 ,
32 ,
105 ,
115 ,
32 ,
116 ,
104 ,
101 ,
32 ,
99 ,
111 ,
110 ,
116 ,
101 ,
110 ,
116 ,
46 };
// This is a COSE signature generated with the cose rust library (see
// third-party/rust/cose). The payload is signed with the P256 key from
// pykey.py.
const uint8_t SIGNATURE[] = {
0 xd8,
0 x62,
0 x84,
0 x59,
0 x02,
0 xa3,
0 xa1,
0 x04,
0 x82,
0 x59,
0 x01,
0 x4e,
0 x30,
0 x82,
0 x01,
0 x4a,
0 x30,
0 x81,
0 xf1,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x5f,
0 x3f,
0 xae,
0 x90,
0 x49,
0 x30,
0 x2f,
0 x33,
0 x6e,
0 x95,
0 x23,
0 xa7,
0 xcb,
0 x23,
0 xd7,
0 x65,
0 x4f,
0 xea,
0 x3c,
0 xf7,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x48,
0 x00,
0 x30,
0 x45,
0 x02,
0 x20,
0 x5c,
0 x75,
0 x51,
0 x9f,
0 x13,
0 x11,
0 x50,
0 xcd,
0 x5d,
0 x8a,
0 xde,
0 x20,
0 xa3,
0 xbc,
0 x06,
0 x30,
0 x91,
0 xff,
0 xb2,
0 x73,
0 x75,
0 x5f,
0 x31,
0 x64,
0 xec,
0 xfd,
0 xcb,
0 x42,
0 x80,
0 x0a,
0 x70,
0 xe6,
0 x02,
0 x21,
0 x00,
0 xc2,
0 xe4,
0 xc1,
0 xa8,
0 xe2,
0 x89,
0 xdc,
0 xa1,
0 xbb,
0 xe7,
0 xd5,
0 x4f,
0 x5c,
0 x88,
0 xad,
0 xeb,
0 xa4,
0 x78,
0 xa1,
0 x19,
0 xbe,
0 x22,
0 x54,
0 xc8,
0 x9f,
0 xef,
0 xb8,
0 x5d,
0 xa2,
0 x40,
0 xd9,
0 x8b,
0 x59,
0 x01,
0 x4c,
0 x30,
0 x82,
0 x01,
0 x48,
0 x30,
0 x81,
0 xf0,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x43,
0 x63,
0 x59,
0 xad,
0 x04,
0 x34,
0 x56,
0 x80,
0 x43,
0 xec,
0 x90,
0 x6a,
0 xd4,
0 x10,
0 x64,
0 x7c,
0 x7f,
0 x38,
0 x32,
0 xe2,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x47,
0 x00,
0 x30,
0 x44,
0 x02,
0 x20,
0 x63,
0 x59,
0 x02,
0 x01,
0 x89,
0 xd7,
0 x3e,
0 x5b,
0 xff,
0 xd1,
0 x16,
0 x4e,
0 xe3,
0 xe2,
0 x0a,
0 xe0,
0 x4a,
0 xd8,
0 x75,
0 xaf,
0 x77,
0 x5c,
0 x93,
0 x60,
0 xba,
0 x10,
0 x1f,
0 x97,
0 xdd,
0 x27,
0 x2d,
0 x24,
0 x02,
0 x20,
0 x3d,
0 x87,
0 x0f,
0 xac,
0 x22,
0 x4d,
0 x16,
0 xd9,
0 xa1,
0 x95,
0 xbb,
0 x56,
0 xe0,
0 x21,
0 x05,
0 x93,
0 xd1,
0 x07,
0 xb5,
0 x25,
0 x3b,
0 xf4,
0 x57,
0 x20,
0 x87,
0 x13,
0 xa2,
0 xf7,
0 x78,
0 x15,
0 x30,
0 xa7,
0 xa0,
0 xf6,
0 x81,
0 x83,
0 x59,
0 x01,
0 x33,
0 xa2,
0 x01,
0 x26,
0 x04,
0 x59,
0 x01,
0 x2c,
0 x30,
0 x82,
0 x01,
0 x28,
0 x30,
0 x81,
0 xcf,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x2f,
0 xc3,
0 x5f,
0 x05,
0 x80,
0 xb4,
0 x49,
0 x45,
0 x13,
0 x92,
0 xd6,
0 x93,
0 xb7,
0 x2d,
0 x71,
0 x19,
0 xc5,
0 x8c,
0 x40,
0 x39,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x12,
0 x31,
0 x10,
0 x30,
0 x0e,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x07,
0 x65,
0 x65,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x48,
0 x00,
0 x30,
0 x45,
0 x02,
0 x20,
0 x5c,
0 x75,
0 x51,
0 x9f,
0 x13,
0 x11,
0 x50,
0 xcd,
0 x5d,
0 x8a,
0 xde,
0 x20,
0 xa3,
0 xbc,
0 x06,
0 x30,
0 x91,
0 xff,
0 xb2,
0 x73,
0 x75,
0 x5f,
0 x31,
0 x64,
0 xec,
0 xfd,
0 xcb,
0 x42,
0 x80,
0 x0a,
0 x70,
0 xe6,
0 x02,
0 x21,
0 x00,
0 xff,
0 x81,
0 xbe,
0 xa8,
0 x0d,
0 x03,
0 x36,
0 x6b,
0 x75,
0 xe2,
0 x70,
0 x6a,
0 xac,
0 x07,
0 x2e,
0 x4c,
0 xdc,
0 xf9,
0 xc5,
0 x89,
0 xc1,
0 xcf,
0 x88,
0 xc2,
0 xc8,
0 x2a,
0 x32,
0 xf5,
0 x42,
0 x0c,
0 xfa,
0 x0b,
0 xa0,
0 x58,
0 x40,
0 x1e,
0 x6e,
0 x08,
0 xdf,
0 x8f,
0 x4f,
0 xd6,
0 xab,
0 x23,
0 xae,
0 x84,
0 xaa,
0 xf3,
0 x43,
0 x35,
0 x9a,
0 x53,
0 xb9,
0 x8b,
0 xf9,
0 x81,
0 xa1,
0 xbc,
0 x1e,
0 x5c,
0 x57,
0 x5c,
0 x0a,
0 x20,
0 x37,
0 xf4,
0 x3d,
0 x11,
0 x08,
0 xa0,
0 x97,
0 x4b,
0 x68,
0 xa4,
0 x0f,
0 x80,
0 xe9,
0 x96,
0 x30,
0 x04,
0 x24,
0 x0e,
0 x81,
0 x3d,
0 x2a,
0 x8a,
0 x64,
0 x40,
0 x61,
0 x5a,
0 x19,
0 x00,
0 xff,
0 x74,
0 x40,
0 x71,
0 x82,
0 x65,
0 xe9};
// This is a COSE signature generated with the cose rust library (see
// third-party/rust/cose). The payload is signed twice; with the P256 and the
// RSA key from pykey.py.
const uint8_t SIGNATURE_ES256_PS256[] = {
0 xd8,
0 x62,
0 x84,
0 x59,
0 x08,
0 x52,
0 xa1,
0 x04,
0 x84,
0 x59,
0 x01,
0 x4e,
0 x30,
0 x82,
0 x01,
0 x4a,
0 x30,
0 x81,
0 xf1,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x5f,
0 x3f,
0 xae,
0 x90,
0 x49,
0 x30,
0 x2f,
0 x33,
0 x6e,
0 x95,
0 x23,
0 xa7,
0 xcb,
0 x23,
0 xd7,
0 x65,
0 x4f,
0 xea,
0 x3c,
0 xf7,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x48,
0 x00,
0 x30,
0 x45,
0 x02,
0 x20,
0 x5c,
0 x75,
0 x51,
0 x9f,
0 x13,
0 x11,
0 x50,
0 xcd,
0 x5d,
0 x8a,
0 xde,
0 x20,
0 xa3,
0 xbc,
0 x06,
0 x30,
0 x91,
0 xff,
0 xb2,
0 x73,
0 x75,
0 x5f,
0 x31,
0 x64,
0 xec,
0 xfd,
0 xcb,
0 x42,
0 x80,
0 x0a,
0 x70,
0 xe6,
0 x02,
0 x21,
0 x00,
0 xc2,
0 xe4,
0 xc1,
0 xa8,
0 xe2,
0 x89,
0 xdc,
0 xa1,
0 xbb,
0 xe7,
0 xd5,
0 x4f,
0 x5c,
0 x88,
0 xad,
0 xeb,
0 xa4,
0 x78,
0 xa1,
0 x19,
0 xbe,
0 x22,
0 x54,
0 xc8,
0 x9f,
0 xef,
0 xb8,
0 x5d,
0 xa2,
0 x40,
0 xd9,
0 x8b,
0 x59,
0 x01,
0 x4c,
0 x30,
0 x82,
0 x01,
0 x48,
0 x30,
0 x81,
0 xf0,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x43,
0 x63,
0 x59,
0 xad,
0 x04,
0 x34,
0 x56,
0 x80,
0 x43,
0 xec,
0 x90,
0 x6a,
0 xd4,
0 x10,
0 x64,
0 x7c,
0 x7f,
0 x38,
0 x32,
0 xe2,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x47,
0 x00,
0 x30,
0 x44,
0 x02,
0 x20,
0 x63,
0 x59,
0 x02,
0 x01,
0 x89,
0 xd7,
0 x3e,
0 x5b,
0 xff,
0 xd1,
0 x16,
0 x4e,
0 xe3,
0 xe2,
0 x0a,
0 xe0,
0 x4a,
0 xd8,
0 x75,
0 xaf,
0 x77,
0 x5c,
0 x93,
0 x60,
0 xba,
0 x10,
0 x1f,
0 x97,
0 xdd,
0 x27,
0 x2d,
0 x24,
0 x02,
0 x20,
0 x3d,
0 x87,
0 x0f,
0 xac,
0 x22,
0 x4d,
0 x16,
0 xd9,
0 xa1,
0 x95,
0 xbb,
0 x56,
0 xe0,
0 x21,
0 x05,
0 x93,
0 xd1,
0 x07,
0 xb5,
0 x25,
0 x3b,
0 xf4,
0 x57,
0 x20,
0 x87,
0 x13,
0 xa2,
0 xf7,
0 x78,
0 x15,
0 x30,
0 xa7,
0 x59,
0 x02,
0 xd5,
0 x30,
0 x82,
0 x02,
0 xd1,
0 x30,
0 x82,
0 x01,
0 xbb,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x29,
0 x6c,
0 x1a,
0 xd8,
0 x20,
0 xcd,
0 x74,
0 x6d,
0 x4b,
0 x00,
0 xf3,
0 x16,
0 x88,
0 xd9,
0 x66,
0 x87,
0 x5f,
0 x28,
0 x56,
0 x6a,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x82,
0 x01,
0 x22,
0 x30,
0 x0d,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x01,
0 x05,
0 x00,
0 x03,
0 x82,
0 x01,
0 x0f,
0 x00,
0 x30,
0 x82,
0 x01,
0 x0a,
0 x02,
0 x82,
0 x01,
0 x01,
0 x00,
0 xba,
0 x88,
0 x51,
0 xa8,
0 x44,
0 x8e,
0 x16,
0 xd6,
0 x41,
0 xfd,
0 x6e,
0 xb6,
0 x88,
0 x06,
0 x36,
0 x10,
0 x3d,
0 x3c,
0 x13,
0 xd9,
0 xea,
0 xe4,
0 x35,
0 x4a,
0 xb4,
0 xec,
0 xf5,
0 x68,
0 x57,
0 x6c,
0 x24,
0 x7b,
0 xc1,
0 xc7,
0 x25,
0 xa8,
0 xe0,
0 xd8,
0 x1f,
0 xbd,
0 xb1,
0 x9c,
0 x06,
0 x9b,
0 x6e,
0 x1a,
0 x86,
0 xf2,
0 x6b,
0 xe2,
0 xaf,
0 x5a,
0 x75,
0 x6b,
0 x6a,
0 x64,
0 x71,
0 x08,
0 x7a,
0 xa5,
0 x5a,
0 xa7,
0 x45,
0 x87,
0 xf7,
0 x1c,
0 xd5,
0 x24,
0 x9c,
0 x02,
0 x7e,
0 xcd,
0 x43,
0 xfc,
0 x1e,
0 x69,
0 xd0,
0 x38,
0 x20,
0 x29,
0 x93,
0 xab,
0 x20,
0 xc3,
0 x49,
0 xe4,
0 xdb,
0 xb9,
0 x4c,
0 xc2,
0 x6b,
0 x6c,
0 x0e,
0 xed,
0 x15,
0 x82,
0 x0f,
0 xf1,
0 x7e,
0 xad,
0 x69,
0 x1a,
0 xb1,
0 xd3,
0 x02,
0 x3a,
0 x8b,
0 x2a,
0 x41,
0 xee,
0 xa7,
0 x70,
0 xe0,
0 x0f,
0 x0d,
0 x8d,
0 xfd,
0 x66,
0 x0b,
0 x2b,
0 xb0,
0 x24,
0 x92,
0 xa4,
0 x7d,
0 xb9,
0 x88,
0 x61,
0 x79,
0 x90,
0 xb1,
0 x57,
0 x90,
0 x3d,
0 xd2,
0 x3b,
0 xc5,
0 xe0,
0 xb8,
0 x48,
0 x1f,
0 xa8,
0 x37,
0 xd3,
0 x88,
0 x43,
0 xef,
0 x27,
0 x16,
0 xd8,
0 x55,
0 xb7,
0 x66,
0 x5a,
0 xaa,
0 x7e,
0 x02,
0 x90,
0 x2f,
0 x3a,
0 x7b,
0 x10,
0 x80,
0 x06,
0 x24,
0 xcc,
0 x1c,
0 x6c,
0 x97,
0 xad,
0 x96,
0 x61,
0 x5b,
0 xb7,
0 xe2,
0 x96,
0 x12,
0 xc0,
0 x75,
0 x31,
0 xa3,
0 x0c,
0 x91,
0 xdd,
0 xb4,
0 xca,
0 xf7,
0 xfc,
0 xad,
0 x1d,
0 x25,
0 xd3,
0 x09,
0 xef,
0 xb9,
0 x17,
0 x0e,
0 xa7,
0 x68,
0 xe1,
0 xb3,
0 x7b,
0 x2f,
0 x22,
0 x6f,
0 x69,
0 xe3,
0 xb4,
0 x8a,
0 x95,
0 x61,
0 x1d,
0 xee,
0 x26,
0 xd6,
0 x25,
0 x9d,
0 xab,
0 x91,
0 x08,
0 x4e,
0 x36,
0 xcb,
0 x1c,
0 x24,
0 x04,
0 x2c,
0 xbf,
0 x16,
0 x8b,
0 x2f,
0 xe5,
0 xf1,
0 x8f,
0 x99,
0 x17,
0 x31,
0 xb8,
0 xb3,
0 xfe,
0 x49,
0 x23,
0 xfa,
0 x72,
0 x51,
0 xc4,
0 x31,
0 xd5,
0 x03,
0 xac,
0 xda,
0 x18,
0 x0a,
0 x35,
0 xed,
0 x8d,
0 x02,
0 x03,
0 x01,
0 x00,
0 x01,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x03,
0 x82,
0 x01,
0 x01,
0 x00,
0 x23,
0 x2f,
0 x9f,
0 x72,
0 xeb,
0 x70,
0 x6d,
0 x9e,
0 x3e,
0 x9f,
0 xd7,
0 x9c,
0 xd9,
0 x19,
0 x7c,
0 x99,
0 x07,
0 xc5,
0 x5c,
0 x9d,
0 xf5,
0 x66,
0 x9f,
0 x28,
0 x8d,
0 xfe,
0 x0e,
0 x3f,
0 x38,
0 x75,
0 xed,
0 xee,
0 x4e,
0 x3f,
0 xf6,
0 x6e,
0 x35,
0 xe0,
0 x95,
0 x3f,
0 x08,
0 x4a,
0 x71,
0 x5a,
0 xf2,
0 x4f,
0 xc9,
0 x96,
0 x61,
0 x8d,
0 x45,
0 x4b,
0 x97,
0 x85,
0 xff,
0 xb0,
0 xe3,
0 xbb,
0 xb5,
0 xd7,
0 x7e,
0 xfb,
0 xd2,
0 xfc,
0 xec,
0 xfe,
0 x42,
0 x9f,
0 x4e,
0 x7b,
0 xbf,
0 x97,
0 xbb,
0 xb4,
0 x3a,
0 x93,
0 x0b,
0 x13,
0 x61,
0 x90,
0 x0c,
0 x3a,
0 xce,
0 xf7,
0 x8e,
0 xef,
0 x80,
0 xf5,
0 x4a,
0 x92,
0 xc5,
0 xa5,
0 x03,
0 x78,
0 xc2,
0 xee,
0 xb8,
0 x66,
0 x60,
0 x6b,
0 x76,
0 x4f,
0 x32,
0 x5a,
0 x1a,
0 xa2,
0 x4b,
0 x7e,
0 x2b,
0 xa6,
0 x1a,
0 x89,
0 x01,
0 xe3,
0 xbb,
0 x55,
0 x13,
0 x7c,
0 x4c,
0 xf4,
0 x6a,
0 x99,
0 x94,
0 xd1,
0 xa0,
0 x84,
0 x1c,
0 x1a,
0 xc2,
0 x7b,
0 xb4,
0 xa0,
0 xb0,
0 x3b,
0 xdc,
0 x5a,
0 x7b,
0 xc7,
0 xe0,
0 x44,
0 xb2,
0 x1f,
0 x46,
0 xd5,
0 x8b,
0 x39,
0 x8b,
0 xdc,
0 x9e,
0 xce,
0 xa8,
0 x7f,
0 x85,
0 x1d,
0 x4b,
0 x63,
0 x06,
0 x1e,
0 x8e,
0 xe5,
0 xe5,
0 x99,
0 xd9,
0 xf7,
0 x4d,
0 x89,
0 x0b,
0 x1d,
0 x5c,
0 x27,
0 x33,
0 x66,
0 x21,
0 xcf,
0 x9a,
0 xbd,
0 x98,
0 x68,
0 x23,
0 x3a,
0 x66,
0 x9d,
0 xd4,
0 x46,
0 xed,
0 x63,
0 x58,
0 xf3,
0 x42,
0 xe4,
0 x1d,
0 xe2,
0 x47,
0 x65,
0 x13,
0 x8d,
0 xd4,
0 x1f,
0 x4b,
0 x7e,
0 xde,
0 x11,
0 x56,
0 xf8,
0 x6d,
0 x01,
0 x0c,
0 x99,
0 xbd,
0 x8d,
0 xca,
0 x8a,
0 x2e,
0 xe3,
0 x8a,
0 x9c,
0 x3d,
0 x83,
0 x8d,
0 x69,
0 x62,
0 x8d,
0 x05,
0 xea,
0 xb7,
0 xf5,
0 xa3,
0 x4b,
0 xfc,
0 x96,
0 xcf,
0 x18,
0 x21,
0 x0a,
0 xc7,
0 xf3,
0 x23,
0 x7e,
0 x1c,
0 xab,
0 xe2,
0 xa2,
0 xd1,
0 x83,
0 xc4,
0 x25,
0 x93,
0 x37,
0 x80,
0 xca,
0 xda,
0 xf0,
0 xef,
0 x7d,
0 x94,
0 xb5,
0 x59,
0 x02,
0 xd4,
0 x30,
0 x82,
0 x02,
0 xd0,
0 x30,
0 x82,
0 x01,
0 xba,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x07,
0 x10,
0 xaf,
0 xc4,
0 x1a,
0 x3a,
0 x56,
0 x4f,
0 xd8,
0 xc2,
0 xcc,
0 x46,
0 xd7,
0 x5b,
0 xdf,
0 x1c,
0 x4e,
0 x2f,
0 x49,
0 x3a,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x12,
0 x31,
0 x10,
0 x30,
0 x0e,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x07,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x82,
0 x01,
0 x22,
0 x30,
0 x0d,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x01,
0 x05,
0 x00,
0 x03,
0 x82,
0 x01,
0 x0f,
0 x00,
0 x30,
0 x82,
0 x01,
0 x0a,
0 x02,
0 x82,
0 x01,
0 x01,
0 x00,
0 xba,
0 x88,
0 x51,
0 xa8,
0 x44,
0 x8e,
0 x16,
0 xd6,
0 x41,
0 xfd,
0 x6e,
0 xb6,
0 x88,
0 x06,
0 x36,
0 x10,
0 x3d,
0 x3c,
0 x13,
0 xd9,
0 xea,
0 xe4,
0 x35,
0 x4a,
0 xb4,
0 xec,
0 xf5,
0 x68,
0 x57,
0 x6c,
0 x24,
0 x7b,
0 xc1,
0 xc7,
0 x25,
0 xa8,
0 xe0,
0 xd8,
0 x1f,
0 xbd,
0 xb1,
0 x9c,
0 x06,
0 x9b,
0 x6e,
0 x1a,
0 x86,
0 xf2,
0 x6b,
0 xe2,
0 xaf,
0 x5a,
0 x75,
0 x6b,
0 x6a,
0 x64,
0 x71,
0 x08,
0 x7a,
0 xa5,
0 x5a,
0 xa7,
0 x45,
0 x87,
0 xf7,
0 x1c,
0 xd5,
0 x24,
0 x9c,
0 x02,
0 x7e,
0 xcd,
0 x43,
0 xfc,
0 x1e,
0 x69,
0 xd0,
0 x38,
0 x20,
0 x29,
0 x93,
0 xab,
0 x20,
0 xc3,
0 x49,
0 xe4,
0 xdb,
0 xb9,
0 x4c,
0 xc2,
0 x6b,
0 x6c,
0 x0e,
0 xed,
0 x15,
0 x82,
0 x0f,
0 xf1,
0 x7e,
0 xad,
0 x69,
0 x1a,
0 xb1,
0 xd3,
0 x02,
0 x3a,
0 x8b,
0 x2a,
0 x41,
0 xee,
0 xa7,
0 x70,
0 xe0,
0 x0f,
0 x0d,
0 x8d,
0 xfd,
0 x66,
0 x0b,
0 x2b,
0 xb0,
0 x24,
0 x92,
0 xa4,
0 x7d,
0 xb9,
0 x88,
0 x61,
0 x79,
0 x90,
0 xb1,
0 x57,
0 x90,
0 x3d,
0 xd2,
0 x3b,
0 xc5,
0 xe0,
0 xb8,
0 x48,
0 x1f,
0 xa8,
0 x37,
0 xd3,
0 x88,
0 x43,
0 xef,
0 x27,
0 x16,
0 xd8,
0 x55,
0 xb7,
0 x66,
0 x5a,
0 xaa,
0 x7e,
0 x02,
0 x90,
0 x2f,
0 x3a,
0 x7b,
0 x10,
0 x80,
0 x06,
0 x24,
0 xcc,
0 x1c,
0 x6c,
0 x97,
0 xad,
0 x96,
0 x61,
0 x5b,
0 xb7,
0 xe2,
0 x96,
0 x12,
0 xc0,
0 x75,
0 x31,
0 xa3,
0 x0c,
0 x91,
0 xdd,
0 xb4,
0 xca,
0 xf7,
0 xfc,
0 xad,
0 x1d,
0 x25,
0 xd3,
0 x09,
0 xef,
0 xb9,
0 x17,
0 x0e,
0 xa7,
0 x68,
0 xe1,
0 xb3,
0 x7b,
0 x2f,
0 x22,
0 x6f,
0 x69,
0 xe3,
0 xb4,
0 x8a,
0 x95,
0 x61,
0 x1d,
0 xee,
0 x26,
0 xd6,
0 x25,
0 x9d,
0 xab,
0 x91,
0 x08,
0 x4e,
0 x36,
0 xcb,
0 x1c,
0 x24,
0 x04,
0 x2c,
0 xbf,
0 x16,
0 x8b,
0 x2f,
0 xe5,
0 xf1,
0 x8f,
0 x99,
0 x17,
0 x31,
0 xb8,
0 xb3,
0 xfe,
0 x49,
0 x23,
0 xfa,
0 x72,
0 x51,
0 xc4,
0 x31,
0 xd5,
0 x03,
0 xac,
0 xda,
0 x18,
0 x0a,
0 x35,
0 xed,
0 x8d,
0 x02,
0 x03,
0 x01,
0 x00,
0 x01,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x03,
0 x82,
0 x01,
0 x01,
0 x00,
0 x5e,
0 xba,
0 x69,
0 x55,
0 x9f,
0 xf8,
0 xeb,
0 x16,
0 x21,
0 x98,
0 xde,
0 xb7,
0 x31,
0 x3e,
0 x66,
0 xe1,
0 x3b,
0 x0c,
0 x29,
0 xf7,
0 x48,
0 x73,
0 x05,
0 xd9,
0 xce,
0 x5e,
0 x4c,
0 xbe,
0 x03,
0 xc4,
0 x51,
0 xd6,
0 x21,
0 x92,
0 x40,
0 x38,
0 xaa,
0 x5b,
0 x28,
0 xb5,
0 xa1,
0 x10,
0 x52,
0 x57,
0 xff,
0 x91,
0 x54,
0 x82,
0 x86,
0 x9e,
0 x74,
0 xd5,
0 x3d,
0 x82,
0 x29,
0 xee,
0 xd1,
0 xcf,
0 x93,
0 xb1,
0 x24,
0 x76,
0 xbb,
0 x95,
0 x41,
0 x06,
0 x7e,
0 x40,
0 x9b,
0 xb4,
0 xab,
0 x44,
0 x34,
0 x10,
0 x8f,
0 xb1,
0 x51,
0 x6f,
0 xc0,
0 x89,
0 xd1,
0 xa3,
0 xc4,
0 x9f,
0 xb3,
0 x48,
0 xe1,
0 xcd,
0 x73,
0 xad,
0 xff,
0 x42,
0 x5f,
0 x76,
0 x05,
0 x60,
0 xc5,
0 xe0,
0 x45,
0 x79,
0 x18,
0 xa1,
0 x19,
0 xb8,
0 xa7,
0 x3a,
0 x64,
0 xb3,
0 x19,
0 xba,
0 x14,
0 xa1,
0 xb5,
0 xdc,
0 x32,
0 xec,
0 x09,
0 x39,
0 x58,
0 x54,
0 x5b,
0 x04,
0 xdc,
0 x1b,
0 x66,
0 x0d,
0 x1d,
0 x0d,
0 xce,
0 x7f,
0 xfa,
0 x24,
0 x52,
0 x6a,
0 xad,
0 xe2,
0 xc8,
0 x30,
0 xaf,
0 xf2,
0 xaf,
0 x63,
0 xc5,
0 xe2,
0 xbf,
0 xe2,
0 x20,
0 x1b,
0 x9e,
0 xf9,
0 x3d,
0 xbc,
0 xfb,
0 x04,
0 x8e,
0 xda,
0 x7a,
0 x1a,
0 x5d,
0 xd3,
0 x13,
0 xd7,
0 x00,
0 x8e,
0 x9b,
0 x5d,
0 x85,
0 x51,
0 xda,
0 xd3,
0 x91,
0 x25,
0 xf5,
0 x67,
0 x85,
0 x3e,
0 x25,
0 x89,
0 x5e,
0 xcb,
0 x89,
0 x8a,
0 xec,
0 x8a,
0 xde,
0 x8b,
0 xf4,
0 x33,
0 x5f,
0 x76,
0 xdb,
0 x3d,
0 xfc,
0 x6a,
0 x05,
0 x21,
0 x43,
0 xb2,
0 x41,
0 xd8,
0 x33,
0 x8d,
0 xfd,
0 x05,
0 x5c,
0 x22,
0 x0a,
0 xf6,
0 x90,
0 x65,
0 x9c,
0 x4f,
0 x8c,
0 x44,
0 x9f,
0 x2d,
0 xca,
0 xf3,
0 x49,
0 x9c,
0 x3a,
0 x14,
0 x88,
0 xab,
0 xe4,
0 xce,
0 xb7,
0 xbc,
0 x95,
0 x22,
0 x2e,
0 xb1,
0 x82,
0 x4c,
0 xbf,
0 x83,
0 x3e,
0 x49,
0 x72,
0 x03,
0 x2a,
0 x68,
0 xe7,
0 x2d,
0 xe5,
0 x2d,
0 x4b,
0 x61,
0 xb0,
0 x8d,
0 x0d,
0 x0c,
0 x87,
0 xc6,
0 x5c,
0 x51,
0 xa0,
0 xf6,
0 x82,
0 x83,
0 x59,
0 x01,
0 x33,
0 xa2,
0 x01,
0 x26,
0 x04,
0 x59,
0 x01,
0 x2c,
0 x30,
0 x82,
0 x01,
0 x28,
0 x30,
0 x81,
0 xcf,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x2f,
0 xc3,
0 x5f,
0 x05,
0 x80,
0 xb4,
0 x49,
0 x45,
0 x13,
0 x92,
0 xd6,
0 x93,
0 xb7,
0 x2d,
0 x71,
0 x19,
0 xc5,
0 x8c,
0 x40,
0 x39,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x12,
0 x31,
0 x10,
0 x30,
0 x0e,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x07,
0 x65,
0 x65,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x48,
0 x00,
0 x30,
0 x45,
0 x02,
0 x20,
0 x5c,
0 x75,
0 x51,
0 x9f,
0 x13,
0 x11,
0 x50,
0 xcd,
0 x5d,
0 x8a,
0 xde,
0 x20,
0 xa3,
0 xbc,
0 x06,
0 x30,
0 x91,
0 xff,
0 xb2,
0 x73,
0 x75,
0 x5f,
0 x31,
0 x64,
0 xec,
0 xfd,
0 xcb,
0 x42,
0 x80,
0 x0a,
0 x70,
0 xe6,
0 x02,
0 x21,
0 x00,
0 xff,
0 x81,
0 xbe,
0 xa8,
0 x0d,
0 x03,
0 x36,
0 x6b,
0 x75,
0 xe2,
0 x70,
0 x6a,
0 xac,
0 x07,
0 x2e,
0 x4c,
0 xdc,
0 xf9,
0 xc5,
0 x89,
0 xc1,
0 xcf,
0 x88,
0 xc2,
0 xc8,
0 x2a,
0 x32,
0 xf5,
0 x42,
0 x0c,
0 xfa,
0 x0b,
0 xa0,
0 x58,
0 x40,
0 xa3,
0 xfb,
0 x49,
0 xe6,
0 x45,
0 x29,
0 x64,
0 x76,
0 xeb,
0 x9d,
0 xbd,
0 xf5,
0 x38,
0 x56,
0 xbe,
0 x6e,
0 x31,
0 x57,
0 x73,
0 xc1,
0 x2d,
0 x3e,
0 xac,
0 xee,
0 xba,
0 x55,
0 x8e,
0 x37,
0 xd4,
0 xea,
0 x80,
0 x25,
0 x31,
0 x99,
0 x9f,
0 x4a,
0 xb0,
0 xf9,
0 xd8,
0 xb0,
0 xed,
0 x74,
0 xfc,
0 x8c,
0 x02,
0 xf0,
0 x9f,
0 x95,
0 xf1,
0 xaa,
0 x71,
0 xcc,
0 xd2,
0 xe7,
0 x1a,
0 x6d,
0 xd4,
0 xed,
0 xff,
0 xf2,
0 x78,
0 x09,
0 x83,
0 x7e,
0 x83,
0 x59,
0 x02,
0 xbb,
0 xa2,
0 x01,
0 x38,
0 x24,
0 x04,
0 x59,
0 x02,
0 xb3,
0 x30,
0 x82,
0 x02,
0 xaf,
0 x30,
0 x82,
0 x01,
0 x99,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x07,
0 x1c,
0 x3b,
0 x71,
0 x08,
0 xbe,
0 xd7,
0 x9f,
0 xfd,
0 xaf,
0 x26,
0 xb6,
0 x08,
0 xa3,
0 x99,
0 x06,
0 x77,
0 x69,
0 x32,
0 x7e,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x30,
0 x12,
0 x31,
0 x10,
0 x30,
0 x0e,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x07,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x11,
0 x31,
0 x0f,
0 x30,
0 x0d,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x06,
0 x65,
0 x65,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x82,
0 x01,
0 x22,
0 x30,
0 x0d,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x01,
0 x05,
0 x00,
0 x03,
0 x82,
0 x01,
0 x0f,
0 x00,
0 x30,
0 x82,
0 x01,
0 x0a,
0 x02,
0 x82,
0 x01,
0 x01,
0 x00,
0 xba,
0 x88,
0 x51,
0 xa8,
0 x44,
0 x8e,
0 x16,
0 xd6,
0 x41,
0 xfd,
0 x6e,
0 xb6,
0 x88,
0 x06,
0 x36,
0 x10,
0 x3d,
0 x3c,
0 x13,
0 xd9,
0 xea,
0 xe4,
0 x35,
0 x4a,
0 xb4,
0 xec,
0 xf5,
0 x68,
0 x57,
0 x6c,
0 x24,
0 x7b,
0 xc1,
0 xc7,
0 x25,
0 xa8,
0 xe0,
0 xd8,
0 x1f,
0 xbd,
0 xb1,
0 x9c,
0 x06,
0 x9b,
0 x6e,
0 x1a,
0 x86,
0 xf2,
0 x6b,
0 xe2,
0 xaf,
0 x5a,
0 x75,
0 x6b,
0 x6a,
0 x64,
0 x71,
0 x08,
0 x7a,
0 xa5,
0 x5a,
0 xa7,
0 x45,
0 x87,
0 xf7,
0 x1c,
0 xd5,
0 x24,
0 x9c,
0 x02,
0 x7e,
0 xcd,
0 x43,
0 xfc,
0 x1e,
0 x69,
0 xd0,
0 x38,
0 x20,
0 x29,
0 x93,
0 xab,
0 x20,
0 xc3,
0 x49,
0 xe4,
0 xdb,
0 xb9,
0 x4c,
0 xc2,
0 x6b,
0 x6c,
0 x0e,
0 xed,
0 x15,
0 x82,
0 x0f,
0 xf1,
0 x7e,
0 xad,
0 x69,
0 x1a,
0 xb1,
0 xd3,
0 x02,
0 x3a,
0 x8b,
0 x2a,
0 x41,
0 xee,
0 xa7,
0 x70,
0 xe0,
0 x0f,
0 x0d,
0 x8d,
0 xfd,
0 x66,
0 x0b,
0 x2b,
0 xb0,
0 x24,
0 x92,
0 xa4,
0 x7d,
0 xb9,
0 x88,
0 x61,
0 x79,
0 x90,
0 xb1,
0 x57,
0 x90,
0 x3d,
0 xd2,
0 x3b,
0 xc5,
0 xe0,
0 xb8,
0 x48,
0 x1f,
0 xa8,
0 x37,
0 xd3,
0 x88,
0 x43,
0 xef,
0 x27,
0 x16,
0 xd8,
0 x55,
0 xb7,
0 x66,
0 x5a,
0 xaa,
0 x7e,
0 x02,
0 x90,
0 x2f,
0 x3a,
0 x7b,
0 x10,
0 x80,
0 x06,
0 x24,
0 xcc,
0 x1c,
0 x6c,
0 x97,
0 xad,
0 x96,
0 x61,
0 x5b,
0 xb7,
0 xe2,
0 x96,
0 x12,
0 xc0,
0 x75,
0 x31,
0 xa3,
0 x0c,
0 x91,
0 xdd,
0 xb4,
0 xca,
0 xf7,
0 xfc,
0 xad,
0 x1d,
0 x25,
0 xd3,
0 x09,
0 xef,
0 xb9,
0 x17,
0 x0e,
0 xa7,
0 x68,
0 xe1,
0 xb3,
0 x7b,
0 x2f,
0 x22,
0 x6f,
0 x69,
0 xe3,
0 xb4,
0 x8a,
0 x95,
0 x61,
0 x1d,
0 xee,
0 x26,
0 xd6,
0 x25,
0 x9d,
0 xab,
0 x91,
0 x08,
0 x4e,
0 x36,
0 xcb,
0 x1c,
0 x24,
0 x04,
0 x2c,
0 xbf,
0 x16,
0 x8b,
0 x2f,
0 xe5,
0 xf1,
0 x8f,
0 x99,
0 x17,
0 x31,
0 xb8,
0 xb3,
0 xfe,
0 x49,
0 x23,
0 xfa,
0 x72,
0 x51,
0 xc4,
0 x31,
0 xd5,
0 x03,
0 xac,
0 xda,
0 x18,
0 x0a,
0 x35,
0 xed,
0 x8d,
0 x02,
0 x03,
0 x01,
0 x00,
0 x01,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x03,
0 x82,
0 x01,
0 x01,
0 x00,
0 x44,
0 x92,
0 xbb,
0 x8e,
0 x83,
0 x58,
0 x56,
0 x2e,
0 x7a,
0 x86,
0 xfa,
0 x1d,
0 x77,
0 x50,
0 x3f,
0 x45,
0 x8d,
0 x90,
0 xc4,
0 x62,
0 x27,
0 x21,
0 x96,
0 x5a,
0 xef,
0 x51,
0 x78,
0 xd7,
0 x7d,
0 x0d,
0 x02,
0 x2d,
0 x5a,
0 x0e,
0 x3c,
0 x82,
0 x6f,
0 x1d,
0 x92,
0 x87,
0 xd5,
0 x1a,
0 x44,
0 xae,
0 xa7,
0 x92,
0 xd1,
0 x8b,
0 xfa,
0 x16,
0 x53,
0 x7f,
0 xa3,
0 x22,
0 x96,
0 x1a,
0 x51,
0 x8c,
0 xeb,
0 xa1,
0 xe6,
0 xf6,
0 x37,
0 x11,
0 xfe,
0 x7d,
0 x53,
0 x3f,
0 xae,
0 xf0,
0 x6b,
0 xb9,
0 xb1,
0 x7a,
0 x73,
0 x07,
0 x14,
0 xcf,
0 x04,
0 x05,
0 x93,
0 x9e,
0 xe3,
0 xd2,
0 x4d,
0 x9d,
0 x6d,
0 x35,
0 x68,
0 xf9,
0 x36,
0 xe5,
0 x10,
0 x0a,
0 x36,
0 xd9,
0 x48,
0 xb0,
0 x83,
0 xd0,
0 xb9,
0 x58,
0 x74,
0 x53,
0 xb3,
0 xbc,
0 x99,
0 xab,
0 xe1,
0 x3e,
0 xd5,
0 x01,
0 x8e,
0 xcf,
0 x3a,
0 x69,
0 x93,
0 x9e,
0 xa7,
0 x88,
0 xd4,
0 xad,
0 x95,
0 xf9,
0 x2a,
0 xb4,
0 x7f,
0 x95,
0 x97,
0 x86,
0 x50,
0 x38,
0 xb1,
0 x04,
0 x0a,
0 xe4,
0 x7a,
0 xd5,
0 x2d,
0 x6c,
0 xde,
0 x3e,
0 x1a,
0 x47,
0 x17,
0 x88,
0 x63,
0 x20,
0 x9d,
0 x21,
0 x3e,
0 x0c,
0 x6f,
0 xfd,
0 x20,
0 x54,
0 xd0,
0 x67,
0 xd2,
0 x6b,
0 x06,
0 xfe,
0 x60,
0 x13,
0 x42,
0 x3d,
0 xb7,
0 xca,
0 xcb,
0 xab,
0 x7b,
0 x5f,
0 x5d,
0 x01,
0 x56,
0 xd3,
0 x99,
0 x80,
0 x0f,
0 xde,
0 x7f,
0 x3a,
0 x61,
0 x9c,
0 xd3,
0 x6b,
0 x5e,
0 xfe,
0 xb5,
0 xfc,
0 x39,
0 x8b,
0 x8e,
0 xf0,
0 x8c,
0 x8b,
0 x65,
0 x46,
0 x45,
0 xff,
0 x47,
0 x8f,
0 xd4,
0 xdd,
0 xae,
0 xc9,
0 x72,
0 xc7,
0 x7f,
0 x28,
0 x86,
0 xf1,
0 xf7,
0 x6e,
0 xcb,
0 x86,
0 x03,
0 xeb,
0 x0c,
0 x46,
0 xe5,
0 xa0,
0 x6b,
0 xef,
0 xd4,
0 x5e,
0 xa4,
0 x0f,
0 x53,
0 xe1,
0 xbc,
0 xb4,
0 xc9,
0 x37,
0 x0e,
0 x75,
0 xdd,
0 x93,
0 xe8,
0 x0f,
0 x18,
0 x0a,
0 x02,
0 x83,
0 x17,
0 x74,
0 xbb,
0 x1a,
0 x42,
0 x5b,
0 x63,
0 x2c,
0 x80,
0 x80,
0 xa6,
0 x84,
0 xa0,
0 x59,
0 x01,
0 x00,
0 x51,
0 xf4,
0 xe6,
0 x1c,
0 x18,
0 x7b,
0 x28,
0 xa0,
0 x1f,
0 x63,
0 xbf,
0 xa5,
0 xbd,
0 x89,
0 x9f,
0 xd9,
0 x30,
0 x46,
0 x4b,
0 x34,
0 x9b,
0 x9d,
0 x0f,
0 xb0,
0 x33,
0 x11,
0 xf8,
0 xaa,
0 x84,
0 x4e,
0 xb2,
0 xca,
0 x29,
0 x83,
0 x54,
0 x28,
0 x99,
0 x2a,
0 x43,
0 x7f,
0 xe0,
0 xe6,
0 xd8,
0 xdc,
0 xd7,
0 xf4,
0 xb3,
0 xd7,
0 xf7,
0 x39,
0 xd5,
0 xdc,
0 xde,
0 xdc,
0 x23,
0 x78,
0 xd7,
0 x90,
0 xc0,
0 x52,
0 xf5,
0 xd2,
0 x14,
0 x6f,
0 xf9,
0 x24,
0 x48,
0 xc8,
0 x75,
0 x4a,
0 x9a,
0 x4c,
0 x61,
0 x2f,
0 x96,
0 x4e,
0 xc8,
0 x02,
0 x95,
0 x72,
0 xef,
0 xbc,
0 x91,
0 xae,
0 xf8,
0 x23,
0 xfb,
0 xba,
0 x9f,
0 xfd,
0 xe0,
0 x1a,
0 x8e,
0 xa9,
0 x03,
0 x16,
0 x76,
0 xf4,
0 xdb,
0 x81,
0 x5a,
0 x69,
0 xeb,
0 xf5,
0 x55,
0 xd7,
0 x68,
0 x28,
0 xe4,
0 xce,
0 xde,
0 x1b,
0 xb4,
0 x90,
0 xac,
0 x97,
0 x07,
0 x15,
0 xe0,
0 xce,
0 x5f,
0 x3f,
0 x89,
0 xaf,
0 xc1,
0 xb8,
0 x46,
0 x5e,
0 x87,
0 xa1,
0 x8d,
0 xa7,
0 x44,
0 x09,
0 x02,
0 x4e,
0 xbe,
0 x6b,
0 xfb,
0 xab,
0 xeb,
0 x19,
0 x62,
0 x9e,
0 xb0,
0 xef,
0 x0a,
0 x6b,
0 xcf,
0 xe0,
0 x00,
0 xa9,
0 x68,
0 x2a,
0 x8e,
0 xfe,
0 x8a,
0 xb9,
0 x57,
0 x52,
0 xb3,
0 x08,
0 x80,
0 x5e,
0 xa6,
0 x88,
0 x5f,
0 x31,
0 xd1,
0 xe9,
0 x6d,
0 xf7,
0 x54,
0 x4e,
0 xf8,
0 x17,
0 xb0,
0 x1c,
0 xca,
0 xa6,
0 xa6,
0 x80,
0 xf8,
0 xd8,
0 xf5,
0 x94,
0 xa4,
0 xb2,
0 xd0,
0 x7e,
0 xbb,
0 x4f,
0 xdb,
0 x3a,
0 x91,
0 x5f,
0 xb3,
0 xc1,
0 xfa,
0 x60,
0 xe4,
0 xce,
0 xe3,
0 xe5,
0 x14,
0 x1f,
0 x9c,
0 x01,
0 x60,
0 xff,
0 xe2,
0 x09,
0 xe6,
0 x1a,
0 x82,
0 x69,
0 xb6,
0 xeb,
0 x52,
0 x1e,
0 x3d,
0 xc7,
0 xfd,
0 x69,
0 x9d,
0 x2a,
0 xa5,
0 xdb,
0 xc1,
0 x6a,
0 x5a,
0 x7d,
0 x23,
0 x2a,
0 x00,
0 xe4,
0 x53,
0 x16,
0 x8e,
0 xc1,
0 x56,
0 xf5,
0 x5a,
0 x8d,
0 x59,
0 x1f,
0 x7f,
0 xff,
0 x77,
0 x6f,
0 x92,
0 xea,
0 x5d,
0 x31,
0 xe9,
0 x18};
// The RSA intermediate certificate that issued the EE cert used in the
// signature above. The certificate was generated with pycert.py
const uint8_t RSA_INT[] = {
0 x30,
0 x82,
0 x02,
0 xd0,
0 x30,
0 x82,
0 x01,
0 xba,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x07,
0 x10,
0 xaf,
0 xc4,
0 x1a,
0 x3a,
0 x56,
0 x4f,
0 xd8,
0 xc2,
0 xcc,
0 x46,
0 xd7,
0 x5b,
0 xdf,
0 x1c,
0 x4e,
0 x2f,
0 x49,
0 x3a,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x12,
0 x31,
0 x10,
0 x30,
0 x0e,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x07,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x82,
0 x01,
0 x22,
0 x30,
0 x0d,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x01,
0 x05,
0 x00,
0 x03,
0 x82,
0 x01,
0 x0f,
0 x00,
0 x30,
0 x82,
0 x01,
0 x0a,
0 x02,
0 x82,
0 x01,
0 x01,
0 x00,
0 xba,
0 x88,
0 x51,
0 xa8,
0 x44,
0 x8e,
0 x16,
0 xd6,
0 x41,
0 xfd,
0 x6e,
0 xb6,
0 x88,
0 x06,
0 x36,
0 x10,
0 x3d,
0 x3c,
0 x13,
0 xd9,
0 xea,
0 xe4,
0 x35,
0 x4a,
0 xb4,
0 xec,
0 xf5,
0 x68,
0 x57,
0 x6c,
0 x24,
0 x7b,
0 xc1,
0 xc7,
0 x25,
0 xa8,
0 xe0,
0 xd8,
0 x1f,
0 xbd,
0 xb1,
0 x9c,
0 x06,
0 x9b,
0 x6e,
0 x1a,
0 x86,
0 xf2,
0 x6b,
0 xe2,
0 xaf,
0 x5a,
0 x75,
0 x6b,
0 x6a,
0 x64,
0 x71,
0 x08,
0 x7a,
0 xa5,
0 x5a,
0 xa7,
0 x45,
0 x87,
0 xf7,
0 x1c,
0 xd5,
0 x24,
0 x9c,
0 x02,
0 x7e,
0 xcd,
0 x43,
0 xfc,
0 x1e,
0 x69,
0 xd0,
0 x38,
0 x20,
0 x29,
0 x93,
0 xab,
0 x20,
0 xc3,
0 x49,
0 xe4,
0 xdb,
0 xb9,
0 x4c,
0 xc2,
0 x6b,
0 x6c,
0 x0e,
0 xed,
0 x15,
0 x82,
0 x0f,
0 xf1,
0 x7e,
0 xad,
0 x69,
0 x1a,
0 xb1,
0 xd3,
0 x02,
0 x3a,
0 x8b,
0 x2a,
0 x41,
0 xee,
0 xa7,
0 x70,
0 xe0,
0 x0f,
0 x0d,
0 x8d,
0 xfd,
0 x66,
0 x0b,
0 x2b,
0 xb0,
0 x24,
0 x92,
0 xa4,
0 x7d,
0 xb9,
0 x88,
0 x61,
0 x79,
0 x90,
0 xb1,
0 x57,
0 x90,
0 x3d,
0 xd2,
0 x3b,
0 xc5,
0 xe0,
0 xb8,
0 x48,
0 x1f,
0 xa8,
0 x37,
0 xd3,
0 x88,
0 x43,
0 xef,
0 x27,
0 x16,
0 xd8,
0 x55,
0 xb7,
0 x66,
0 x5a,
0 xaa,
0 x7e,
0 x02,
0 x90,
0 x2f,
0 x3a,
0 x7b,
0 x10,
0 x80,
0 x06,
0 x24,
0 xcc,
0 x1c,
0 x6c,
0 x97,
0 xad,
0 x96,
0 x61,
0 x5b,
0 xb7,
0 xe2,
0 x96,
0 x12,
0 xc0,
0 x75,
0 x31,
0 xa3,
0 x0c,
0 x91,
0 xdd,
0 xb4,
0 xca,
0 xf7,
0 xfc,
0 xad,
0 x1d,
0 x25,
0 xd3,
0 x09,
0 xef,
0 xb9,
0 x17,
0 x0e,
0 xa7,
0 x68,
0 xe1,
0 xb3,
0 x7b,
0 x2f,
0 x22,
0 x6f,
0 x69,
0 xe3,
0 xb4,
0 x8a,
0 x95,
0 x61,
0 x1d,
0 xee,
0 x26,
0 xd6,
0 x25,
0 x9d,
0 xab,
0 x91,
0 x08,
0 x4e,
0 x36,
0 xcb,
0 x1c,
0 x24,
0 x04,
0 x2c,
0 xbf,
0 x16,
0 x8b,
0 x2f,
0 xe5,
0 xf1,
0 x8f,
0 x99,
0 x17,
0 x31,
0 xb8,
0 xb3,
0 xfe,
0 x49,
0 x23,
0 xfa,
0 x72,
0 x51,
0 xc4,
0 x31,
0 xd5,
0 x03,
0 xac,
0 xda,
0 x18,
0 x0a,
0 x35,
0 xed,
0 x8d,
0 x02,
0 x03,
0 x01,
0 x00,
0 x01,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x03,
0 x82,
0 x01,
0 x01,
0 x00,
0 x5e,
0 xba,
0 x69,
0 x55,
0 x9f,
0 xf8,
0 xeb,
0 x16,
0 x21,
0 x98,
0 xde,
0 xb7,
0 x31,
0 x3e,
0 x66,
0 xe1,
0 x3b,
0 x0c,
0 x29,
0 xf7,
0 x48,
0 x73,
0 x05,
0 xd9,
0 xce,
0 x5e,
0 x4c,
0 xbe,
0 x03,
0 xc4,
0 x51,
0 xd6,
0 x21,
0 x92,
0 x40,
0 x38,
0 xaa,
0 x5b,
0 x28,
0 xb5,
0 xa1,
0 x10,
0 x52,
0 x57,
0 xff,
0 x91,
0 x54,
0 x82,
0 x86,
0 x9e,
0 x74,
0 xd5,
0 x3d,
0 x82,
0 x29,
0 xee,
0 xd1,
0 xcf,
0 x93,
0 xb1,
0 x24,
0 x76,
0 xbb,
0 x95,
0 x41,
0 x06,
0 x7e,
0 x40,
0 x9b,
0 xb4,
0 xab,
0 x44,
0 x34,
0 x10,
0 x8f,
0 xb1,
0 x51,
0 x6f,
0 xc0,
0 x89,
0 xd1,
0 xa3,
0 xc4,
0 x9f,
0 xb3,
0 x48,
0 xe1,
0 xcd,
0 x73,
0 xad,
0 xff,
0 x42,
0 x5f,
0 x76,
0 x05,
0 x60,
0 xc5,
0 xe0,
0 x45,
0 x79,
0 x18,
0 xa1,
0 x19,
0 xb8,
0 xa7,
0 x3a,
0 x64,
0 xb3,
0 x19,
0 xba,
0 x14,
0 xa1,
0 xb5,
0 xdc,
0 x32,
0 xec,
0 x09,
0 x39,
0 x58,
0 x54,
0 x5b,
0 x04,
0 xdc,
0 x1b,
0 x66,
0 x0d,
0 x1d,
0 x0d,
0 xce,
0 x7f,
0 xfa,
0 x24,
0 x52,
0 x6a,
0 xad,
0 xe2,
0 xc8,
0 x30,
0 xaf,
0 xf2,
0 xaf,
0 x63,
0 xc5,
0 xe2,
0 xbf,
0 xe2,
0 x20,
0 x1b,
0 x9e,
0 xf9,
0 x3d,
0 xbc,
0 xfb,
0 x04,
0 x8e,
0 xda,
0 x7a,
0 x1a,
0 x5d,
0 xd3,
0 x13,
0 xd7,
0 x00,
0 x8e,
0 x9b,
0 x5d,
0 x85,
0 x51,
0 xda,
0 xd3,
0 x91,
0 x25,
0 xf5,
0 x67,
0 x85,
0 x3e,
0 x25,
0 x89,
0 x5e,
0 xcb,
0 x89,
0 x8a,
0 xec,
0 x8a,
0 xde,
0 x8b,
0 xf4,
0 x33,
0 x5f,
0 x76,
0 xdb,
0 x3d,
0 xfc,
0 x6a,
0 x05,
0 x21,
0 x43,
0 xb2,
0 x41,
0 xd8,
0 x33,
0 x8d,
0 xfd,
0 x05,
0 x5c,
0 x22,
0 x0a,
0 xf6,
0 x90,
0 x65,
0 x9c,
0 x4f,
0 x8c,
0 x44,
0 x9f,
0 x2d,
0 xca,
0 xf3,
0 x49,
0 x9c,
0 x3a,
0 x14,
0 x88,
0 xab,
0 xe4,
0 xce,
0 xb7,
0 xbc,
0 x95,
0 x22,
0 x2e,
0 xb1,
0 x82,
0 x4c,
0 xbf,
0 x83,
0 x3e,
0 x49,
0 x72,
0 x03,
0 x2a,
0 x68,
0 xe7,
0 x2d,
0 xe5,
0 x2d,
0 x4b,
0 x61,
0 xb0,
0 x8d,
0 x0d,
0 x0c,
0 x87,
0 xc6,
0 x5c,
0 x51};
// The RSA root certificate that issued the RSA intermediate certificate above.
// The certificate was generated with pycert.py
const uint8_t RSA_ROOT[] = {
0 x30,
0 x82,
0 x02,
0 xd1,
0 x30,
0 x82,
0 x01,
0 xbb,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x29,
0 x6c,
0 x1a,
0 xd8,
0 x20,
0 xcd,
0 x74,
0 x6d,
0 x4b,
0 x00,
0 xf3,
0 x16,
0 x88,
0 xd9,
0 x66,
0 x87,
0 x5f,
0 x28,
0 x56,
0 x6a,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x72,
0 x73,
0 x61,
0 x30,
0 x82,
0 x01,
0 x22,
0 x30,
0 x0d,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x01,
0 x05,
0 x00,
0 x03,
0 x82,
0 x01,
0 x0f,
0 x00,
0 x30,
0 x82,
0 x01,
0 x0a,
0 x02,
0 x82,
0 x01,
0 x01,
0 x00,
0 xba,
0 x88,
0 x51,
0 xa8,
0 x44,
0 x8e,
0 x16,
0 xd6,
0 x41,
0 xfd,
0 x6e,
0 xb6,
0 x88,
0 x06,
0 x36,
0 x10,
0 x3d,
0 x3c,
0 x13,
0 xd9,
0 xea,
0 xe4,
0 x35,
0 x4a,
0 xb4,
0 xec,
0 xf5,
0 x68,
0 x57,
0 x6c,
0 x24,
0 x7b,
0 xc1,
0 xc7,
0 x25,
0 xa8,
0 xe0,
0 xd8,
0 x1f,
0 xbd,
0 xb1,
0 x9c,
0 x06,
0 x9b,
0 x6e,
0 x1a,
0 x86,
0 xf2,
0 x6b,
0 xe2,
0 xaf,
0 x5a,
0 x75,
0 x6b,
0 x6a,
0 x64,
0 x71,
0 x08,
0 x7a,
0 xa5,
0 x5a,
0 xa7,
0 x45,
0 x87,
0 xf7,
0 x1c,
0 xd5,
0 x24,
0 x9c,
0 x02,
0 x7e,
0 xcd,
0 x43,
0 xfc,
0 x1e,
0 x69,
0 xd0,
0 x38,
0 x20,
0 x29,
0 x93,
0 xab,
0 x20,
0 xc3,
0 x49,
0 xe4,
0 xdb,
0 xb9,
0 x4c,
0 xc2,
0 x6b,
0 x6c,
0 x0e,
0 xed,
0 x15,
0 x82,
0 x0f,
0 xf1,
0 x7e,
0 xad,
0 x69,
0 x1a,
0 xb1,
0 xd3,
0 x02,
0 x3a,
0 x8b,
0 x2a,
0 x41,
0 xee,
0 xa7,
0 x70,
0 xe0,
0 x0f,
0 x0d,
0 x8d,
0 xfd,
0 x66,
0 x0b,
0 x2b,
0 xb0,
0 x24,
0 x92,
0 xa4,
0 x7d,
0 xb9,
0 x88,
0 x61,
0 x79,
0 x90,
0 xb1,
0 x57,
0 x90,
0 x3d,
0 xd2,
0 x3b,
0 xc5,
0 xe0,
0 xb8,
0 x48,
0 x1f,
0 xa8,
0 x37,
0 xd3,
0 x88,
0 x43,
0 xef,
0 x27,
0 x16,
0 xd8,
0 x55,
0 xb7,
0 x66,
0 x5a,
0 xaa,
0 x7e,
0 x02,
0 x90,
0 x2f,
0 x3a,
0 x7b,
0 x10,
0 x80,
0 x06,
0 x24,
0 xcc,
0 x1c,
0 x6c,
0 x97,
0 xad,
0 x96,
0 x61,
0 x5b,
0 xb7,
0 xe2,
0 x96,
0 x12,
0 xc0,
0 x75,
0 x31,
0 xa3,
0 x0c,
0 x91,
0 xdd,
0 xb4,
0 xca,
0 xf7,
0 xfc,
0 xad,
0 x1d,
0 x25,
0 xd3,
0 x09,
0 xef,
0 xb9,
0 x17,
0 x0e,
0 xa7,
0 x68,
0 xe1,
0 xb3,
0 x7b,
0 x2f,
0 x22,
0 x6f,
0 x69,
0 xe3,
0 xb4,
0 x8a,
0 x95,
0 x61,
0 x1d,
0 xee,
0 x26,
0 xd6,
0 x25,
0 x9d,
0 xab,
0 x91,
0 x08,
0 x4e,
0 x36,
0 xcb,
0 x1c,
0 x24,
0 x04,
0 x2c,
0 xbf,
0 x16,
0 x8b,
0 x2f,
0 xe5,
0 xf1,
0 x8f,
0 x99,
0 x17,
0 x31,
0 xb8,
0 xb3,
0 xfe,
0 x49,
0 x23,
0 xfa,
0 x72,
0 x51,
0 xc4,
0 x31,
0 xd5,
0 x03,
0 xac,
0 xda,
0 x18,
0 x0a,
0 x35,
0 xed,
0 x8d,
0 x02,
0 x03,
0 x01,
0 x00,
0 x01,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0b,
0 x06,
0 x09,
0 x2a,
0 x86,
0 x48,
0 x86,
0 xf7,
0 x0d,
0 x01,
0 x01,
0 x0b,
0 x03,
0 x82,
0 x01,
0 x01,
0 x00,
0 x23,
0 x2f,
0 x9f,
0 x72,
0 xeb,
0 x70,
0 x6d,
0 x9e,
0 x3e,
0 x9f,
0 xd7,
0 x9c,
0 xd9,
0 x19,
0 x7c,
0 x99,
0 x07,
0 xc5,
0 x5c,
0 x9d,
0 xf5,
0 x66,
0 x9f,
0 x28,
0 x8d,
0 xfe,
0 x0e,
0 x3f,
0 x38,
0 x75,
0 xed,
0 xee,
0 x4e,
0 x3f,
0 xf6,
0 x6e,
0 x35,
0 xe0,
0 x95,
0 x3f,
0 x08,
0 x4a,
0 x71,
0 x5a,
0 xf2,
0 x4f,
0 xc9,
0 x96,
0 x61,
0 x8d,
0 x45,
0 x4b,
0 x97,
0 x85,
0 xff,
0 xb0,
0 xe3,
0 xbb,
0 xb5,
0 xd7,
0 x7e,
0 xfb,
0 xd2,
0 xfc,
0 xec,
0 xfe,
0 x42,
0 x9f,
0 x4e,
0 x7b,
0 xbf,
0 x97,
0 xbb,
0 xb4,
0 x3a,
0 x93,
0 x0b,
0 x13,
0 x61,
0 x90,
0 x0c,
0 x3a,
0 xce,
0 xf7,
0 x8e,
0 xef,
0 x80,
0 xf5,
0 x4a,
0 x92,
0 xc5,
0 xa5,
0 x03,
0 x78,
0 xc2,
0 xee,
0 xb8,
0 x66,
0 x60,
0 x6b,
0 x76,
0 x4f,
0 x32,
0 x5a,
0 x1a,
0 xa2,
0 x4b,
0 x7e,
0 x2b,
0 xa6,
0 x1a,
0 x89,
0 x01,
0 xe3,
0 xbb,
0 x55,
0 x13,
0 x7c,
0 x4c,
0 xf4,
0 x6a,
0 x99,
0 x94,
0 xd1,
0 xa0,
0 x84,
0 x1c,
0 x1a,
0 xc2,
0 x7b,
0 xb4,
0 xa0,
0 xb0,
0 x3b,
0 xdc,
0 x5a,
0 x7b,
0 xc7,
0 xe0,
0 x44,
0 xb2,
0 x1f,
0 x46,
0 xd5,
0 x8b,
0 x39,
0 x8b,
0 xdc,
0 x9e,
0 xce,
0 xa8,
0 x7f,
0 x85,
0 x1d,
0 x4b,
0 x63,
0 x06,
0 x1e,
0 x8e,
0 xe5,
0 xe5,
0 x99,
0 xd9,
0 xf7,
0 x4d,
0 x89,
0 x0b,
0 x1d,
0 x5c,
0 x27,
0 x33,
0 x66,
0 x21,
0 xcf,
0 x9a,
0 xbd,
0 x98,
0 x68,
0 x23,
0 x3a,
0 x66,
0 x9d,
0 xd4,
0 x46,
0 xed,
0 x63,
0 x58,
0 xf3,
0 x42,
0 xe4,
0 x1d,
0 xe2,
0 x47,
0 x65,
0 x13,
0 x8d,
0 xd4,
0 x1f,
0 x4b,
0 x7e,
0 xde,
0 x11,
0 x56,
0 xf8,
0 x6d,
0 x01,
0 x0c,
0 x99,
0 xbd,
0 x8d,
0 xca,
0 x8a,
0 x2e,
0 xe3,
0 x8a,
0 x9c,
0 x3d,
0 x83,
0 x8d,
0 x69,
0 x62,
0 x8d,
0 x05,
0 xea,
0 xb7,
0 xf5,
0 xa3,
0 x4b,
0 xfc,
0 x96,
0 xcf,
0 x18,
0 x21,
0 x0a,
0 xc7,
0 xf3,
0 x23,
0 x7e,
0 x1c,
0 xab,
0 xe2,
0 xa2,
0 xd1,
0 x83,
0 xc4,
0 x25,
0 x93,
0 x37,
0 x80,
0 xca,
0 xda,
0 xf0,
0 xef,
0 x7d,
0 x94,
0 xb5};
// The P256 intermediate certificate that issued the EE cert used in the
// signatures above. The certificate was generated with pycert.py
const uint8_t P256_INT[] = {
0 x30,
0 x82,
0 x01,
0 x48,
0 x30,
0 x81,
0 xf0,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x43,
0 x63,
0 x59,
0 xad,
0 x04,
0 x34,
0 x56,
0 x80,
0 x43,
0 xec,
0 x90,
0 x6a,
0 xd4,
0 x10,
0 x64,
0 x7c,
0 x7f,
0 x38,
0 x32,
0 xe2,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x13,
0 x31,
0 x11,
0 x30,
0 x0f,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x08,
0 x69,
0 x6e,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x47,
0 x00,
0 x30,
0 x44,
0 x02,
0 x20,
0 x63,
0 x59,
0 x02,
0 x01,
0 x89,
0 xd7,
0 x3e,
0 x5b,
0 xff,
0 xd1,
0 x16,
0 x4e,
0 xe3,
0 xe2,
0 x0a,
0 xe0,
0 x4a,
0 xd8,
0 x75,
0 xaf,
0 x77,
0 x5c,
0 x93,
0 x60,
0 xba,
0 x10,
0 x1f,
0 x97,
0 xdd,
0 x27,
0 x2d,
0 x24,
0 x02,
0 x20,
0 x3d,
0 x87,
0 x0f,
0 xac,
0 x22,
0 x4d,
0 x16,
0 xd9,
0 xa1,
0 x95,
0 xbb,
0 x56,
0 xe0,
0 x21,
0 x05,
0 x93,
0 xd1,
0 x07,
0 xb5,
0 x25,
0 x3b,
0 xf4,
0 x57,
0 x20,
0 x87,
0 x13,
0 xa2,
0 xf7,
0 x78,
0 x15,
0 x30,
0 xa7};
// The P256 root certificate that issued the P256 intermediate certificate
// above. The certificate was generated with pycert.py
const uint8_t P256_ROOT[] = {
0 x30,
0 x82,
0 x01,
0 x4a,
0 x30,
0 x81,
0 xf1,
0 xa0,
0 x03,
0 x02,
0 x01,
0 x02,
0 x02,
0 x14,
0 x5f,
0 x3f,
0 xae,
0 x90,
0 x49,
0 x30,
0 x2f,
0 x33,
0 x6e,
0 x95,
0 x23,
0 xa7,
0 xcb,
0 x23,
0 xd7,
0 x65,
0 x4f,
0 xea,
0 x3c,
0 xf7,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x22,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x31,
0 x32,
0 x30,
0 x31,
0 x30,
0 x33,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x18,
0 x0f,
0 x32,
0 x30,
0 x32,
0 x31,
0 x31,
0 x32,
0 x33,
0 x31,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x30,
0 x5a,
0 x30,
0 x14,
0 x31,
0 x12,
0 x30,
0 x10,
0 x06,
0 x03,
0 x55,
0 x04,
0 x03,
0 x0c,
0 x09,
0 x72,
0 x6f,
0 x6f,
0 x74,
0 x2d,
0 x70,
0 x32,
0 x35,
0 x36,
0 x30,
0 x59,
0 x30,
0 x13,
0 x06,
0 x07,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x02,
0 x01,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x03,
0 x01,
0 x07,
0 x03,
0 x42,
0 x00,
0 x04,
0 x4f,
0 xbf,
0 xbb,
0 xbb,
0 x61,
0 xe0,
0 xf8,
0 xf9,
0 xb1,
0 xa6,
0 x0a,
0 x59,
0 xac,
0 x87,
0 x04,
0 xe2,
0 xec,
0 x05,
0 x0b,
0 x42,
0 x3e,
0 x3c,
0 xf7,
0 x2e,
0 x92,
0 x3f,
0 x2c,
0 x4f,
0 x79,
0 x4b,
0 x45,
0 x5c,
0 x2a,
0 x69,
0 xd2,
0 x33,
0 x45,
0 x6c,
0 x36,
0 xc4,
0 x11,
0 x9d,
0 x07,
0 x06,
0 xe0,
0 x0e,
0 xed,
0 xc8,
0 xd1,
0 x93,
0 x90,
0 xd7,
0 x99,
0 x1b,
0 x7b,
0 x2d,
0 x07,
0 xa3,
0 x04,
0 xea,
0 xa0,
0 x4a,
0 xa6,
0 xc0,
0 xa3,
0 x1d,
0 x30,
0 x1b,
0 x30,
0 x0c,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x13,
0 x04,
0 x05,
0 x30,
0 x03,
0 x01,
0 x01,
0 xff,
0 x30,
0 x0b,
0 x06,
0 x03,
0 x55,
0 x1d,
0 x0f,
0 x04,
0 x04,
0 x03,
0 x02,
0 x01,
0 x06,
0 x30,
0 x0a,
0 x06,
0 x08,
0 x2a,
0 x86,
0 x48,
0 xce,
0 x3d,
0 x04,
0 x03,
0 x02,
0 x03,
0 x48,
0 x00,
0 x30,
0 x45,
0 x02,
0 x20,
0 x5c,
0 x75,
0 x51,
0 x9f,
0 x13,
0 x11,
0 x50,
0 xcd,
0 x5d,
0 x8a,
0 xde,
0 x20,
0 xa3,
0 xbc,
0 x06,
0 x30,
0 x91,
0 xff,
0 xb2,
0 x73,
0 x75,
0 x5f,
0 x31,
0 x64,
0 xec,
0 xfd,
0 xcb,
0 x42,
0 x80,
0 x0a,
0 x70,
0 xe6,
0 x02,
0 x21,
0 x00,
0 xc2,
0 xe4,
0 xc1,
0 xa8,
0 xe2,
0 x89,
0 xdc,
0 xa1,
0 xbb,
0 xe7,
0 xd5,
0 x4f,
0 x5c,
0 x88,
0 xad,
0 xeb,
0 xa4,
0 x78,
0 xa1,
0 x19,
0 xbe,
0 x22,
0 x54,
0 xc8,
0 x9f,
0 xef,
0 xb8,
0 x5d,
0 xa2,
0 x40,
0 xd9,
0 x8b};
void check_hard_coded_certs(
const uint8_t** cert_chain, size_t cert_chain_len,
const size_t* certs_len) {
// Very hacky and fragile check that the intermediate certs are correct.
switch (cert_chain_len) {
case 2 : {
const uint8_t* cert = cert_chain[
0 ];
size_t cert_len = certs_len[
0 ];
ASSERT_EQ(cert_len,
sizeof (P256_ROOT));
ASSERT_EQ(
0 , memcmp(cert, P256_ROOT, cert_len));
cert = cert_chain[
1 ];
cert_len = certs_len[
1 ];
ASSERT_EQ(cert_len,
sizeof (P256_INT));
ASSERT_EQ(
0 , memcmp(cert, P256_INT, cert_len));
break ;
}
case 4 : {
const uint8_t* cert = cert_chain[
0 ];
size_t cert_len = certs_len[
0 ];
ASSERT_EQ(cert_len,
sizeof (P256_ROOT));
ASSERT_EQ(
0 , memcmp(cert, P256_ROOT, cert_len));
cert = cert_chain[
1 ];
cert_len = certs_len[
1 ];
ASSERT_EQ(cert_len,
sizeof (P256_INT));
ASSERT_EQ(
0 , memcmp(cert, P256_INT, cert_len));
cert = cert_chain[
2 ];
cert_len = certs_len[
2 ];
ASSERT_EQ(cert_len,
sizeof (RSA_ROOT));
ASSERT_EQ(
0 , memcmp(cert, RSA_ROOT, cert_len));
cert = cert_chain[
3 ];
cert_len = certs_len[
3 ];
ASSERT_EQ(cert_len,
sizeof (RSA_INT));
ASSERT_EQ(
0 , memcmp(cert, RSA_INT, cert_len));
break ;
}
default :
// In this case something went wrong.
ASSERT_EQ(
true ,
false );
}
}
/* Verification function called from cose-rust.
* Returns true if everything goes well and the signature is good, false in any
* other case. */
bool verify_callback(
const uint8_t* payload, size_t payload_len,
const uint8_t** cert_chain, size_t cert_chain_len,
const size_t* certs_len,
const uint8_t* ee_cert,
size_t ee_cert_len,
const uint8_t* signature,
size_t signature_len, uint8_t signature_algorithm,
void * ctx) {
UniquePK11SlotInfo slot(PK11_GetInternalSlot());
if (!slot) {
return false ;
}
CK_MECHANISM_TYPE mechanism;
SECOidTag oid;
uint32_t hash_length;
SECItem param = {siBuffer, nullptr,
0 };
CK_RSA_PKCS_PSS_PARAMS rsa_pss_params = {CKM_SHA256, CKG_MGF1_SHA256,
SHA256_LENGTH};
switch (signature_algorithm) {
case (ES256):
mechanism = CKM_ECDSA;
oid = SEC_OID_SHA256;
hash_length = SHA256_LENGTH;
break ;
case (PS256):
mechanism = CKM_RSA_PKCS_PSS;
oid = SEC_OID_SHA256;
hash_length = SHA256_LENGTH;
param = {siBuffer,
reinterpret_cast <
unsigned char *>(&rsa_pss_params),
sizeof (rsa_pss_params)};
break ;
default :
return false ;
}
check_hard_coded_certs(cert_chain, cert_chain_len, certs_len);
uint8_t hash_buf[HASH_LENGTH_MAX];
SECStatus rv = PK11_HashBuf(oid, hash_buf, payload, payload_len);
if (rv != SECSuccess) {
return false ;
}
SECItem hash_item = {siBuffer, hash_buf, hash_length};
CERTCertDBHandle* db_handle = CERT_GetDefaultCertDB();
if (!db_handle) {
return false ;
}
SECItem der_cert = {siBuffer,
const_cast <uint8_t*>(ee_cert),
static_cast <
unsigned int >(ee_cert_len)};
UniqueCERTCertificate cert(
CERT_NewTempCertificate(db_handle, &der_cert, nullptr,
false ,
true ));
if (!cert) {
return false ;
}
UniqueSECKEYPublicKey key(CERT_ExtractPublicKey(cert.get()));
if (!key) {
return false ;
}
SECItem signature_item = {siBuffer,
const_cast <uint8_t*>(signature),
static_cast <
unsigned int >(signature_len)};
rv = PK11_VerifyWithMechanism(key.get(), mechanism, ¶m, &signature_item,
&hash_item, nullptr);
if (rv != SECSuccess) {
return false ;
}
return true ;
}
class psm_COSE :
public ::testing::Test {};
TEST_F(psm_COSE, CoseTestingSingleSignature) {
SECStatus rv = NSS_NoDB_Init(nullptr);
ASSERT_EQ(SECSuccess, rv);
bool result =
verify_cose_signature_ffi(PAYLOAD,
sizeof (PAYLOAD), SIGNATURE,
sizeof (SIGNATURE), nullptr, verify_callback);
ASSERT_TRUE(result);
}
TEST_F(psm_COSE, CoseTestingTwoSignatures) {
SECStatus rv = NSS_NoDB_Init(nullptr);
ASSERT_EQ(SECSuccess, rv);
bool result = verify_cose_signature_ffi(
PAYLOAD,
sizeof (PAYLOAD), SIGNATURE_ES256_PS256,
sizeof (SIGNATURE_ES256_PS256), nullptr, verify_callback);
ASSERT_TRUE(result);
}
TEST_F(psm_COSE, CoseTestingAlteredPayload) {
SECStatus rv = NSS_NoDB_Init(nullptr);
ASSERT_EQ(SECSuccess, rv);
uint8_t altered_payload[
20 ] = {
84 ,
104 ,
105 ,
115 ,
32 ,
104 ,
115 ,
32 ,
116 ,
104 ,
101 ,
32 ,
99 ,
111 ,
110 ,
116 ,
101 ,
110 ,
116 ,
46 };
bool result = verify_cose_signature_ffi(
altered_payload,
sizeof (altered_payload), SIGNATURE_ES256_PS256,
sizeof (SIGNATURE_ES256_PS256), nullptr, verify_callback);
ASSERT_FALSE(result);
}
}
// namespace mozilla
Messung V0.5 in Prozent C=87 H=100 G=93
¤ Dauer der Verarbeitung: 0.30 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland