diff --git a/build/virtualenv_packages.txt b/build/virtualenv_packages.txt index 523c5ba9da..cd99d134eb 100644 --- a/build/virtualenv_packages.txt +++ b/build/virtualenv_packages.txt @@ -24,6 +24,8 @@ packages.txt:testing/mozbase/packages.txt objdir:build gyp.pth:media/webrtc/trunk/tools/gyp/pylib pyasn1.pth:python/pyasn1 +pyasn1_modules.pth:python/pyasn1-modules bitstring.pth:python/bitstring redo.pth:python/redo requests.pth:python/requests +rsa.pth:python/rsa diff --git a/dom/activities/ActivitiesService.jsm b/dom/activities/ActivitiesService.jsm index 6717254103..4eec3d9f83 100644 --- a/dom/activities/ActivitiesService.jsm +++ b/dom/activities/ActivitiesService.jsm @@ -34,7 +34,7 @@ function debug(aMsg) { } const DB_NAME = "activities"; -const DB_VERSION = 1; +const DB_VERSION = 2; const STORE_NAME = "activities"; function ActivitiesDb() { @@ -63,6 +63,25 @@ ActivitiesDb.prototype = { */ upgradeSchema: function actdb_upgradeSchema(aTransaction, aDb, aOldVersion, aNewVersion) { debug("Upgrade schema " + aOldVersion + " -> " + aNewVersion); + + let self = this; + + function upgrade(currentVersion) { + let next = upgrade.bind(self, currentVersion + 1); + switch (currentVersion) { + case 0: + self.createSchema(aDb, next); + break; + case 1: + self.upgradeSchemaVersion2(aDb, aTransaction, next); + break; + } + } + + upgrade(aOldVersion); + }, + + createSchema: function(aDb, aNext) { let objectStore = aDb.createObjectStore(STORE_NAME, { keyPath: "id" }); // indexes @@ -70,6 +89,49 @@ ActivitiesDb.prototype = { objectStore.createIndex("manifest", "manifest", { unique: false }); debug("Created object stores and indexes"); + + aNext(); + }, + + upgradeSchemaVersion2: function(aDb, aTransaction, aNext) { + debug("Upgrading DB to version 2"); + + // In order to be able to have multiple activities with same name + // but different descriptions, we need to update the keypath from + // a hash made from {manifest, name} to a hash made from {manifest, + // name, description}. + // + // Unfortunately, updating the keypath is not allowed by IDB, so we + // need to remove and recreate the activities object store. + + let activities = []; + let objectStore = aTransaction.objectStore(STORE_NAME); + objectStore.openCursor().onsuccess = (event) => { + let cursor = event.target.result; + if (!cursor) { + aDb.deleteObjectStore(STORE_NAME); + + let objectStore = aDb.createObjectStore(STORE_NAME, { keyPath: "id" }); + + // indexes + objectStore.createIndex("name", "name", { unique: false }); + objectStore.createIndex("manifest", "manifest", { unique: false }); + + this.add(activities, () => { + debug("DB upgraded to version 2"); + aNext(); + }, () => { + dump("Error upgrading DB to version 2 " + error + "\n"); + }); + return; + } + + let activity = cursor.value; + debug("Upgrading activity " + JSON.stringify(activity)); + activity.id = this.createId(activity); + activities.push(activity); + cursor.continue(); + }; }, // unique ids made of (uri, action) @@ -83,8 +145,17 @@ ActivitiesDb.prototype = { hasher.init(hasher.SHA1); // add uri and action to the hash - ["manifest", "name"].forEach(function(aProp) { - let data = converter.convertToByteArray(aObject[aProp], {}); + ["manifest", "name", "description"].forEach(function(aProp) { + if (!aObject[aProp]) { + return; + } + + let property = aObject[aProp]; + if (aProp == "description") { + property = JSON.stringify(aObject[aProp]); + } + + let data = converter.convertToByteArray(property, {}); hasher.update(data, data.length); }); @@ -110,16 +181,17 @@ ActivitiesDb.prototype = { // Remove all the activities carried in the |aObjects| array. remove: function actdb_remove(aObjects) { - this.newTxn("readwrite", STORE_NAME, function (txn, store) { - aObjects.forEach(function (aObject) { + this.newTxn("readwrite", STORE_NAME, (txn, store) => { + aObjects.forEach((aObject) => { let object = { manifest: aObject.manifest, - name: aObject.name + name: aObject.name, + description: aObject.description }; debug("Going to remove " + JSON.stringify(object)); store.delete(this.createId(object)); - }, this); - }.bind(this), function() {}, function() {}); + }); + }, function() {}, function() {}); }, // Remove all activities associated with the given |aManifest| URL. @@ -247,8 +319,8 @@ let Activities = { debug("Activity choice: " + aResult); // We have no matching activity registered, let's fire an error. - // Don't do this check until we have passed to UIGlue so the glue can choose to launch - // its own activity if needed. + // Don't do this check until we have passed to UIGlue so the glue + // can choose to launch its own activity if needed. if (aResults.options.length === 0) { self.trySendAndCleanup(aMsg.id, "Activity:FireError", { "id": aMsg.id, @@ -429,13 +501,16 @@ let Activities = { break; case "Activities:Register": - let self = this; this.db.add(msg, function onSuccess(aEvent) { + debug("Activities:Register:OK"); + Services.obs.notifyObservers(null, "new-activity-registered-success", null); mm.sendAsyncMessage("Activities:Register:OK", null); }, function onError(aEvent) { msg.error = "REGISTER_ERROR"; + debug("Activities:Register:KO"); + Services.obs.notifyObservers(null, "new-activity-registered-failure", null); mm.sendAsyncMessage("Activities:Register:KO", msg); }); break; diff --git a/dom/activities/tests/mochi/test_dev_mode_activity.html b/dom/activities/tests/mochi/test_dev_mode_activity.html index c13f39bec5..348ce57ec5 100644 --- a/dom/activities/tests/mochi/test_dev_mode_activity.html +++ b/dom/activities/tests/mochi/test_dev_mode_activity.html @@ -184,8 +184,14 @@ function continueTest() { } } +var obsService = Cc["@mozilla.org/observer-service;1"] + .getService(Ci.nsIObserverService); + +obsService.addObserver(continueTest, "new-activity-registered-success", false); +obsService.addObserver(continueTest, "new-activity-registered-failure", false); + /** - * Test exporting and importing hosted and packaged apps. + * Test dev mode activity. */ function runTest() { SpecialPowers.setAllAppsLaunchable(true); @@ -227,6 +233,9 @@ function runTest() { var systemApp = request.result; ok(systemApp, "systemApp is non-null"); + // yielding for the activity install observer. + yield undefined; + activity = new MozActivity({ name: "import-app" }); activity.onerror = function() { ok(true, "2) No dev mode, system app installed"); @@ -241,6 +250,9 @@ function runTest() { var otherApp = request.result; ok(otherApp, "otherApp is non-null"); + // yielding for the activity install observer. + yield undefined; + activity = new MozActivity({ name: "import-app" }); activity.onerror = function() { ok(true, "3) No dev mode, system app and other app installed"); @@ -249,7 +261,7 @@ function runTest() { activity.onsuccess = unexpectedSuccess("3) No dev mode, system app and other app installed"); yield undefined; - // 4) Dev mode, no system app installed. + // 4) Dev mode, system app and other app installed. SpecialPowers.pushPrefEnv( {'set': [["dom.apps.developer_mode", true]]}, continueTest); @@ -260,8 +272,8 @@ function runTest() { ok(true, "4) Dev mode, system app and other app installed"); continueTest(); } - activity.onerror = function(aError) { - ok(false, "Got error: " + aError.name); + activity.onerror = function(aEvent) { + ok(false, "4) Got error: " + aEvent.error.name); finish(); } yield undefined; diff --git a/dom/apps/Webapps.jsm b/dom/apps/Webapps.jsm index f6acd8db71..ac46b05312 100755 --- a/dom/apps/Webapps.jsm +++ b/dom/apps/Webapps.jsm @@ -976,7 +976,8 @@ this.DOMApplicationRegistry = { // |aEntryPoint| is either the entry_point name or the null in which case we // use the root of the manifest. - _createActivitiesToRegister: function(aManifest, aApp, aEntryPoint, aRunUpdate) { + _createActivitiesToRegister: function(aManifest, aApp, aEntryPoint, + aRunUpdate, aUninstall) { let activitiesToRegister = []; let root = aManifest; if (aEntryPoint && aManifest.entry_points[aEntryPoint]) { @@ -989,46 +990,56 @@ this.DOMApplicationRegistry = { let manifest = new ManifestHelper(aManifest, aApp.origin, aApp.manifestURL); for (let activity in root.activities) { - let description = root.activities[activity]; - let href = description.href; - if (!href) { - href = manifest.launch_path; + let entry = root.activities[activity]; + if (!Array.isArray(entry)) { + entry = [entry]; } + for (let i = 0; i < entry.length; i++) { + let description = entry[i]; + let href = description.href; + if (!href) { + href = manifest.launch_path; + } - try { - href = manifest.resolveURL(href); - } catch (e) { - debug("Activity href (" + href + ") is invalid, skipping. " + - "Error is: " + e); - continue; - } + try { + href = manifest.resolveURL(href); + } catch (e) { + debug("Activity href (" + href + ") is invalid, skipping. " + + "Error is: " + e); + continue; + } - // Make a copy of the description object since we don't want to modify - // the manifest itself, but need to register with a resolved URI. - let newDesc = {}; - for (let prop in description) { - newDesc[prop] = description[prop]; - } - newDesc.href = href; + // Make a copy of the description object since we don't want to modify + // the manifest itself, but need to register with a resolved URI. + let newDesc = {}; + for (let prop in description) { + newDesc[prop] = description[prop]; + } + newDesc.href = href; - debug('_createActivitiesToRegister: ' + aApp.manifestURL + ', activity ' + - activity + ', description.href is ' + newDesc.href); + debug('_createActivitiesToRegister: ' + aApp.manifestURL + ', activity ' + + activity + ', description.href is ' + newDesc.href); - if (aRunUpdate) { - activitiesToRegister.push({ "manifest": aApp.manifestURL, - "name": activity, - "icon": manifest.iconURLForSize(128), - "description": newDesc }); - } + if (aRunUpdate || aUninstall) { + activitiesToRegister.push({ "manifest": aApp.manifestURL, + "name": activity, + "icon": manifest.iconURLForSize(128), + "description": newDesc }); + } - let launchPathURI = Services.io.newURI(href, null, null); - let manifestURI = Services.io.newURI(aApp.manifestURL, null, null); + if (aUninstall) { + continue; + } - if (SystemMessagePermissionsChecker - .isSystemMessagePermittedToRegister("activity", - aApp.manifestURL, - aManifest)) { - msgmgr.registerPage("activity", launchPathURI, manifestURI); + let launchPathURI = Services.io.newURI(href, null, null); + let manifestURI = Services.io.newURI(aApp.manifestURL, null, null); + + if (SystemMessagePermissionsChecker + .isSystemMessagePermittedToRegister("activity", + aApp.manifestURL, + aManifest)) { + msgmgr.registerPage("activity", launchPathURI, manifestURI); + } } } return activitiesToRegister; @@ -1074,28 +1085,6 @@ this.DOMApplicationRegistry = { this._registerActivitiesForApps([{ manifest: aManifest, app: aApp }], aRunUpdate); }, - // |aEntryPoint| is either the entry_point name or the null in which case we - // use the root of the manifest. - _createActivitiesToUnregister: function(aManifest, aApp, aEntryPoint) { - let activitiesToUnregister = []; - let root = aManifest; - if (aEntryPoint && aManifest.entry_points[aEntryPoint]) { - root = aManifest.entry_points[aEntryPoint]; - } - - if (!root.activities) { - return activitiesToUnregister; - } - - for (let activity in root.activities) { - let description = root.activities[activity]; - activitiesToUnregister.push({ "manifest": aApp.manifestURL, - "name": activity, - "description": description }); - } - return activitiesToUnregister; - }, - // |aAppsToUnregister| contains an array of apps to be unregistered, where // each element is an object in the format of {manifest: foo, app: bar}. _unregisterActivitiesForApps: function(aAppsToUnregister) { @@ -1105,7 +1094,7 @@ this.DOMApplicationRegistry = { let manifest = aApp.manifest; let app = aApp.app; activitiesToUnregister.push.apply(activitiesToUnregister, - this._createActivitiesToUnregister(manifest, app, null)); + this._createActivitiesToRegister(manifest, app, null, false, true)); if (!manifest.entry_points) { return; @@ -1113,7 +1102,7 @@ this.DOMApplicationRegistry = { for (let entryPoint in manifest.entry_points) { activitiesToUnregister.push.apply(activitiesToUnregister, - this._createActivitiesToUnregister(manifest, app, entryPoint)); + this._createActivitiesToRegister(manifest, app, entryPoint, false, true)); } }, this); diff --git a/image/decoders/icon/gtk/nsIconChannel.cpp b/image/decoders/icon/gtk/nsIconChannel.cpp index 3cd0a60225..d83d968560 100644 --- a/image/decoders/icon/gtk/nsIconChannel.cpp +++ b/image/decoders/icon/gtk/nsIconChannel.cpp @@ -207,6 +207,7 @@ ScaleIconBuf(GdkPixbuf** aBuf, int32_t iconSize) } return NS_OK; } + nsresult nsIconChannel::InitWithGIO(nsIMozIconURI* aIconURI) { diff --git a/image/encoders/png/nsPNGEncoder.cpp b/image/encoders/png/nsPNGEncoder.cpp index f3340860e6..028aff6ed8 100644 --- a/image/encoders/png/nsPNGEncoder.cpp +++ b/image/encoders/png/nsPNGEncoder.cpp @@ -524,6 +524,7 @@ nsPNGEncoder::ParseOptions(const nsAString& aOptions, } +/* void close (); */ NS_IMETHODIMP nsPNGEncoder::Close() { @@ -537,6 +538,7 @@ nsPNGEncoder::Close() return NS_OK; } +/* unsigned long available (); */ NS_IMETHODIMP nsPNGEncoder::Available(uint64_t* _retval) { @@ -590,6 +592,7 @@ nsPNGEncoder::ReadSegments(nsWriteSegmentFun aWriter, return NS_OK; } +/* boolean isNonBlocking (); */ NS_IMETHODIMP nsPNGEncoder::IsNonBlocking(bool* _retval) { diff --git a/js/public/UbiNode.h b/js/public/UbiNode.h index fd7dab8a3a..a510727e57 100644 --- a/js/public/UbiNode.h +++ b/js/public/UbiNode.h @@ -145,13 +145,13 @@ namespace ubi { class Edge; class EdgeRange; -} -} +} // namespace ubi +} // namespace JS namespace mozilla { template<> class DefaultDelete : public JS::DeletePolicy { }; -} +} // namespace mozilla namespace JS { namespace ubi { @@ -258,8 +258,8 @@ class JS_FRIEND_API(Base) { } private: - Base(const Base &rhs) = delete; - Base &operator=(const Base &rhs) = delete; + Base(const Base& rhs) = delete; + Base& operator=(const Base& rhs) = delete; }; // A traits template with a specialization for each referent type that @@ -681,10 +681,10 @@ template<> struct Concrete : TracerConcrete { size_t size(mozilla::MallocSizeOf mallocSizeOf) const override; protected: - explicit Concrete(JSString* ptr) : TracerConcrete(ptr) { } + explicit Concrete(JSString *ptr) : TracerConcrete(ptr) { } public: - static void construct(void* storage, JSString* ptr) { new (storage) Concrete(ptr); } + static void construct(void *storage, JSString *ptr) { new (storage) Concrete(ptr); } }; // The ubi::Node null pointer. Any attempt to operate on a null ubi::Node asserts. diff --git a/js/src/builtin/SIMD.cpp b/js/src/builtin/SIMD.cpp index a078d376cd..8621aeb1b0 100644 --- a/js/src/builtin/SIMD.cpp +++ b/js/src/builtin/SIMD.cpp @@ -524,7 +524,7 @@ SIMDObject::initClass(JSContext* cx, Handle global) } JSObject* -js::InitSIMDClass(JSContext *cx, HandleObject obj) +js::InitSIMDClass(JSContext* cx, HandleObject obj) { MOZ_ASSERT(obj->is()); Rooted global(cx, &obj->as()); diff --git a/js/src/builtin/SIMD.h b/js/src/builtin/SIMD.h index f743032d96..4b8b80d3d1 100644 --- a/js/src/builtin/SIMD.h +++ b/js/src/builtin/SIMD.h @@ -505,7 +505,7 @@ INT32X4_FUNCTION_LIST(DECLARE_SIMD_INT32x4_FUNCTION) #undef DECLARE_SIMD_INT32x4_FUNCTION JSObject* -InitSIMDClass(JSContext *cx, HandleObject obj); +InitSIMDClass(JSContext* cx, HandleObject obj); } /* namespace js */ diff --git a/js/src/ctypes/CTypes.cpp b/js/src/ctypes/CTypes.cpp index e97ae0d2b9..1c5a722448 100644 --- a/js/src/ctypes/CTypes.cpp +++ b/js/src/ctypes/CTypes.cpp @@ -327,7 +327,7 @@ namespace FunctionType { bool ReturnTypeGetter(JSContext* cx, const JS::CallArgs& args); bool ABIGetter(JSContext* cx, const JS::CallArgs& args); bool IsVariadicGetter(JSContext* cx, const JS::CallArgs& args); -} +} // namespace FunctionType namespace CClosure { static void Trace(JSTracer* trc, JSObject* obj); @@ -348,7 +348,7 @@ namespace CClosure { void** args; ClosureInfo* cinfo; }; -} +} // namespace CClosure namespace CData { static void Finalize(JSFreeOp* fop, JSObject* obj); @@ -1488,7 +1488,7 @@ TypeError(JSContext* cx, const char* expected, HandleValue actual) static JSObject* InitCTypeClass(JSContext* cx, HandleObject ctypesObj) { - JSFunction *fun = JS_DefineFunction(cx, ctypesObj, "CType", ConstructAbstract, 0, + JSFunction* fun = JS_DefineFunction(cx, ctypesObj, "CType", ConstructAbstract, 0, CTYPESCTOR_FLAGS); if (!fun) return nullptr; @@ -5245,7 +5245,7 @@ ArrayType::Getter(JSContext* cx, HandleObject obj, HandleId idval, MutableHandle bool ArrayType::Setter(JSContext* cx, HandleObject obj, HandleId idval, MutableHandleValue vp, - ObjectOpResult &result) + ObjectOpResult& result) { // This should never happen, but we'll check to be safe. if (!CData::IsCData(obj)) { @@ -7649,7 +7649,7 @@ CDataFinalizer::Construct(JSContext* cx, unsigned argc, Value* vp) // Get arguments if (args.length() == 0) { // Special case: the empty (already finalized) object - JSObject *objResult = JS_NewObjectWithGivenProto(cx, &sCDataFinalizerClass, objProto); + JSObject* objResult = JS_NewObjectWithGivenProto(cx, &sCDataFinalizerClass, objProto); args.rval().setObject(*objResult); return true; } @@ -7748,7 +7748,7 @@ CDataFinalizer::Construct(JSContext* cx, unsigned argc, Value* vp) // 5. Create |objResult| - JSObject *objResult = JS_NewObjectWithGivenProto(cx, &sCDataFinalizerClass, objProto); + JSObject* objResult = JS_NewObjectWithGivenProto(cx, &sCDataFinalizerClass, objProto); if (!objResult) { return false; } diff --git a/js/src/ctypes/Library.cpp b/js/src/ctypes/Library.cpp index 3a73f1ad77..19895d8b6f 100644 --- a/js/src/ctypes/Library.cpp +++ b/js/src/ctypes/Library.cpp @@ -147,7 +147,7 @@ Library::Create(JSContext* cx, Value path_, const JSCTypesCallbacks* callbacks) PRLibrary* library = PR_LoadLibraryWithFlags(libSpec, 0); if (!library) { - char *error = (char*) JS_malloc(cx, PR_GetErrorTextLength() + 1); + char* error = (char*) JS_malloc(cx, PR_GetErrorTextLength() + 1); if (error) PR_GetErrorText(error); diff --git a/js/src/frontend/ParseNode.h b/js/src/frontend/ParseNode.h index 175f6ac566..28c6e35838 100644 --- a/js/src/frontend/ParseNode.h +++ b/js/src/frontend/ParseNode.h @@ -637,8 +637,8 @@ class ParseNode } unary; struct { /* name, labeled statement, etc. */ union { - JSAtom* atom; /* lexical name or label atom */ - ObjectBox* objbox; /* block or regexp object */ + JSAtom* atom; /* lexical name or label atom */ + ObjectBox* objbox; /* block or regexp object */ FunctionBox* funbox; /* function object */ }; union { @@ -1375,7 +1375,7 @@ struct ClassMethod : public BinaryNode { }; struct ClassNames : public BinaryNode { - ClassNames(ParseNode *outerBinding, ParseNode *innerBinding, const TokenPos &pos) + ClassNames(ParseNode* outerBinding, ParseNode* innerBinding, const TokenPos& pos) : BinaryNode(PNK_CLASSNAMES, JSOP_NOP, pos, outerBinding, innerBinding) { MOZ_ASSERT_IF(outerBinding, outerBinding->isKind(PNK_NAME)); @@ -1383,7 +1383,7 @@ struct ClassNames : public BinaryNode { MOZ_ASSERT_IF(outerBinding, innerBinding->pn_atom == outerBinding->pn_atom); } - static bool test(const ParseNode &node) { + static bool test(const ParseNode& node) { bool match = node.isKind(PNK_CLASSNAMES); MOZ_ASSERT_IF(match, node.isArity(PN_BINARY)); return match; @@ -1397,16 +1397,16 @@ struct ClassNames : public BinaryNode { * giving the methods access to the static members of the class even if * the outer binding has been overwritten. */ - ParseNode *outerBinding() const { + ParseNode* outerBinding() const { return pn_u.binary.left; } - ParseNode *innerBinding() const { + ParseNode* innerBinding() const { return pn_u.binary.right; } }; struct ClassNode : public TernaryNode { - ClassNode(ParseNode *names, ParseNode *heritage, ParseNode *methodsOrBlock) + ClassNode(ParseNode* names, ParseNode* heritage, ParseNode* methodsOrBlock) : TernaryNode(PNK_CLASS, JSOP_NOP, names, heritage, methodsOrBlock) { MOZ_ASSERT_IF(names, names->is()); @@ -1414,28 +1414,28 @@ struct ClassNode : public TernaryNode { methodsOrBlock->isKind(PNK_CLASSMETHODLIST)); } - static bool test(const ParseNode &node) { + static bool test(const ParseNode& node) { bool match = node.isKind(PNK_CLASS); MOZ_ASSERT_IF(match, node.isArity(PN_TERNARY)); return match; } - ClassNames *names() const { + ClassNames* names() const { return pn_kid1 ? &pn_kid1->as() : nullptr; } - ParseNode *heritage() const { + ParseNode* heritage() const { return pn_kid2; } - ParseNode *methodList() const { + ParseNode* methodList() const { if (pn_kid3->isKind(PNK_CLASSMETHODLIST)) return pn_kid3; MOZ_ASSERT(pn_kid3->is()); - ParseNode *list = pn_kid3->pn_expr; + ParseNode* list = pn_kid3->pn_expr; MOZ_ASSERT(list->isKind(PNK_CLASSMETHODLIST)); return list; } - ObjectBox *scopeObject() const { + ObjectBox* scopeObject() const { MOZ_ASSERT(pn_kid3->is()); return pn_kid3->pn_objbox; } diff --git a/js/src/gc/GCInternals.h b/js/src/gc/GCInternals.h index 3fcdbfb0a6..0c07eace01 100644 --- a/js/src/gc/GCInternals.h +++ b/js/src/gc/GCInternals.h @@ -155,7 +155,7 @@ struct MovingTracer : JS::CallbackTracer class AutoMaybeStartBackgroundAllocation { private: - JSRuntime *runtime; + JSRuntime* runtime; MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: @@ -165,7 +165,7 @@ class AutoMaybeStartBackgroundAllocation MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - void tryToStartBackgroundAllocation(JSRuntime *rt) { + void tryToStartBackgroundAllocation(JSRuntime* rt) { runtime = rt; } diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp index 13dedfdd85..4984d07a04 100644 --- a/js/src/gc/Memory.cpp +++ b/js/src/gc/Memory.cpp @@ -103,6 +103,8 @@ InitMemorySubsystem() } } +# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + static inline void* MapMemoryAt(void* desired, size_t length, int flags, int prot = PAGE_READWRITE) { @@ -279,6 +281,57 @@ GetPageFaultCount() return pmc.PageFaultCount; } +# else // Various APIs are unavailable. + +void* +MapAlignedPages(size_t size, size_t alignment) +{ + MOZ_ASSERT(size >= alignment); + MOZ_ASSERT(size % alignment == 0); + MOZ_ASSERT(size % pageSize == 0); + MOZ_ASSERT(alignment % allocGranularity == 0); + + void* p = _aligned_malloc(size, alignment); + + MOZ_ASSERT(OffsetFromAligned(p, alignment) == 0); + return p; +} + +static void* +MapAlignedPagesLastDitch(size_t size, size_t alignment) +{ + return nullptr; +} + +void +UnmapPages(void* p, size_t size) +{ + _aligned_free(p); +} + +bool +MarkPagesUnused(void* p, size_t size) +{ + MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0); + return true; +} + +bool +MarkPagesInUse(void* p, size_t size) +{ + MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0); + return true; +} + +size_t +GetPageFaultCount() +{ + // GetProcessMemoryInfo is unavailable. + return 0; +} + +# endif + void* AllocateMappedContent(int fd, size_t offset, size_t length, size_t alignment) { @@ -323,6 +376,12 @@ MapAlignedPages(size_t size, size_t alignment) return p; } +static void* +MapAlignedPagesLastDitch(size_t size, size_t alignment) +{ + return nullptr; +} + void UnmapPages(void* p, size_t size) { diff --git a/js/src/jit-test/tests/self-test/getBacktrace-bug1138195.js b/js/src/jit-test/tests/self-test/getBacktrace-bug1138195.js new file mode 100644 index 0000000000..092cdd936f --- /dev/null +++ b/js/src/jit-test/tests/self-test/getBacktrace-bug1138195.js @@ -0,0 +1,8 @@ + +function f(x) { + for (var i = 0; i < 40; ++i) { + var stack = getBacktrace({args: true}); + (function() { g = x;}); + } +} +f(1); diff --git a/js/src/jit/CodeGenerator.h b/js/src/jit/CodeGenerator.h index 3375d49703..672087e002 100644 --- a/js/src/jit/CodeGenerator.h +++ b/js/src/jit/CodeGenerator.h @@ -208,19 +208,19 @@ class CodeGenerator : public CodeGeneratorSpecific void visitBoundsCheck(LBoundsCheck* lir); void visitBoundsCheckRange(LBoundsCheckRange* lir); void visitBoundsCheckLower(LBoundsCheckLower* lir); - void visitLoadFixedSlotV(LLoadFixedSlotV *ins); - void visitLoadFixedSlotT(LLoadFixedSlotT *ins); - void visitStoreFixedSlotV(LStoreFixedSlotV *ins); - void visitStoreFixedSlotT(LStoreFixedSlotT *ins); + void visitLoadFixedSlotV(LLoadFixedSlotV* ins); + void visitLoadFixedSlotT(LLoadFixedSlotT* ins); + void visitStoreFixedSlotV(LStoreFixedSlotV* ins); + void visitStoreFixedSlotT(LStoreFixedSlotT* ins); void emitGetPropertyPolymorphic(LInstruction* lir, Register obj, - Register scratch, const TypedOrValueRegister &output); - void visitGetPropertyPolymorphicV(LGetPropertyPolymorphicV *ins); - void visitGetPropertyPolymorphicT(LGetPropertyPolymorphicT *ins); + Register scratch, const TypedOrValueRegister& output); + void visitGetPropertyPolymorphicV(LGetPropertyPolymorphicV* ins); + void visitGetPropertyPolymorphicT(LGetPropertyPolymorphicT* ins); void emitSetPropertyPolymorphic(LInstruction* lir, Register obj, - Register scratch, const ConstantOrRegister &value); - void visitSetPropertyPolymorphicV(LSetPropertyPolymorphicV *ins); - void visitArraySplice(LArraySplice *splice); - void visitSetPropertyPolymorphicT(LSetPropertyPolymorphicT *ins); + Register scratch, const ConstantOrRegister& value); + void visitSetPropertyPolymorphicV(LSetPropertyPolymorphicV* ins); + void visitArraySplice(LArraySplice* splice); + void visitSetPropertyPolymorphicT(LSetPropertyPolymorphicT* ins); void visitAbsI(LAbsI* lir); void visitAtan2D(LAtan2D* lir); void visitHypot(LHypot* lir); @@ -251,11 +251,11 @@ class CodeGenerator : public CodeGeneratorSpecific void visitCallInitElementArray(LCallInitElementArray* lir); void visitThrow(LThrow* lir); void visitTypeOfV(LTypeOfV* lir); - void visitOutOfLineTypeOfV(OutOfLineTypeOfV *ool); + void visitOutOfLineTypeOfV(OutOfLineTypeOfV* ool); void visitToIdV(LToIdV* lir); - template void emitLoadElementT(LLoadElementT* lir, const T &source); + template void emitLoadElementT(LLoadElementT* lir, const T& source); void visitLoadElementT(LLoadElementT* lir); - void visitLoadElementV(LLoadElementV *load); + void visitLoadElementV(LLoadElementV* load); void visitLoadElementHole(LLoadElementHole* lir); void visitLoadUnboxedPointerV(LLoadUnboxedPointerV* lir); void visitLoadUnboxedPointerT(LLoadUnboxedPointerT* lir); @@ -300,19 +300,19 @@ class CodeGenerator : public CodeGeneratorSpecific void visitRunOncePrologue(LRunOncePrologue* lir); void emitRest(LInstruction* lir, Register array, Register numActuals, Register temp0, Register temp1, unsigned numFormals, - JSObject *templateObject, bool saveAndRestore, Register resultreg); + JSObject* templateObject, bool saveAndRestore, Register resultreg); void visitRest(LRest* lir); - void visitCallSetProperty(LCallSetProperty *ins); + void visitCallSetProperty(LCallSetProperty* ins); void visitCallDeleteProperty(LCallDeleteProperty* lir); void visitCallDeleteElement(LCallDeleteElement* lir); void visitBitNotV(LBitNotV* lir); void visitBitOpV(LBitOpV* lir); - void emitInstanceOf(LInstruction *ins, JSObject *prototypeObject); - void visitIn(LIn *ins); - void visitInArray(LInArray *ins); - void visitInstanceOfO(LInstanceOfO *ins); - void visitInstanceOfV(LInstanceOfV *ins); - void visitCallInstanceOf(LCallInstanceOf *ins); + void emitInstanceOf(LInstruction* ins, JSObject* prototypeObject); + void visitIn(LIn* ins); + void visitInArray(LInArray* ins); + void visitInstanceOfO(LInstanceOfO* ins); + void visitInstanceOfV(LInstanceOfV* ins); + void visitCallInstanceOf(LCallInstanceOf* ins); void visitGetDOMProperty(LGetDOMProperty* lir); void visitGetDOMMemberV(LGetDOMMemberV* lir); void visitGetDOMMemberT(LGetDOMMemberT* lir); @@ -320,13 +320,13 @@ class CodeGenerator : public CodeGeneratorSpecific void visitCallDOMNative(LCallDOMNative* lir); void visitCallGetIntrinsicValue(LCallGetIntrinsicValue* lir); void visitIsCallable(LIsCallable* lir); - void visitOutOfLineIsCallable(OutOfLineIsCallable *ool); + void visitOutOfLineIsCallable(OutOfLineIsCallable* ool); void visitIsObject(LIsObject* lir); void visitIsObjectAndBranch(LIsObjectAndBranch* lir); void visitHasClass(LHasClass* lir); void visitAsmJSParameter(LAsmJSParameter* lir); void visitAsmJSReturn(LAsmJSReturn* ret); - void visitAsmJSVoidReturn(LAsmJSVoidReturn *ret); + void visitAsmJSVoidReturn(LAsmJSVoidReturn* ret); void visitLexicalCheck(LLexicalCheck* ins); void visitThrowUninitializedLexical(LThrowUninitializedLexical* ins); void visitDebugger(LDebugger* ins); diff --git a/js/src/jit/Ion.h b/js/src/jit/Ion.h index e2997dab39..af223df318 100644 --- a/js/src/jit/Ion.h +++ b/js/src/jit/Ion.h @@ -183,22 +183,22 @@ TooManyFormalArguments(unsigned nargs) } inline size_t -NumLocalsAndArgs(JSScript *script) +NumLocalsAndArgs(JSScript* script) { size_t num = 1 /* this */ + script->nfixed(); - if (JSFunction *fun = script->functionNonDelazifying()) + if (JSFunction* fun = script->functionNonDelazifying()) num += fun->nargs(); return num; } -bool OffThreadCompilationAvailable(JSContext *cx); +bool OffThreadCompilationAvailable(JSContext* cx); -void ForbidCompilation(JSContext *cx, JSScript *script); +void ForbidCompilation(JSContext* cx, JSScript* script); -void PurgeCaches(JSScript *script); -size_t SizeOfIonData(JSScript *script, mozilla::MallocSizeOf mallocSizeOf); -void DestroyJitScripts(FreeOp *fop, JSScript *script); -void TraceJitScripts(JSTracer* trc, JSScript *script); +void PurgeCaches(JSScript* script); +size_t SizeOfIonData(JSScript* script, mozilla::MallocSizeOf mallocSizeOf); +void DestroyJitScripts(FreeOp* fop, JSScript* script); +void TraceJitScripts(JSTracer* trc, JSScript* script); bool JitSupportsFloatingPoint(); bool JitSupportsSimd(); diff --git a/js/src/jit/LIR.h b/js/src/jit/LIR.h index 74c3ad28ba..6a40492150 100644 --- a/js/src/jit/LIR.h +++ b/js/src/jit/LIR.h @@ -993,40 +993,40 @@ namespace details { size_t numDefs() const final override { return Defs; } - LDefinition *getDef(size_t index) final override { + LDefinition* getDef(size_t index) final override { return &defs_[index]; } size_t numTemps() const final override { return Temps; } - LDefinition *getTemp(size_t index) final override { + LDefinition* getTemp(size_t index) final override { return &temps_[index]; } - void setDef(size_t index, const LDefinition &def) final override { + void setDef(size_t index, const LDefinition& def) final override { defs_[index] = def; } - void setTemp(size_t index, const LDefinition &a) final override { + void setTemp(size_t index, const LDefinition& a) final override { temps_[index] = a; } size_t numSuccessors() const override { return 0; } - MBasicBlock *getSuccessor(size_t i) const override { + MBasicBlock* getSuccessor(size_t i) const override { MOZ_ASSERT(false); return nullptr; } - void setSuccessor(size_t i, MBasicBlock *successor) override { + void setSuccessor(size_t i, MBasicBlock* successor) override { MOZ_ASSERT(false); } // Default accessors, assuming a single input and output, respectively. - const LAllocation *input() { + const LAllocation* input() { MOZ_ASSERT(numOperands() == 1); return getOperand(0); } - const LDefinition *output() { + const LDefinition* output() { MOZ_ASSERT(numDefs() == 1); return getDef(0); } @@ -1042,10 +1042,10 @@ class LInstructionHelper : public details::LInstructionFixedDefsTempsHelper operands_; public: - bool init(TempAllocator &alloc, size_t length) { + bool init(TempAllocator& alloc, size_t length) { return operands_.init(alloc, length); } size_t numOperands() const final override { return operands_.length(); } - LAllocation *getOperand(size_t index) final override { + LAllocation* getOperand(size_t index) final override { return &operands_[index]; } - void setOperand(size_t index, const LAllocation &a) final override { + void setOperand(size_t index, const LAllocation& a) final override { operands_[index] = a; } }; @@ -1364,7 +1364,7 @@ class LSafepoint : public TempObject liveRegs_.addUnchecked(reg); assertInvariants(); } - const LiveRegisterSet &liveRegs() const { + const LiveRegisterSet& liveRegs() const { return liveRegs_; } #ifdef CHECK_OSIPOINT_REGISTERS @@ -1372,7 +1372,7 @@ class LSafepoint : public TempObject clobberedRegs_.addUnchecked(reg); assertInvariants(); } - const LiveRegisterSet &clobberedRegs() const { + const LiveRegisterSet& clobberedRegs() const { return clobberedRegs_; } #endif @@ -1389,11 +1389,11 @@ class LSafepoint : public TempObject assertInvariants(); return result; } - SlotList &gcSlots() { + SlotList& gcSlots() { return gcSlots_; } - SlotList &slotsOrElementsSlots() { + SlotList& slotsOrElementsSlots() { return slotsOrElementsSlots_; } LiveGeneralRegisterSet slotsOrElementsRegs() const { diff --git a/js/src/jit/Linker.h b/js/src/jit/Linker.h index 9d715c7474..340b98e3dd 100644 --- a/js/src/jit/Linker.h +++ b/js/src/jit/Linker.h @@ -23,7 +23,7 @@ class Linker { MacroAssembler& masm; - JitCode *fail(JSContext *cx) { + JitCode* fail(JSContext* cx) { ReportOutOfMemory(cx); return nullptr; } diff --git a/js/src/jit/MIRGraph.h b/js/src/jit/MIRGraph.h index 1dbb82dfa2..7516161d40 100644 --- a/js/src/jit/MIRGraph.h +++ b/js/src/jit/MIRGraph.h @@ -57,7 +57,7 @@ class MBasicBlock : public TempObject, public InlineListNode // This block cannot be reached by any means. bool unreachable_; - MResumePoint *callerResumePoint_; + MResumePoint* callerResumePoint_; // Pushes a copy of a local variable or argument. void pushVariable(uint32_t slot); diff --git a/js/src/jit/OptimizationTracking.h b/js/src/jit/OptimizationTracking.h index e51c0df8ff..af142c28bd 100644 --- a/js/src/jit/OptimizationTracking.h +++ b/js/src/jit/OptimizationTracking.h @@ -323,7 +323,7 @@ class IonTrackedOptimizationsRegion // Find the index of tracked optimization info (e.g., type info and // attempts) at a native code offset. - mozilla::Maybe findIndex(uint32_t offset, uint32_t *entryOffsetOut) const; + mozilla::Maybe findIndex(uint32_t offset, uint32_t* entryOffsetOut) const; // For the variants below, S stands for startDelta, L for length, and I // for index. These were automatically generated from training on the @@ -503,14 +503,14 @@ class IonTrackedOptimizationsTypeInfo class ForEachOpAdapter : public ForEachOp { - JS::ForEachTrackedOptimizationTypeInfoOp &op_; + JS::ForEachTrackedOptimizationTypeInfoOp& op_; public: - explicit ForEachOpAdapter(JS::ForEachTrackedOptimizationTypeInfoOp &op) + explicit ForEachOpAdapter(JS::ForEachTrackedOptimizationTypeInfoOp& op) : op_(op) { } - void readType(const IonTrackedTypeWithAddendum &tracked) override; + void readType(const IonTrackedTypeWithAddendum& tracked) override; void operator()(JS::TrackedTypeSite site, MIRType mirType) override; }; diff --git a/js/src/jit/Recover.cpp b/js/src/jit/Recover.cpp index ae7bb84625..1f74af1cbc 100644 --- a/js/src/jit/Recover.cpp +++ b/js/src/jit/Recover.cpp @@ -1308,23 +1308,23 @@ RLambda::recover(JSContext* cx, SnapshotIterator& iter) const } bool -MSimdBox::writeRecoverData(CompactBufferWriter &writer) const +MSimdBox::writeRecoverData(CompactBufferWriter& writer) const { MOZ_ASSERT(canRecoverOnBailout()); writer.writeUnsigned(uint32_t(RInstruction::Recover_SimdBox)); - SimdTypeDescr &simdTypeDescr = templateObject()->typeDescr().as(); + SimdTypeDescr& simdTypeDescr = templateObject()->typeDescr().as(); SimdTypeDescr::Type type = simdTypeDescr.type(); writer.writeByte(uint8_t(type)); return true; } -RSimdBox::RSimdBox(CompactBufferReader &reader) +RSimdBox::RSimdBox(CompactBufferReader& reader) { type_ = reader.readByte(); } bool -RSimdBox::recover(JSContext* cx, SnapshotIterator &iter) const +RSimdBox::recover(JSContext* cx, SnapshotIterator& iter) const { JSObject* resultObject = nullptr; RValueAllocation a = iter.readAllocation(); diff --git a/js/src/jit/Recover.h b/js/src/jit/Recover.h index 5b3bd135dd..4d2d879267 100644 --- a/js/src/jit/Recover.h +++ b/js/src/jit/Recover.h @@ -732,7 +732,7 @@ class RSimdBox final : public RInstruction return 1; } - bool recover(JSContext* cx, SnapshotIterator &iter) const; + bool recover(JSContext* cx, SnapshotIterator& iter) const; }; class RObjectState final : public RInstruction @@ -795,7 +795,7 @@ class RAssertRecoveredOnBailout final : public RInstruction return 1; } - bool recover(JSContext *cx, SnapshotIterator &iter) const; + bool recover(JSContext* cx, SnapshotIterator& iter) const; }; #undef RINSTRUCTION_HEADER_ diff --git a/js/src/jit/Registers.h b/js/src/jit/Registers.h index 86e8ff1858..0bde25884d 100644 --- a/js/src/jit/Registers.h +++ b/js/src/jit/Registers.h @@ -154,7 +154,7 @@ class MachineState static MachineState FromBailout(RegisterDump::GPRArray& regs, RegisterDump::FPUArray& fpregs); void setRegisterLocation(Register reg, uintptr_t* up) { - regs_[reg.code()] = (Registers::RegisterContent* ) up; + regs_[reg.code()] = (Registers::RegisterContent*) up; } void setRegisterLocation(FloatRegister reg, float* fp) { MOZ_ASSERT(reg.isSingle()); diff --git a/js/src/jit/TypePolicy.h b/js/src/jit/TypePolicy.h index 6d9f3952d8..a84019ab7e 100644 --- a/js/src/jit/TypePolicy.h +++ b/js/src/jit/TypePolicy.h @@ -324,7 +324,7 @@ class SimdAllPolicy final : public TypePolicy { public: SPECIALIZATION_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; template @@ -332,21 +332,21 @@ class SimdPolicy final : public TypePolicy { public: SPECIALIZATION_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; class SimdSelectPolicy final : public TypePolicy { public: SPECIALIZATION_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; class SimdShufflePolicy final : public TypePolicy { public: SPECIALIZATION_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; // SIMD value-type policy, use the returned type of the instruction to determine @@ -454,36 +454,36 @@ class StoreTypedArrayElementStaticPolicy; class StoreUnboxedScalarPolicy : public TypePolicy { private: - static bool adjustValueInput(TempAllocator &alloc, MInstruction *ins, Scalar::Type arrayType, - MDefinition *value, int valueOperand); + static bool adjustValueInput(TempAllocator& alloc, MInstruction* ins, Scalar::Type arrayType, + MDefinition* value, int valueOperand); friend class StoreTypedArrayHolePolicy; friend class StoreTypedArrayElementStaticPolicy; public: EMPTY_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; class StoreTypedArrayHolePolicy final : public StoreUnboxedScalarPolicy { public: EMPTY_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; class StoreTypedArrayElementStaticPolicy final : public StoreUnboxedScalarPolicy { public: EMPTY_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *ins) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* ins) override; }; class StoreUnboxedObjectOrNullPolicy final : public TypePolicy { public: EMPTY_DATA_; - virtual bool adjustInputs(TempAllocator &alloc, MInstruction *def) override; + virtual bool adjustInputs(TempAllocator& alloc, MInstruction* def) override; }; // Accepts integers and doubles. Everything else is boxed. diff --git a/js/src/jit/VMFunctions.h b/js/src/jit/VMFunctions.h index 5ad7b7c167..f03a61c1db 100644 --- a/js/src/jit/VMFunctions.h +++ b/js/src/jit/VMFunctions.h @@ -57,7 +57,7 @@ enum MaybeTailCall { // specified. In this case, the return type must be boolean to indicate // failure. // -// All functions described by VMFunction take a JSContext* as a first +// All functions described by VMFunction take a JSContext * as a first // argument, and are treated as re-entrant into the VM and therefore fallible. struct VMFunction { @@ -68,7 +68,7 @@ struct VMFunction // Address of the C function. void* wrapped; - // Number of arguments expected, excluding JSContext* as an implicit + // Number of arguments expected, excluding JSContext * as an implicit // first argument and an outparam as a possible implicit final argument. uint32_t explicitArgs; diff --git a/js/src/jit/mips32/Architecture-mips32.h b/js/src/jit/mips32/Architecture-mips32.h index 4b1e954a74..0c97800790 100644 --- a/js/src/jit/mips32/Architecture-mips32.h +++ b/js/src/jit/mips32/Architecture-mips32.h @@ -12,8 +12,6 @@ #include #include -#include "js/Utility.h" - #define REGISTERS_NAMES \ { "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", \ "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", \ @@ -33,6 +31,8 @@ #include "jit/mips-shared/Architecture-mips-shared.h" +#include "js/Utility.h" + namespace js { namespace jit { diff --git a/js/src/jit/none/Architecture-none.h b/js/src/jit/none/Architecture-none.h index 2e71dc6c55..b98e502c25 100644 --- a/js/src/jit/none/Architecture-none.h +++ b/js/src/jit/none/Architecture-none.h @@ -122,12 +122,12 @@ struct FloatRegister bool equiv(FloatRegister) const { MOZ_CRASH(); } uint32_t size() const { MOZ_CRASH(); } uint32_t numAlignedAliased() const { MOZ_CRASH(); } - void alignedAliased(uint32_t, FloatRegister *) { MOZ_CRASH(); } + void alignedAliased(uint32_t, FloatRegister*) { MOZ_CRASH(); } SetType alignedOrDominatedAliasedSet() const { MOZ_CRASH(); } template static T ReduceSetForPush(T) { MOZ_CRASH(); } uint32_t getRegisterDumpOffsetInBytes() { MOZ_CRASH(); } static uint32_t SetSize(SetType x) { MOZ_CRASH(); } - static Code FromName(const char *name) { MOZ_CRASH(); } + static Code FromName(const char* name) { MOZ_CRASH(); } // This is used in static initializers, so produce a bogus value instead of crashing. static uint32_t GetPushSizeInBytes(const TypedRegisterSet&) { return 0; } diff --git a/js/src/jit/shared/Lowering-shared-inl.h b/js/src/jit/shared/Lowering-shared-inl.h index efb9e1d257..e46953729b 100644 --- a/js/src/jit/shared/Lowering-shared-inl.h +++ b/js/src/jit/shared/Lowering-shared-inl.h @@ -36,7 +36,7 @@ LIRGeneratorShared::use(MDefinition* mir, LUse policy) } template void -LIRGeneratorShared::define(details::LInstructionFixedDefsTempsHelper<1, X> *lir, MDefinition *mir, +LIRGeneratorShared::define(details::LInstructionFixedDefsTempsHelper<1, X>* lir, MDefinition* mir, LDefinition::Policy policy) { LDefinition::Type type = LDefinition::TypeFrom(mir->type()); @@ -44,8 +44,8 @@ LIRGeneratorShared::define(details::LInstructionFixedDefsTempsHelper<1, X> *lir, } template void -LIRGeneratorShared::define(details::LInstructionFixedDefsTempsHelper<1, X> *lir, MDefinition *mir, - const LDefinition &def) +LIRGeneratorShared::define(details::LInstructionFixedDefsTempsHelper<1, X>* lir, MDefinition* mir, + const LDefinition& def) { // Call instructions should use defineReturn. MOZ_ASSERT(!lir->isCall()); @@ -320,7 +320,7 @@ LIRGeneratorShared::useRegisterOrConstantAtStart(MDefinition* mir) } LAllocation -LIRGeneratorShared::useRegisterOrZeroAtStart(MDefinition *mir) +LIRGeneratorShared::useRegisterOrZeroAtStart(MDefinition* mir) { if (mir->isConstant() && mir->toConstant()->value().isInt32(0)) return LAllocation(); @@ -550,7 +550,7 @@ LIRGeneratorShared::useRegisterForTypedLoad(MDefinition* mir, MIRType type) } void -LIRGeneratorShared::useBox(LInstruction *lir, size_t n, MDefinition *mir, +LIRGeneratorShared::useBox(LInstruction* lir, size_t n, MDefinition* mir, LUse::Policy policy, bool useAtStart) { MOZ_ASSERT(mir->type() == MIRType_Value); diff --git a/js/src/jit/shared/Lowering-shared.h b/js/src/jit/shared/Lowering-shared.h index 9f5089c513..3523bf639b 100644 --- a/js/src/jit/shared/Lowering-shared.h +++ b/js/src/jit/shared/Lowering-shared.h @@ -107,7 +107,7 @@ class LIRGeneratorShared : public MDefinitionVisitor inline LAllocation useKeepaliveOrConstant(MDefinition* mir); inline LAllocation useRegisterOrConstant(MDefinition* mir); inline LAllocation useRegisterOrConstantAtStart(MDefinition* mir); - inline LAllocation useRegisterOrZeroAtStart(MDefinition *mir); + inline LAllocation useRegisterOrZeroAtStart(MDefinition* mir); inline LAllocation useRegisterOrNonDoubleConstant(MDefinition* mir); inline LUse useRegisterForTypedLoad(MDefinition* mir, MIRType type); @@ -150,7 +150,7 @@ class LIRGeneratorShared : public MDefinitionVisitor LDefinition::Policy policy = LDefinition::REGISTER); template inline void define(details::LInstructionFixedDefsTempsHelper<1, X>* lir, MDefinition* mir, - const LDefinition &def); + const LDefinition& def); template inline void defineReuseInput(LInstructionHelper<1, Ops, Temps>* lir, MDefinition* mir, uint32_t operand); diff --git a/js/src/jsapi-tests/testChromeBuffer.cpp b/js/src/jsapi-tests/testChromeBuffer.cpp index 5d1a857d42..caf2f72d13 100644 --- a/js/src/jsapi-tests/testChromeBuffer.cpp +++ b/js/src/jsapi-tests/testChromeBuffer.cpp @@ -63,8 +63,8 @@ BEGIN_TEST(testChromeBuffer) * buffer space. */ { - JSRuntimeOptions oldOptions = JS::RuntimeOptionsRef(rt); // Disable the JIT because if we don't this test fails. See bug 1160414. + JS::RuntimeOptions oldOptions = JS::RuntimeOptionsRef(rt); JS::RuntimeOptionsRef(rt).setIon(false).setBaseline(false); { JSAutoCompartment ac(cx, trusted_glob); diff --git a/js/src/jsapi-tests/testGCAllocator.cpp b/js/src/jsapi-tests/testGCAllocator.cpp index ee5d4555f0..f9c8058ec2 100644 --- a/js/src/jsapi-tests/testGCAllocator.cpp +++ b/js/src/jsapi-tests/testGCAllocator.cpp @@ -30,14 +30,19 @@ BEGIN_TEST(testGCAllocator) { + size_t PageSize = 0; #if defined(XP_WIN) +# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); - const size_t PageSize = sysinfo.dwPageSize; + PageSize = sysinfo.dwPageSize; +# else // Various APIs are unavailable. This test is disabled. + return true; +# endif #elif defined(SOLARIS) return true; #elif defined(XP_UNIX) - const size_t PageSize = size_t(sysconf(_SC_PAGESIZE)); + PageSize = size_t(sysconf(_SC_PAGESIZE)); #else return true; #endif @@ -269,6 +274,7 @@ positionIsCorrect(const char* str, void* base, void** chunkPool, int tempChunks, } #if defined(XP_WIN) +# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) void* mapMemoryAt(void* desired, size_t length) @@ -288,8 +294,19 @@ unmapPages(void* p, size_t size) MOZ_ALWAYS_TRUE(VirtualFree(p, 0, MEM_RELEASE)); } -#elif defined(SOLARIS) -// This test doesn't apply to Solaris. +# else // Various APIs are unavailable. This test is disabled. + +void* mapMemoryAt(void* desired, size_t length) { return nullptr; } +void* mapMemory(size_t length) { return nullptr; } +void unmapPages(void* p, size_t size) { } + +# endif +#elif defined(SOLARIS) // This test doesn't apply to Solaris. + +void* mapMemoryAt(void* desired, size_t length) { return nullptr; } +void* mapMemory(size_t length) { return nullptr; } +void unmapPages(void* p, size_t size) { } + #elif defined(XP_UNIX) void* diff --git a/js/src/jsapi.h b/js/src/jsapi.h index d92d52360f..b66614fc1d 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -2666,9 +2666,9 @@ class MutablePropertyDescriptorOperations : public PropertyDescriptorOperations< JS::MutableHandleObject object() { return JS::MutableHandleObject::fromMarkedLocation(&desc()->obj); } - unsigned &attributesRef() { return desc()->attrs; } - JSGetterOp &getter() { return desc()->getter; } - JSSetterOp &setter() { return desc()->setter; } + unsigned& attributesRef() { return desc()->attrs; } + JSGetterOp& getter() { return desc()->getter; } + JSSetterOp& setter() { return desc()->setter; } JS::MutableHandleValue value() { return JS::MutableHandleValue::fromMarkedLocation(&desc()->value); } @@ -5405,7 +5405,7 @@ GetSavedFrameSource(JSContext* cx, HandleObject savedFrame, MutableHandleString * Given a SavedFrame JSObject, get its line property. Defaults to 0. */ extern JS_PUBLIC_API(SavedFrameResult) -GetSavedFrameLine(JSContext *cx, HandleObject savedFrame, uint32_t *linep); +GetSavedFrameLine(JSContext* cx, HandleObject savedFrame, uint32_t* linep); /* * Given a SavedFrame JSObject, get its column property. Defaults to 0. diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp index 397282ac88..0992023ebe 100644 --- a/js/src/jsarray.cpp +++ b/js/src/jsarray.cpp @@ -612,7 +612,14 @@ js::ArraySetLength(JSContext* cx, Handle arr, HandleId id, // that element must prevent any deletions below it. Bug 586842 should // fix this inefficiency by moving indexed storage to be entirely // separate from non-indexed storage. - if (!arr->isIndexed()) { + // A second reason for this optimization to be invalid is an active + // for..in iteration over the array. Keys deleted before being reached + // during the iteration must not be visited, and suppressing them here + // would be too costly. + ObjectGroup* arrGroup = arr->getGroup(cx); + if (!arr->isIndexed() && + !MOZ_UNLIKELY(!arrGroup || arrGroup->hasAllFlags(OBJECT_FLAG_ITERATED))) + { if (!arr->maybeCopyElementsForWrite(cx)) return false; diff --git a/js/src/jsgc.h b/js/src/jsgc.h index 1db9b708ff..31216b29ea 100644 --- a/js/src/jsgc.h +++ b/js/src/jsgc.h @@ -1269,11 +1269,11 @@ enum VerifierType { #ifdef JS_GC_ZEAL -extern const char *ZealModeHelpText; +extern const char* ZealModeHelpText; /* Check that write barriers have been used correctly. See jsgc.cpp. */ void -VerifyBarriers(JSRuntime *rt, VerifierType type); +VerifyBarriers(JSRuntime* rt, VerifierType type); void MaybeVerifyBarriers(JSContext* cx, bool always = false); @@ -1341,8 +1341,8 @@ class ZoneList ZoneList& operator=(const ZoneList& other) = delete; }; -JSObject * -NewMemoryStatisticsObject(JSContext *cx); +JSObject* +NewMemoryStatisticsObject(JSContext* cx); } /* namespace gc */ diff --git a/js/src/jsiter.cpp b/js/src/jsiter.cpp index 9c04014da5..dcf7302b2f 100644 --- a/js/src/jsiter.cpp +++ b/js/src/jsiter.cpp @@ -511,8 +511,8 @@ Compare(T* a, T* b, size_t c) static bool legacy_iterator_next(JSContext* cx, unsigned argc, Value* vp); -static inline PropertyIteratorObject * -NewPropertyIteratorObject(JSContext *cx, unsigned flags) +static inline PropertyIteratorObject* +NewPropertyIteratorObject(JSContext* cx, unsigned flags) { if (flags & JSITER_ENUMERATE) { RootedObjectGroup group(cx, ObjectGroup::defaultNewGroup(cx, &PropertyIteratorObject::class_, @@ -520,18 +520,18 @@ NewPropertyIteratorObject(JSContext *cx, unsigned flags) if (!group) return nullptr; - const Class *clasp = &PropertyIteratorObject::class_; + const Class* clasp = &PropertyIteratorObject::class_; RootedShape shape(cx, EmptyShape::getInitialShape(cx, clasp, TaggedProto(nullptr), ITERATOR_FINALIZE_KIND)); if (!shape) return nullptr; - JSObject *obj = JSObject::create(cx, ITERATOR_FINALIZE_KIND, + JSObject* obj = JSObject::create(cx, ITERATOR_FINALIZE_KIND, GetInitialHeap(GenericObject, clasp), shape, group); if (!obj) return nullptr; - PropertyIteratorObject *res = &obj->as(); + PropertyIteratorObject* res = &obj->as(); MOZ_ASSERT(res->numFixedSlots() == JSObject::ITER_CLASS_NFIXED_SLOTS); return res; diff --git a/js/src/jsnativestack.cpp b/js/src/jsnativestack.cpp index 690dc5a14d..7fb532d95f 100644 --- a/js/src/jsnativestack.cpp +++ b/js/src/jsnativestack.cpp @@ -47,6 +47,10 @@ js::GetNativeStackBaseImpl() PNT_TIB64 pTib = reinterpret_cast(NtCurrentTeb()); return reinterpret_cast(pTib->StackBase); +# elif defined(_M_ARM) + PNT_TIB pTib = reinterpret_cast(NtCurrentTeb()); + return static_cast(pTib->StackBase); + # elif defined(_WIN32) && defined(__GNUC__) NT_TIB* pTib; asm ("movl %%fs:0x18, %0\n" : "=r" (pTib)); diff --git a/js/src/jsnum.cpp b/js/src/jsnum.cpp index 6f4bf731f6..c12d763a57 100644 --- a/js/src/jsnum.cpp +++ b/js/src/jsnum.cpp @@ -681,7 +681,7 @@ Int32ToCString(ToCStringBuf* cbuf, int32_t i, size_t* len, int base = 10) } template -static JSString * +static JSString* NumberToStringWithBase(ExclusiveContext* cx, double d, int base); MOZ_ALWAYS_INLINE bool diff --git a/js/src/jsobj.cpp b/js/src/jsobj.cpp index 1f78bee5c9..e63426f848 100644 --- a/js/src/jsobj.cpp +++ b/js/src/jsobj.cpp @@ -871,7 +871,7 @@ js::NewObjectWithGroupCommon(ExclusiveContext* cx, HandleObjectGroup group, return nullptr; if (isCachable && !obj->as().hasDynamicSlots()) { - NewObjectCache &cache = cx->asJSContext()->runtime()->newObjectCache; + NewObjectCache& cache = cx->asJSContext()->runtime()->newObjectCache; NewObjectCache::EntryIndex entry = -1; cache.lookupGroup(group, allocKind, &entry); cache.fillGroup(entry, group, allocKind, &obj->as()); @@ -915,7 +915,7 @@ js::CreateThis(JSContext* cx, const Class* newclasp, HandleObject callee) return NewObjectWithClassProto(cx, newclasp, proto, kind); } -static inline JSObject* +static inline JSObject* CreateThisForFunctionWithGroup(JSContext* cx, HandleObjectGroup group, NewObjectKind newKind) { @@ -2678,7 +2678,7 @@ js::DefineProperty(ExclusiveContext* cx, HandleObject obj, PropertyName* name, H bool js::DefineElement(ExclusiveContext* cx, HandleObject obj, uint32_t index, HandleValue value, - JSGetterOp getter, JSSetterOp setter, unsigned attrs) + JSGetterOp getter, JSSetterOp setter, unsigned attrs) { MOZ_ASSERT(getter != JS_PropertyStub); MOZ_ASSERT(setter != JS_StrictPropertyStub); @@ -3237,7 +3237,7 @@ dumpValue(const Value& v) } JS_FRIEND_API(void) -js::DumpValue(const Value &val) +js::DumpValue(const Value& val) { dumpValue(val); fputc('\n', stderr); @@ -3635,17 +3635,17 @@ JSObject::sizeOfIncludingThisInNursery() const MOZ_ASSERT(!isTenured()); - const Nursery &nursery = compartment()->runtimeFromAnyThread()->gc.nursery; + const Nursery& nursery = compartment()->runtimeFromAnyThread()->gc.nursery; size_t size = Arena::thingSize(allocKindForTenure(nursery)); if (is()) { - const NativeObject &native = as(); + const NativeObject& native = as(); size += native.numFixedSlots() * sizeof(Value); size += native.numDynamicSlots() * sizeof(Value); if (native.hasDynamicElements()) { - js::ObjectElements &elements = *native.getElementsHeader(); + js::ObjectElements& elements = *native.getElementsHeader(); if (!elements.isCopyOnWrite() || elements.ownerObject() == this) size += elements.capacity * sizeof(HeapSlot); } @@ -3660,7 +3660,7 @@ JSObject::sizeOfIncludingThisInNursery() const size_t JS::ubi::Concrete::size(mozilla::MallocSizeOf mallocSizeOf) const { - JSObject &obj = get(); + JSObject& obj = get(); if (!obj.isTenured()) return obj.sizeOfIncludingThisInNursery(); diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h index 5e0ea369f9..c69242ed19 100644 --- a/js/src/jsobjinlines.h +++ b/js/src/jsobjinlines.h @@ -363,16 +363,16 @@ JSObject::create(js::ExclusiveContext* cx, js::gc::AllocKind kind, js::gc::Initi } inline void -JSObject::setInitialShapeMaybeNonNative(js::Shape *shape) +JSObject::setInitialShapeMaybeNonNative(js::Shape* shape) { - static_cast(this)->shape_.init(shape); + static_cast(this)->shape_.init(shape); } inline void -JSObject::setShapeMaybeNonNative(js::Shape *shape) +JSObject::setShapeMaybeNonNative(js::Shape* shape) { MOZ_ASSERT(!is()); - static_cast(this)->shape_ = shape; + static_cast(this)->shape_ = shape; } inline void @@ -382,12 +382,12 @@ JSObject::setInitialSlotsMaybeNonNative(js::HeapSlot* slots) } inline void -JSObject::setInitialElementsMaybeNonNative(js::HeapSlot *elements) +JSObject::setInitialElementsMaybeNonNative(js::HeapSlot* elements) { - static_cast(this)->elements_ = elements; + static_cast(this)->elements_ = elements; } -inline js::GlobalObject & +inline js::GlobalObject& JSObject::global() const { /* @@ -487,7 +487,7 @@ JSObject::wasNewScriptCleared() const namespace js { static MOZ_ALWAYS_INLINE bool -IsFunctionObject(const js::Value &v) +IsFunctionObject(const js::Value& v) { return v.isObject() && v.toObject().is(); } @@ -689,15 +689,15 @@ NewObjectWithClassProto(ExclusiveContext* cx, const Class* clasp, HandleObject p * Create a native instance of the given class with parent and proto set * according to the context's active global. */ -inline JSObject * -NewBuiltinClassInstance(ExclusiveContext *cx, const Class *clasp, gc::AllocKind allocKind, +inline JSObject* +NewBuiltinClassInstance(ExclusiveContext* cx, const Class* clasp, gc::AllocKind allocKind, NewObjectKind newKind = GenericObject) { return NewObjectWithClassProto(cx, clasp, nullptr, allocKind, newKind); } -inline JSObject * -NewBuiltinClassInstance(ExclusiveContext *cx, const Class *clasp, NewObjectKind newKind = GenericObject) +inline JSObject* +NewBuiltinClassInstance(ExclusiveContext* cx, const Class* clasp, NewObjectKind newKind = GenericObject) { gc::AllocKind allocKind = gc::GetGCObjectKind(clasp); return NewBuiltinClassInstance(cx, clasp, allocKind, newKind); diff --git a/js/src/jsscript.h b/js/src/jsscript.h index 447fed7e5f..09eb992a76 100644 --- a/js/src/jsscript.h +++ b/js/src/jsscript.h @@ -66,7 +66,7 @@ CopyScript(JSContext* cx, HandleObject scriptStaticScope, HandleScript src, Hand } // namespace detail -} +} // namespace js /* * Type of try note associated with each catch or finally block, and also with diff --git a/js/src/jsstr.h b/js/src/jsstr.h index 8e05f6593e..72a630ab90 100644 --- a/js/src/jsstr.h +++ b/js/src/jsstr.h @@ -115,14 +115,14 @@ js_strncpy(char16_t* dst, const char16_t* src, size_t nelem) namespace js { /* Initialize the String class, returning its prototype object. */ -extern JSObject * -InitStringClass(JSContext *cx, HandleObject obj); +extern JSObject* +InitStringClass(JSContext* cx, HandleObject obj); /* * Convert a value to a printable C string. */ -extern const char * -ValueToPrintable(JSContext *cx, const Value &, JSAutoByteString *bytes, bool asSource = false); +extern const char* +ValueToPrintable(JSContext* cx, const Value&, JSAutoByteString* bytes, bool asSource = false); extern mozilla::UniquePtr DuplicateString(ExclusiveContext* cx, const char* s); diff --git a/js/src/jstypes.h b/js/src/jstypes.h index 2fc97f6787..1293aed267 100644 --- a/js/src/jstypes.h +++ b/js/src/jstypes.h @@ -199,9 +199,9 @@ ** size. Use them like this: ** ** JSGetterOp nativeGetter; -** JSObject *scriptedGetter; +** JSObject* scriptedGetter; ** ... -** scriptedGetter = JS_FUNC_TO_DATA_PTR(JSObject *, nativeGetter); +** scriptedGetter = JS_FUNC_TO_DATA_PTR(JSObject*, nativeGetter); ** ... ** nativeGetter = JS_DATA_TO_FUNC_PTR(JSGetterOp, scriptedGetter); ** diff --git a/js/src/jswrapper.h b/js/src/jswrapper.h index a2fa846fe8..6b78a6fb16 100644 --- a/js/src/jswrapper.h +++ b/js/src/jswrapper.h @@ -120,7 +120,7 @@ class JS_FRIEND_API(CrossCompartmentWrapper) : public Wrapper virtual bool ownPropertyKeys(JSContext* cx, HandleObject wrapper, AutoIdVector& props) const override; virtual bool delete_(JSContext* cx, HandleObject wrapper, HandleId id, - ObjectOpResult &result) const override; + ObjectOpResult& result) const override; virtual bool enumerate(JSContext* cx, HandleObject wrapper, MutableHandleObject objp) const override; virtual bool getPrototype(JSContext* cx, HandleObject proxy, MutableHandleObject protop) const override; diff --git a/js/src/tests/ecma/Array/array-length-set-during-for-in.js b/js/src/tests/ecma/Array/array-length-set-during-for-in.js new file mode 100644 index 0000000000..83d476f7f9 --- /dev/null +++ b/js/src/tests/ecma/Array/array-length-set-during-for-in.js @@ -0,0 +1,10 @@ +var a = [0, 1]; +var iterations = 0; +for (var k in a) { + iterations++; + a.length = 1; +} +assertEq(iterations, 1); + +if (typeof reportCompare === "function") + reportCompare(true, true); diff --git a/js/src/vm/BooleanObject.h b/js/src/vm/BooleanObject.h index 81e38bf3b1..5472c50303 100644 --- a/js/src/vm/BooleanObject.h +++ b/js/src/vm/BooleanObject.h @@ -40,7 +40,7 @@ class BooleanObject : public NativeObject /* For access to init, as Boolean.prototype is special. */ friend JSObject* - js::InitBooleanClass(JSContext *cx, js::HandleObject global); + js::InitBooleanClass(JSContext* cx, js::HandleObject global); }; } // namespace js diff --git a/js/src/vm/Interpreter.h b/js/src/vm/Interpreter.h index cc07cc29ba..2c36778cca 100644 --- a/js/src/vm/Interpreter.h +++ b/js/src/vm/Interpreter.h @@ -341,7 +341,7 @@ class MOZ_STACK_CLASS TryNoteIter }; bool -HandleClosingGeneratorReturn(JSContext *cx, AbstractFramePtr frame, bool ok); +HandleClosingGeneratorReturn(JSContext* cx, AbstractFramePtr frame, bool ok); /************************************************************************/ @@ -445,13 +445,13 @@ bool InitGetterSetterOperation(JSContext* cx, jsbytecode* pc, HandleObject obj, HandleId id, HandleObject val); -unsigned -GetInitDataPropAttrs(JSOp op); - bool InitGetterSetterOperation(JSContext* cx, jsbytecode* pc, HandleObject obj, HandlePropertyName name, HandleObject val); +unsigned +GetInitDataPropAttrs(JSOp op); + bool EnterWithOperation(JSContext* cx, AbstractFramePtr frame, HandleValue val, HandleObject staticWith); diff --git a/js/src/vm/Stack.h b/js/src/vm/Stack.h index f68b5128fa..c235e9d069 100644 --- a/js/src/vm/Stack.h +++ b/js/src/vm/Stack.h @@ -30,8 +30,8 @@ struct JSCompartment; namespace JS { namespace dbg { class AutoEntryMonitor; -} -} +} // namespace dbg +} // namespace JS namespace js { @@ -608,7 +608,7 @@ class InterpreterFrame inline void pushOnScopeChain(ScopeObject& scope); inline void popOffScopeChain(); - inline void replaceInnermostScope(ScopeObject &scope); + inline void replaceInnermostScope(ScopeObject& scope); /* * For blocks with aliased locals, these interfaces push and pop entries on @@ -619,7 +619,7 @@ class InterpreterFrame bool pushBlock(JSContext* cx, StaticBlockObject& block); void popBlock(JSContext* cx); - bool freshenBlock(JSContext *cx); + bool freshenBlock(JSContext* cx); /* * With @@ -1392,11 +1392,11 @@ class Activation return offsetof(Activation, prevProfiling_); } - SavedFrame *asyncStack() { + SavedFrame* asyncStack() { return asyncStack_; } - JSString *asyncCause() { + JSString* asyncCause() { return asyncCause_; } diff --git a/js/src/vm/String-inl.h b/js/src/vm/String-inl.h index 2b10974b32..b4676d344d 100644 --- a/js/src/vm/String-inl.h +++ b/js/src/vm/String-inl.h @@ -125,7 +125,7 @@ JSRope::new_(js::ExclusiveContext* cx, { if (!validateLength(cx, length)) return nullptr; - JSRope *str = static_cast(js::Allocate(cx)); + JSRope* str = static_cast(js::Allocate(cx)); if (!str) return nullptr; str->init(cx, left, right, length); @@ -133,7 +133,7 @@ JSRope::new_(js::ExclusiveContext* cx, } MOZ_ALWAYS_INLINE void -JSDependentString::init(js::ExclusiveContext *cx, JSLinearString *base, size_t start, +JSDependentString::init(js::ExclusiveContext* cx, JSLinearString* base, size_t start, size_t length) { MOZ_ASSERT(start + length <= base->length()); @@ -180,7 +180,7 @@ JSDependentString::new_(js::ExclusiveContext* cx, JSLinearString* baseArg, size_ : js::NewInlineString(cx, base, start, length); } - JSDependentString *str = static_cast(js::Allocate(cx)); + JSDependentString* str = static_cast(js::Allocate(cx)); if (str) { str->init(cx, baseArg, start, length); return str; @@ -188,7 +188,7 @@ JSDependentString::new_(js::ExclusiveContext* cx, JSLinearString* baseArg, size_ js::RootedLinearString base(cx, baseArg); - str = static_cast(js::Allocate(cx)); + str = static_cast(js::Allocate(cx)); if (!str) return nullptr; str->init(cx, base, start, length); @@ -196,7 +196,7 @@ JSDependentString::new_(js::ExclusiveContext* cx, JSLinearString* baseArg, size_ } MOZ_ALWAYS_INLINE void -JSFlatString::init(const char16_t *chars, size_t length) +JSFlatString::init(const char16_t* chars, size_t length) { d.u1.length = length; d.u1.flags = FLAT_BIT; @@ -220,7 +220,7 @@ JSFlatString::new_(js::ExclusiveContext* cx, const CharT* chars, size_t length) if (!validateLength(cx, length)) return nullptr; - JSFlatString *str = static_cast(js::Allocate(cx)); + JSFlatString* str = static_cast(js::Allocate(cx)); if (!str) return nullptr; @@ -244,15 +244,15 @@ JSFlatString::toPropertyName(JSContext* cx) } template -MOZ_ALWAYS_INLINE JSThinInlineString * -JSThinInlineString::new_(js::ExclusiveContext *cx) +MOZ_ALWAYS_INLINE JSThinInlineString* +JSThinInlineString::new_(js::ExclusiveContext* cx) { - return static_cast(js::Allocate(cx)); + return static_cast(js::Allocate(cx)); } template -MOZ_ALWAYS_INLINE JSFatInlineString * -JSFatInlineString::new_(js::ExclusiveContext *cx) +MOZ_ALWAYS_INLINE JSFatInlineString* +JSFatInlineString::new_(js::ExclusiveContext* cx) { return js::Allocate(cx); } @@ -308,15 +308,15 @@ JSExternalString::init(const char16_t* chars, size_t length, const JSStringFinal d.s.u3.externalFinalizer = fin; } -MOZ_ALWAYS_INLINE JSExternalString * -JSExternalString::new_(JSContext *cx, const char16_t *chars, size_t length, - const JSStringFinalizer *fin) +MOZ_ALWAYS_INLINE JSExternalString* +JSExternalString::new_(JSContext* cx, const char16_t* chars, size_t length, + const JSStringFinalizer* fin) { MOZ_ASSERT(chars[length] == 0); if (!validateLength(cx, length)) return nullptr; - JSExternalString *str = js::Allocate(cx); + JSExternalString* str = js::Allocate(cx); if (!str) return nullptr; str->init(chars, length, fin); @@ -347,7 +347,7 @@ js::StaticStrings::getLength2(char16_t c1, char16_t c2) } MOZ_ALWAYS_INLINE void -JSString::finalize(js::FreeOp *fop) +JSString::finalize(js::FreeOp* fop) { /* FatInline strings are in a different arena. */ MOZ_ASSERT(getAllocKind() != js::gc::AllocKind::FAT_INLINE_STRING); @@ -359,7 +359,7 @@ JSString::finalize(js::FreeOp *fop) } inline void -JSFlatString::finalize(js::FreeOp *fop) +JSFlatString::finalize(js::FreeOp* fop) { MOZ_ASSERT(getAllocKind() != js::gc::AllocKind::FAT_INLINE_STRING); @@ -368,7 +368,7 @@ JSFlatString::finalize(js::FreeOp *fop) } inline void -JSFatInlineString::finalize(js::FreeOp *fop) +JSFatInlineString::finalize(js::FreeOp* fop) { MOZ_ASSERT(getAllocKind() == js::gc::AllocKind::FAT_INLINE_STRING); @@ -377,7 +377,7 @@ JSFatInlineString::finalize(js::FreeOp *fop) } inline void -JSAtom::finalize(js::FreeOp *fop) +JSAtom::finalize(js::FreeOp* fop) { MOZ_ASSERT(JSString::isAtom()); MOZ_ASSERT(JSString::isFlat()); @@ -387,9 +387,9 @@ JSAtom::finalize(js::FreeOp *fop) } inline void -JSExternalString::finalize(js::FreeOp *fop) +JSExternalString::finalize(js::FreeOp* fop) { - const JSStringFinalizer *fin = externalFinalizer(); + const JSStringFinalizer* fin = externalFinalizer(); fin->finalize(fin, const_cast(rawTwoByteChars())); } diff --git a/js/src/vm/TypeInference-inl.h b/js/src/vm/TypeInference-inl.h index f6fa44f656..d9ea0a8a8c 100644 --- a/js/src/vm/TypeInference-inl.h +++ b/js/src/vm/TypeInference-inl.h @@ -397,13 +397,13 @@ HasTypePropertyId(JSObject* obj, jsid id, TypeSet::Type type) } inline bool -HasTypePropertyId(JSObject* obj, jsid id, const Value &value) +HasTypePropertyId(JSObject* obj, jsid id, const Value& value) { return HasTypePropertyId(obj, id, TypeSet::GetValueType(value)); } void AddTypePropertyId(ExclusiveContext* cx, ObjectGroup* group, JSObject* obj, jsid id, TypeSet::Type type); -void AddTypePropertyId(ExclusiveContext* cx, ObjectGroup* group, JSObject* obj, jsid id, const Value &value); +void AddTypePropertyId(ExclusiveContext* cx, ObjectGroup* group, JSObject* obj, jsid id, const Value& value); /* Add a possible type for a property of obj. */ inline void @@ -584,7 +584,7 @@ TypeScript::MonitorAssign(JSContext* cx, HandleObject obj, jsid id) // But if we don't have too many properties yet, don't do anything. The // idea here is that normal object initialization should not trigger // deoptimization in most cases, while actual usage as a hashmap should. - ObjectGroup *group = obj->group(); + ObjectGroup* group = obj->group(); if (group->basePropertyCount() < 128) return; MarkObjectGroupUnknownProperties(cx, group); @@ -991,8 +991,8 @@ ObjectGroup::setBasePropertyCount(uint32_t count) | (count << OBJECT_FLAG_PROPERTY_COUNT_SHIFT); } -inline HeapTypeSet * -ObjectGroup::getProperty(ExclusiveContext *cx, JSObject *obj, jsid id) +inline HeapTypeSet* +ObjectGroup::getProperty(ExclusiveContext* cx, JSObject* obj, jsid id) { MOZ_ASSERT(JSID_IS_VOID(id) || JSID_IS_EMPTY(id) || JSID_IS_STRING(id) || JSID_IS_SYMBOL(id)); MOZ_ASSERT_IF(!JSID_IS_EMPTY(id), id == IdToTypeId(id)); @@ -1000,17 +1000,17 @@ ObjectGroup::getProperty(ExclusiveContext *cx, JSObject *obj, jsid id) MOZ_ASSERT_IF(obj, obj->group() == this); MOZ_ASSERT_IF(singleton(), obj); - if (HeapTypeSet *types = maybeGetProperty(id)) + if (HeapTypeSet* types = maybeGetProperty(id)) return types; - Property *base = cx->typeLifoAlloc().new_(id); + Property* base = cx->typeLifoAlloc().new_(id); if (!base) { markUnknown(cx); return nullptr; } uint32_t propertyCount = basePropertyCount(); - Property **pprop = TypeHashSet::Insert + Property** pprop = TypeHashSet::Insert (cx->typeLifoAlloc(), propertySet, propertyCount, id); if (!pprop) { markUnknown(cx); diff --git a/mfbt/Char16.h b/mfbt/Char16.h index 1d7434c1e0..91cbc28781 100644 --- a/mfbt/Char16.h +++ b/mfbt/Char16.h @@ -49,7 +49,7 @@ typedef unsigned int char32_t; #endif #ifdef MOZ_USE_CHAR16_WRAPPER -# include +# include /** * Win32 API extensively uses wchar_t, which is represented by a separated * builtin type than char16_t per spec. It's not the case for MSVC prior to @@ -93,10 +93,6 @@ public: { return mPtr != nullptr; } - operator std::wstring() const - { - return std::wstring(static_cast(*this)); - } /* Explicit cast operators to allow things like (char16_t*)str. */ explicit operator char16_t*() const diff --git a/mfbt/Compression.cpp b/mfbt/Compression.cpp index 101f9ea683..0a94cc69e2 100644 --- a/mfbt/Compression.cpp +++ b/mfbt/Compression.cpp @@ -7,16 +7,26 @@ #include "mozilla/Compression.h" #include "mozilla/CheckedInt.h" +// Without including , MSVC 2015 complains about e.g. the impossibility +// to convert `const void* const` to `void*` when calling memchr from +// corecrt_memory.h. +#include + +// Because we wrap lz4.c in an anonymous namespace, all of its #includes +// go in the anonymous namespace too. This would create conflicting +// declarations for intrinsic functions that are internally defined +// at top-level. Including intrin.h here prevents it from being included +// later within the anonymous namespace. +#ifdef _MSC_VER +#include +#endif + using namespace mozilla::Compression; namespace { -extern "C" { - #include "lz4.c" -} - }/* anonymous namespace */ /* Our wrappers */ diff --git a/mfbt/Endian.h b/mfbt/Endian.h index d314ff55e2..3a7932e747 100644 --- a/mfbt/Endian.h +++ b/mfbt/Endian.h @@ -89,6 +89,8 @@ #elif defined(_WIN32) # if defined(_M_IX86) # define MOZ_LITTLE_ENDIAN 1 +# elif defined(_M_ARM) +# define MOZ_LITTLE_ENDIAN 1 # else # error "CPU type is unknown" # endif diff --git a/mfbt/GuardObjects.h b/mfbt/GuardObjects.h index b8841564da..9440c71c47 100644 --- a/mfbt/GuardObjects.h +++ b/mfbt/GuardObjects.h @@ -10,12 +10,20 @@ #define mozilla_GuardObjects_h #include "mozilla/Assertions.h" +#include "mozilla/Move.h" #include "mozilla/Types.h" #ifdef __cplusplus #ifdef DEBUG +/** + * A custom define is used rather than |mozPoisonValue()| due to cascading + * build failures relating to how mfbt is linked on different operating + * systems. See bug 1160253. + */ +#define MOZ_POISON uintptr_t(-1) + namespace mozilla { namespace detail { @@ -73,9 +81,20 @@ private: bool* mStatementDone; public: - GuardObjectNotifier() : mStatementDone(nullptr) { } + GuardObjectNotifier() + : mStatementDone(reinterpret_cast(MOZ_POISON)) + { + } - ~GuardObjectNotifier() { *mStatementDone = true; } + ~GuardObjectNotifier() + { + // Assert that the GuardObjectNotifier has been properly initialized by + // using the |MOZ_GUARD_OBJECT_NOTIFIER_INIT| macro. A poison value is + // used rather than a null check to appease static analyzers that were + // (incorrectly) detecting null pointer dereferences. + MOZ_ASSERT(mStatementDone != reinterpret_cast(MOZ_POISON)); + *mStatementDone = true; + } void setStatementDone(bool* aStatementIsDone) { @@ -100,40 +119,36 @@ public: MOZ_ASSERT(mStatementDone); } - void init(const GuardObjectNotifier& aConstNotifier) + void init(GuardObjectNotifier& aNotifier) { - /* - * aConstNotifier is passed as a const reference so that we can pass a - * temporary, but we really intend it as non-const. - */ - GuardObjectNotifier& notifier = - const_cast(aConstNotifier); - notifier.setStatementDone(&mStatementDone); + aNotifier.setStatementDone(&mStatementDone); } }; } /* namespace detail */ } /* namespace mozilla */ +#undef MOZ_POISON + #endif /* DEBUG */ #ifdef DEBUG # define MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER \ mozilla::detail::GuardObjectNotificationReceiver _mCheckNotUsedAsTemporary; # define MOZ_GUARD_OBJECT_NOTIFIER_PARAM \ - , const mozilla::detail::GuardObjectNotifier& _notifier = \ + , mozilla::detail::GuardObjectNotifier&& _notifier = \ mozilla::detail::GuardObjectNotifier() # define MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM \ - const mozilla::detail::GuardObjectNotifier& _notifier = \ + mozilla::detail::GuardObjectNotifier&& _notifier = \ mozilla::detail::GuardObjectNotifier() # define MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL \ - , const mozilla::detail::GuardObjectNotifier& _notifier + , mozilla::detail::GuardObjectNotifier&& _notifier # define MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_IN_IMPL \ - const mozilla::detail::GuardObjectNotifier& _notifier + mozilla::detail::GuardObjectNotifier&& _notifier # define MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT \ - , _notifier + , mozilla::Move(_notifier) # define MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_TO_PARENT \ - _notifier + mozilla::Move(_notifier) # define MOZ_GUARD_OBJECT_NOTIFIER_INIT \ do { _mCheckNotUsedAsTemporary.init(_notifier); } while (0) #else diff --git a/mfbt/IndexSequence.h b/mfbt/IndexSequence.h index 83abdc0a4a..b6e00d99fb 100644 --- a/mfbt/IndexSequence.h +++ b/mfbt/IndexSequence.h @@ -109,7 +109,7 @@ struct MakeIndexSequenceImpl> typedef IndexSequence Type; }; -} // namespace detail +} // namespace detail /** * A utility for building an IndexSequence of consecutive indices. diff --git a/mfbt/SegmentedVector.h b/mfbt/SegmentedVector.h index 1e83a30aea..c626e89d96 100644 --- a/mfbt/SegmentedVector.h +++ b/mfbt/SegmentedVector.h @@ -92,6 +92,13 @@ class SegmentedVector : private AllocPolicy new (elem) T(mozilla::Forward(aU)); } + void PopLast() + { + MOZ_ASSERT(mLength > 0); + (*this)[mLength - 1].~T(); + mLength--; + } + uint32_t mLength; // The union ensures that the elements are appropriately aligned. @@ -185,6 +192,32 @@ public: } } + T& GetLast() + { + MOZ_ASSERT(!IsEmpty()); + Segment* last = mSegments.getLast(); + return (*last)[last->Length() - 1]; + } + + const T& GetLast() const + { + MOZ_ASSERT(!IsEmpty()); + Segment* last = mSegments.getLast(); + return (*last)[last->Length() - 1]; + } + + void PopLast() + { + MOZ_ASSERT(!IsEmpty()); + Segment* last = mSegments.getLast(); + last->PopLast(); + if (!last->Length()) { + mSegments.popLast(); + last->~Segment(); + this->free_(last); + } + } + // Use this class to iterate over a SegmentedVector, like so: // // for (auto iter = v.Iter(); !iter.Done(); iter.Next()) { diff --git a/mfbt/SplayTree.h b/mfbt/SplayTree.h index 45e119b7f4..1a7e031a67 100644 --- a/mfbt/SplayTree.h +++ b/mfbt/SplayTree.h @@ -13,6 +13,7 @@ #define mozilla_SplayTree_h #include "mozilla/Assertions.h" +#include "mozilla/Attributes.h" namespace mozilla { @@ -55,7 +56,7 @@ class SplayTree T* mRoot; public: - SplayTree() + MOZ_CONSTEXPR SplayTree() : mRoot(nullptr) {} @@ -86,15 +87,12 @@ public: T* last = lookup(*aValue); int cmp = Comparator::compare(*aValue, *last); - T** parentPointer = (cmp < 0) ? &last->mLeft : &last->mRight; - MOZ_ASSERT(!*parentPointer); - *parentPointer = aValue; - aValue->mParent = last; - - splay(aValue); + finishInsertion(last, cmp, aValue); return true; } + T* findOrInsert(const T& aValue); + T* remove(const T& aValue) { T* last = lookup(aValue); @@ -196,6 +194,19 @@ private: return parent; } + T* finishInsertion(T* aLast, int32_t aCmp, T* aNew) + { + MOZ_ASSERT(aCmp, "Nodes shouldn't be equal!"); + + T** parentPointer = (aCmp < 0) ? &aLast->mLeft : &aLast->mRight; + MOZ_ASSERT(!*parentPointer); + *parentPointer = aNew; + aNew->mParent = aLast; + + splay(aNew); + return aNew; + } + /** * Rotate the tree until |node| is at the root of the tree. Performing * the rotations in this fashion preserves the amortized balancing of @@ -295,6 +306,24 @@ private: void operator=(const SplayTree&) = delete; }; +template +T* +SplayTree::findOrInsert(const T& aValue) +{ + if (!mRoot) { + mRoot = new T(aValue); + return mRoot; + } + + T* last = lookup(aValue); + int cmp = Comparator::compare(aValue, *last); + if (!cmp) { + return last; + } + + return finishInsertion(last, cmp, new T(aValue)); +} + } /* namespace mozilla */ #endif /* mozilla_SplayTree_h */ diff --git a/mfbt/Tuple.h b/mfbt/Tuple.h index 98872796a9..dc830c0670 100644 --- a/mfbt/Tuple.h +++ b/mfbt/Tuple.h @@ -161,7 +161,7 @@ private: HeadT mHead; // The element stored at this index in the tuple. }; -} // namespace detail +} // namespace detail /** * Tuple is a class that stores zero or more objects, whose types are specified @@ -242,7 +242,7 @@ auto TupleGetHelper(const TupleImpl& aTuple) return TupleImpl::Head(aTuple); } -} // namespace detail +} // namespace detail /** * Index-based access to an element of a tuple. diff --git a/mfbt/TypeTraits.h b/mfbt/TypeTraits.h index f1c67d26f2..5f301c2318 100644 --- a/mfbt/TypeTraits.h +++ b/mfbt/TypeTraits.h @@ -637,7 +637,7 @@ public: * For obscure reasons, you can't use IsConvertible when the types being tested * are related through private inheritance, and you'll get a compile error if * you try. Just don't do it! - * + * * Note - we need special handling for void, which ConvertibleTester doesn't * handle. The void handling here doesn't handle const/volatile void correctly, * which could be easily fixed if the need arises. diff --git a/mfbt/tests/TestSegmentedVector.cpp b/mfbt/tests/TestSegmentedVector.cpp index c426f6d927..d81a0d05b4 100644 --- a/mfbt/tests/TestSegmentedVector.cpp +++ b/mfbt/tests/TestSegmentedVector.cpp @@ -80,6 +80,22 @@ void TestBasics() } MOZ_RELEASE_ASSERT(n == 1000); + // Pop off all of the elements. + MOZ_RELEASE_ASSERT(v.Length() == 1000); + for (int len = (int)v.Length(); len > 0; len--) { + MOZ_RELEASE_ASSERT(v.GetLast() == len - 1); + v.PopLast(); + } + MOZ_RELEASE_ASSERT(v.IsEmpty()); + MOZ_RELEASE_ASSERT(v.Length() == 0); + + // Fill the vector up again to prepare for the clear. + for (i = 0; i < 1000; i++) { + v.InfallibleAppend(mozilla::Move(i)); + } + MOZ_RELEASE_ASSERT(!v.IsEmpty()); + MOZ_RELEASE_ASSERT(v.Length() == 1000); + v.Clear(); MOZ_RELEASE_ASSERT(v.IsEmpty()); MOZ_RELEASE_ASSERT(v.Length() == 0); @@ -115,7 +131,9 @@ void TestConstructorsAndDestructors() gDummy = v.Append(mozilla::Move(y)); // move constructor called NonPOD z(1); // explicit constructor called v.InfallibleAppend(mozilla::Move(z)); // move constructor called - v.Clear(); // destructor called 3 times + v.PopLast(); // destructor called 1 time + MOZ_RELEASE_ASSERT(gNumDtors == 1); + v.Clear(); // destructor called 2 times MOZ_RELEASE_ASSERT(gNumDefaultCtors == 0); MOZ_RELEASE_ASSERT(gNumExplicitCtors == 3); diff --git a/mfbt/tests/TestSplayTree.cpp b/mfbt/tests/TestSplayTree.cpp index e1511e1abe..d6b99f1f61 100644 --- a/mfbt/tests/TestSplayTree.cpp +++ b/mfbt/tests/TestSplayTree.cpp @@ -105,6 +105,16 @@ struct SplayInt : SplayTreeNode int mValue; }; +struct SplayNoCopy : SplayTreeNode +{ + SplayNoCopy(const SplayNoCopy&) = delete; + SplayNoCopy(SplayNoCopy&&) = delete; + + static int compare(const SplayNoCopy&, const SplayNoCopy&) {} +}; + +static SplayTree testNoCopy; + int main() { @@ -119,13 +129,47 @@ main() // Insert the values, and check each one is findable just after insertion. for (int i = 0; i < N; i++) { tree.insert(new SplayInt(gValues[i])); - MOZ_RELEASE_ASSERT(tree.find(SplayInt(gValues[i]))); + SplayInt* inserted = tree.find(SplayInt(gValues[i])); + MOZ_RELEASE_ASSERT(inserted); + MOZ_RELEASE_ASSERT(tree.findOrInsert(SplayInt(gValues[i])) == inserted); tree.checkCoherency(); } // Check they're all findable after all insertions. for (int i = 0; i < N; i++) { MOZ_RELEASE_ASSERT(tree.find(SplayInt(gValues[i]))); + MOZ_RELEASE_ASSERT(tree.findOrInsert(SplayInt(gValues[i]))); + tree.checkCoherency(); + } + + // Check that non-inserted values cannot be found. + MOZ_RELEASE_ASSERT(!tree.find(SplayInt(-1))); + MOZ_RELEASE_ASSERT(!tree.find(SplayInt(N))); + MOZ_RELEASE_ASSERT(!tree.find(SplayInt(0x7fffffff))); + + // Remove the values, and check each one is not findable just after removal. + for (int i = 0; i < N; i++) { + SplayInt* removed = tree.remove(SplayInt(gValues[i])); + MOZ_RELEASE_ASSERT(removed->mValue == gValues[i]); + MOZ_RELEASE_ASSERT(!tree.find(*removed)); + delete removed; + tree.checkCoherency(); + } + + MOZ_RELEASE_ASSERT(tree.empty()); + + // Insert the values, and check each one is findable just after insertion. + for (int i = 0; i < N; i++) { + SplayInt* inserted = tree.findOrInsert(SplayInt(gValues[i])); + MOZ_RELEASE_ASSERT(tree.find(SplayInt(gValues[i])) == inserted); + MOZ_RELEASE_ASSERT(tree.findOrInsert(SplayInt(gValues[i])) == inserted); + tree.checkCoherency(); + } + + // Check they're all findable after all insertions. + for (int i = 0; i < N; i++) { + MOZ_RELEASE_ASSERT(tree.find(SplayInt(gValues[i]))); + MOZ_RELEASE_ASSERT(tree.findOrInsert(SplayInt(gValues[i]))); tree.checkCoherency(); } diff --git a/netwerk/base/nsFileStreams.cpp b/netwerk/base/nsFileStreams.cpp index 19b6f286f2..aead7d933f 100644 --- a/netwerk/base/nsFileStreams.cpp +++ b/netwerk/base/nsFileStreams.cpp @@ -202,6 +202,11 @@ nsresult nsFileStreamBase::Read(char* aBuf, uint32_t aCount, uint32_t* aResult) { nsresult rv = DoPendingOpen(); + if (rv == NS_ERROR_FILE_NOT_FOUND) { + // Don't warn if this is just a deferred file not found. + return rv; + } + NS_ENSURE_SUCCESS(rv, rv); if (!mFD) { @@ -408,7 +413,7 @@ nsFileInputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) nsresult nsFileInputStream::Open(nsIFile* aFile, int32_t aIOFlags, int32_t aPerm) -{ +{ nsresult rv = NS_OK; // If the previous file is open, close it @@ -489,6 +494,11 @@ NS_IMETHODIMP nsFileInputStream::Read(char* aBuf, uint32_t aCount, uint32_t* _retval) { nsresult rv = nsFileStreamBase::Read(aBuf, aCount, _retval); + if (rv == NS_ERROR_FILE_NOT_FOUND) { + // Don't warn if this is a deffered file not found. + return rv; + } + NS_ENSURE_SUCCESS(rv, rv); // Check if we're at the end of file and need to close diff --git a/security/certverifier/CNNICHashWhitelist.inc b/security/certverifier/CNNICHashWhitelist.inc new file mode 100644 index 0000000000..e3c6a618fd --- /dev/null +++ b/security/certverifier/CNNICHashWhitelist.inc @@ -0,0 +1,5727 @@ +// 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/. +// +//*************************************************************************** +// This file was automatically generated by makeCNNICHashes.js. It shouldn't +// need to be manually edited. +//*************************************************************************** + +// This file may be removed after Sun Feb 02 2020 21:45:13 GMT-0800 (PST) + +#define CNNIC_WHITELIST_HASH_LEN 32 + +struct WhitelistedCNNICHash { + const uint8_t hash[CNNIC_WHITELIST_HASH_LEN]; +}; + +static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { + { + { 0x00, 0x5B, 0xF9, 0x8E, 0xED, 0x61, 0x2B, 0x50, 0xEC, 0xDA, 0x7B, 0xFF, 0x56, 0xA2, 0xDF, 0xF4, + 0x67, 0xA8, 0xAD, 0xD7, 0xEE, 0xC0, 0xAB, 0x30, 0x57, 0x54, 0xD7, 0x66, 0xBE, 0xBB, 0x5F, 0xE8 }, + }, + { + { 0x00, 0x87, 0x75, 0xB8, 0xEA, 0xD0, 0xFE, 0x16, 0x26, 0x9C, 0x9A, 0x9A, 0xB2, 0x83, 0x39, 0x55, + 0x49, 0xCA, 0x67, 0xC2, 0xA3, 0xAA, 0xE8, 0x2F, 0x1A, 0x6B, 0x4D, 0x3A, 0xBC, 0xCA, 0xDC, 0x27 }, + }, + { + { 0x00, 0xC5, 0x9F, 0x5E, 0xF3, 0xB4, 0x6D, 0xBC, 0xA0, 0xA8, 0xBB, 0xA5, 0x0A, 0x72, 0xD4, 0xE1, + 0x83, 0x9A, 0x94, 0xFB, 0x1A, 0x58, 0x5A, 0xD7, 0x2A, 0x7A, 0xAC, 0x3C, 0x72, 0x56, 0x1F, 0xC0 }, + }, + { + { 0x00, 0xC6, 0x81, 0x13, 0x16, 0xBD, 0x9C, 0x91, 0x98, 0x6E, 0xA9, 0x7E, 0x2C, 0x30, 0xAB, 0xEF, + 0xA0, 0xD5, 0x68, 0x04, 0x89, 0x0D, 0x65, 0x8D, 0xFF, 0x08, 0x59, 0x11, 0x6E, 0xB4, 0xC2, 0x32 }, + }, + { + { 0x00, 0xCB, 0x92, 0x51, 0xAF, 0xFA, 0x0E, 0x4C, 0xA0, 0xA5, 0x61, 0x1F, 0x1A, 0x79, 0x15, 0x05, + 0xD2, 0xAB, 0xF8, 0x9D, 0xD0, 0x48, 0x53, 0x29, 0x16, 0xF0, 0x5F, 0xD8, 0x74, 0xF2, 0x5D, 0xCD }, + }, + { + { 0x00, 0xDE, 0xFF, 0x68, 0x2E, 0x35, 0x10, 0x22, 0xCC, 0x3B, 0xBB, 0x4E, 0xB5, 0x88, 0x0A, 0x97, + 0x27, 0x88, 0x0A, 0xF3, 0x52, 0xFB, 0xBE, 0x2F, 0x91, 0x24, 0xBE, 0x92, 0x88, 0x4B, 0x18, 0xFD }, + }, + { + { 0x00, 0xF7, 0x28, 0x14, 0x8C, 0x8C, 0x28, 0x90, 0x7F, 0xAC, 0xF3, 0x89, 0xC0, 0xE9, 0xB9, 0xBC, + 0x6F, 0xD1, 0xB8, 0xDE, 0xE0, 0xE8, 0x5B, 0x65, 0xFE, 0x39, 0x39, 0x8B, 0xEE, 0x95, 0xDC, 0x59 }, + }, + { + { 0x00, 0xF8, 0x4A, 0x82, 0x67, 0xB3, 0xDA, 0xEE, 0x1E, 0x16, 0x90, 0x75, 0x1C, 0x86, 0xBD, 0x78, + 0x94, 0x08, 0x65, 0x94, 0x3E, 0xEE, 0x52, 0xE9, 0x7D, 0x98, 0x50, 0x1A, 0xC8, 0xE1, 0x58, 0x94 }, + }, + { + { 0x01, 0x1D, 0x7D, 0xC8, 0x19, 0x01, 0xAB, 0xCA, 0xE0, 0xF4, 0x74, 0x4C, 0x17, 0xB8, 0xF7, 0x87, + 0xF3, 0x97, 0x41, 0x3A, 0x42, 0x3D, 0xC0, 0x82, 0xC4, 0xB3, 0x80, 0x23, 0xDE, 0x42, 0x00, 0x75 }, + }, + { + { 0x01, 0x5F, 0x9B, 0x68, 0xD6, 0x4B, 0x86, 0x0D, 0x5E, 0xD0, 0x40, 0x50, 0x66, 0xA3, 0xF2, 0xFD, + 0x9D, 0x6D, 0xDE, 0x3A, 0x9B, 0x35, 0x73, 0x17, 0x34, 0x10, 0xE6, 0xCE, 0x63, 0x9B, 0x77, 0x91 }, + }, + { + { 0x01, 0xD6, 0x0A, 0xE5, 0x22, 0x20, 0x8E, 0xC6, 0xF5, 0x04, 0xD5, 0x91, 0xF9, 0x7A, 0x99, 0xA5, + 0xEF, 0x25, 0x25, 0x98, 0x71, 0xE4, 0x77, 0x42, 0xD4, 0x71, 0xE2, 0x6F, 0xF0, 0x75, 0xE9, 0xE9 }, + }, + { + { 0x01, 0xF1, 0x14, 0x28, 0x67, 0x99, 0xEA, 0x8B, 0x24, 0x08, 0xE3, 0xDA, 0xBE, 0x90, 0xF3, 0xAD, + 0xEA, 0x20, 0x46, 0x32, 0xAA, 0x3B, 0x82, 0xD2, 0xE5, 0x5A, 0x8D, 0xCF, 0x5B, 0x7E, 0xD7, 0xAD }, + }, + { + { 0x01, 0xFC, 0xEB, 0xF0, 0x6A, 0xF4, 0x9D, 0x87, 0x8A, 0xF9, 0xBD, 0x57, 0xE1, 0x2D, 0xBE, 0xA7, + 0xEB, 0x80, 0x12, 0x0F, 0x7C, 0x10, 0xCD, 0x1A, 0x1A, 0x98, 0x89, 0x8E, 0xD8, 0xE7, 0xEC, 0x4C }, + }, + { + { 0x02, 0x01, 0x4E, 0x80, 0xF5, 0xC4, 0xF3, 0x8B, 0xA9, 0xD9, 0x04, 0x79, 0x1A, 0x63, 0xF6, 0x4D, + 0x05, 0xF9, 0xE2, 0x03, 0xA1, 0xF1, 0x2B, 0x06, 0xD6, 0x55, 0x94, 0x01, 0x41, 0x0E, 0x73, 0x36 }, + }, + { + { 0x02, 0x08, 0x22, 0xAB, 0x1B, 0x8C, 0xC0, 0xD8, 0x22, 0x03, 0x60, 0xA1, 0xAF, 0x8B, 0xB4, 0xD9, + 0xBE, 0x60, 0xE8, 0x43, 0x9E, 0x2B, 0xA3, 0x07, 0x8D, 0x61, 0xF4, 0x01, 0xE1, 0x5B, 0x41, 0xBC }, + }, + { + { 0x02, 0x35, 0x38, 0xE2, 0x48, 0x15, 0x28, 0x75, 0x29, 0x2F, 0x2C, 0x83, 0x9A, 0xB3, 0x2B, 0xC7, + 0x35, 0x1E, 0x2B, 0x29, 0x99, 0x1D, 0x66, 0xAE, 0xA6, 0x16, 0xCB, 0x0B, 0x26, 0xA5, 0xE3, 0x75 }, + }, + { + { 0x02, 0x61, 0x53, 0xE5, 0x91, 0xCD, 0x82, 0xF7, 0xBD, 0xCE, 0x99, 0xB3, 0xBA, 0x10, 0xA8, 0xD6, + 0x90, 0x24, 0xC6, 0x36, 0xD3, 0x5D, 0xAB, 0x1A, 0x95, 0x6C, 0x7D, 0x7A, 0xEF, 0x80, 0x3A, 0xDE }, + }, + { + { 0x02, 0xC4, 0x8C, 0x3A, 0xDC, 0xF9, 0x9F, 0x28, 0xF4, 0x79, 0xB8, 0xF6, 0x79, 0x88, 0x77, 0x78, + 0xB9, 0x3A, 0x06, 0xAF, 0xF1, 0x6E, 0x35, 0x8F, 0x40, 0x9B, 0xC6, 0xFE, 0x54, 0x03, 0x04, 0xC6 }, + }, + { + { 0x02, 0xEC, 0x35, 0xF5, 0x83, 0x4C, 0xD2, 0xC3, 0x43, 0x33, 0x39, 0x9A, 0xEA, 0x6B, 0xDA, 0x84, + 0x68, 0xAB, 0x8D, 0x74, 0xEF, 0x6C, 0xA5, 0x2D, 0x33, 0x7A, 0x30, 0x69, 0x4C, 0x3F, 0x95, 0xA4 }, + }, + { + { 0x03, 0x2A, 0x7E, 0x55, 0xFE, 0xC3, 0x74, 0xC6, 0xD7, 0x9C, 0xFF, 0xDB, 0x46, 0x7C, 0x5C, 0xCD, + 0x56, 0xF5, 0x49, 0x0A, 0xAE, 0x9A, 0xF1, 0xBC, 0xCC, 0x7E, 0x54, 0xDA, 0xFA, 0x6D, 0x8A, 0x3F }, + }, + { + { 0x03, 0x33, 0xB3, 0x91, 0x64, 0xD6, 0x25, 0xF0, 0x1D, 0x50, 0x83, 0xDE, 0x2F, 0xB1, 0xE2, 0x5D, + 0x89, 0x34, 0x29, 0x69, 0x0F, 0xA5, 0xD7, 0x7D, 0x84, 0x90, 0x1E, 0xD1, 0x9B, 0x22, 0x1D, 0xF3 }, + }, + { + { 0x03, 0x83, 0xF9, 0xC1, 0xF5, 0xC8, 0x4C, 0x02, 0x64, 0xE6, 0x3B, 0x2A, 0x96, 0x21, 0x21, 0x37, + 0x58, 0x70, 0x0D, 0x1A, 0xFB, 0x61, 0xF8, 0x00, 0x1F, 0x3E, 0xFF, 0x81, 0x44, 0xE6, 0xFE, 0x73 }, + }, + { + { 0x03, 0xD9, 0x9F, 0x24, 0xF8, 0x64, 0x4B, 0x80, 0x4D, 0x8E, 0x3B, 0xC9, 0xC8, 0x7C, 0x02, 0x4E, + 0x4B, 0xB7, 0x0D, 0xC6, 0x30, 0x1B, 0xCD, 0xE3, 0x24, 0x12, 0xB4, 0xCE, 0x8C, 0x0C, 0x14, 0x58 }, + }, + { + { 0x03, 0xDE, 0x42, 0xAF, 0x1F, 0x30, 0x9F, 0x95, 0xF6, 0xC8, 0x91, 0x03, 0xEA, 0x98, 0x7E, 0x84, + 0xD3, 0x18, 0x6B, 0x60, 0x65, 0xF9, 0x60, 0x7A, 0x06, 0x6A, 0x30, 0x2B, 0x58, 0x05, 0xEB, 0x3B }, + }, + { + { 0x03, 0xE0, 0x6E, 0x0B, 0x7A, 0x2C, 0xBA, 0xE4, 0xB6, 0x8B, 0xCE, 0x5F, 0x83, 0xE7, 0xA9, 0x31, + 0x6E, 0xD7, 0x82, 0x3E, 0x8D, 0x94, 0x85, 0x38, 0xF1, 0x94, 0x3F, 0xA4, 0x27, 0xD7, 0x91, 0x0E }, + }, + { + { 0x04, 0x0F, 0x53, 0x7A, 0x51, 0x95, 0x95, 0xCC, 0xFF, 0xDE, 0x35, 0xE0, 0xD1, 0x28, 0xB7, 0x99, + 0x92, 0x2B, 0xA9, 0x37, 0xA2, 0xE8, 0x65, 0x84, 0x36, 0x62, 0xF1, 0xF4, 0x50, 0x02, 0xB8, 0x2D }, + }, + { + { 0x04, 0x18, 0xD5, 0x3E, 0xBC, 0x8E, 0x71, 0x41, 0x25, 0x1B, 0x4D, 0xC8, 0xFA, 0x7B, 0x2B, 0xD8, + 0xFD, 0x3A, 0x1C, 0x65, 0x2A, 0xA1, 0x16, 0xE7, 0xFC, 0x70, 0x0B, 0x2A, 0xB5, 0x1A, 0x2A, 0x1A }, + }, + { + { 0x04, 0x3E, 0xD7, 0xFF, 0x71, 0xBD, 0x65, 0xAE, 0x28, 0x35, 0xB0, 0xCB, 0x38, 0x74, 0x8D, 0x0B, + 0x08, 0x5F, 0x86, 0xF7, 0x5F, 0x2A, 0x96, 0xC8, 0xD4, 0x64, 0x00, 0x89, 0xBC, 0x58, 0x3D, 0x7B }, + }, + { + { 0x04, 0x49, 0x38, 0x0A, 0x30, 0xBD, 0x6D, 0xBD, 0x55, 0xDF, 0xE2, 0x54, 0xC8, 0x20, 0xA0, 0x77, + 0xFF, 0x11, 0xCA, 0xFC, 0x83, 0xB5, 0x0E, 0x0A, 0x13, 0xF1, 0x3D, 0x59, 0xD3, 0xCA, 0x6C, 0xAF }, + }, + { + { 0x04, 0x6F, 0xDA, 0x46, 0xF0, 0xC4, 0x7B, 0x4A, 0x4D, 0x90, 0x31, 0x03, 0x7B, 0x33, 0xDB, 0xAC, + 0x99, 0x86, 0x1B, 0x7F, 0x0F, 0x85, 0x1D, 0x15, 0x1A, 0x83, 0x29, 0xF8, 0x42, 0x1B, 0x41, 0x5E }, + }, + { + { 0x04, 0x71, 0x57, 0x2C, 0x03, 0x03, 0x7D, 0xEE, 0x2B, 0x40, 0x09, 0x6E, 0xE8, 0xAA, 0x37, 0x82, + 0xC6, 0xFA, 0x81, 0x42, 0xCC, 0xA2, 0x68, 0x19, 0x09, 0xDA, 0xE8, 0xC4, 0x66, 0xD0, 0x58, 0x4E }, + }, + { + { 0x04, 0x80, 0x71, 0x3A, 0x76, 0x91, 0x7E, 0xB1, 0x7F, 0xB5, 0x4C, 0x93, 0xEE, 0xD3, 0xFD, 0x8A, + 0x98, 0x2B, 0xD9, 0x06, 0x9C, 0x69, 0xAB, 0xEA, 0xDE, 0xB2, 0x5A, 0x76, 0xD9, 0xA5, 0x90, 0x65 }, + }, + { + { 0x04, 0x8A, 0x21, 0x7A, 0xD4, 0x4E, 0x00, 0xCA, 0xD1, 0xEB, 0xEE, 0x67, 0x23, 0x51, 0xD2, 0x89, + 0x10, 0xAF, 0x69, 0xED, 0x4D, 0x45, 0x5A, 0xEF, 0x42, 0x76, 0x23, 0xF7, 0xD7, 0xAD, 0xDE, 0xC7 }, + }, + { + { 0x04, 0xA6, 0x4D, 0xD4, 0x31, 0x97, 0xC6, 0x2C, 0x2C, 0xD3, 0xB6, 0x0B, 0xDF, 0x30, 0x5B, 0x3E, + 0x81, 0xE5, 0xF5, 0x00, 0x2C, 0x15, 0x78, 0x59, 0xFB, 0xB7, 0xB4, 0x85, 0x45, 0xE6, 0x49, 0x11 }, + }, + { + { 0x04, 0xDE, 0x66, 0x05, 0x94, 0x63, 0xAF, 0xD2, 0xC1, 0x1E, 0x9E, 0x4F, 0xD6, 0xAE, 0x55, 0x07, + 0xEF, 0x68, 0xEF, 0x91, 0x54, 0x0C, 0x41, 0x0C, 0x32, 0xA8, 0xF0, 0x24, 0x62, 0x5F, 0x6B, 0xB0 }, + }, + { + { 0x05, 0x2E, 0xEB, 0x25, 0xB7, 0x24, 0xBA, 0x44, 0xF4, 0x81, 0xBE, 0x5C, 0x80, 0xFD, 0xB5, 0x5F, + 0x36, 0xB8, 0xD9, 0xBC, 0xE6, 0x45, 0xB2, 0x2F, 0xA1, 0x35, 0xC7, 0xD9, 0x74, 0xCB, 0xF6, 0xFE }, + }, + { + { 0x05, 0x4F, 0xF2, 0x4D, 0xD5, 0x0D, 0x49, 0x84, 0x68, 0x3B, 0x8B, 0xB0, 0x1A, 0xDE, 0xE5, 0xA8, + 0x73, 0x1F, 0x7C, 0x24, 0xCD, 0x11, 0x6F, 0x5A, 0xC6, 0x75, 0xE0, 0x17, 0x33, 0xCA, 0xD1, 0x83 }, + }, + { + { 0x05, 0x64, 0x05, 0x92, 0x8F, 0xDC, 0x6D, 0xFC, 0x08, 0xCD, 0x89, 0x88, 0x63, 0x0E, 0xE2, 0xD8, + 0x23, 0x5A, 0x62, 0xFC, 0xD1, 0xDB, 0xC9, 0x12, 0xA6, 0x52, 0xA3, 0xFD, 0xAC, 0xD4, 0xF3, 0x51 }, + }, + { + { 0x05, 0x69, 0xC6, 0xC6, 0x2A, 0x75, 0xA3, 0x9B, 0x82, 0x4F, 0x48, 0x77, 0xC8, 0x8E, 0xC0, 0x08, + 0x9C, 0x09, 0x42, 0x58, 0x1E, 0x38, 0x77, 0xFF, 0xF9, 0x19, 0x50, 0xEA, 0x0F, 0x9D, 0xD4, 0xFE }, + }, + { + { 0x05, 0xA7, 0xAF, 0xA3, 0x20, 0x08, 0xFE, 0x48, 0x46, 0x29, 0x67, 0xE7, 0xF8, 0x79, 0x9F, 0x72, + 0x48, 0x71, 0x80, 0xEC, 0x0F, 0x68, 0xBA, 0xF7, 0x96, 0x7A, 0x87, 0xFA, 0x0A, 0x75, 0xCF, 0xAA }, + }, + { + { 0x06, 0x17, 0xF8, 0xBC, 0x10, 0x4C, 0x24, 0x0A, 0x8E, 0x33, 0x42, 0x82, 0x00, 0x29, 0x1D, 0xB3, + 0xA6, 0xA0, 0x67, 0x70, 0x90, 0xCB, 0x02, 0x39, 0x9F, 0xFD, 0x88, 0x75, 0xB9, 0x05, 0xB1, 0x1F }, + }, + { + { 0x06, 0xD4, 0x08, 0xFF, 0xA9, 0x93, 0xAF, 0x04, 0x45, 0x9C, 0x45, 0x67, 0x1A, 0xAB, 0xD8, 0x7E, + 0xF9, 0x2B, 0x85, 0x6B, 0x1B, 0x42, 0xC6, 0x7E, 0x00, 0x5E, 0xB4, 0xD2, 0x71, 0x58, 0xA8, 0x42 }, + }, + { + { 0x07, 0x19, 0x4F, 0x47, 0xF4, 0xCE, 0xD0, 0x96, 0xD1, 0x06, 0x8D, 0x34, 0x49, 0x3B, 0x67, 0x37, + 0x14, 0x45, 0x16, 0x93, 0xA6, 0xA2, 0x71, 0x2F, 0x70, 0x8F, 0x59, 0x36, 0x12, 0x11, 0xC6, 0x21 }, + }, + { + { 0x07, 0x3C, 0xA3, 0x1D, 0x60, 0x08, 0x54, 0xA8, 0x29, 0x9A, 0xFF, 0x74, 0xE9, 0x8A, 0xC1, 0xED, + 0x48, 0x2A, 0xCA, 0x06, 0x8E, 0xC5, 0x90, 0x61, 0x54, 0xEA, 0x24, 0x7B, 0x6C, 0x27, 0x6E, 0xE9 }, + }, + { + { 0x07, 0x76, 0x08, 0x6A, 0x5A, 0x31, 0x72, 0x42, 0xA2, 0x50, 0x4C, 0x45, 0x3C, 0x89, 0xFF, 0xD3, + 0xC4, 0xF3, 0xA3, 0x6C, 0x46, 0xBE, 0xB3, 0xF5, 0xF3, 0x55, 0xDB, 0x47, 0x6D, 0xD7, 0x7C, 0x19 }, + }, + { + { 0x07, 0x8F, 0xEE, 0x58, 0x8A, 0x2C, 0x55, 0xC8, 0xE2, 0xC1, 0x78, 0x71, 0xAA, 0xB6, 0xE4, 0x00, + 0xB3, 0xFD, 0xBC, 0xDC, 0xF3, 0x91, 0x46, 0xA0, 0x89, 0x37, 0xF9, 0xAC, 0x06, 0xA1, 0xB8, 0xBD }, + }, + { + { 0x07, 0xA9, 0x5C, 0x81, 0xED, 0x15, 0x9E, 0x44, 0xA0, 0x41, 0x2B, 0xDE, 0xB1, 0x31, 0xA1, 0x1F, + 0x26, 0xE3, 0x4E, 0x51, 0x67, 0xEC, 0xF2, 0x11, 0x78, 0xF3, 0xEF, 0xBF, 0xB3, 0xA2, 0xBB, 0x72 }, + }, + { + { 0x07, 0xE9, 0x60, 0x9E, 0x05, 0xDC, 0x0A, 0x1E, 0x52, 0x15, 0x06, 0x49, 0xEB, 0xF4, 0x1F, 0x6D, + 0xE3, 0x86, 0x7C, 0x9C, 0x25, 0xFE, 0x17, 0x7B, 0xAB, 0xCF, 0xD9, 0xB3, 0x70, 0x46, 0x13, 0x8B }, + }, + { + { 0x08, 0x21, 0x0A, 0xC3, 0xA2, 0x95, 0x56, 0xF6, 0x8D, 0x33, 0xB4, 0x40, 0x87, 0x9C, 0x54, 0x63, + 0x64, 0x04, 0xE9, 0x7C, 0x4D, 0x9F, 0x97, 0x82, 0x23, 0xD2, 0x42, 0xAB, 0xE5, 0x38, 0x5E, 0x4E }, + }, + { + { 0x08, 0xC2, 0xD3, 0x17, 0xA8, 0x4A, 0x3C, 0xBE, 0x38, 0xDE, 0x64, 0xA2, 0x4D, 0xD4, 0x27, 0x91, + 0x09, 0xE2, 0xBC, 0x02, 0x2B, 0x93, 0xB1, 0x05, 0xA8, 0x94, 0xA5, 0x1A, 0xDC, 0x3E, 0xE5, 0xCC }, + }, + { + { 0x08, 0xC7, 0xB0, 0x23, 0xA9, 0x9A, 0x63, 0x74, 0x13, 0xDE, 0x2C, 0x9D, 0x88, 0x09, 0x82, 0x33, + 0x8D, 0x09, 0x36, 0xF1, 0x21, 0x25, 0x1E, 0x75, 0x58, 0x59, 0x12, 0x62, 0x92, 0xF9, 0x6B, 0x1A }, + }, + { + { 0x09, 0x06, 0x86, 0xA8, 0x02, 0xD8, 0x42, 0x73, 0x06, 0x33, 0x5B, 0xC4, 0x63, 0x5F, 0x95, 0x8F, + 0x90, 0xB2, 0x76, 0xEB, 0x7B, 0x1A, 0x62, 0x7C, 0xBE, 0xA7, 0xF8, 0xA1, 0xD2, 0x44, 0xEE, 0x8A }, + }, + { + { 0x09, 0x1F, 0x0A, 0xDD, 0x81, 0x63, 0xC3, 0x11, 0xB3, 0xDF, 0x6C, 0x8A, 0xBA, 0x7B, 0xD3, 0x35, + 0x0C, 0x52, 0xC4, 0xFC, 0xAE, 0xC1, 0x67, 0x62, 0xF6, 0x64, 0xC4, 0xCB, 0xDC, 0xC5, 0x77, 0xC8 }, + }, + { + { 0x09, 0x35, 0x58, 0xED, 0xE2, 0x67, 0x67, 0x32, 0x63, 0x49, 0xE7, 0xBE, 0xBC, 0x8C, 0x77, 0x02, + 0x94, 0xC4, 0x42, 0xA7, 0x2E, 0x6C, 0x98, 0x0E, 0xA0, 0x4E, 0xFA, 0x90, 0x07, 0x30, 0x81, 0x3E }, + }, + { + { 0x09, 0x9F, 0x3E, 0x71, 0xB5, 0x00, 0xD1, 0x5B, 0x03, 0x7B, 0x93, 0xAA, 0x5F, 0xB4, 0x16, 0x19, + 0x0A, 0xD1, 0xDF, 0x86, 0x73, 0xAB, 0x31, 0xA8, 0xF6, 0xD9, 0x7F, 0x59, 0x5E, 0x8E, 0x16, 0xE9 }, + }, + { + { 0x09, 0xA2, 0xC1, 0x4E, 0x5D, 0x62, 0xC3, 0x4A, 0xA7, 0x06, 0xFF, 0xAB, 0xD2, 0x1E, 0x7A, 0xD2, + 0x25, 0xF6, 0x25, 0xF7, 0x1F, 0xF8, 0x9D, 0xB3, 0x9B, 0x32, 0x2A, 0xCB, 0x0C, 0x84, 0x57, 0x4F }, + }, + { + { 0x09, 0xA5, 0x9E, 0x8B, 0x56, 0xFD, 0x2B, 0xA0, 0xAC, 0x68, 0x5C, 0xB6, 0xF7, 0x51, 0xA0, 0x2F, + 0x83, 0x5C, 0x68, 0x50, 0x81, 0xA2, 0xD5, 0xDC, 0x02, 0xB0, 0x4E, 0x9B, 0x3B, 0xC7, 0xC8, 0xBC }, + }, + { + { 0x09, 0xEB, 0xDD, 0x1B, 0x7F, 0xFA, 0x4E, 0xD7, 0x4B, 0xEB, 0xAE, 0x96, 0xBA, 0x10, 0x65, 0xDC, + 0x7D, 0xA1, 0xC5, 0xD3, 0x18, 0x3C, 0xC5, 0x94, 0x19, 0xE9, 0x78, 0x36, 0xAF, 0x7F, 0x6D, 0x70 }, + }, + { + { 0x09, 0xFC, 0x8C, 0xAD, 0x2C, 0xE7, 0x52, 0x3C, 0xDB, 0xED, 0x70, 0x5F, 0xDA, 0x4B, 0x22, 0x8C, + 0xD4, 0xBB, 0xA3, 0xB7, 0xF9, 0xF2, 0x50, 0xEA, 0x6B, 0xE2, 0x3C, 0x17, 0x00, 0xA5, 0x1C, 0xE5 }, + }, + { + { 0x0A, 0x01, 0x88, 0x81, 0x2C, 0x9D, 0xE8, 0x8A, 0x2F, 0x0A, 0x5C, 0x4C, 0x57, 0xE6, 0xF9, 0xA8, + 0x15, 0x69, 0xE9, 0xC7, 0x09, 0xC0, 0x95, 0x40, 0x80, 0xE5, 0xE4, 0xE6, 0x62, 0x85, 0x6D, 0xF8 }, + }, + { + { 0x0A, 0x35, 0xB0, 0xDA, 0x94, 0xB8, 0xA4, 0xB4, 0xAE, 0xB6, 0x32, 0xB0, 0x90, 0xC8, 0xA3, 0xC0, + 0x81, 0x9B, 0xC6, 0x74, 0x99, 0xF8, 0x92, 0x8B, 0xF6, 0x8E, 0xB2, 0xFF, 0x4E, 0xD4, 0x29, 0x51 }, + }, + { + { 0x0A, 0x42, 0x19, 0x7E, 0x48, 0x70, 0xB2, 0x34, 0x20, 0xF5, 0x51, 0x9F, 0xB8, 0x39, 0xB6, 0xCC, + 0x83, 0x03, 0x52, 0x9A, 0xA9, 0x06, 0x9A, 0xD1, 0xA0, 0x90, 0x86, 0xCF, 0x6C, 0xBA, 0x07, 0xC2 }, + }, + { + { 0x0A, 0xB1, 0xB1, 0x53, 0x74, 0x59, 0x75, 0x6C, 0xD4, 0x1C, 0x02, 0x6D, 0x46, 0x83, 0x64, 0x3A, + 0xC1, 0x6C, 0xF9, 0xCB, 0x1C, 0x28, 0xBD, 0x27, 0x8A, 0x18, 0x53, 0x52, 0x30, 0xD6, 0xE4, 0x93 }, + }, + { + { 0x0B, 0x03, 0xE1, 0x27, 0xC2, 0xE3, 0x3E, 0xAD, 0xBC, 0xB0, 0x99, 0x80, 0x46, 0xCC, 0x9B, 0xA7, + 0x33, 0x46, 0x3E, 0x0C, 0xA6, 0x43, 0x52, 0x27, 0x81, 0xB0, 0x3D, 0x81, 0x53, 0x97, 0xEB, 0x4F }, + }, + { + { 0x0B, 0x1E, 0x1E, 0x73, 0x43, 0xA0, 0xE9, 0x1C, 0x2A, 0x27, 0xDD, 0x2A, 0x4D, 0x7E, 0x6B, 0xF1, + 0xE8, 0x04, 0x4B, 0x58, 0xCE, 0x1A, 0xE8, 0x1E, 0x27, 0xD8, 0x14, 0xFD, 0x2D, 0xC0, 0x18, 0x93 }, + }, + { + { 0x0B, 0x23, 0x83, 0x47, 0x04, 0xD5, 0x51, 0xF9, 0x14, 0xD0, 0xAE, 0xD0, 0x6A, 0x5F, 0x1A, 0x72, + 0x48, 0x11, 0xDB, 0x55, 0x18, 0x00, 0x4C, 0xB2, 0xC3, 0x8C, 0xF9, 0x71, 0x49, 0x64, 0xDB, 0x21 }, + }, + { + { 0x0B, 0x28, 0x58, 0xC0, 0x3B, 0xA3, 0xF1, 0x10, 0x18, 0x68, 0x8E, 0xC6, 0x2F, 0x1C, 0x17, 0x30, + 0xDC, 0xA2, 0x20, 0x48, 0x57, 0xCE, 0x5F, 0xAD, 0xB6, 0x6C, 0xE6, 0x6B, 0xDA, 0xB1, 0x70, 0x3D }, + }, + { + { 0x0B, 0x3D, 0x17, 0x8D, 0x8A, 0x68, 0x43, 0x73, 0x19, 0x35, 0x9F, 0xA3, 0x54, 0x28, 0x65, 0xAD, + 0xE1, 0x20, 0x02, 0x9A, 0xBE, 0x5B, 0x02, 0xBA, 0xFF, 0xBE, 0x98, 0x8B, 0x2A, 0x14, 0x46, 0x3D }, + }, + { + { 0x0B, 0x45, 0xC6, 0x0D, 0xE2, 0x72, 0x59, 0xC9, 0x59, 0x56, 0x71, 0xCE, 0xA0, 0xBE, 0x71, 0x1E, + 0x0F, 0x64, 0x49, 0xEE, 0xC6, 0x19, 0x88, 0x3A, 0x6C, 0x39, 0x3D, 0xCE, 0x51, 0x85, 0xA7, 0xAC }, + }, + { + { 0x0B, 0x48, 0xD5, 0x5C, 0xAC, 0x84, 0xFD, 0xEE, 0x15, 0xD8, 0x1A, 0xFF, 0x99, 0x07, 0xBB, 0x9A, + 0x57, 0x11, 0xA9, 0x5C, 0xE2, 0x3A, 0x8D, 0x4D, 0x5E, 0x88, 0x62, 0xBF, 0x15, 0xA7, 0x6A, 0x75 }, + }, + { + { 0x0B, 0x85, 0xEA, 0x41, 0xE5, 0x44, 0x13, 0x86, 0xC9, 0x44, 0xE8, 0x1D, 0x47, 0xEC, 0x0F, 0x42, + 0x0B, 0x54, 0xE5, 0x11, 0x14, 0x38, 0xCB, 0x5A, 0x1C, 0xBD, 0x53, 0xC7, 0x8E, 0x7E, 0xD2, 0xA6 }, + }, + { + { 0x0B, 0xFE, 0xA1, 0x38, 0x31, 0x67, 0x3E, 0xC9, 0x69, 0xD0, 0x5F, 0xD8, 0x67, 0xB6, 0x69, 0xF2, + 0x71, 0x24, 0xAF, 0xEB, 0x7C, 0x60, 0x8C, 0xFE, 0x54, 0xCF, 0x46, 0x33, 0x06, 0xCC, 0x99, 0x2E }, + }, + { + { 0x0C, 0x02, 0xA0, 0x08, 0xA4, 0x98, 0xD9, 0x82, 0x26, 0x80, 0xEC, 0x09, 0x73, 0x3B, 0x15, 0xCF, + 0xE2, 0x66, 0x30, 0xDA, 0x43, 0x94, 0x65, 0x82, 0xE5, 0xDA, 0xCA, 0x43, 0x89, 0x9D, 0x5F, 0x6F }, + }, + { + { 0x0C, 0x14, 0xF5, 0x4B, 0x4A, 0xE1, 0xD2, 0xBC, 0xA2, 0x83, 0x40, 0x09, 0x0E, 0x37, 0x37, 0x6C, + 0xFD, 0xE7, 0x78, 0x4A, 0xA7, 0x20, 0xB3, 0x55, 0x9C, 0x42, 0xD8, 0xC9, 0x4F, 0x44, 0xCB, 0x04 }, + }, + { + { 0x0C, 0xA8, 0x11, 0xFE, 0xDB, 0x74, 0xBE, 0xAD, 0x8B, 0xB6, 0xA9, 0xEF, 0x22, 0xE7, 0x3A, 0x5F, + 0x5F, 0x3F, 0x38, 0x53, 0xFD, 0xE6, 0xDB, 0xE3, 0xF6, 0xA2, 0xD8, 0xEF, 0x7F, 0x62, 0x27, 0x3A }, + }, + { + { 0x0C, 0xB9, 0x31, 0x93, 0xF1, 0x65, 0x26, 0xE1, 0xD1, 0x65, 0x52, 0x11, 0x7B, 0xA2, 0x1A, 0xAC, + 0xB9, 0xF1, 0xD7, 0xA8, 0x93, 0x56, 0xA3, 0x5D, 0xE4, 0xF6, 0x65, 0xE9, 0x39, 0x90, 0x79, 0x38 }, + }, + { + { 0x0D, 0x01, 0xD9, 0x55, 0x23, 0x47, 0x90, 0x24, 0x17, 0x4E, 0x8D, 0xC1, 0x05, 0x00, 0x90, 0x39, + 0xE7, 0x3C, 0x0B, 0xC6, 0x34, 0x66, 0x54, 0x6D, 0x91, 0xFA, 0xCD, 0x29, 0xAA, 0x39, 0x13, 0xC6 }, + }, + { + { 0x0D, 0x16, 0x1B, 0xB9, 0xCA, 0x0D, 0x20, 0xE4, 0x67, 0x35, 0x89, 0x67, 0x22, 0x78, 0xB0, 0xA3, + 0xC5, 0xE2, 0x69, 0x30, 0xA4, 0xDC, 0x3A, 0x82, 0x16, 0x85, 0x43, 0x24, 0x27, 0xC7, 0x31, 0x5A }, + }, + { + { 0x0D, 0x18, 0x5D, 0x97, 0x79, 0xAC, 0xFE, 0x41, 0x89, 0x12, 0xB5, 0x9E, 0xF7, 0xCD, 0x42, 0x8B, + 0xD4, 0xBC, 0x7F, 0x2B, 0xCD, 0xED, 0x9E, 0xAD, 0xAB, 0x55, 0xF0, 0x66, 0xE2, 0x9E, 0xDF, 0x4F }, + }, + { + { 0x0D, 0x66, 0x45, 0x6B, 0x0B, 0xF4, 0xAA, 0x54, 0x16, 0xE4, 0x4D, 0x9F, 0xDB, 0x40, 0x38, 0x3D, + 0x34, 0x3D, 0x7B, 0x3F, 0x6A, 0xFE, 0x69, 0xAA, 0x08, 0x95, 0xBB, 0x1A, 0xB5, 0xE0, 0x61, 0xA0 }, + }, + { + { 0x0D, 0x71, 0xC8, 0xCA, 0x16, 0x56, 0x59, 0xEF, 0xAF, 0x69, 0x65, 0x29, 0x28, 0x9A, 0xAE, 0x25, + 0xD9, 0xC4, 0x2A, 0x1B, 0xBB, 0x03, 0x5A, 0x2B, 0x8C, 0x61, 0x14, 0x7E, 0x1B, 0x8B, 0x90, 0x52 }, + }, + { + { 0x0D, 0xAB, 0xAE, 0xCB, 0x0D, 0x12, 0x9B, 0xC6, 0x36, 0xE8, 0x4A, 0x4B, 0x23, 0x93, 0x46, 0x03, + 0x06, 0xAB, 0x49, 0xBD, 0x03, 0xE2, 0x22, 0xEE, 0x79, 0x2A, 0x36, 0x9E, 0x6E, 0x4F, 0x70, 0x72 }, + }, + { + { 0x0D, 0xE7, 0xAB, 0x16, 0xC8, 0xC2, 0xAB, 0x33, 0x4A, 0x01, 0x65, 0x96, 0x97, 0x41, 0x5A, 0x9E, + 0x28, 0x02, 0xEE, 0xDC, 0x41, 0xAC, 0xF7, 0x46, 0x92, 0x41, 0xE2, 0xD3, 0x9B, 0x97, 0x9D, 0x81 }, + }, + { + { 0x0E, 0x23, 0x35, 0x4D, 0xE8, 0xD0, 0xE4, 0x79, 0xCA, 0x89, 0xA3, 0x0F, 0xD3, 0xEF, 0x7E, 0x20, + 0xBF, 0xC2, 0x80, 0x39, 0x8D, 0x4C, 0xDC, 0x28, 0x18, 0x79, 0xDA, 0x66, 0xEA, 0xD3, 0x73, 0xD0 }, + }, + { + { 0x0E, 0x4F, 0xD8, 0x53, 0xD6, 0x0F, 0xD7, 0x69, 0x90, 0xD7, 0x77, 0xAF, 0x09, 0x79, 0xD4, 0x65, + 0x16, 0xBD, 0xC9, 0x09, 0xA8, 0xD9, 0xD5, 0xEF, 0x70, 0x15, 0x59, 0xBF, 0x74, 0x62, 0xC4, 0xAF }, + }, + { + { 0x0E, 0x56, 0x71, 0x6D, 0xD3, 0xC1, 0x83, 0xAA, 0x5D, 0xE0, 0xD3, 0x96, 0x89, 0x88, 0x94, 0xF0, + 0x03, 0xAA, 0xFF, 0x06, 0x2E, 0x15, 0x82, 0x33, 0xEF, 0xFB, 0x5B, 0xC9, 0xE8, 0x33, 0x71, 0x4B }, + }, + { + { 0x0E, 0x67, 0x06, 0x78, 0x44, 0xAA, 0xC4, 0xC8, 0xC3, 0x56, 0xE7, 0xAA, 0xB8, 0x6B, 0x58, 0xB0, + 0x14, 0x21, 0x03, 0x87, 0xD2, 0xC1, 0x55, 0xDE, 0x71, 0x94, 0x08, 0x65, 0x12, 0xCF, 0x09, 0xDE }, + }, + { + { 0x0E, 0xFD, 0x68, 0x73, 0xD6, 0x0E, 0x77, 0x96, 0x2D, 0xF6, 0x00, 0x16, 0xDC, 0x3B, 0xAF, 0x9C, + 0xA7, 0x1E, 0x7D, 0x86, 0x19, 0xE7, 0xEB, 0xAA, 0x3A, 0xF2, 0xDC, 0xB5, 0xBA, 0x24, 0xDE, 0xC2 }, + }, + { + { 0x0E, 0xFF, 0x3C, 0xFF, 0xDA, 0x4A, 0x3E, 0x87, 0x23, 0x4A, 0x86, 0xC7, 0x0D, 0x49, 0x8C, 0x62, + 0x60, 0x7F, 0x37, 0x44, 0xEA, 0x71, 0xF1, 0x83, 0x1D, 0xCF, 0xCA, 0xF3, 0xAF, 0x15, 0x56, 0x9C }, + }, + { + { 0x0F, 0x07, 0xAA, 0xD7, 0xAC, 0x55, 0x6F, 0x85, 0x86, 0xCB, 0xF3, 0x47, 0x8F, 0x2E, 0xC0, 0xB5, + 0x29, 0xCA, 0x46, 0x5B, 0x19, 0x3F, 0xC2, 0xA6, 0xE1, 0x93, 0x28, 0x3A, 0xD8, 0xD7, 0xA5, 0x50 }, + }, + { + { 0x0F, 0x2C, 0x25, 0x7A, 0xFB, 0xE8, 0x25, 0x5D, 0x2D, 0x6F, 0x4D, 0x52, 0xC4, 0xE5, 0x31, 0x59, + 0xB7, 0xBA, 0x96, 0xF9, 0xBA, 0x07, 0xFA, 0x6D, 0x8C, 0xE1, 0xD0, 0xAC, 0x03, 0x3C, 0x17, 0xF7 }, + }, + { + { 0x0F, 0x43, 0xFC, 0x12, 0x47, 0x01, 0xFE, 0x29, 0xB7, 0x14, 0xF3, 0x05, 0xE2, 0x61, 0xB6, 0x32, + 0x04, 0x82, 0xC0, 0x09, 0x6F, 0xFE, 0xAD, 0x35, 0xE1, 0xF8, 0xE6, 0x32, 0xC6, 0x4D, 0x7B, 0x20 }, + }, + { + { 0x0F, 0x57, 0xED, 0x67, 0x2B, 0xAC, 0x50, 0x14, 0x89, 0xE4, 0xF4, 0xAB, 0x4B, 0x1D, 0xB1, 0x75, + 0x81, 0xFE, 0xB8, 0x76, 0x0F, 0xFB, 0xC0, 0x8A, 0x82, 0x83, 0xE0, 0xF8, 0x41, 0xAE, 0x01, 0x3C }, + }, + { + { 0x10, 0x14, 0xB6, 0xDB, 0xF3, 0xC9, 0x11, 0xEB, 0x21, 0x6F, 0xE6, 0xEC, 0xE6, 0x8C, 0xA9, 0x37, + 0x92, 0xCC, 0xCB, 0xD3, 0xC3, 0x9C, 0xBF, 0x83, 0xE8, 0x93, 0xD4, 0x4D, 0x5E, 0x4F, 0x00, 0xDB }, + }, + { + { 0x10, 0x7F, 0xA4, 0x31, 0x4E, 0x09, 0x74, 0x84, 0x8A, 0x9C, 0x14, 0xE0, 0x62, 0x10, 0x44, 0x7B, + 0x0A, 0xDF, 0xB8, 0x26, 0xB3, 0xE5, 0xBF, 0x88, 0x76, 0x93, 0x1F, 0xF4, 0x80, 0x74, 0x02, 0x01 }, + }, + { + { 0x10, 0x83, 0x6D, 0xA0, 0xCD, 0x6A, 0xC0, 0x95, 0xDD, 0x7A, 0xC3, 0x4D, 0x99, 0x01, 0x90, 0x9A, + 0x8E, 0xF8, 0x4D, 0x6E, 0xE0, 0x5B, 0x83, 0x43, 0x03, 0xD4, 0x7F, 0xC0, 0xA5, 0xF9, 0x14, 0xFA }, + }, + { + { 0x10, 0xCF, 0x15, 0xBB, 0x1E, 0xA3, 0x0B, 0xB4, 0xA2, 0xE5, 0x39, 0x1C, 0x39, 0xAF, 0xA3, 0xA9, + 0x96, 0xC8, 0x53, 0x22, 0xB1, 0x1F, 0xDE, 0xD5, 0xFB, 0x84, 0x80, 0x35, 0x5C, 0x78, 0x3E, 0xAD }, + }, + { + { 0x10, 0xDC, 0x64, 0x9C, 0x0A, 0x35, 0x20, 0x69, 0x0B, 0x49, 0xA8, 0x97, 0xEA, 0xB4, 0x97, 0xF4, + 0x38, 0x81, 0x0D, 0x28, 0x4F, 0xCB, 0xF2, 0x22, 0xA1, 0xDE, 0x45, 0x27, 0x1D, 0x1C, 0xCF, 0x17 }, + }, + { + { 0x11, 0x59, 0xD3, 0x5C, 0x9C, 0x09, 0xEF, 0x77, 0xCB, 0xEA, 0x92, 0x2E, 0xF5, 0xBB, 0xB0, 0x36, + 0x51, 0x11, 0x65, 0x52, 0x7A, 0xCF, 0x44, 0xAA, 0xB5, 0xDE, 0x87, 0x5E, 0x2F, 0x51, 0xA2, 0xDD }, + }, + { + { 0x11, 0x65, 0x97, 0x60, 0x44, 0x7F, 0xB6, 0x8D, 0x4F, 0xBB, 0x37, 0x6E, 0x3B, 0x66, 0xB1, 0x94, + 0xDA, 0x3E, 0xE0, 0x42, 0x5A, 0x0B, 0xC2, 0x13, 0x88, 0x06, 0xB2, 0x78, 0x43, 0x79, 0xD3, 0xB8 }, + }, + { + { 0x11, 0x6A, 0x75, 0xFA, 0x6F, 0x84, 0x56, 0x46, 0x7A, 0x45, 0xF1, 0x4D, 0xA4, 0xB7, 0xCF, 0x3E, + 0x37, 0xE6, 0xA7, 0xCF, 0x07, 0x5B, 0x23, 0x35, 0xB2, 0x01, 0x1D, 0x93, 0x8B, 0x0F, 0x09, 0xA0 }, + }, + { + { 0x11, 0xA4, 0x02, 0x7B, 0x45, 0xFC, 0x9A, 0x6F, 0x40, 0x21, 0x25, 0xC3, 0xCA, 0x22, 0x68, 0xE0, + 0x15, 0xA3, 0x1B, 0xA4, 0xFD, 0xB0, 0x05, 0x9D, 0x66, 0x6B, 0x73, 0xC8, 0x51, 0xD5, 0x35, 0x92 }, + }, + { + { 0x11, 0xB7, 0x69, 0xDE, 0xDE, 0x8B, 0xD6, 0x15, 0xFC, 0x71, 0x20, 0x0B, 0x20, 0xB9, 0xA3, 0x1D, + 0x70, 0x93, 0x15, 0x16, 0xEC, 0x54, 0x42, 0xC3, 0xDD, 0xC9, 0xC8, 0xD1, 0x90, 0x21, 0x9D, 0xE1 }, + }, + { + { 0x11, 0xD3, 0x0D, 0xD7, 0x81, 0x07, 0x21, 0x88, 0x84, 0xB6, 0x55, 0xD8, 0x62, 0xAB, 0x05, 0x0E, + 0xAC, 0x0F, 0x5E, 0x33, 0x8E, 0xB1, 0x18, 0x44, 0x4B, 0x36, 0x0C, 0x8A, 0x3E, 0x05, 0x09, 0x9D }, + }, + { + { 0x11, 0xDE, 0x20, 0x2A, 0x3E, 0x34, 0x13, 0xA2, 0x33, 0x3E, 0xC1, 0x67, 0x8E, 0xBB, 0x50, 0x6D, + 0xD9, 0x55, 0x7C, 0x06, 0x81, 0xCE, 0x5F, 0xED, 0xCD, 0x25, 0xAA, 0xD1, 0x2C, 0x46, 0x67, 0xD6 }, + }, + { + { 0x11, 0xE7, 0x54, 0xF7, 0x95, 0x9E, 0x25, 0xB0, 0x18, 0x52, 0xA0, 0x46, 0xB1, 0xD2, 0xC2, 0xF6, + 0x48, 0x93, 0x53, 0x7A, 0x47, 0x4D, 0x14, 0x1D, 0x6E, 0x50, 0x50, 0x1E, 0x33, 0x9D, 0x89, 0x19 }, + }, + { + { 0x11, 0xF6, 0x34, 0xE0, 0x59, 0xEA, 0xBB, 0x99, 0xD6, 0x48, 0xD4, 0xFF, 0x6C, 0xD4, 0x29, 0x8E, + 0xD2, 0x0A, 0xA8, 0x2C, 0xCC, 0xDE, 0x8E, 0x81, 0x09, 0x80, 0x16, 0xE2, 0xAC, 0x72, 0xD4, 0x16 }, + }, + { + { 0x12, 0x0D, 0x2B, 0x28, 0x15, 0xC5, 0xEF, 0x5C, 0x28, 0x71, 0xA1, 0x93, 0x4D, 0xD4, 0x3D, 0x49, + 0x9E, 0x4E, 0xE6, 0xB6, 0x30, 0x00, 0xAE, 0x1A, 0xBE, 0xF7, 0x6D, 0x0D, 0x85, 0x51, 0xEF, 0xC6 }, + }, + { + { 0x12, 0x50, 0x6D, 0x3D, 0xE8, 0xC3, 0x19, 0xCC, 0x5B, 0x07, 0x90, 0x67, 0x7B, 0x90, 0x86, 0x36, + 0xE0, 0x86, 0x5B, 0x5F, 0xA1, 0x95, 0xDC, 0x87, 0xAF, 0x26, 0xF2, 0xAA, 0x05, 0xC2, 0x9F, 0xAD }, + }, + { + { 0x12, 0x6B, 0x1B, 0xA6, 0x38, 0xC7, 0xE6, 0x99, 0xBC, 0xBC, 0x54, 0xF5, 0x79, 0xAC, 0xD3, 0x9F, + 0xE6, 0x1D, 0x08, 0x22, 0x5F, 0xE5, 0xB1, 0xF9, 0x01, 0x88, 0xB2, 0x3F, 0xD8, 0x43, 0x3E, 0x8E }, + }, + { + { 0x13, 0x5D, 0x3E, 0xDA, 0x6E, 0x55, 0x9B, 0xF5, 0xEE, 0x23, 0x0A, 0xA5, 0xBA, 0x59, 0xBB, 0x6A, + 0x2A, 0x0F, 0x07, 0x82, 0x2F, 0xED, 0x38, 0x44, 0x7E, 0x6A, 0xBC, 0x5C, 0x23, 0xAA, 0xD0, 0x27 }, + }, + { + { 0x13, 0x6A, 0x40, 0x09, 0x81, 0xB1, 0xA3, 0xE0, 0x5F, 0xDC, 0xAC, 0x20, 0xA2, 0x36, 0xF8, 0x6E, + 0x94, 0xE5, 0xEE, 0x58, 0x59, 0xD8, 0xFD, 0x45, 0xE9, 0xE9, 0xC5, 0xA6, 0xC5, 0xC0, 0xA4, 0x13 }, + }, + { + { 0x13, 0xBD, 0x07, 0x7B, 0x8A, 0x9F, 0x46, 0xFF, 0x8F, 0x2F, 0xFD, 0x23, 0x6E, 0x53, 0xA7, 0x2C, + 0x3B, 0x87, 0xF3, 0x4C, 0xC9, 0xDB, 0xB5, 0x81, 0x7E, 0x4D, 0xBA, 0x1B, 0xD3, 0xBC, 0x9E, 0x5F }, + }, + { + { 0x13, 0xCF, 0x4A, 0xC3, 0x21, 0x48, 0xB9, 0xC5, 0x61, 0x8A, 0x7D, 0xA6, 0x2F, 0x1C, 0xB8, 0x41, + 0x56, 0x68, 0xD5, 0x9F, 0xD3, 0xB3, 0x04, 0x1F, 0x50, 0x23, 0x20, 0xE5, 0x8E, 0x95, 0x1B, 0xC0 }, + }, + { + { 0x13, 0xE0, 0x1B, 0xE5, 0x72, 0xDC, 0x11, 0xFA, 0xC3, 0xB4, 0x7A, 0xE6, 0x8F, 0x92, 0xDC, 0x00, + 0xF1, 0x00, 0xBF, 0x77, 0x53, 0x7B, 0x89, 0x47, 0xF4, 0xC1, 0x1C, 0x25, 0xA0, 0xB6, 0xF9, 0xF6 }, + }, + { + { 0x13, 0xF7, 0xAC, 0xE5, 0xF5, 0x11, 0xC1, 0xF9, 0x43, 0x88, 0xE5, 0xC8, 0xA7, 0x25, 0x8A, 0x61, + 0x86, 0x14, 0xB0, 0x1C, 0xEA, 0xDC, 0xB0, 0x0A, 0x94, 0xB3, 0xCC, 0x7A, 0xE7, 0x01, 0xBE, 0xAE }, + }, + { + { 0x14, 0x21, 0x28, 0xA6, 0x65, 0x1C, 0xDC, 0x18, 0x70, 0xC2, 0x67, 0x5E, 0xC0, 0xB0, 0xEF, 0x32, + 0xB5, 0xD4, 0xC1, 0x55, 0x35, 0x8E, 0x7E, 0xD9, 0x5A, 0x98, 0xE8, 0x3B, 0x1A, 0xD8, 0xBE, 0x4D }, + }, + { + { 0x14, 0x47, 0x25, 0xA6, 0x79, 0x1C, 0x60, 0x0C, 0x4C, 0x2C, 0xF3, 0x94, 0x3F, 0x3E, 0xCF, 0x40, + 0xD6, 0x31, 0xD7, 0x60, 0xE4, 0x51, 0xEF, 0x28, 0x29, 0xAF, 0xFB, 0xEE, 0x74, 0x80, 0xAD, 0x17 }, + }, + { + { 0x14, 0x60, 0x80, 0x7B, 0x0D, 0x93, 0xDD, 0x79, 0xF4, 0xA3, 0xB9, 0x07, 0x45, 0xE9, 0xA7, 0x15, + 0x29, 0xF1, 0xEC, 0x26, 0x63, 0x30, 0x41, 0x57, 0x4A, 0x81, 0x80, 0xE0, 0xCE, 0x42, 0x81, 0xDF }, + }, + { + { 0x14, 0xB0, 0x98, 0x34, 0xE2, 0xA5, 0xBC, 0x61, 0x9A, 0x79, 0xA5, 0xD2, 0xCE, 0x48, 0x78, 0xFA, + 0xBC, 0xA0, 0x6D, 0x76, 0xC2, 0x37, 0x65, 0xFD, 0x45, 0x86, 0x3C, 0x22, 0xFE, 0xCE, 0x30, 0x38 }, + }, + { + { 0x14, 0xF3, 0xB4, 0x17, 0x3B, 0x9F, 0x8C, 0x81, 0x90, 0x39, 0x74, 0xE6, 0x4C, 0x68, 0xDF, 0xAE, + 0xB6, 0xB7, 0xD8, 0x4B, 0x94, 0x2A, 0xAE, 0x78, 0x89, 0x03, 0xA1, 0x54, 0x01, 0x08, 0x57, 0xE7 }, + }, + { + { 0x15, 0x27, 0x2A, 0xBC, 0x1F, 0x0C, 0x4D, 0x1D, 0x1A, 0x92, 0x08, 0x73, 0x55, 0xA1, 0xE0, 0x42, + 0x6C, 0x2B, 0xB5, 0xB4, 0x37, 0x30, 0x00, 0xB8, 0x2C, 0x2C, 0xCA, 0xB7, 0xFA, 0xD6, 0xFA, 0x20 }, + }, + { + { 0x15, 0x48, 0x1F, 0xDE, 0x4E, 0x3F, 0x72, 0x49, 0x66, 0x87, 0xDF, 0x57, 0x5F, 0xB5, 0xB1, 0x27, + 0xBD, 0x6D, 0xEB, 0x66, 0x1D, 0xD9, 0x07, 0x71, 0x8B, 0xA0, 0x65, 0xC7, 0xDA, 0x66, 0x76, 0xD1 }, + }, + { + { 0x15, 0x5A, 0x88, 0x39, 0x60, 0x8B, 0x77, 0x25, 0x34, 0x6A, 0x72, 0x40, 0xE4, 0xE2, 0x50, 0x3A, + 0xCC, 0x7B, 0x8B, 0xEF, 0x0B, 0x1B, 0xE6, 0x15, 0xB9, 0x02, 0x4A, 0x88, 0xE6, 0x52, 0x11, 0xF9 }, + }, + { + { 0x15, 0x5D, 0x88, 0x6E, 0x99, 0x1D, 0x40, 0x0A, 0xBF, 0x2F, 0x83, 0xC2, 0x80, 0xD1, 0x24, 0x6D, + 0xCE, 0x02, 0xA6, 0x28, 0x31, 0x26, 0xC6, 0x17, 0xE4, 0x17, 0xD2, 0xB7, 0xEA, 0xC1, 0x19, 0x24 }, + }, + { + { 0x15, 0x75, 0x93, 0x18, 0x80, 0x19, 0x6D, 0xE8, 0x0D, 0x97, 0xFE, 0xF1, 0x85, 0xD2, 0x7A, 0xF6, + 0xAD, 0x6B, 0x5B, 0x04, 0x0D, 0x87, 0x6C, 0xDF, 0x4A, 0x39, 0xB5, 0xB7, 0x8E, 0x96, 0xB7, 0xD5 }, + }, + { + { 0x15, 0xB0, 0xD9, 0xBE, 0xD6, 0x2B, 0xD8, 0x96, 0x11, 0x59, 0xFE, 0x7E, 0x88, 0x92, 0xF8, 0xE8, + 0xEB, 0xB0, 0xCE, 0x81, 0xE6, 0x8D, 0xEA, 0xDD, 0x29, 0x0F, 0xDD, 0xCE, 0xD0, 0x9D, 0xE7, 0xF1 }, + }, + { + { 0x15, 0xC0, 0x27, 0x02, 0x53, 0x4E, 0xB0, 0x57, 0x23, 0x9F, 0xD7, 0x85, 0x8A, 0xE3, 0x42, 0x23, + 0xBC, 0x57, 0x78, 0xA8, 0xB7, 0x1F, 0x92, 0x50, 0xD5, 0xD3, 0x3B, 0x31, 0x3C, 0x30, 0x2A, 0x67 }, + }, + { + { 0x15, 0xC1, 0x73, 0xD2, 0xF3, 0x73, 0xC2, 0x27, 0xDC, 0xFF, 0x4E, 0xCC, 0x68, 0xE8, 0x56, 0x7C, + 0xDA, 0xE3, 0x5D, 0xDF, 0x1E, 0xF4, 0x55, 0xCE, 0x53, 0x4A, 0x15, 0x90, 0x28, 0x79, 0xF4, 0xFE }, + }, + { + { 0x15, 0xCF, 0x2F, 0x78, 0xE6, 0x79, 0x62, 0x2C, 0x06, 0x78, 0xDC, 0x5B, 0xA8, 0x03, 0x84, 0x7A, + 0xBD, 0xB5, 0xEA, 0x64, 0x31, 0x65, 0x3E, 0xC2, 0x5F, 0xDC, 0x8D, 0x2B, 0xB3, 0x3D, 0x12, 0x23 }, + }, + { + { 0x15, 0xEA, 0x55, 0xF0, 0x2C, 0x49, 0x02, 0xEC, 0x77, 0x72, 0x64, 0xE0, 0x81, 0x71, 0x41, 0x24, + 0x7C, 0x52, 0x00, 0xE1, 0x16, 0x56, 0xFD, 0xC2, 0x72, 0x9D, 0x59, 0x5C, 0x37, 0x79, 0x95, 0x6C }, + }, + { + { 0x16, 0x21, 0xEC, 0x14, 0xE0, 0xB4, 0x13, 0xFA, 0xB7, 0xD0, 0x27, 0x5A, 0x9A, 0xC3, 0xC3, 0xC9, + 0x85, 0x13, 0xFE, 0x18, 0xA2, 0x02, 0x86, 0xF6, 0x56, 0x59, 0x36, 0x9C, 0x8D, 0x34, 0x68, 0xDA }, + }, + { + { 0x16, 0x9A, 0xFA, 0x4C, 0x7D, 0x97, 0x78, 0xC7, 0x1D, 0xB5, 0x84, 0x6C, 0xCA, 0x8E, 0xB7, 0x19, + 0x12, 0x3D, 0x4B, 0x06, 0xB3, 0xFF, 0x98, 0x66, 0xD7, 0x4D, 0x6E, 0x18, 0x7C, 0x1E, 0xF9, 0x70 }, + }, + { + { 0x16, 0xE7, 0x66, 0x47, 0xB3, 0x97, 0xEB, 0x4E, 0xFD, 0x9A, 0x79, 0xF2, 0xFB, 0xBA, 0x9A, 0xCA, + 0x46, 0xCE, 0xAD, 0x95, 0x43, 0x05, 0xFE, 0xE5, 0xB1, 0x3B, 0x5D, 0x53, 0xDB, 0x7C, 0x1D, 0xB1 }, + }, + { + { 0x17, 0x29, 0xB3, 0x34, 0x7A, 0x7D, 0x93, 0x73, 0x17, 0xE3, 0xDA, 0x5C, 0xC7, 0xF7, 0xB0, 0xD8, + 0xFD, 0x97, 0x72, 0x24, 0x7A, 0x57, 0x99, 0x93, 0x9A, 0x44, 0xD3, 0xA9, 0x7A, 0x50, 0xB9, 0xD9 }, + }, + { + { 0x17, 0x46, 0x68, 0x4E, 0x66, 0x21, 0x77, 0x68, 0x70, 0xDE, 0x55, 0x65, 0xDF, 0xD3, 0x3A, 0x30, + 0x92, 0x77, 0x18, 0x59, 0x6C, 0x01, 0x30, 0xF8, 0x77, 0x4B, 0xE9, 0x9C, 0xD2, 0xA2, 0x51, 0x06 }, + }, + { + { 0x17, 0x59, 0x7E, 0x00, 0x45, 0x6C, 0x38, 0x32, 0xE1, 0x85, 0x1C, 0x30, 0x0C, 0xD5, 0x52, 0xC2, + 0xE7, 0x73, 0x35, 0x8C, 0xF0, 0xF6, 0x88, 0x58, 0xF3, 0x4F, 0xCA, 0x34, 0x45, 0xC6, 0x4D, 0xB7 }, + }, + { + { 0x17, 0x5A, 0x97, 0x05, 0x5C, 0x9E, 0x03, 0x88, 0x2A, 0xCD, 0x35, 0x40, 0x58, 0xE2, 0x43, 0xE3, + 0x3A, 0x84, 0x76, 0xEF, 0x83, 0xB4, 0xB2, 0x08, 0xFC, 0xF6, 0x64, 0xE8, 0x4F, 0x05, 0x08, 0xB5 }, + }, + { + { 0x17, 0x99, 0x63, 0xD2, 0x28, 0x4D, 0xEC, 0x64, 0xAC, 0x6C, 0xE5, 0x60, 0x0B, 0xE9, 0x9A, 0xC4, + 0xF0, 0x4D, 0xD3, 0x20, 0x35, 0xE4, 0xF1, 0x24, 0x28, 0xEC, 0x9E, 0x51, 0xED, 0xF6, 0xB0, 0x6C }, + }, + { + { 0x17, 0xD1, 0xF6, 0xE5, 0x1C, 0xB3, 0xAF, 0x91, 0x23, 0xD4, 0xFC, 0xB3, 0x84, 0x18, 0x39, 0x4D, + 0xE3, 0xE6, 0xC3, 0x33, 0x3F, 0x80, 0x20, 0xD5, 0x13, 0x48, 0xDE, 0xBA, 0xCC, 0x74, 0x70, 0x14 }, + }, + { + { 0x17, 0xF7, 0x25, 0xAC, 0x12, 0xCE, 0xA5, 0xE0, 0x86, 0x6F, 0xCC, 0x3E, 0x83, 0x4E, 0x9C, 0xB6, + 0x34, 0x14, 0x5C, 0xED, 0xC5, 0x6B, 0x61, 0x3D, 0x2A, 0x1F, 0xE1, 0x3C, 0xF4, 0x0E, 0xDF, 0xD4 }, + }, + { + { 0x18, 0x04, 0xF7, 0x1E, 0x2C, 0x7A, 0xDC, 0x93, 0x38, 0xCA, 0x1B, 0x71, 0xDF, 0x81, 0xF8, 0x3E, + 0x59, 0xD4, 0xF4, 0x1C, 0xAF, 0x1D, 0x9F, 0x17, 0xD7, 0x87, 0x22, 0x4B, 0x0A, 0xF6, 0x46, 0xF3 }, + }, + { + { 0x18, 0x1E, 0xBB, 0x29, 0x8D, 0x20, 0x68, 0x5C, 0x48, 0xF7, 0x53, 0x89, 0x80, 0xC5, 0x63, 0xC8, + 0xF7, 0x48, 0x95, 0x4C, 0xF2, 0x64, 0x41, 0x9A, 0x72, 0xFC, 0xC6, 0x34, 0x0A, 0x10, 0x23, 0x80 }, + }, + { + { 0x18, 0x41, 0x69, 0xC5, 0x5C, 0xA2, 0xE2, 0x44, 0xF5, 0xF3, 0x3E, 0x5E, 0x9B, 0x82, 0x89, 0x2B, + 0x88, 0x5F, 0xD0, 0x2B, 0x0C, 0xEA, 0xFF, 0x5E, 0xB7, 0xEC, 0x05, 0x30, 0x72, 0xE9, 0xF3, 0x39 }, + }, + { + { 0x19, 0x77, 0x3E, 0xE9, 0xE9, 0x35, 0x6B, 0x88, 0x11, 0xD6, 0x56, 0x79, 0x9C, 0x53, 0x16, 0x0B, + 0x61, 0x73, 0xFA, 0x8A, 0x81, 0x47, 0x97, 0xDB, 0xCD, 0x55, 0xB2, 0x27, 0x38, 0x70, 0x60, 0x3E }, + }, + { + { 0x19, 0xD5, 0x67, 0x31, 0x19, 0x02, 0xA4, 0xA2, 0x61, 0xF8, 0xA8, 0x3D, 0x0C, 0xFE, 0x10, 0x1D, + 0x9C, 0x5C, 0x1F, 0x68, 0x0F, 0xF8, 0xF4, 0xEC, 0x0D, 0xF2, 0x3D, 0x84, 0x41, 0x92, 0xFB, 0x3B }, + }, + { + { 0x1A, 0x9E, 0xC6, 0x8C, 0xED, 0xB6, 0xBD, 0x94, 0x0C, 0x95, 0x34, 0xE6, 0x84, 0xBB, 0x04, 0x9F, + 0xF1, 0xE2, 0x3B, 0x66, 0xA1, 0x33, 0x01, 0x2F, 0xC3, 0x99, 0xEB, 0x4F, 0xB5, 0xD3, 0xAA, 0x35 }, + }, + { + { 0x1A, 0xCD, 0x0A, 0x9E, 0x5E, 0x20, 0x22, 0xBE, 0xE5, 0xA4, 0xFC, 0x2E, 0x7F, 0x69, 0xF8, 0x82, + 0x3E, 0xDC, 0x26, 0x5B, 0x97, 0x6A, 0x7F, 0x61, 0x41, 0x16, 0x03, 0x98, 0x6B, 0x90, 0x24, 0xF8 }, + }, + { + { 0x1A, 0xFA, 0xB3, 0x15, 0x5B, 0x57, 0x17, 0xC0, 0x89, 0x82, 0xF9, 0x0C, 0x88, 0xA7, 0xAA, 0xC3, + 0x6B, 0xEB, 0x00, 0x03, 0xFA, 0xC4, 0x9B, 0xCA, 0x74, 0xA1, 0xCC, 0x52, 0x09, 0xB7, 0x04, 0x39 }, + }, + { + { 0x1B, 0x56, 0xBA, 0x1E, 0xFF, 0xAC, 0x97, 0x36, 0x60, 0x74, 0xCE, 0x07, 0x24, 0xE7, 0x04, 0x59, + 0xDF, 0x99, 0x82, 0x1C, 0x3F, 0xAF, 0x20, 0xDE, 0x5C, 0x05, 0x30, 0x52, 0x52, 0xBE, 0x64, 0x3A }, + }, + { + { 0x1B, 0x69, 0xC0, 0xDD, 0xB0, 0x9B, 0xC2, 0xF0, 0xE9, 0x65, 0x7F, 0xFA, 0x94, 0x83, 0x96, 0xAF, + 0xC0, 0xCB, 0x45, 0xC0, 0x19, 0x7E, 0xC0, 0x85, 0x78, 0xC5, 0x61, 0x83, 0xEE, 0xEF, 0x59, 0x7B }, + }, + { + { 0x1B, 0x7B, 0xF8, 0xD9, 0xE8, 0x29, 0x3C, 0x53, 0xDD, 0x59, 0xEC, 0x97, 0xFE, 0x16, 0xF0, 0xEA, + 0xB4, 0x68, 0x5B, 0x95, 0xCE, 0x14, 0xD2, 0x62, 0x3E, 0x70, 0x94, 0x2C, 0xFF, 0x25, 0xE7, 0x30 }, + }, + { + { 0x1B, 0xD6, 0xA6, 0xF7, 0x63, 0xD2, 0xF6, 0xD8, 0xBC, 0xEC, 0x91, 0xA6, 0x22, 0xAA, 0x37, 0x00, + 0xD7, 0xA4, 0x2D, 0x18, 0x8C, 0x5B, 0xD8, 0x64, 0x16, 0x57, 0x6F, 0xFD, 0x32, 0x50, 0x7C, 0x92 }, + }, + { + { 0x1B, 0xD7, 0xB3, 0x62, 0xBC, 0x14, 0x66, 0xFA, 0xC0, 0x5E, 0xC5, 0x9E, 0x12, 0xE8, 0x1B, 0xE7, + 0x35, 0x38, 0xC4, 0x97, 0x28, 0xF5, 0xAD, 0xBA, 0x2D, 0x81, 0xFC, 0xDB, 0xC4, 0x65, 0x7C, 0x1B }, + }, + { + { 0x1B, 0xEC, 0xFE, 0x78, 0xCE, 0x5E, 0x77, 0xA9, 0x77, 0xBB, 0x5F, 0xE3, 0x49, 0x91, 0x06, 0xC6, + 0x4C, 0xF2, 0xB0, 0x76, 0x16, 0x59, 0x49, 0x04, 0x11, 0x17, 0xCD, 0x8A, 0xBC, 0xD9, 0x05, 0xD4 }, + }, + { + { 0x1B, 0xF4, 0x8A, 0x83, 0x3C, 0xE4, 0x05, 0x64, 0x8C, 0xC0, 0xBD, 0xD3, 0xB5, 0xB8, 0xC1, 0x8E, + 0xB5, 0x13, 0x15, 0x34, 0x29, 0x3A, 0xB2, 0x63, 0x44, 0xB5, 0x00, 0x76, 0x48, 0x11, 0x41, 0xED }, + }, + { + { 0x1C, 0x04, 0x82, 0x0F, 0x7B, 0x4A, 0x2F, 0x1E, 0x38, 0x5D, 0xE1, 0xDE, 0x16, 0xB2, 0x22, 0x6E, + 0x88, 0x3D, 0x9C, 0x34, 0x66, 0x3E, 0x1B, 0x64, 0xE8, 0x5B, 0x98, 0x0E, 0xAF, 0xF0, 0xB9, 0xD3 }, + }, + { + { 0x1C, 0x74, 0xBA, 0x75, 0xE5, 0x1B, 0x48, 0x29, 0x54, 0xC3, 0x8B, 0xF4, 0xD5, 0x1E, 0xFC, 0x70, + 0xA0, 0xA0, 0x4D, 0x41, 0x3A, 0xC1, 0xFF, 0x8E, 0xB9, 0x90, 0x39, 0x9D, 0x1F, 0x1A, 0xA9, 0xC4 }, + }, + { + { 0x1C, 0x76, 0xBB, 0xCA, 0x37, 0x71, 0x77, 0x5B, 0xB9, 0xB0, 0xC3, 0x33, 0x71, 0x70, 0x32, 0x69, + 0x06, 0x16, 0x77, 0xCA, 0x7B, 0x18, 0x99, 0xEF, 0x8C, 0x77, 0xE4, 0x15, 0x22, 0x2B, 0x56, 0xB6 }, + }, + { + { 0x1D, 0x36, 0x08, 0xAC, 0x22, 0xF0, 0x09, 0x40, 0xEE, 0x08, 0x4A, 0x8B, 0x2F, 0xD7, 0x95, 0x89, + 0x72, 0x57, 0x79, 0x4E, 0x3E, 0x00, 0xC2, 0xD2, 0x67, 0x10, 0xD2, 0xEA, 0x02, 0x79, 0xAC, 0xB5 }, + }, + { + { 0x1D, 0x57, 0xA3, 0xC0, 0x97, 0x74, 0x07, 0xE1, 0x57, 0xDF, 0x71, 0x97, 0x48, 0x91, 0x16, 0xE5, + 0xFC, 0x17, 0xED, 0x2A, 0x90, 0xFE, 0xD9, 0x6B, 0x3D, 0x4D, 0x5A, 0x4E, 0x0A, 0x80, 0xE1, 0xFB }, + }, + { + { 0x1D, 0x72, 0xE5, 0x91, 0x26, 0xFD, 0x8B, 0x78, 0x8E, 0xA5, 0x39, 0x63, 0xAD, 0x02, 0x07, 0x6B, + 0x3B, 0x04, 0x0E, 0xE8, 0xCD, 0x4C, 0xB8, 0xBD, 0xCD, 0xF3, 0xE5, 0xA9, 0x9F, 0x63, 0x70, 0x02 }, + }, + { + { 0x1D, 0x9E, 0xC0, 0x06, 0xA5, 0x26, 0xFA, 0xB5, 0xCE, 0x2E, 0x71, 0xFD, 0xFC, 0x07, 0xC0, 0x11, + 0xF7, 0x65, 0x7B, 0xF8, 0x5F, 0x5D, 0x03, 0x52, 0xB8, 0xCB, 0x21, 0x8D, 0x4F, 0xCB, 0xC4, 0x43 }, + }, + { + { 0x1E, 0x50, 0x62, 0x19, 0x88, 0xA0, 0x25, 0x0F, 0x2A, 0xDE, 0x2A, 0x16, 0xFC, 0xD8, 0x38, 0x46, + 0xDB, 0xD7, 0xA9, 0x0B, 0x2A, 0x71, 0xC8, 0x0A, 0x1D, 0xB1, 0x94, 0x6B, 0x89, 0x89, 0x1C, 0x46 }, + }, + { + { 0x1E, 0x78, 0xF8, 0x08, 0x84, 0xE3, 0x2A, 0x2E, 0xA5, 0xAD, 0x1E, 0xE8, 0x35, 0x88, 0xAC, 0xDB, + 0x18, 0x4A, 0x4A, 0x6E, 0x87, 0x56, 0x5B, 0xF5, 0x03, 0xB5, 0x69, 0x7A, 0xBF, 0xAE, 0x64, 0xA4 }, + }, + { + { 0x1E, 0xFE, 0x6A, 0x78, 0x51, 0x41, 0x33, 0x39, 0x7B, 0x05, 0x9C, 0xE1, 0x3A, 0x4F, 0xC9, 0x88, + 0xAE, 0x38, 0x4E, 0x21, 0x12, 0x7F, 0x13, 0xA1, 0x0E, 0x96, 0x7B, 0x9A, 0xA2, 0xAC, 0xF8, 0x81 }, + }, + { + { 0x1F, 0x00, 0x4B, 0x82, 0x0C, 0xF6, 0x8B, 0x00, 0x7B, 0xB5, 0x72, 0xA0, 0xED, 0x42, 0x9C, 0x79, + 0x8F, 0x79, 0x44, 0x4F, 0x6F, 0x13, 0x29, 0x32, 0xEE, 0x5F, 0x8E, 0x28, 0xA4, 0x0A, 0xB9, 0x86 }, + }, + { + { 0x1F, 0x11, 0x85, 0xA5, 0x21, 0xE2, 0x8E, 0x95, 0x17, 0x1C, 0xF3, 0x86, 0x07, 0x8A, 0x76, 0x4A, + 0x9A, 0x3E, 0x71, 0xC2, 0x59, 0xBC, 0xDC, 0x5F, 0x8E, 0x66, 0xE1, 0xB5, 0x20, 0x55, 0xA2, 0x6D }, + }, + { + { 0x1F, 0x23, 0xD7, 0xA6, 0x38, 0x17, 0x1F, 0x6D, 0x09, 0x99, 0x64, 0xE0, 0xFA, 0x01, 0x72, 0x1C, + 0x06, 0xCC, 0xEB, 0x8E, 0xA2, 0x98, 0xBF, 0xD0, 0x04, 0x8E, 0x13, 0x8D, 0x98, 0xFC, 0x36, 0x24 }, + }, + { + { 0x1F, 0x68, 0x40, 0x10, 0xC1, 0x92, 0xAB, 0xFA, 0x85, 0xA7, 0x9B, 0xBA, 0x45, 0xCE, 0x76, 0x4B, + 0x2D, 0xA8, 0x1F, 0x99, 0x1F, 0x5F, 0x01, 0xD9, 0xEB, 0x7E, 0x3C, 0x99, 0x9B, 0x78, 0x75, 0x0E }, + }, + { + { 0x1F, 0x7D, 0x37, 0x52, 0x93, 0x22, 0x7D, 0x04, 0x97, 0x5B, 0x78, 0x97, 0xDC, 0x17, 0x25, 0x39, + 0x64, 0xDC, 0xD7, 0xD0, 0x06, 0x7E, 0x84, 0xC6, 0xD8, 0x47, 0x9D, 0xFA, 0x27, 0x6E, 0xBE, 0xD0 }, + }, + { + { 0x1F, 0x88, 0x42, 0x37, 0xFD, 0x5C, 0xE3, 0xD9, 0xBC, 0x02, 0x4D, 0x1B, 0x26, 0xAB, 0xCB, 0x94, + 0x07, 0xA4, 0x35, 0x13, 0x78, 0xE0, 0xBD, 0x89, 0xDB, 0x67, 0xBE, 0xF8, 0xEF, 0xC8, 0xA5, 0x6E }, + }, + { + { 0x1F, 0xC7, 0xF8, 0x10, 0x4E, 0x27, 0xFF, 0x2A, 0x45, 0x56, 0xF9, 0x1E, 0x05, 0x42, 0x17, 0xC5, + 0x8F, 0x69, 0x3F, 0x70, 0x36, 0x25, 0x9E, 0x39, 0x80, 0xB5, 0x59, 0x5B, 0x04, 0x3D, 0x11, 0x92 }, + }, + { + { 0x1F, 0xD4, 0xB6, 0xA0, 0xDE, 0x45, 0x04, 0x2B, 0xCA, 0x14, 0xE3, 0x4A, 0x83, 0x78, 0x7C, 0x59, + 0x95, 0x5D, 0x82, 0xA0, 0x1C, 0xE3, 0x20, 0x05, 0xAC, 0x48, 0x83, 0x72, 0xA8, 0xFD, 0x41, 0xA6 }, + }, + { + { 0x20, 0x0B, 0x49, 0xBD, 0xD6, 0x35, 0x02, 0x57, 0xCC, 0xD4, 0xE6, 0xAD, 0xE1, 0xCB, 0x75, 0x13, + 0x8D, 0xD6, 0xD9, 0x06, 0xFE, 0xF3, 0x49, 0xC0, 0xC9, 0x86, 0xA5, 0x1B, 0x29, 0xB9, 0xE5, 0x2D }, + }, + { + { 0x20, 0x15, 0x60, 0x8B, 0x8E, 0x86, 0xBA, 0x63, 0x12, 0x01, 0xC2, 0x12, 0x20, 0x99, 0x57, 0xAF, + 0xCB, 0x6E, 0xDF, 0x27, 0x22, 0xC6, 0x1B, 0x00, 0xE2, 0xFC, 0x92, 0x46, 0xA8, 0xD5, 0x20, 0x4E }, + }, + { + { 0x20, 0x7A, 0xE5, 0xE6, 0x56, 0xB3, 0xB1, 0x26, 0x39, 0x41, 0x83, 0x54, 0x5D, 0xF9, 0x9C, 0xC8, + 0x36, 0x53, 0x7A, 0x16, 0x88, 0x58, 0xD8, 0xCE, 0xB4, 0x5A, 0x6A, 0x52, 0x65, 0x86, 0xCA, 0xAE }, + }, + { + { 0x20, 0x8A, 0x46, 0xD9, 0x07, 0xE6, 0xB4, 0x09, 0x0E, 0x31, 0x02, 0xE1, 0xC7, 0xF1, 0x81, 0x57, + 0x21, 0x6C, 0xFC, 0x9A, 0xB9, 0xD5, 0x0F, 0x47, 0x83, 0x25, 0x8D, 0x79, 0x35, 0x01, 0x34, 0xBD }, + }, + { + { 0x20, 0xF1, 0x85, 0xBC, 0x7F, 0xA7, 0x61, 0x16, 0x6E, 0xA3, 0xA9, 0x98, 0x8F, 0xB1, 0x0B, 0x24, + 0xC7, 0x01, 0xEF, 0xDD, 0xAB, 0xE4, 0x74, 0x05, 0x63, 0x43, 0xA1, 0x36, 0x11, 0xD5, 0x4D, 0x7D }, + }, + { + { 0x21, 0x03, 0x9F, 0x99, 0x3D, 0xAE, 0x79, 0x03, 0xA0, 0xA7, 0xAA, 0x93, 0x5B, 0x96, 0x70, 0x1A, + 0xDD, 0x7E, 0xC5, 0xCA, 0x99, 0xE1, 0x7E, 0x65, 0x1C, 0x21, 0x29, 0x5B, 0x3B, 0x65, 0x70, 0x49 }, + }, + { + { 0x21, 0x05, 0xA5, 0xB7, 0x80, 0x1C, 0xE4, 0x55, 0xA2, 0xA9, 0x31, 0xA2, 0x23, 0xBB, 0x8B, 0xF4, + 0x11, 0x28, 0x16, 0x03, 0x70, 0xFD, 0x25, 0xFC, 0x11, 0x23, 0xAB, 0x57, 0x9E, 0x06, 0x29, 0x23 }, + }, + { + { 0x21, 0x09, 0xF3, 0x10, 0x7D, 0x97, 0xF8, 0x70, 0x48, 0x70, 0x8E, 0xC8, 0x7C, 0xA2, 0xDC, 0x31, + 0x8B, 0x2F, 0x2B, 0x57, 0x47, 0xC3, 0x38, 0xBD, 0x9C, 0x6D, 0xBC, 0xD6, 0x0F, 0xD6, 0xBE, 0xA2 }, + }, + { + { 0x21, 0x4A, 0xBC, 0x84, 0x5D, 0x66, 0x68, 0x76, 0xC4, 0x78, 0x12, 0x84, 0x14, 0x16, 0xC6, 0xFB, + 0xFF, 0x4A, 0x38, 0x32, 0x20, 0x61, 0xB6, 0x5D, 0x9C, 0x5F, 0x6B, 0x74, 0x98, 0x2B, 0xC6, 0xEA }, + }, + { + { 0x21, 0x62, 0xAB, 0xC2, 0x7D, 0x0C, 0x3D, 0xA0, 0xF6, 0xAF, 0xF9, 0x76, 0x95, 0xFB, 0x3D, 0x47, + 0x7F, 0x4C, 0x63, 0x34, 0xFF, 0xB3, 0xE5, 0xBC, 0xD0, 0xE3, 0x05, 0x49, 0xD5, 0xFE, 0xEB, 0x47 }, + }, + { + { 0x21, 0x78, 0xE8, 0x28, 0x3A, 0x73, 0x39, 0x6E, 0x08, 0xC0, 0xA1, 0x1A, 0x88, 0x72, 0xFA, 0x4A, + 0x9F, 0xCC, 0x05, 0x67, 0x0C, 0xEE, 0xFF, 0xB8, 0x95, 0x83, 0x8E, 0xB6, 0x59, 0xDE, 0x38, 0xDB }, + }, + { + { 0x21, 0x82, 0x84, 0x4F, 0xB2, 0x8F, 0xB4, 0x71, 0x78, 0xEB, 0x38, 0x1C, 0xDB, 0xF1, 0x18, 0x06, + 0x3D, 0x6A, 0x9E, 0x43, 0xCC, 0x04, 0xE4, 0x8A, 0xEF, 0x84, 0xCE, 0x9C, 0xCE, 0x58, 0x4A, 0x5C }, + }, + { + { 0x22, 0x01, 0x71, 0xF7, 0x0E, 0x1F, 0xC3, 0xC4, 0xF7, 0x8D, 0xA6, 0xC8, 0xB1, 0xD7, 0x2C, 0x3B, + 0xA8, 0x31, 0x9A, 0x46, 0xF8, 0x19, 0x2D, 0x1E, 0x19, 0xB9, 0xE2, 0x9A, 0xBA, 0x18, 0xEE, 0x87 }, + }, + { + { 0x22, 0x2E, 0xC2, 0x75, 0xE6, 0x8A, 0x31, 0x7D, 0x60, 0x80, 0x67, 0x9D, 0xDF, 0x56, 0x78, 0x6A, + 0xBD, 0x2B, 0x11, 0xF2, 0x5A, 0x17, 0x15, 0x33, 0xCF, 0xBD, 0x59, 0xEE, 0x0D, 0xFA, 0x4E, 0xE4 }, + }, + { + { 0x22, 0x7A, 0x2B, 0xFF, 0xAB, 0xDE, 0xE1, 0x8C, 0x2C, 0x54, 0xE6, 0xE9, 0xB5, 0x8A, 0xBD, 0xBF, + 0x93, 0x07, 0xA4, 0x06, 0x2E, 0xDA, 0x97, 0xD4, 0xF6, 0xC4, 0x48, 0x1B, 0xB6, 0xEC, 0xA9, 0xE4 }, + }, + { + { 0x23, 0x19, 0xCB, 0x3D, 0x58, 0xC6, 0xD5, 0x53, 0x62, 0x5D, 0xE5, 0xF4, 0x25, 0x2B, 0xF0, 0x29, + 0xAB, 0x83, 0x05, 0xEB, 0xF2, 0x2F, 0xA2, 0x3E, 0x99, 0x73, 0x04, 0x66, 0xDE, 0x24, 0xD6, 0xC3 }, + }, + { + { 0x23, 0x3F, 0xC6, 0xF9, 0x15, 0x1F, 0x05, 0x00, 0xBB, 0x38, 0xAD, 0x20, 0x7A, 0xF2, 0x42, 0x21, + 0x3A, 0x6A, 0x51, 0xCE, 0xB3, 0x8C, 0x73, 0x0F, 0xF1, 0xBF, 0xA1, 0x0A, 0x82, 0x4A, 0x71, 0xC7 }, + }, + { + { 0x23, 0x86, 0x51, 0xAB, 0x70, 0xB7, 0x11, 0xA0, 0x65, 0x55, 0x4E, 0x5D, 0x63, 0x6A, 0x34, 0x2C, + 0x8A, 0x6B, 0xFE, 0x46, 0x0E, 0x4E, 0x7B, 0x4C, 0x9E, 0xAF, 0xB4, 0x75, 0xD5, 0x68, 0x51, 0xD8 }, + }, + { + { 0x23, 0x8A, 0x80, 0xCC, 0x9B, 0x58, 0x9A, 0xDC, 0x89, 0xB7, 0xA8, 0xF3, 0x4D, 0xDF, 0x12, 0x48, + 0x73, 0x4B, 0x9F, 0x7F, 0x78, 0x20, 0xB6, 0x04, 0x07, 0x66, 0xC5, 0x41, 0x3A, 0xD2, 0xBD, 0xEF }, + }, + { + { 0x23, 0x9C, 0x79, 0x5F, 0x0C, 0x55, 0xA5, 0x53, 0x16, 0x2A, 0x9C, 0xA0, 0x6E, 0x88, 0x01, 0xE1, + 0x19, 0xBD, 0xFF, 0x54, 0x35, 0x4A, 0x3F, 0x68, 0x43, 0xCF, 0x2A, 0x2F, 0xA6, 0x01, 0x75, 0x8E }, + }, + { + { 0x23, 0xF0, 0xDD, 0xD8, 0x9B, 0x42, 0x82, 0xA6, 0x7F, 0xD0, 0x57, 0x56, 0xFD, 0xC5, 0xD1, 0x8C, + 0x1E, 0x5D, 0xCC, 0xEF, 0xCF, 0x42, 0x65, 0x06, 0x6D, 0xFB, 0x4A, 0xBD, 0x30, 0xD9, 0xE9, 0x77 }, + }, + { + { 0x23, 0xF7, 0xE4, 0xA3, 0x5B, 0xCC, 0xE7, 0x40, 0x36, 0xD9, 0xC8, 0x6F, 0x7F, 0x61, 0x1D, 0x85, + 0xF3, 0x7C, 0xB6, 0x2C, 0x43, 0x24, 0x7D, 0x13, 0x52, 0x22, 0x4E, 0xC3, 0xDC, 0x89, 0xED, 0x37 }, + }, + { + { 0x24, 0x62, 0x52, 0x48, 0x32, 0xC1, 0x54, 0xD8, 0x4D, 0xF5, 0x8E, 0xD7, 0x75, 0x22, 0x3B, 0xBE, + 0x25, 0x7D, 0xEA, 0xF7, 0x0E, 0xF9, 0xD2, 0x08, 0x61, 0x4E, 0xC0, 0xF5, 0x97, 0x7F, 0x6D, 0x58 }, + }, + { + { 0x24, 0x63, 0xCB, 0x2E, 0x47, 0x55, 0x71, 0xA8, 0x68, 0x74, 0xEE, 0x45, 0xAE, 0x27, 0x0B, 0x40, + 0x08, 0xD8, 0xBA, 0xF3, 0x65, 0x32, 0x57, 0x0E, 0x28, 0xE2, 0x47, 0xFF, 0x88, 0x7F, 0x86, 0x83 }, + }, + { + { 0x24, 0x6D, 0x0C, 0x31, 0x48, 0x72, 0x75, 0x59, 0xF9, 0x9A, 0xD0, 0xC1, 0x50, 0x37, 0x70, 0x06, + 0xB7, 0xA1, 0x7A, 0x60, 0x3A, 0x47, 0x3B, 0x6A, 0xAC, 0xD2, 0x4E, 0x16, 0xC6, 0xC5, 0x1B, 0x42 }, + }, + { + { 0x25, 0x1B, 0xB7, 0xC5, 0x42, 0x33, 0xDA, 0x44, 0xBF, 0x53, 0xB5, 0x8A, 0xF2, 0x9A, 0xE1, 0x74, + 0xB9, 0x78, 0xBA, 0xDB, 0x89, 0xA9, 0x50, 0xAB, 0x3E, 0x5F, 0x9B, 0x4D, 0x0D, 0xCD, 0xBC, 0x62 }, + }, + { + { 0x25, 0x1D, 0x5D, 0x22, 0x2F, 0x1E, 0x67, 0x1D, 0x72, 0x1E, 0x1C, 0x26, 0x39, 0xB3, 0xB6, 0xD2, + 0x30, 0xB5, 0xC6, 0xB3, 0x0C, 0x8E, 0x34, 0xC8, 0x08, 0x75, 0x38, 0x8C, 0xCF, 0x23, 0xFB, 0x38 }, + }, + { + { 0x25, 0x50, 0x90, 0x44, 0x10, 0xAE, 0x84, 0xA6, 0xF8, 0xAD, 0xF5, 0x40, 0x46, 0x38, 0x7E, 0xBC, + 0x92, 0x6F, 0x0B, 0x2F, 0x66, 0x94, 0x61, 0xD7, 0xE6, 0x1A, 0xEE, 0x8D, 0xCE, 0xB8, 0x71, 0x3B }, + }, + { + { 0x25, 0x5A, 0x49, 0x8B, 0xEB, 0x7C, 0x89, 0x42, 0x74, 0xE5, 0xE3, 0xD4, 0x3B, 0x27, 0xAD, 0x66, + 0x62, 0x0B, 0x90, 0xCB, 0x91, 0x62, 0xC4, 0x68, 0x5F, 0xA2, 0x6D, 0x85, 0xF5, 0xA4, 0x3A, 0xA0 }, + }, + { + { 0x25, 0x6F, 0xD8, 0x6F, 0x52, 0x51, 0x34, 0x36, 0x1D, 0xA8, 0x0C, 0x18, 0xE5, 0xE2, 0x9F, 0x75, + 0xF1, 0x10, 0xCA, 0x94, 0xB6, 0x2C, 0xD7, 0x18, 0x33, 0x1A, 0xDE, 0xBF, 0x81, 0x64, 0x6B, 0x3E }, + }, + { + { 0x25, 0x8C, 0x68, 0x91, 0xF0, 0x89, 0xB5, 0x09, 0x4B, 0xE3, 0x3D, 0x6C, 0x82, 0x21, 0x5E, 0x72, + 0x65, 0xAC, 0xA9, 0x3F, 0x7C, 0x9B, 0x41, 0x45, 0xD0, 0x8A, 0xFF, 0x1F, 0x48, 0x30, 0x58, 0xAA }, + }, + { + { 0x26, 0x03, 0xCB, 0xDF, 0x69, 0x75, 0xE3, 0x68, 0x83, 0x7F, 0x95, 0x1A, 0x00, 0x49, 0xFD, 0xC3, + 0xC4, 0xB2, 0x39, 0xF0, 0x82, 0xF6, 0xBF, 0x89, 0x5D, 0xB8, 0xF3, 0x27, 0x05, 0xE6, 0x9C, 0xF3 }, + }, + { + { 0x26, 0x33, 0xFD, 0x33, 0x50, 0xF8, 0x73, 0x50, 0x2D, 0x94, 0x53, 0x7A, 0xD8, 0x66, 0x3D, 0x2A, + 0xEF, 0xA5, 0x9A, 0x03, 0x57, 0x28, 0x8C, 0x64, 0x42, 0x3C, 0x74, 0xC8, 0x6F, 0x8C, 0x92, 0xB9 }, + }, + { + { 0x26, 0x5F, 0x09, 0x6C, 0x74, 0xF9, 0xC4, 0x5A, 0x3B, 0xD3, 0x7C, 0x2B, 0xC8, 0x23, 0xEE, 0x27, + 0x1A, 0x23, 0xF8, 0xF5, 0xC0, 0x9E, 0x1B, 0x71, 0x68, 0x7A, 0xEC, 0x17, 0xE3, 0x8E, 0x46, 0x91 }, + }, + { + { 0x26, 0xB2, 0x11, 0xCC, 0x34, 0x6D, 0x60, 0x37, 0x1B, 0x24, 0xBD, 0x0D, 0xBA, 0xB3, 0xF4, 0x3D, + 0x5D, 0xE3, 0xF2, 0x05, 0x47, 0xC1, 0x4C, 0x0B, 0xA1, 0xE0, 0xB2, 0xED, 0xDD, 0x73, 0x02, 0x64 }, + }, + { + { 0x26, 0xB9, 0x4C, 0xA0, 0x1E, 0x63, 0x4E, 0xD0, 0xCB, 0x4F, 0xF3, 0xC9, 0xBC, 0xC2, 0x8A, 0x5E, + 0x8F, 0x49, 0xCA, 0xCD, 0xE7, 0xEB, 0xA2, 0x63, 0x2D, 0x3D, 0x30, 0x3F, 0xB2, 0xED, 0xE8, 0x63 }, + }, + { + { 0x27, 0x16, 0xE1, 0x51, 0x81, 0x4B, 0xC2, 0x23, 0x49, 0x83, 0xF6, 0x53, 0xBF, 0x4D, 0x47, 0x1D, + 0x37, 0x5B, 0xDA, 0xCB, 0x3E, 0xAA, 0xEA, 0x96, 0xB4, 0x80, 0xCD, 0xDA, 0xCA, 0x0D, 0x4C, 0xDA }, + }, + { + { 0x27, 0x50, 0x11, 0x93, 0xE4, 0x61, 0xCA, 0xCE, 0x55, 0x32, 0xFA, 0xD5, 0xD5, 0xB2, 0x7E, 0x01, + 0x16, 0x57, 0x92, 0xE0, 0x4F, 0x24, 0x21, 0x93, 0x2F, 0x39, 0x28, 0xAF, 0x9F, 0xCD, 0xA4, 0xF3 }, + }, + { + { 0x27, 0xA8, 0x41, 0xAE, 0xCF, 0xE0, 0xA1, 0x39, 0x37, 0x51, 0xC2, 0x55, 0xF9, 0x06, 0xDB, 0x9E, + 0x88, 0x6B, 0xBA, 0x4D, 0x7C, 0x44, 0xEC, 0x63, 0xCE, 0x7D, 0xC6, 0xDE, 0xC1, 0x8B, 0xB9, 0x20 }, + }, + { + { 0x28, 0x07, 0x10, 0x60, 0x44, 0x03, 0x45, 0xD0, 0x0E, 0x80, 0xB9, 0xD7, 0xCB, 0xE1, 0x87, 0xC1, + 0xD8, 0xB0, 0xF2, 0xEF, 0x5D, 0x0A, 0xAC, 0x9C, 0xCE, 0xEF, 0x9A, 0x8C, 0x5A, 0x06, 0xF3, 0x02 }, + }, + { + { 0x28, 0x16, 0x1F, 0x94, 0xD5, 0xA3, 0xFE, 0x36, 0x1F, 0x3C, 0xD8, 0xBB, 0xFA, 0x8D, 0x9D, 0xB7, + 0x11, 0x05, 0x8B, 0xA9, 0x67, 0xEE, 0xBD, 0x8D, 0x42, 0xEC, 0xB9, 0x27, 0xBF, 0x09, 0xF4, 0x40 }, + }, + { + { 0x28, 0x76, 0x00, 0xE8, 0x45, 0x25, 0xA9, 0xE2, 0xEF, 0xB3, 0xC3, 0x30, 0xD8, 0x0E, 0xC6, 0x0C, + 0x3F, 0x7D, 0x7B, 0xB2, 0x07, 0x89, 0x4E, 0xB6, 0xCD, 0x7B, 0x85, 0xEE, 0x74, 0xFF, 0x9A, 0x46 }, + }, + { + { 0x28, 0xC2, 0x4D, 0x7A, 0xEF, 0xCB, 0xA0, 0x50, 0x94, 0x94, 0xEF, 0x21, 0x06, 0x48, 0x17, 0xFB, + 0xAA, 0x89, 0x1F, 0xB3, 0xC5, 0x2F, 0xC7, 0x17, 0x81, 0xDD, 0x5E, 0xAC, 0x18, 0xD7, 0x4D, 0x7A }, + }, + { + { 0x28, 0xD9, 0x51, 0x84, 0xB5, 0xEA, 0x14, 0x0F, 0x47, 0x4F, 0x3A, 0xF6, 0xCE, 0x70, 0x52, 0xE8, + 0x59, 0x3C, 0xF3, 0xA5, 0x01, 0x0F, 0x52, 0x24, 0x1A, 0x1E, 0x36, 0x64, 0x60, 0xE5, 0x91, 0x9E }, + }, + { + { 0x29, 0x01, 0x93, 0xE3, 0x7A, 0x38, 0x87, 0xFD, 0x36, 0x15, 0xDF, 0x12, 0x2E, 0x95, 0x21, 0x17, + 0x42, 0x15, 0xEE, 0x68, 0xF7, 0x44, 0xB2, 0xFA, 0x35, 0xD2, 0x9C, 0x5D, 0xF1, 0x08, 0xF5, 0x5B }, + }, + { + { 0x29, 0x0C, 0x79, 0x6F, 0x6D, 0x23, 0xDE, 0x2A, 0xAE, 0x80, 0x77, 0xAB, 0xCC, 0xFC, 0x52, 0xEE, + 0x5C, 0x71, 0x35, 0x3F, 0x9A, 0xB6, 0xBD, 0x56, 0x5C, 0x6A, 0xBD, 0x26, 0x9F, 0xF5, 0xE9, 0xBA }, + }, + { + { 0x29, 0x4A, 0x2B, 0xF8, 0x7B, 0x50, 0x1D, 0x28, 0x4F, 0x37, 0x80, 0x96, 0x0E, 0x8E, 0x72, 0xA1, + 0x8A, 0xF1, 0xC6, 0x3B, 0xD7, 0xDE, 0x4C, 0x4D, 0xDE, 0xA3, 0x7B, 0xF0, 0x27, 0xD4, 0x2C, 0xB8 }, + }, + { + { 0x29, 0x54, 0x18, 0x23, 0xE0, 0x69, 0x14, 0xB4, 0xD6, 0x2A, 0x93, 0x8D, 0xC4, 0x9C, 0x8A, 0x0D, + 0x17, 0xD9, 0x94, 0x96, 0x0E, 0xEE, 0xC7, 0xD9, 0x75, 0x31, 0xAF, 0x71, 0x5E, 0xDE, 0x4A, 0xDF }, + }, + { + { 0x29, 0x74, 0x8A, 0x69, 0xE9, 0x42, 0xA0, 0x67, 0xE6, 0xA6, 0xA3, 0x5A, 0x9D, 0x40, 0x00, 0x0A, + 0x31, 0x8D, 0x7D, 0xDF, 0x5F, 0x5A, 0x2F, 0x4D, 0x3D, 0x18, 0xBE, 0xBA, 0xD3, 0x96, 0x91, 0xEC }, + }, + { + { 0x29, 0x7A, 0xC8, 0x25, 0xC1, 0x98, 0x06, 0xFB, 0x88, 0x1F, 0xD9, 0x1C, 0x61, 0x2D, 0x6C, 0xC2, + 0x1B, 0x28, 0xE4, 0xA5, 0x72, 0xCF, 0xB7, 0x16, 0x04, 0xE5, 0x54, 0x41, 0x4D, 0xFD, 0xEA, 0xDC }, + }, + { + { 0x29, 0xA8, 0x28, 0x26, 0x64, 0x3D, 0x5A, 0x98, 0xC4, 0x7D, 0xF3, 0xA7, 0x8F, 0xBB, 0x84, 0x49, + 0xB3, 0xE6, 0xD3, 0xCC, 0xE6, 0x2C, 0xF4, 0x57, 0x12, 0xA4, 0xCD, 0x99, 0x21, 0xF3, 0xC6, 0x88 }, + }, + { + { 0x29, 0xD4, 0x91, 0x44, 0x01, 0x60, 0x8A, 0xE7, 0x65, 0x51, 0x53, 0xB6, 0x23, 0x67, 0x1F, 0x75, + 0x92, 0x99, 0x4D, 0x4B, 0xE3, 0x88, 0x39, 0x59, 0x13, 0xA3, 0x60, 0x22, 0x1F, 0x90, 0xC0, 0x91 }, + }, + { + { 0x2A, 0x0F, 0x70, 0x67, 0x6E, 0x18, 0x4D, 0x49, 0x39, 0xA4, 0x04, 0xDE, 0x35, 0xAC, 0x84, 0xAB, + 0x81, 0xAF, 0xEC, 0x36, 0x17, 0xE7, 0xE1, 0xBF, 0x34, 0x67, 0xD4, 0x19, 0x25, 0x5D, 0xD8, 0x17 }, + }, + { + { 0x2A, 0x6B, 0x9F, 0x6F, 0xDC, 0x43, 0xBF, 0x65, 0xE2, 0xA1, 0x0E, 0xDE, 0x36, 0x64, 0xC8, 0x3F, + 0xCB, 0xEC, 0x13, 0x9A, 0x6E, 0x6C, 0xC5, 0xC8, 0x32, 0xD3, 0x27, 0x89, 0x5B, 0x52, 0x0E, 0xA2 }, + }, + { + { 0x2A, 0xA6, 0x47, 0x8C, 0xC7, 0x5D, 0x67, 0xA8, 0xCA, 0x55, 0xB2, 0xE1, 0x63, 0xFD, 0xBB, 0xBC, + 0x9D, 0x74, 0xB4, 0xE5, 0xF3, 0x7B, 0x7D, 0xBD, 0x13, 0xC9, 0x4E, 0x85, 0x8D, 0x40, 0xDA, 0xD0 }, + }, + { + { 0x2A, 0xC0, 0x65, 0xAE, 0x39, 0x6B, 0x87, 0x54, 0x9C, 0x3F, 0x09, 0xE5, 0x8F, 0x16, 0x4B, 0x24, + 0x2E, 0xC5, 0x9D, 0x13, 0x92, 0xB1, 0xB2, 0x50, 0x14, 0xBF, 0x47, 0x94, 0xAC, 0x13, 0x01, 0xB0 }, + }, + { + { 0x2B, 0x36, 0xDE, 0x39, 0xD5, 0xED, 0x42, 0xE1, 0xEC, 0x06, 0x57, 0x49, 0xD5, 0x82, 0xE0, 0x14, + 0xB5, 0xAF, 0xF2, 0x67, 0xF8, 0x7C, 0x03, 0x15, 0x27, 0xD9, 0x15, 0xAB, 0x43, 0x02, 0x88, 0x9E }, + }, + { + { 0x2B, 0x66, 0x75, 0xF5, 0x89, 0x9B, 0x2D, 0x3F, 0x36, 0xAF, 0x0A, 0x0F, 0xFB, 0xB6, 0xDC, 0x60, + 0x3E, 0x4C, 0x9E, 0x82, 0x8D, 0xA2, 0xB2, 0xD0, 0x24, 0xE3, 0x04, 0x30, 0x71, 0xAB, 0x15, 0xCE }, + }, + { + { 0x2B, 0x6E, 0x7A, 0xF1, 0xDE, 0x52, 0xF4, 0xAF, 0x97, 0xCC, 0x3A, 0x13, 0x6D, 0xCB, 0x82, 0xE0, + 0xF2, 0xCA, 0x06, 0xA8, 0x73, 0x16, 0x9C, 0x02, 0x87, 0x86, 0x10, 0x18, 0x44, 0xC3, 0x05, 0x15 }, + }, + { + { 0x2B, 0xDC, 0xF7, 0x06, 0x67, 0x7A, 0x3B, 0x68, 0xF1, 0x37, 0xF7, 0xF6, 0x9B, 0x36, 0x6B, 0x79, + 0xCA, 0x5A, 0xEB, 0xD3, 0x35, 0xBF, 0xB9, 0xD0, 0x3D, 0x58, 0xBD, 0x85, 0xA8, 0x66, 0x36, 0xBB }, + }, + { + { 0x2B, 0xF1, 0xE3, 0xF0, 0x37, 0x5A, 0x9A, 0x21, 0xC0, 0x7A, 0x92, 0x18, 0x04, 0x2F, 0x18, 0x77, + 0x3F, 0x43, 0xEA, 0xB0, 0xF5, 0xC0, 0x00, 0x26, 0x45, 0x40, 0x48, 0x2F, 0x04, 0xAE, 0x18, 0xEF }, + }, + { + { 0x2C, 0x82, 0x47, 0x4F, 0x0E, 0xF6, 0xCB, 0x65, 0x0A, 0x13, 0xEF, 0x20, 0x99, 0x6E, 0x65, 0x7B, + 0x67, 0x24, 0xF0, 0xA0, 0xD5, 0xEE, 0x24, 0x6D, 0x26, 0xBB, 0xFA, 0x0A, 0xBB, 0x2C, 0x22, 0xE1 }, + }, + { + { 0x2C, 0x8C, 0xDE, 0x6B, 0xB0, 0xD1, 0x2C, 0xD2, 0xDD, 0x63, 0xE9, 0x40, 0x09, 0x4F, 0xD2, 0x62, + 0x5D, 0x2C, 0xFD, 0x9A, 0x64, 0x7E, 0x0C, 0x64, 0x0E, 0xCF, 0x1C, 0x78, 0x92, 0x1E, 0xEA, 0x17 }, + }, + { + { 0x2C, 0x9B, 0xE1, 0x2D, 0xA4, 0x99, 0xEA, 0xBB, 0x2F, 0xFD, 0xF9, 0x91, 0x6F, 0x2B, 0x27, 0x18, + 0x81, 0x19, 0x5B, 0x74, 0x19, 0xBD, 0x1E, 0xEF, 0x8D, 0x50, 0x77, 0x2A, 0xB9, 0x46, 0x4A, 0xA8 }, + }, + { + { 0x2C, 0xBD, 0xD5, 0x6C, 0xE4, 0xB4, 0x06, 0x09, 0xE9, 0xAA, 0x52, 0x1E, 0xAA, 0x76, 0xAC, 0x7E, + 0x55, 0x73, 0x7B, 0xF4, 0x3E, 0x2B, 0x0C, 0x30, 0xDD, 0xCF, 0x59, 0x87, 0x2E, 0xAB, 0xE7, 0x7B }, + }, + { + { 0x2C, 0xF2, 0x6D, 0xA5, 0x76, 0x7E, 0xDE, 0x07, 0xC3, 0x73, 0x58, 0xCD, 0x5F, 0x71, 0xD1, 0x23, + 0xBB, 0x19, 0x77, 0x28, 0x85, 0x87, 0xC7, 0x3F, 0x84, 0xB0, 0x8F, 0xF8, 0xAA, 0x01, 0x9A, 0x69 }, + }, + { + { 0x2D, 0x0C, 0xE9, 0x16, 0x71, 0xC2, 0x54, 0x4C, 0xF6, 0xBD, 0x10, 0x30, 0x6F, 0x9B, 0x2C, 0x91, + 0x75, 0xF2, 0xC3, 0x1A, 0x23, 0x8E, 0x14, 0x68, 0x67, 0x65, 0x97, 0x89, 0x87, 0x3D, 0xC1, 0x75 }, + }, + { + { 0x2D, 0x5F, 0x95, 0xEF, 0x95, 0xAD, 0x1C, 0xCA, 0xC8, 0xE8, 0x25, 0xC1, 0x61, 0x5F, 0x82, 0x1F, + 0x0F, 0x44, 0xDF, 0xB8, 0xAA, 0x31, 0xDD, 0xF2, 0xC9, 0x83, 0x3E, 0x50, 0xC6, 0x95, 0x1C, 0xC0 }, + }, + { + { 0x2D, 0x9C, 0xC0, 0x3B, 0xC4, 0x51, 0xD1, 0xE0, 0xBA, 0x65, 0x11, 0xF4, 0x89, 0x31, 0x75, 0xD0, + 0x43, 0x46, 0x85, 0x6A, 0x41, 0x69, 0x86, 0x99, 0x4E, 0x94, 0x60, 0xD7, 0x4A, 0x48, 0x40, 0xB9 }, + }, + { + { 0x2D, 0xB5, 0x36, 0x48, 0xA6, 0x14, 0x69, 0x57, 0x01, 0xC7, 0xC5, 0x1E, 0x35, 0xFF, 0x38, 0xD6, + 0x4F, 0x27, 0xA2, 0x7D, 0x55, 0xDF, 0xF4, 0xB1, 0x4A, 0xC4, 0x50, 0xC7, 0x5E, 0xB1, 0x18, 0x6E }, + }, + { + { 0x2D, 0xD5, 0xE6, 0xD3, 0x73, 0x36, 0x34, 0x2F, 0x01, 0x1E, 0xB9, 0x7A, 0x2B, 0x77, 0x38, 0x9D, + 0xE6, 0xD2, 0x23, 0x8D, 0x87, 0x69, 0x65, 0x08, 0x2F, 0xD7, 0x94, 0x47, 0x00, 0x50, 0xBE, 0x12 }, + }, + { + { 0x2D, 0xDE, 0xE4, 0x5F, 0x72, 0x78, 0x38, 0xDE, 0xAD, 0xE6, 0x7E, 0x9C, 0xA7, 0x05, 0xEB, 0xB4, + 0xC2, 0xE9, 0x40, 0xAE, 0x1B, 0x9D, 0x62, 0x35, 0x72, 0x18, 0x04, 0x58, 0x31, 0xE9, 0x8F, 0xDE }, + }, + { + { 0x2E, 0x17, 0x46, 0x49, 0x4E, 0x86, 0xD6, 0x93, 0x0B, 0x24, 0x98, 0x8B, 0x12, 0x9B, 0x38, 0x6B, + 0xC2, 0x08, 0xE2, 0xFB, 0xC8, 0xD3, 0xEA, 0x27, 0x7A, 0x23, 0xE5, 0x46, 0x33, 0xAF, 0xF1, 0x8F }, + }, + { + { 0x2E, 0x43, 0x2A, 0x54, 0x5D, 0xFE, 0x2D, 0xA3, 0xAD, 0x00, 0xCC, 0x87, 0x89, 0x23, 0xA1, 0x85, + 0xD6, 0xA3, 0xF9, 0x67, 0x5C, 0x36, 0xDC, 0x3C, 0xD3, 0x70, 0x2A, 0xEF, 0xEB, 0x27, 0x0C, 0x85 }, + }, + { + { 0x2E, 0x5D, 0xD2, 0x55, 0x09, 0x6D, 0x64, 0x83, 0x10, 0x5C, 0xB6, 0x03, 0x6C, 0x59, 0x17, 0x57, + 0xFD, 0x98, 0x49, 0x70, 0x66, 0x05, 0x3F, 0x83, 0x39, 0xE4, 0xD8, 0xD0, 0xC3, 0x75, 0x49, 0x03 }, + }, + { + { 0x2E, 0xD2, 0x05, 0x8F, 0x39, 0xEA, 0xBA, 0x5C, 0xB3, 0xD7, 0xDF, 0x24, 0xCA, 0x74, 0xA7, 0x7D, + 0xDC, 0x12, 0x06, 0x01, 0x52, 0x7B, 0x0F, 0x51, 0x06, 0x91, 0x05, 0xCA, 0x88, 0x37, 0x6E, 0x20 }, + }, + { + { 0x2F, 0x39, 0xBB, 0x30, 0xAA, 0x5C, 0xBB, 0x62, 0x01, 0x7C, 0x6C, 0x79, 0x90, 0xE3, 0xF9, 0xA4, + 0x0D, 0x46, 0x9F, 0x76, 0x50, 0x59, 0x81, 0xC8, 0x6F, 0x95, 0x55, 0x4F, 0x48, 0x7A, 0x52, 0x76 }, + }, + { + { 0x2F, 0x79, 0xD6, 0xF6, 0xA3, 0x2F, 0x1B, 0xEE, 0x22, 0x37, 0xA0, 0x18, 0xE6, 0xAE, 0xC4, 0xF4, + 0x9E, 0x2C, 0x5C, 0x3C, 0xDB, 0xB6, 0x99, 0xE1, 0x6F, 0x8E, 0xF4, 0x14, 0xEE, 0xFF, 0x8D, 0xA3 }, + }, + { + { 0x2F, 0x8B, 0xC9, 0x6F, 0x12, 0x95, 0x05, 0x6C, 0x10, 0x67, 0x20, 0x39, 0x57, 0xE3, 0xCB, 0xCC, + 0x3B, 0x16, 0xC4, 0x91, 0xD4, 0xDA, 0xC0, 0xA7, 0xDE, 0xE4, 0x2D, 0xD5, 0x4C, 0x10, 0xD4, 0x96 }, + }, + { + { 0x2F, 0x9B, 0x7B, 0x60, 0xA3, 0xE8, 0x74, 0x2C, 0x5D, 0xBE, 0x3E, 0xC6, 0x01, 0x69, 0xD7, 0xA4, + 0x4F, 0x1B, 0xB5, 0x6D, 0x51, 0xF6, 0x51, 0x37, 0x2C, 0x28, 0x32, 0x69, 0x33, 0x7B, 0xF8, 0x15 }, + }, + { + { 0x2F, 0xEF, 0xA7, 0xCB, 0x12, 0x6B, 0x81, 0xC9, 0x47, 0x4D, 0x3E, 0x2C, 0x9B, 0x97, 0x3A, 0x83, + 0x69, 0xBB, 0x08, 0x43, 0x41, 0xD3, 0x82, 0xD3, 0x7E, 0x9E, 0x95, 0xC4, 0xDB, 0xE3, 0x71, 0xEE }, + }, + { + { 0x30, 0x2B, 0xC4, 0xAF, 0xFB, 0x52, 0xA9, 0xA6, 0xB9, 0x7A, 0x1D, 0xBF, 0x87, 0x98, 0xFA, 0xB2, + 0xAD, 0x57, 0xD3, 0x6F, 0x75, 0x84, 0x88, 0x8E, 0x03, 0x67, 0x4A, 0x5D, 0xD6, 0xE1, 0x09, 0x91 }, + }, + { + { 0x30, 0x2F, 0x5D, 0xC8, 0xF0, 0x75, 0xED, 0x03, 0x99, 0xD4, 0xBB, 0x3E, 0xA1, 0x92, 0x25, 0xDA, + 0x56, 0x3C, 0x9E, 0x3C, 0xF3, 0xA6, 0xF8, 0x0D, 0x28, 0x4D, 0x55, 0x31, 0xC2, 0xD0, 0xDD, 0xF7 }, + }, + { + { 0x30, 0x35, 0x3B, 0x41, 0x90, 0x04, 0xDD, 0x1B, 0xA0, 0x64, 0x4A, 0x2A, 0x0B, 0x7B, 0xE9, 0x4F, + 0xB8, 0x6F, 0x5E, 0x27, 0x5D, 0x67, 0x94, 0xA6, 0xDB, 0xBA, 0xA3, 0x21, 0x32, 0x3E, 0xD8, 0xB7 }, + }, + { + { 0x30, 0x7B, 0x09, 0x34, 0xEF, 0x97, 0x85, 0xE7, 0x08, 0xED, 0x48, 0x1A, 0x99, 0x7A, 0x8A, 0x88, + 0xB7, 0xBF, 0x22, 0xDD, 0x26, 0xAA, 0x17, 0x17, 0x31, 0xB8, 0xF7, 0xE0, 0xD5, 0x97, 0xB7, 0x08 }, + }, + { + { 0x30, 0x9B, 0x6E, 0x00, 0x40, 0x46, 0x87, 0x96, 0x01, 0xA0, 0xD8, 0xA0, 0x42, 0x3F, 0x73, 0xB1, + 0x6A, 0x91, 0xA4, 0xBC, 0x16, 0xED, 0x2A, 0x84, 0x60, 0x66, 0xCD, 0xC0, 0x38, 0x2F, 0x97, 0x71 }, + }, + { + { 0x30, 0xCB, 0x41, 0x11, 0xFB, 0x10, 0x08, 0x6F, 0xC6, 0xA4, 0x1F, 0x04, 0xB7, 0xE9, 0xD4, 0xCF, + 0x66, 0x10, 0xBB, 0x06, 0x59, 0xD8, 0xE2, 0xAC, 0x80, 0x4F, 0xC8, 0x96, 0xB0, 0x25, 0x42, 0xBB }, + }, + { + { 0x30, 0xE0, 0x69, 0x80, 0x9C, 0x79, 0x90, 0xF0, 0xB5, 0xF2, 0x66, 0xE8, 0x94, 0x59, 0x96, 0x42, + 0xE8, 0x53, 0x50, 0xAB, 0x82, 0x81, 0x05, 0x34, 0xC7, 0xF3, 0xFD, 0x67, 0x0C, 0x1B, 0xEB, 0x18 }, + }, + { + { 0x31, 0x53, 0x47, 0x52, 0xB6, 0xF5, 0x48, 0x20, 0x91, 0x5C, 0x39, 0x5B, 0xEE, 0x97, 0x5B, 0xC5, + 0x4E, 0x3F, 0x07, 0xC0, 0x8C, 0xD3, 0x4C, 0x5A, 0x51, 0x15, 0xDE, 0xF0, 0x17, 0xDB, 0x2B, 0x54 }, + }, + { + { 0x31, 0xB8, 0x3E, 0x01, 0x90, 0x98, 0x95, 0xBC, 0x74, 0x2D, 0x6B, 0xE8, 0x40, 0x0A, 0xDE, 0x51, + 0xB2, 0x09, 0x83, 0xF6, 0x83, 0xA2, 0xAA, 0xEE, 0xB2, 0x5F, 0x58, 0xDF, 0x98, 0x1B, 0xDE, 0x0D }, + }, + { + { 0x31, 0xED, 0x8A, 0x8C, 0xC6, 0xEE, 0x5E, 0x88, 0x4F, 0x21, 0x4F, 0x26, 0x7F, 0xE3, 0xA2, 0x27, + 0xD4, 0xE6, 0xED, 0x36, 0xA7, 0x7F, 0xA2, 0x24, 0x6F, 0x0A, 0xD0, 0x77, 0x8A, 0x6B, 0x3F, 0x97 }, + }, + { + { 0x32, 0x36, 0x98, 0x50, 0x9D, 0x8F, 0x8B, 0xFB, 0xD4, 0xF9, 0x04, 0xBD, 0x1D, 0x84, 0x64, 0x12, + 0xC5, 0x27, 0xB7, 0x70, 0x06, 0x2A, 0xAD, 0xDF, 0x9E, 0x91, 0x9D, 0x84, 0x10, 0xEA, 0xA4, 0x9F }, + }, + { + { 0x32, 0x8B, 0x9A, 0x45, 0xEF, 0xEF, 0x20, 0xB5, 0xD1, 0x57, 0x39, 0xDD, 0xFA, 0xC1, 0x0C, 0x7E, + 0xFE, 0x5F, 0xA7, 0x96, 0xBF, 0xE0, 0x1E, 0xD1, 0xA1, 0x25, 0xA9, 0x15, 0x8E, 0x2F, 0x1B, 0x17 }, + }, + { + { 0x32, 0x9B, 0x70, 0xBF, 0x79, 0xD8, 0x11, 0x7E, 0x95, 0x3B, 0x49, 0x97, 0xBB, 0x62, 0x72, 0xDF, + 0x50, 0x49, 0x5F, 0xA0, 0xB4, 0x5B, 0xAD, 0xB3, 0xEC, 0x0A, 0x83, 0x16, 0x33, 0x6F, 0xE3, 0xA2 }, + }, + { + { 0x32, 0xDB, 0xC4, 0x6B, 0x80, 0x80, 0x5A, 0x56, 0x97, 0x4B, 0x2A, 0x5D, 0xDE, 0x67, 0x34, 0x28, + 0xED, 0x03, 0xB0, 0x76, 0x5E, 0x15, 0xD9, 0x4C, 0x55, 0xE5, 0x4D, 0x2F, 0x55, 0x70, 0xF2, 0x0B }, + }, + { + { 0x32, 0xEF, 0x13, 0x33, 0x86, 0xBF, 0x0C, 0x63, 0xCF, 0x29, 0xD6, 0x2B, 0x0D, 0x76, 0x88, 0x9E, + 0x9D, 0x9D, 0x53, 0x2E, 0xE4, 0x90, 0x38, 0x94, 0x4D, 0xBC, 0x21, 0x49, 0xD8, 0xCA, 0xA5, 0xD1 }, + }, + { + { 0x33, 0x03, 0x23, 0x10, 0x4C, 0x25, 0x2F, 0xCE, 0xB9, 0xE6, 0x63, 0x0D, 0x9F, 0xE7, 0x1F, 0x17, + 0xB6, 0xC2, 0x25, 0xA6, 0x5C, 0x76, 0x08, 0x15, 0xE4, 0x08, 0x74, 0x6C, 0x33, 0x1A, 0xB4, 0xF6 }, + }, + { + { 0x33, 0x0D, 0x78, 0x66, 0xC2, 0x5F, 0x7C, 0xE3, 0x47, 0x3C, 0x6D, 0x55, 0x9C, 0xEA, 0x4B, 0x94, + 0x01, 0xF9, 0xE5, 0x2E, 0x4C, 0x24, 0x7A, 0x5E, 0x49, 0xA1, 0xF1, 0x44, 0x59, 0x9A, 0x5A, 0x79 }, + }, + { + { 0x33, 0xC9, 0x15, 0x03, 0xBC, 0x7E, 0xBE, 0x5A, 0x5D, 0xD0, 0xCF, 0xBB, 0x37, 0x52, 0x64, 0xDD, + 0x5A, 0x31, 0x1E, 0x48, 0xF4, 0x26, 0x6B, 0x32, 0x50, 0x8A, 0x02, 0x5D, 0x04, 0xFA, 0xDF, 0x38 }, + }, + { + { 0x34, 0x06, 0x4F, 0xF9, 0x3B, 0x27, 0x4C, 0xF5, 0xA7, 0x24, 0xEC, 0x19, 0x64, 0x50, 0x4A, 0x71, + 0x0A, 0xB9, 0x7B, 0xA1, 0x10, 0x3C, 0xD9, 0xB9, 0x8C, 0x81, 0xD0, 0xAB, 0xCF, 0x3B, 0x19, 0xBD }, + }, + { + { 0x34, 0x15, 0x1A, 0x33, 0x82, 0x78, 0xDA, 0x7E, 0xC2, 0x62, 0x33, 0x81, 0x7D, 0x96, 0x44, 0xB5, + 0x6F, 0x8F, 0x48, 0xC1, 0xC3, 0x70, 0xCD, 0x25, 0xFC, 0xE7, 0xDE, 0x64, 0x54, 0x4F, 0xE9, 0x36 }, + }, + { + { 0x34, 0x65, 0xC2, 0xF9, 0xA0, 0xCF, 0x36, 0xE5, 0xEE, 0xF0, 0x27, 0x1C, 0x52, 0x91, 0x2D, 0x58, + 0x6F, 0xB2, 0x0B, 0x94, 0x43, 0xE7, 0xD5, 0x82, 0xA3, 0xE2, 0x23, 0x93, 0xFA, 0xC8, 0x1B, 0xB4 }, + }, + { + { 0x34, 0x9B, 0x72, 0x1D, 0x0B, 0xB9, 0xA4, 0xC4, 0xAA, 0x33, 0x43, 0x60, 0xA6, 0x6A, 0xC3, 0xA7, + 0x3F, 0xA8, 0xD8, 0xD3, 0x60, 0x0D, 0x89, 0x4E, 0xB0, 0xC7, 0xD2, 0x84, 0x23, 0xC6, 0x78, 0x57 }, + }, + { + { 0x34, 0xE6, 0xF1, 0x7A, 0x14, 0xD3, 0xD2, 0x8A, 0xFD, 0x51, 0xCF, 0x40, 0x49, 0x3A, 0xB2, 0xCF, + 0xE0, 0x18, 0xEF, 0x98, 0x1E, 0x23, 0xF1, 0xFC, 0x91, 0x60, 0xFB, 0x91, 0x2C, 0xDC, 0x5C, 0xB9 }, + }, + { + { 0x35, 0x13, 0x6F, 0x88, 0xB4, 0x24, 0x76, 0x0E, 0x17, 0x5E, 0xFC, 0x19, 0x9B, 0x75, 0xE5, 0x25, + 0x35, 0xF2, 0xDF, 0x59, 0xFF, 0xD0, 0x69, 0x3A, 0x5A, 0x3F, 0x78, 0x1F, 0x6F, 0xF4, 0xB6, 0x50 }, + }, + { + { 0x35, 0x49, 0xB6, 0xEC, 0xBD, 0x8D, 0x25, 0x2B, 0xE7, 0x17, 0xB9, 0x22, 0x73, 0x27, 0x38, 0x08, + 0x0B, 0xAF, 0xD5, 0x60, 0xB4, 0x5A, 0x05, 0x40, 0x33, 0xBD, 0x11, 0x0B, 0x3C, 0x39, 0x48, 0x22 }, + }, + { + { 0x35, 0x58, 0x91, 0xA3, 0x12, 0x34, 0xFD, 0xD0, 0x84, 0x79, 0xB8, 0xAB, 0xA8, 0x58, 0x1E, 0x85, + 0x7C, 0x6B, 0x5C, 0x6B, 0x40, 0xCF, 0xFC, 0x7B, 0x67, 0x80, 0x92, 0x65, 0x1F, 0x06, 0x87, 0xC1 }, + }, + { + { 0x35, 0x98, 0x10, 0xFF, 0xFE, 0xD1, 0x3A, 0x2C, 0x25, 0xCD, 0x91, 0xFC, 0xF0, 0x85, 0x59, 0x33, + 0xC9, 0x94, 0xA9, 0xDF, 0xC9, 0x39, 0x2D, 0x97, 0x07, 0xC3, 0xC0, 0xE7, 0x30, 0x0F, 0x90, 0x8D }, + }, + { + { 0x35, 0xDF, 0x79, 0x2B, 0x10, 0x0A, 0x79, 0xA6, 0x5C, 0x44, 0x87, 0x04, 0x30, 0x9D, 0xD6, 0x4B, + 0x54, 0x39, 0x4E, 0xBA, 0xE8, 0xC4, 0x8C, 0x3B, 0xD5, 0xDE, 0xE9, 0xCC, 0x68, 0x7D, 0x60, 0x34 }, + }, + { + { 0x36, 0x45, 0xEF, 0x7F, 0x5D, 0x15, 0xA5, 0x46, 0x7E, 0x85, 0x30, 0x7D, 0xDA, 0x15, 0xCB, 0xBB, + 0x55, 0xB7, 0x30, 0xAE, 0xF8, 0xEF, 0x9C, 0x71, 0x5D, 0x7D, 0x9F, 0xB4, 0x7F, 0xDF, 0x33, 0xAD }, + }, + { + { 0x36, 0xB4, 0xFE, 0x74, 0x3B, 0x6D, 0xF4, 0x4A, 0x71, 0x3E, 0x91, 0x4C, 0xAB, 0xFB, 0xF2, 0xBE, + 0x60, 0x24, 0x9B, 0x46, 0x43, 0x4D, 0x04, 0x43, 0x59, 0x12, 0x5A, 0x10, 0x6A, 0x37, 0xEB, 0x1C }, + }, + { + { 0x36, 0xF5, 0xA9, 0x7D, 0x79, 0x3F, 0x84, 0x97, 0x44, 0xD6, 0xAB, 0x39, 0xB7, 0xA8, 0x18, 0xF8, + 0x17, 0x6E, 0x65, 0x20, 0xDC, 0x86, 0x3D, 0xCE, 0x43, 0xB3, 0x98, 0xC3, 0x0B, 0x5E, 0xDB, 0x09 }, + }, + { + { 0x37, 0x07, 0x9D, 0x98, 0x72, 0x7C, 0x42, 0xA4, 0x1D, 0x66, 0x18, 0xFC, 0xCD, 0xC6, 0xFF, 0xA1, + 0x5E, 0xD3, 0xB2, 0xFE, 0xC7, 0xAC, 0x0A, 0x09, 0x7B, 0x74, 0xC5, 0x72, 0xBB, 0xCD, 0xA8, 0xD7 }, + }, + { + { 0x37, 0x87, 0x37, 0xCD, 0x85, 0x19, 0xBA, 0xC5, 0x32, 0x2F, 0xDB, 0x28, 0xF4, 0x4A, 0x43, 0xC5, + 0x09, 0xA5, 0x44, 0x7A, 0xD2, 0x68, 0x3B, 0xA1, 0x90, 0x05, 0xE3, 0x1B, 0x0D, 0x54, 0x8C, 0x6D }, + }, + { + { 0x37, 0x98, 0xB3, 0x35, 0x53, 0x40, 0xD2, 0x76, 0x2A, 0x02, 0x08, 0xF3, 0x47, 0x20, 0xD2, 0xA1, + 0x52, 0xEF, 0xA9, 0xE8, 0x96, 0x57, 0x18, 0xB8, 0x93, 0x06, 0xF6, 0x91, 0x33, 0x56, 0x32, 0xE9 }, + }, + { + { 0x37, 0x99, 0x0F, 0x5B, 0x5C, 0x71, 0x11, 0x89, 0x98, 0xF9, 0xC8, 0xE1, 0x54, 0x65, 0x69, 0x16, + 0x1A, 0x82, 0xBB, 0xFB, 0x4B, 0x4F, 0xC4, 0xCA, 0xA3, 0xF4, 0xB7, 0xE7, 0x4A, 0xF5, 0x15, 0xFE }, + }, + { + { 0x37, 0xC9, 0x7A, 0x48, 0xF5, 0xEE, 0x3E, 0x68, 0xCC, 0x24, 0xB5, 0x4E, 0x7C, 0x4D, 0x9F, 0x91, + 0xC7, 0xD1, 0x8B, 0x8D, 0xB6, 0x1E, 0x04, 0xEE, 0x64, 0x25, 0x1E, 0x75, 0xB0, 0xD1, 0x9F, 0xC5 }, + }, + { + { 0x37, 0xEC, 0xDB, 0x1E, 0x7A, 0xBA, 0x93, 0xBB, 0x83, 0xC8, 0xC4, 0xB7, 0xBB, 0xDE, 0xAF, 0xFF, + 0xB5, 0x95, 0xC7, 0x3C, 0xA4, 0x21, 0x88, 0xAA, 0xB5, 0x0F, 0x06, 0x27, 0xD3, 0xE1, 0x70, 0x18 }, + }, + { + { 0x38, 0x23, 0x4E, 0x55, 0x9D, 0x30, 0x27, 0xD1, 0x61, 0xDA, 0x8C, 0x98, 0x88, 0x04, 0x9A, 0x4D, + 0x20, 0xAC, 0xF2, 0x00, 0x90, 0xAD, 0x1A, 0x22, 0x2B, 0x73, 0x9A, 0xC8, 0x6E, 0xB7, 0x6F, 0x06 }, + }, + { + { 0x38, 0x68, 0xB9, 0x52, 0x53, 0xEF, 0xDB, 0x85, 0x46, 0x62, 0x00, 0xDD, 0xE5, 0x0B, 0x0D, 0x52, + 0xDA, 0x5A, 0x2B, 0x8A, 0x01, 0xB7, 0x26, 0xCE, 0xF6, 0xCE, 0x3B, 0x13, 0x7C, 0x80, 0x6C, 0x05 }, + }, + { + { 0x39, 0x02, 0x27, 0xCE, 0x88, 0x1C, 0x71, 0x8B, 0x59, 0xA6, 0xBC, 0x31, 0x90, 0xD5, 0x17, 0xE7, + 0x1E, 0x1E, 0x58, 0x66, 0x93, 0xC8, 0xBF, 0x8A, 0x30, 0x27, 0x26, 0x20, 0x13, 0xFE, 0x16, 0x63 }, + }, + { + { 0x39, 0x21, 0x5C, 0xAA, 0x37, 0x1A, 0xBE, 0x57, 0x6A, 0xB9, 0x3B, 0x18, 0xC2, 0xF3, 0x75, 0x5E, + 0xE2, 0x6F, 0x8C, 0x3A, 0xDB, 0x75, 0x9B, 0x6F, 0x34, 0x78, 0x9F, 0xB8, 0xEC, 0xF0, 0x54, 0x28 }, + }, + { + { 0x39, 0x23, 0xD1, 0x9C, 0x31, 0x06, 0x03, 0xCD, 0xFD, 0x06, 0x23, 0x92, 0xD1, 0x76, 0xC0, 0xC6, + 0x92, 0x55, 0xEF, 0xFE, 0xE4, 0xEF, 0xF1, 0x09, 0x29, 0x1C, 0x03, 0xA2, 0x21, 0xBA, 0x91, 0xE2 }, + }, + { + { 0x39, 0x7B, 0xA8, 0x8A, 0x05, 0xDA, 0xFD, 0x7D, 0x58, 0xFA, 0xCF, 0x45, 0x60, 0xA6, 0x88, 0xAB, + 0xEE, 0xD2, 0x13, 0xE0, 0xF8, 0x8C, 0x76, 0xB6, 0x2A, 0xB2, 0xFD, 0xE3, 0x67, 0xC3, 0x2D, 0x32 }, + }, + { + { 0x39, 0x7D, 0x00, 0x6E, 0xF8, 0xAF, 0xB2, 0x0F, 0x43, 0x61, 0xA6, 0xC9, 0x72, 0xF0, 0xC5, 0x7C, + 0xC0, 0x87, 0x74, 0x01, 0x06, 0x12, 0x78, 0x3F, 0xBA, 0xBC, 0xB8, 0xD6, 0xF6, 0x03, 0x9E, 0x2C }, + }, + { + { 0x39, 0x7D, 0x03, 0x62, 0xFA, 0xED, 0xE6, 0xFA, 0x94, 0x27, 0x4F, 0xFC, 0xF9, 0x8F, 0xF3, 0x52, + 0x55, 0x31, 0x58, 0x5D, 0x18, 0x33, 0xE0, 0x07, 0x3E, 0x5D, 0x20, 0x2D, 0xED, 0x62, 0x39, 0x55 }, + }, + { + { 0x39, 0xB1, 0x9F, 0x06, 0x65, 0xD6, 0x87, 0x8D, 0xD2, 0x5C, 0xA7, 0x30, 0x15, 0xBA, 0x0A, 0xE3, + 0xBD, 0xBA, 0x87, 0xDB, 0xCF, 0xAD, 0x38, 0x7A, 0x94, 0x52, 0x59, 0x4D, 0x73, 0x68, 0xEA, 0x85 }, + }, + { + { 0x39, 0xD7, 0x44, 0x77, 0x31, 0x72, 0x8B, 0xBA, 0x92, 0x36, 0x72, 0x7D, 0xBD, 0x7C, 0x7E, 0xE1, + 0x70, 0xE5, 0x9F, 0x3B, 0x53, 0x73, 0x79, 0x6D, 0x7D, 0xE1, 0xC6, 0xA2, 0xBE, 0x31, 0x22, 0x18 }, + }, + { + { 0x39, 0xDA, 0x1B, 0xE6, 0x56, 0x43, 0x55, 0x34, 0x6E, 0x46, 0x99, 0x66, 0x3C, 0x19, 0x95, 0x54, + 0x87, 0xA0, 0x88, 0x56, 0xFF, 0xBE, 0xEE, 0x74, 0x01, 0x67, 0x99, 0xC7, 0xA3, 0x4B, 0x48, 0xEE }, + }, + { + { 0x39, 0xFF, 0x6E, 0x31, 0x69, 0x9F, 0x5D, 0x68, 0x92, 0x97, 0x6D, 0x11, 0xDD, 0xBB, 0x14, 0x24, + 0xED, 0x0C, 0xEC, 0x48, 0x36, 0x3E, 0x94, 0xEA, 0xE3, 0xCD, 0x5F, 0x4C, 0xAF, 0x1C, 0xBD, 0x2F }, + }, + { + { 0x3A, 0x02, 0xEA, 0xD6, 0x33, 0x22, 0x6E, 0x1E, 0x45, 0x3A, 0x58, 0x50, 0xAE, 0x4D, 0x7C, 0x8D, + 0x3E, 0x0C, 0x25, 0xA4, 0xC9, 0x5C, 0x1E, 0x2D, 0xFB, 0xB7, 0xFF, 0xEB, 0x27, 0xE3, 0x64, 0x7A }, + }, + { + { 0x3A, 0x1F, 0xF2, 0x01, 0x71, 0x88, 0x3F, 0x4E, 0x9B, 0xA9, 0x96, 0x68, 0x79, 0x04, 0xCD, 0xDB, + 0x7A, 0x25, 0xAA, 0x35, 0xB0, 0xAD, 0x8E, 0xA8, 0x78, 0xFB, 0x88, 0x6D, 0xD8, 0xCF, 0x93, 0xCF }, + }, + { + { 0x3A, 0x2D, 0x31, 0x0F, 0x13, 0x05, 0xB4, 0xEB, 0x9D, 0x10, 0x3A, 0xA2, 0x9D, 0x47, 0x86, 0xF7, + 0xDF, 0x41, 0xD8, 0x5D, 0x56, 0xEB, 0xC9, 0x8C, 0x3C, 0xAA, 0xDD, 0x4B, 0xAA, 0x3D, 0x57, 0xF9 }, + }, + { + { 0x3A, 0xB9, 0x0F, 0xFD, 0x22, 0x10, 0xEB, 0x89, 0x9C, 0x6F, 0xB7, 0xFD, 0x26, 0x8D, 0xE0, 0x0B, + 0x00, 0x9F, 0x50, 0xE8, 0x18, 0x70, 0xA2, 0x20, 0xFF, 0xAE, 0xA2, 0x4E, 0x41, 0x76, 0xDE, 0x45 }, + }, + { + { 0x3A, 0xCF, 0x85, 0x3C, 0x4E, 0x45, 0x02, 0xBD, 0x82, 0xD5, 0x85, 0xD5, 0xE0, 0x82, 0xC4, 0xB3, + 0xAD, 0x03, 0xCD, 0xB6, 0xB5, 0x05, 0xCA, 0x80, 0x47, 0x19, 0x88, 0xEC, 0x4C, 0x58, 0x99, 0x9E }, + }, + { + { 0x3A, 0xEA, 0x2C, 0xEF, 0xAE, 0x63, 0x44, 0xFF, 0xAE, 0x67, 0x49, 0x4C, 0x68, 0x4E, 0x1E, 0xBF, + 0x87, 0x95, 0x40, 0xB5, 0x3D, 0x40, 0xF5, 0x16, 0x9F, 0x78, 0x89, 0x7F, 0x1B, 0x38, 0xAB, 0x66 }, + }, + { + { 0x3B, 0x47, 0x85, 0x0B, 0xF8, 0x4C, 0x4C, 0xF2, 0xCA, 0x6C, 0x31, 0xB3, 0x78, 0x39, 0xC9, 0x50, + 0x76, 0x63, 0x70, 0xD7, 0xF4, 0xB6, 0x4A, 0xD0, 0x18, 0x55, 0xCA, 0xCF, 0xE3, 0x51, 0x2F, 0xC3 }, + }, + { + { 0x3B, 0x4A, 0x9F, 0x55, 0x6C, 0xCA, 0xC7, 0x0C, 0xA1, 0xF3, 0x3A, 0xF6, 0xDE, 0xCC, 0x66, 0xCA, + 0xFD, 0x2D, 0x30, 0x1D, 0x49, 0x7B, 0x49, 0x0B, 0x30, 0x80, 0x46, 0x35, 0xBA, 0xD2, 0x56, 0x94 }, + }, + { + { 0x3B, 0x6E, 0x3B, 0xB7, 0x00, 0x04, 0xBD, 0x78, 0xC9, 0x69, 0xA7, 0xFB, 0xD5, 0x11, 0x33, 0xA2, + 0xB3, 0xC4, 0xDF, 0xB6, 0xBA, 0x38, 0x5D, 0xCE, 0x3F, 0xB8, 0x4D, 0x73, 0x6B, 0xEA, 0xB1, 0xD9 }, + }, + { + { 0x3B, 0x93, 0xAC, 0x19, 0x6E, 0xC6, 0x7B, 0xF2, 0x78, 0x7F, 0x42, 0x40, 0xC0, 0xD1, 0x11, 0x37, + 0xEF, 0x79, 0xA4, 0xED, 0x1F, 0x5D, 0x1F, 0x3D, 0x04, 0x24, 0x1F, 0x03, 0xDC, 0x2D, 0xA3, 0x70 }, + }, + { + { 0x3B, 0xAA, 0x31, 0x31, 0x70, 0x68, 0xAC, 0xE0, 0x89, 0xAE, 0xB4, 0xA8, 0x8D, 0x7E, 0xDE, 0xBE, + 0x94, 0xAB, 0x4A, 0xCE, 0x46, 0xBB, 0xD2, 0x68, 0x3E, 0x3F, 0xDF, 0xF5, 0x59, 0x30, 0x0F, 0x93 }, + }, + { + { 0x3C, 0x38, 0x36, 0x2E, 0x16, 0x8B, 0xB4, 0xA7, 0x59, 0xC4, 0x80, 0x55, 0x1C, 0xB1, 0x65, 0x6F, + 0x6A, 0x96, 0x8B, 0x9B, 0x43, 0xCB, 0xE0, 0xD7, 0x39, 0x75, 0x4A, 0xB7, 0x8A, 0x28, 0x87, 0x0E }, + }, + { + { 0x3C, 0xE3, 0xF1, 0x9C, 0x03, 0xB3, 0x44, 0x00, 0x75, 0x6F, 0x64, 0x18, 0xE0, 0x12, 0xE9, 0x42, + 0x26, 0x5C, 0x27, 0x11, 0x98, 0x43, 0xFE, 0x0F, 0x44, 0x34, 0x5B, 0x94, 0xC1, 0xB0, 0x6C, 0xEF }, + }, + { + { 0x3D, 0x14, 0x47, 0x2D, 0xCE, 0x4A, 0xFD, 0xC2, 0x27, 0x6C, 0x81, 0x47, 0x97, 0xC7, 0xBC, 0x7A, + 0x6C, 0x14, 0xF7, 0x95, 0x3E, 0x7E, 0x9F, 0xEA, 0x69, 0x51, 0x04, 0x0F, 0x2D, 0xAF, 0xBE, 0x9A }, + }, + { + { 0x3D, 0x45, 0xBF, 0x0F, 0x64, 0x9B, 0xF5, 0xD1, 0xF8, 0x91, 0x85, 0x31, 0xA7, 0x7C, 0xF9, 0xBF, + 0x5C, 0xA1, 0x85, 0x0C, 0x82, 0x02, 0x69, 0xD7, 0xB2, 0xC8, 0xEC, 0xD0, 0x54, 0x3A, 0x61, 0x65 }, + }, + { + { 0x3D, 0x77, 0xB1, 0xCC, 0x1C, 0x46, 0xF8, 0x58, 0x03, 0x50, 0x53, 0x33, 0xCA, 0x8D, 0xE4, 0x77, + 0x71, 0xDD, 0xE8, 0x94, 0x4A, 0x51, 0x4E, 0xF4, 0x47, 0x08, 0xBF, 0x0E, 0xA6, 0x27, 0x58, 0x50 }, + }, + { + { 0x3D, 0xC7, 0xB5, 0x72, 0xD3, 0xEE, 0xCE, 0xFD, 0x48, 0x07, 0x16, 0x30, 0x9D, 0x2E, 0xC9, 0x24, + 0x8D, 0x4D, 0x5D, 0xD1, 0xD8, 0x4F, 0xDB, 0x3E, 0x70, 0x1B, 0x58, 0x2E, 0x72, 0xB2, 0xDF, 0xE0 }, + }, + { + { 0x3D, 0xE9, 0xE2, 0xFF, 0xBA, 0x92, 0xFC, 0x57, 0xB7, 0x96, 0x4E, 0xE0, 0x59, 0xA3, 0x38, 0x37, + 0x96, 0x37, 0x4E, 0xD8, 0x0D, 0xBE, 0x7F, 0x67, 0x7E, 0xDE, 0x79, 0x98, 0x11, 0xE7, 0xAC, 0x16 }, + }, + { + { 0x3E, 0x6F, 0x37, 0x53, 0xF1, 0xAB, 0x10, 0x62, 0x60, 0xDB, 0xEF, 0xA6, 0x8E, 0xC5, 0x85, 0x01, + 0x29, 0x1D, 0x1E, 0xB4, 0x00, 0x28, 0x8F, 0x06, 0xED, 0xF2, 0x9F, 0x8F, 0x8F, 0x66, 0xB0, 0x1A }, + }, + { + { 0x3E, 0x8E, 0x9B, 0xAD, 0x8E, 0xD9, 0xB5, 0x72, 0x38, 0x2E, 0x59, 0x8D, 0x2D, 0x73, 0x67, 0xE1, + 0xFD, 0x6A, 0xF6, 0x95, 0x25, 0x00, 0x9D, 0x67, 0xB4, 0xE8, 0xAF, 0x80, 0xD9, 0x15, 0x85, 0x49 }, + }, + { + { 0x3E, 0xC1, 0xC3, 0x43, 0xC6, 0x60, 0x05, 0x10, 0x57, 0x97, 0x47, 0xA7, 0x1A, 0xEA, 0xB3, 0x04, + 0x1A, 0x71, 0x8E, 0x4F, 0xC6, 0xE2, 0x96, 0xFE, 0xB7, 0x50, 0xA3, 0x12, 0x38, 0x72, 0x6E, 0xA5 }, + }, + { + { 0x3E, 0xD6, 0x85, 0x47, 0x65, 0x07, 0x91, 0x35, 0xAA, 0xEE, 0xB7, 0xD8, 0xA3, 0x79, 0x17, 0xDC, + 0x71, 0x74, 0x5E, 0xA6, 0x0F, 0xA9, 0x62, 0x1B, 0xAA, 0x30, 0x7F, 0xBE, 0x71, 0xA7, 0x3C, 0x43 }, + }, + { + { 0x3F, 0x08, 0x40, 0x27, 0x4E, 0x66, 0x15, 0x90, 0xC1, 0x46, 0x75, 0x96, 0x0F, 0xCC, 0x42, 0x06, + 0x95, 0x36, 0x58, 0x6F, 0x07, 0x60, 0x92, 0x48, 0x76, 0x24, 0x0F, 0x09, 0x04, 0x31, 0x78, 0x91 }, + }, + { + { 0x3F, 0x1B, 0x41, 0x14, 0xF9, 0x89, 0xE8, 0x56, 0x8F, 0x1B, 0x04, 0x53, 0x46, 0x5C, 0x11, 0x3F, + 0x32, 0xC3, 0x85, 0x10, 0xF5, 0x81, 0x77, 0x01, 0x81, 0x3D, 0x69, 0x3E, 0xF1, 0xA6, 0x8F, 0xCB }, + }, + { + { 0x3F, 0x27, 0xBD, 0xCA, 0x9B, 0x0E, 0x42, 0xF3, 0xF6, 0xD0, 0x91, 0x2C, 0x92, 0xE2, 0xDA, 0x65, + 0xCB, 0x35, 0x8F, 0x0B, 0x8F, 0x80, 0x5B, 0xEC, 0x5D, 0xE9, 0x32, 0x51, 0xD9, 0xC4, 0xB1, 0x99 }, + }, + { + { 0x3F, 0x2E, 0xA6, 0x4E, 0xFB, 0xD6, 0xBF, 0xC4, 0x0A, 0xF0, 0xAD, 0x46, 0xA4, 0xA2, 0x57, 0x84, + 0x19, 0xD8, 0x68, 0x6E, 0x38, 0x98, 0x8B, 0x91, 0x47, 0x01, 0x8C, 0x36, 0x29, 0x31, 0xE4, 0xF9 }, + }, + { + { 0x3F, 0x3F, 0x08, 0x2F, 0xAB, 0x0C, 0xBD, 0x83, 0x16, 0xEA, 0x9D, 0xC1, 0xC7, 0x7E, 0xC6, 0x4C, + 0x32, 0x4D, 0x9C, 0x3D, 0x86, 0x08, 0xC7, 0x79, 0x56, 0xF1, 0x27, 0xA9, 0xB8, 0xF4, 0x9C, 0x46 }, + }, + { + { 0x3F, 0x4F, 0x28, 0x8B, 0xAF, 0x5B, 0xDE, 0x86, 0x72, 0xD6, 0xAD, 0xD1, 0x50, 0xE3, 0x23, 0x79, + 0x49, 0x9A, 0x16, 0xC5, 0x81, 0xFB, 0x77, 0x37, 0xEC, 0x49, 0x80, 0xE4, 0xF9, 0xC3, 0x3D, 0x4D }, + }, + { + { 0x3F, 0x5C, 0xFC, 0xAB, 0x44, 0x1A, 0x30, 0xD8, 0xF0, 0x1A, 0xC1, 0xAE, 0x9E, 0x08, 0xA2, 0xDB, + 0x70, 0xC4, 0xC1, 0x6D, 0xED, 0x03, 0xA4, 0x21, 0xD4, 0x1B, 0x8F, 0x42, 0xD5, 0xC1, 0x89, 0x6E }, + }, + { + { 0x3F, 0x92, 0x54, 0x89, 0x64, 0xCC, 0xDE, 0xFB, 0x29, 0x96, 0x5A, 0x27, 0xC1, 0x6C, 0x2F, 0xED, + 0x28, 0xD9, 0xB9, 0x14, 0x0E, 0x4F, 0xB5, 0x5B, 0x37, 0x22, 0x4C, 0x67, 0xB2, 0xA0, 0x55, 0x1F }, + }, + { + { 0x3F, 0x93, 0x0A, 0x4E, 0xE4, 0x43, 0x8B, 0x20, 0xD0, 0x3B, 0xD6, 0x25, 0x6E, 0x18, 0xE1, 0x3D, + 0xB2, 0x45, 0x0E, 0x59, 0x38, 0xF9, 0x81, 0xA8, 0xC4, 0x19, 0x0D, 0x56, 0xF0, 0xD8, 0xAC, 0x88 }, + }, + { + { 0x3F, 0xB6, 0xC4, 0x03, 0x19, 0x63, 0xB9, 0x67, 0x28, 0xBF, 0x93, 0x8D, 0x9B, 0x59, 0xC9, 0x05, + 0x43, 0xA9, 0xA6, 0x3E, 0xA3, 0x9C, 0xD2, 0x76, 0x14, 0xF2, 0x41, 0x28, 0xA9, 0x64, 0xEF, 0x84 }, + }, + { + { 0x3F, 0xD9, 0x29, 0x81, 0x1E, 0x0A, 0x80, 0xA3, 0xF4, 0xCD, 0xA3, 0x50, 0x2E, 0x1C, 0x20, 0x29, + 0xA7, 0xA3, 0xC1, 0x61, 0x06, 0x95, 0x5D, 0x3D, 0x93, 0x16, 0x71, 0x15, 0xFE, 0x7B, 0xC6, 0xE2 }, + }, + { + { 0x40, 0x58, 0xEC, 0x4A, 0x7A, 0x7B, 0xA0, 0xB8, 0x65, 0xA7, 0x39, 0xA0, 0x0C, 0x85, 0xF3, 0x44, + 0x58, 0x79, 0xD6, 0x5E, 0x1D, 0x42, 0x2E, 0xED, 0x07, 0x65, 0x5A, 0x8E, 0x3E, 0xC3, 0x18, 0xCF }, + }, + { + { 0x40, 0x89, 0x12, 0x59, 0x8B, 0x4D, 0x99, 0x69, 0x1D, 0x46, 0xDC, 0x3C, 0x06, 0x19, 0x82, 0xB9, + 0x48, 0x74, 0x3F, 0x0C, 0x0D, 0x26, 0xFF, 0x38, 0x50, 0xA3, 0xCA, 0x6B, 0x78, 0x97, 0x91, 0x5E }, + }, + { + { 0x41, 0x1E, 0x5A, 0x18, 0x2A, 0x48, 0x3C, 0x67, 0x0F, 0x89, 0xAC, 0xEE, 0xA6, 0xDA, 0xA1, 0xF9, + 0xA6, 0x22, 0x7E, 0xDF, 0x04, 0x9C, 0x05, 0xE3, 0xC4, 0xCF, 0xF7, 0x28, 0x42, 0x45, 0x9A, 0xA2 }, + }, + { + { 0x41, 0x29, 0x6B, 0x9F, 0xAA, 0xD6, 0x41, 0x33, 0xFC, 0xCB, 0xA6, 0xBA, 0x74, 0x54, 0x11, 0xEC, + 0xC9, 0x11, 0xFD, 0x8E, 0xD5, 0x41, 0x90, 0x0F, 0x9E, 0x20, 0x36, 0x08, 0xEE, 0xA3, 0x59, 0x2D }, + }, + { + { 0x41, 0x88, 0x71, 0x80, 0x7E, 0xDC, 0xED, 0xA8, 0x57, 0xD7, 0xE8, 0x48, 0x31, 0x71, 0x81, 0xE1, + 0xE8, 0x33, 0xF5, 0x4C, 0x89, 0xA6, 0x11, 0xA2, 0x30, 0xAD, 0x99, 0x06, 0x5D, 0x45, 0x86, 0x95 }, + }, + { + { 0x41, 0xA6, 0x8D, 0xFD, 0x90, 0xDA, 0x6D, 0x12, 0x09, 0x84, 0x85, 0xBF, 0x6F, 0x87, 0x24, 0x5F, + 0x4E, 0xC0, 0x54, 0x71, 0xDA, 0x59, 0xD0, 0x81, 0x06, 0x01, 0x53, 0xA2, 0x22, 0x25, 0x23, 0x7F }, + }, + { + { 0x41, 0xAB, 0x57, 0x74, 0x49, 0xA7, 0x50, 0xEF, 0x45, 0x0D, 0x86, 0x4D, 0xB0, 0x6B, 0x7C, 0xBA, + 0x1F, 0x63, 0xE1, 0x1D, 0x1D, 0x86, 0xB7, 0x8C, 0x70, 0x5B, 0xB4, 0x27, 0x34, 0xF5, 0x05, 0x2D }, + }, + { + { 0x42, 0x08, 0x71, 0xD8, 0xAC, 0x49, 0x3C, 0xF9, 0x46, 0x8B, 0xB3, 0x76, 0x97, 0x6D, 0x65, 0x5E, + 0xF0, 0xAF, 0xAA, 0xC2, 0x3D, 0x77, 0x00, 0x92, 0x20, 0xC3, 0xAF, 0x8B, 0xDD, 0x37, 0x5A, 0x24 }, + }, + { + { 0x42, 0x53, 0xEB, 0x35, 0x06, 0x2F, 0x32, 0x3B, 0x82, 0xDE, 0xD0, 0x0D, 0x53, 0x83, 0x18, 0x06, + 0x7F, 0xE0, 0xDF, 0x41, 0x2B, 0xC9, 0x20, 0x77, 0x92, 0x5B, 0x76, 0x92, 0xCC, 0xCB, 0x27, 0x29 }, + }, + { + { 0x42, 0x5D, 0x4E, 0xBF, 0x1B, 0xDE, 0x0B, 0xF8, 0xD1, 0xDB, 0xD3, 0x3D, 0x8D, 0x16, 0x34, 0xC4, + 0xFA, 0xFE, 0xB6, 0xF8, 0x05, 0xF1, 0xCC, 0xB5, 0x34, 0xAC, 0xB7, 0x2A, 0xED, 0xA2, 0xCD, 0x0A }, + }, + { + { 0x42, 0x7B, 0x6D, 0x3D, 0x1F, 0x9E, 0xF7, 0x34, 0xC7, 0x3B, 0x89, 0x23, 0xD0, 0xE0, 0x9A, 0x7C, + 0xB2, 0xD4, 0x7C, 0x78, 0xE0, 0x26, 0x2B, 0x4E, 0x71, 0x32, 0xB4, 0xB8, 0xF0, 0xF7, 0xFB, 0x40 }, + }, + { + { 0x42, 0xB0, 0x75, 0xEB, 0xF9, 0xFF, 0x9D, 0x6F, 0xCD, 0xF1, 0xBA, 0x60, 0x80, 0x72, 0x8D, 0x21, + 0xC9, 0xCD, 0x6F, 0xBA, 0xA5, 0x45, 0xDA, 0x03, 0x6C, 0xC6, 0x59, 0xCF, 0x90, 0x5F, 0xB3, 0x0C }, + }, + { + { 0x43, 0x05, 0xD8, 0x7B, 0xE4, 0xB6, 0xCF, 0x63, 0xA5, 0x00, 0xEE, 0x4B, 0x8D, 0x09, 0x4F, 0x02, + 0x40, 0xAF, 0x3B, 0x0E, 0x9B, 0xF5, 0x9B, 0xB9, 0xAC, 0x20, 0x32, 0xEE, 0xB9, 0x1D, 0x23, 0xDF }, + }, + { + { 0x43, 0x09, 0x9D, 0xB4, 0xCF, 0x34, 0x1D, 0x41, 0x3E, 0xCC, 0xEE, 0xFC, 0xAF, 0xCD, 0x58, 0xE7, + 0xE3, 0xB7, 0x77, 0xCF, 0x72, 0x80, 0xF3, 0x23, 0xF4, 0x72, 0x08, 0x61, 0x04, 0x9F, 0x55, 0xFE }, + }, + { + { 0x43, 0x13, 0x91, 0xE1, 0x14, 0x14, 0xEC, 0x0C, 0x5C, 0xF5, 0xE7, 0xB3, 0x9C, 0x65, 0xFE, 0xDB, + 0x2E, 0xC8, 0x8C, 0x54, 0x48, 0xBF, 0x35, 0xEE, 0x17, 0x0D, 0xC3, 0xB5, 0xE1, 0x7E, 0xD0, 0x88 }, + }, + { + { 0x43, 0x30, 0xEB, 0xAF, 0x74, 0xBD, 0xD4, 0x36, 0x56, 0xA7, 0x2B, 0x3F, 0xAB, 0x4D, 0x66, 0xDF, + 0x0B, 0x45, 0xCA, 0xB4, 0x93, 0x7D, 0x01, 0xBE, 0xB8, 0xDE, 0x9B, 0x0F, 0x2F, 0xDA, 0xAE, 0xAD }, + }, + { + { 0x43, 0x71, 0x9B, 0x00, 0xB1, 0xEB, 0xBE, 0x02, 0xD2, 0x57, 0x72, 0xE8, 0x41, 0x22, 0x1E, 0xC7, + 0x53, 0x00, 0x02, 0x0B, 0x75, 0x8D, 0xEC, 0x19, 0xD4, 0x2E, 0x33, 0x8E, 0x92, 0xBA, 0x49, 0x4C }, + }, + { + { 0x43, 0x9D, 0x38, 0x5E, 0x8B, 0x11, 0x68, 0x0E, 0x0F, 0xB7, 0x4F, 0x78, 0xA9, 0x74, 0xBD, 0x64, + 0x6D, 0xDE, 0xB5, 0x4E, 0x06, 0x71, 0x42, 0x25, 0x97, 0xB2, 0xFA, 0x88, 0x5D, 0x05, 0x59, 0x28 }, + }, + { + { 0x44, 0x12, 0x63, 0x80, 0xA0, 0x73, 0xFE, 0xA1, 0xA2, 0x00, 0x4F, 0x71, 0x1D, 0xF2, 0xCA, 0x47, + 0xC2, 0xC4, 0xB4, 0xFF, 0x64, 0x4E, 0x76, 0xAF, 0xBE, 0x27, 0x97, 0xC9, 0x63, 0x7C, 0x6A, 0xF9 }, + }, + { + { 0x44, 0x25, 0xDD, 0xFB, 0xBA, 0xFB, 0xE1, 0xAA, 0xCE, 0x25, 0x85, 0x70, 0x48, 0x96, 0x9D, 0xC8, + 0x9D, 0xF5, 0x97, 0x7B, 0xB2, 0xE3, 0x34, 0x7C, 0x9C, 0xEB, 0x0E, 0x5A, 0x7B, 0x68, 0xC5, 0x31 }, + }, + { + { 0x44, 0x5C, 0x03, 0x3A, 0x43, 0xC2, 0x23, 0x38, 0x8E, 0x1C, 0x54, 0x26, 0x92, 0xAB, 0xE5, 0x7D, + 0x27, 0xC3, 0x35, 0x6E, 0x40, 0x95, 0x0F, 0x1D, 0xBA, 0x03, 0x91, 0xAD, 0xC9, 0x1B, 0x10, 0xC8 }, + }, + { + { 0x44, 0xA0, 0x6E, 0xB4, 0x9A, 0x72, 0xBC, 0xA4, 0x4A, 0x58, 0x1F, 0x4F, 0x10, 0x91, 0xAB, 0xEF, + 0x33, 0x2D, 0x8A, 0x7C, 0xEF, 0x60, 0xE6, 0x8D, 0xAF, 0x84, 0x13, 0x23, 0x26, 0x12, 0x90, 0xF0 }, + }, + { + { 0x44, 0xC2, 0x00, 0x2E, 0xEA, 0xBE, 0x55, 0xAA, 0x9B, 0xF9, 0x7C, 0xF3, 0xEF, 0xD4, 0xFB, 0x06, + 0xEC, 0xE5, 0x10, 0xB4, 0xAB, 0xE9, 0xAC, 0xB8, 0x2C, 0x36, 0xEF, 0x23, 0x5B, 0x9D, 0xC8, 0xA1 }, + }, + { + { 0x44, 0xEB, 0x83, 0xC7, 0xEB, 0xD4, 0x1D, 0x2C, 0x09, 0x67, 0x45, 0xFA, 0x9D, 0x7B, 0x3B, 0xC9, + 0x4D, 0xA5, 0x61, 0x82, 0x92, 0xB7, 0x0E, 0x3A, 0xB2, 0x50, 0xE3, 0x83, 0x53, 0x98, 0xC6, 0x7C }, + }, + { + { 0x45, 0x3E, 0x22, 0x73, 0x3C, 0xBF, 0xBD, 0xAC, 0x2F, 0xFD, 0x38, 0x74, 0x3D, 0x54, 0xB8, 0x88, + 0xD0, 0x8F, 0x9C, 0x44, 0xBB, 0x59, 0xDC, 0x55, 0x0D, 0xF0, 0x25, 0xC2, 0xA0, 0x0E, 0x4D, 0x3B }, + }, + { + { 0x45, 0x60, 0xDB, 0xDB, 0x1C, 0x43, 0x68, 0x50, 0xEF, 0xB0, 0x03, 0x1E, 0xF8, 0x2B, 0x9F, 0x70, + 0x88, 0x21, 0x9E, 0xCE, 0xD2, 0x69, 0x56, 0x1F, 0xB4, 0xD1, 0xB0, 0x18, 0x3C, 0x44, 0xC2, 0xB5 }, + }, + { + { 0x45, 0x63, 0xCF, 0x13, 0xC2, 0x49, 0x2C, 0xAA, 0x92, 0xF5, 0x5B, 0x17, 0x26, 0x3A, 0xDD, 0x72, + 0x04, 0xA8, 0x0F, 0xE6, 0x24, 0x0C, 0x4D, 0x63, 0xE8, 0x39, 0x59, 0x58, 0xF6, 0x94, 0xCD, 0x33 }, + }, + { + { 0x45, 0x86, 0xDA, 0x12, 0xA9, 0x43, 0xE6, 0x33, 0xD0, 0xD4, 0x43, 0x91, 0x85, 0x44, 0x39, 0x57, + 0x25, 0x58, 0x7F, 0x0A, 0xA8, 0x41, 0xCA, 0xFD, 0xC6, 0xC8, 0x5D, 0x26, 0x1D, 0x3C, 0xD6, 0x79 }, + }, + { + { 0x45, 0xA7, 0x1A, 0x5C, 0xC4, 0x37, 0xDF, 0x07, 0xE3, 0x86, 0x55, 0x43, 0x6D, 0x96, 0xD8, 0x49, + 0x66, 0xE4, 0x83, 0x9D, 0x37, 0xAD, 0xCC, 0xE9, 0xE9, 0xB2, 0x2B, 0x6E, 0xCB, 0x48, 0x92, 0x8E }, + }, + { + { 0x45, 0xCB, 0x86, 0xCA, 0x97, 0x52, 0x29, 0xB7, 0xD5, 0xDA, 0xFC, 0x05, 0xEB, 0x0C, 0x53, 0x65, + 0x82, 0x3A, 0x91, 0xA9, 0x8B, 0x7D, 0xBE, 0x81, 0xAB, 0x5F, 0x17, 0x8B, 0x2D, 0xA4, 0xAD, 0x9E }, + }, + { + { 0x45, 0xCC, 0x74, 0xA3, 0xDB, 0xCB, 0x59, 0xA1, 0x35, 0x35, 0x39, 0xFA, 0x5B, 0x1A, 0xF9, 0x74, + 0x6B, 0xA5, 0xC7, 0xF0, 0xF1, 0x6F, 0x7C, 0xC1, 0xF7, 0x0C, 0x71, 0x32, 0x38, 0x82, 0x7E, 0x37 }, + }, + { + { 0x45, 0xD1, 0xF0, 0xB3, 0x4E, 0x90, 0xDC, 0x45, 0x86, 0x4E, 0x40, 0x4E, 0x21, 0xE4, 0x73, 0xF5, + 0x54, 0x2E, 0x6A, 0x07, 0x5A, 0x18, 0x9E, 0x6D, 0x9E, 0xF5, 0xC1, 0x16, 0xE0, 0xCE, 0x97, 0xFC }, + }, + { + { 0x45, 0xD7, 0x98, 0xFB, 0xC7, 0x66, 0x6C, 0xD7, 0xA0, 0x39, 0x5E, 0x45, 0x0C, 0x5B, 0x4E, 0x1D, + 0x98, 0xFD, 0x0E, 0xDC, 0x7F, 0x97, 0xA0, 0x31, 0x3A, 0x3B, 0x13, 0x86, 0x27, 0x8D, 0xDB, 0x08 }, + }, + { + { 0x45, 0xE9, 0xCF, 0x0A, 0xF0, 0x43, 0xA3, 0xC2, 0xBB, 0x74, 0xD4, 0x63, 0x66, 0x93, 0x1C, 0x3D, + 0xFC, 0xA5, 0x3D, 0x36, 0x26, 0x64, 0x37, 0xD2, 0xA9, 0x46, 0x84, 0xFE, 0xE9, 0x4E, 0x0C, 0x0D }, + }, + { + { 0x46, 0x9B, 0xD8, 0x04, 0xE9, 0x98, 0xAE, 0x27, 0x9A, 0xC3, 0xFE, 0x1B, 0x52, 0x88, 0x46, 0xE7, + 0xAE, 0xC7, 0x6C, 0x56, 0xB8, 0x0B, 0x40, 0xF3, 0x24, 0x20, 0x8F, 0x5A, 0x9F, 0x64, 0x5C, 0xB5 }, + }, + { + { 0x46, 0xCD, 0x08, 0x08, 0x8D, 0x36, 0x06, 0x2C, 0x56, 0x71, 0x09, 0x2C, 0x02, 0x76, 0x7A, 0x25, + 0x0D, 0xE7, 0x0B, 0xF3, 0xE1, 0x53, 0x63, 0x69, 0x66, 0xE6, 0x6E, 0xC5, 0x7E, 0x8E, 0xE9, 0xF5 }, + }, + { + { 0x46, 0xE3, 0x7D, 0x9C, 0x51, 0xC6, 0x40, 0x06, 0x4C, 0xD9, 0x5C, 0x8F, 0xEA, 0x7D, 0x65, 0x78, + 0x0C, 0x2C, 0x4F, 0x0E, 0xB8, 0xEE, 0x56, 0x67, 0xEF, 0x5D, 0xCC, 0xD3, 0x1F, 0x44, 0xE0, 0x8D }, + }, + { + { 0x46, 0xEC, 0x1D, 0x4F, 0x78, 0xCA, 0xA6, 0xEC, 0x0B, 0xCB, 0x5C, 0x8C, 0x60, 0x63, 0x04, 0x73, + 0x9B, 0xA5, 0x10, 0xB5, 0x97, 0xB4, 0xC8, 0x46, 0x30, 0x81, 0xF3, 0x1F, 0x7C, 0xDB, 0x4E, 0xC1 }, + }, + { + { 0x46, 0xED, 0x9B, 0x23, 0xA0, 0x9E, 0x91, 0x19, 0xD7, 0x96, 0xE4, 0xFE, 0xC1, 0x1C, 0x26, 0x3C, + 0x74, 0x89, 0x28, 0xB0, 0xA9, 0x90, 0x09, 0x5D, 0xA8, 0xA6, 0x3E, 0x71, 0x47, 0x19, 0x49, 0x1E }, + }, + { + { 0x47, 0x78, 0xD4, 0xA5, 0x37, 0x9B, 0x45, 0x4E, 0x69, 0x68, 0x79, 0x20, 0xC1, 0xFE, 0x05, 0xB9, + 0x17, 0xAD, 0x50, 0x0C, 0x00, 0x57, 0xE9, 0x07, 0x19, 0xDC, 0x26, 0x15, 0xAF, 0x97, 0x44, 0x22 }, + }, + { + { 0x47, 0x84, 0xF6, 0xCD, 0x59, 0x3D, 0x7B, 0x31, 0x2E, 0xB1, 0xF6, 0x19, 0xE1, 0x11, 0xDF, 0x3B, + 0x48, 0x6D, 0x1B, 0xF8, 0x37, 0x15, 0xAD, 0x8D, 0xAB, 0xA5, 0x72, 0xAF, 0xB2, 0x61, 0xD5, 0xBE }, + }, + { + { 0x47, 0xB2, 0xF4, 0xD6, 0xB8, 0x4E, 0xB7, 0x44, 0x53, 0xA9, 0xEC, 0xDC, 0x2D, 0x21, 0xC9, 0xD6, + 0xBE, 0x8A, 0x3D, 0x83, 0xF8, 0xA3, 0x8B, 0x31, 0x8D, 0x87, 0x26, 0x1A, 0xA9, 0x86, 0x98, 0x5E }, + }, + { + { 0x48, 0x08, 0x68, 0xBA, 0xB4, 0x84, 0xC5, 0x05, 0x38, 0x7C, 0x95, 0x7E, 0xBC, 0x12, 0x2F, 0x01, + 0x4D, 0x79, 0xC5, 0xEC, 0x63, 0xA8, 0x74, 0xD7, 0x33, 0xCF, 0x81, 0x7E, 0x3D, 0xED, 0x0D, 0x46 }, + }, + { + { 0x48, 0x09, 0x80, 0xFC, 0xEB, 0x50, 0xEB, 0x37, 0x4C, 0x91, 0x6C, 0xB2, 0xA4, 0x3A, 0xFB, 0xD5, + 0x35, 0x21, 0x1A, 0xEA, 0x9B, 0x12, 0xB7, 0xA4, 0x5A, 0xAF, 0x90, 0xBA, 0x9C, 0xA4, 0x70, 0x0F }, + }, + { + { 0x48, 0x13, 0x2A, 0xF3, 0x5F, 0x2F, 0x63, 0x53, 0x2E, 0xAC, 0x4D, 0x64, 0x4B, 0xA3, 0x11, 0x09, + 0xCF, 0xEB, 0xE6, 0x56, 0x48, 0x3A, 0x76, 0x43, 0x7A, 0xDC, 0xA1, 0xD8, 0x44, 0x3C, 0x22, 0xCF }, + }, + { + { 0x48, 0x1F, 0xEB, 0xED, 0xD0, 0x11, 0xFC, 0xB0, 0x3F, 0xBD, 0xD5, 0x8F, 0xC9, 0x97, 0x85, 0x20, + 0xF5, 0x00, 0x63, 0x83, 0x6D, 0x0F, 0xB0, 0x8E, 0x9F, 0xDC, 0x42, 0x7C, 0x14, 0xC7, 0x97, 0xB7 }, + }, + { + { 0x48, 0x4B, 0x8B, 0xC1, 0xE6, 0xCB, 0xBA, 0x3F, 0x01, 0xF7, 0xA9, 0x34, 0x5A, 0x88, 0x4C, 0xF5, + 0xF1, 0x5D, 0x82, 0xDA, 0x56, 0x98, 0xB6, 0xB3, 0x71, 0xE4, 0xDC, 0x6B, 0xBD, 0x6C, 0x8A, 0xE8 }, + }, + { + { 0x48, 0x5C, 0xF2, 0xB0, 0xA5, 0xE6, 0x9A, 0x0A, 0x9A, 0xAB, 0x03, 0xFF, 0x82, 0xBD, 0x6B, 0x7B, + 0x2E, 0xDF, 0x8E, 0x1B, 0x54, 0x45, 0x8E, 0x14, 0x2A, 0xEB, 0x88, 0xBA, 0xA8, 0x84, 0x0E, 0x5B }, + }, + { + { 0x48, 0x61, 0x56, 0x1A, 0xE5, 0x65, 0x86, 0xB8, 0xCD, 0xA5, 0xC2, 0xF8, 0x75, 0x0B, 0x8D, 0x34, + 0x38, 0x51, 0x53, 0xE4, 0xB8, 0x44, 0x0A, 0x9A, 0x37, 0xD6, 0x6D, 0xF8, 0x76, 0x94, 0x5F, 0x3F }, + }, + { + { 0x48, 0xC5, 0xD4, 0xFF, 0x5D, 0x08, 0x4A, 0xC1, 0x95, 0xB1, 0xA6, 0xA2, 0x19, 0xF8, 0x1B, 0xBD, + 0xF9, 0xD2, 0xE5, 0xC0, 0x70, 0xEC, 0x97, 0xDF, 0x3C, 0xB0, 0xB7, 0x3E, 0xF4, 0x70, 0xDC, 0xE9 }, + }, + { + { 0x48, 0xE9, 0xC3, 0xDB, 0x3A, 0x8F, 0x3B, 0x82, 0x60, 0x20, 0x9F, 0x05, 0x13, 0x3D, 0xBA, 0xDB, + 0xF5, 0x11, 0x7F, 0xB1, 0x0D, 0x11, 0x14, 0xA8, 0xC9, 0x26, 0x83, 0x45, 0x41, 0x59, 0x41, 0x63 }, + }, + { + { 0x49, 0x64, 0xF3, 0x85, 0xCC, 0x36, 0x3B, 0xF0, 0x61, 0x7E, 0x05, 0x66, 0xB2, 0xE0, 0xD3, 0x03, + 0x3E, 0xB1, 0x26, 0x27, 0x0E, 0x00, 0xD3, 0x22, 0xF0, 0x95, 0xEC, 0xBA, 0x13, 0x06, 0x88, 0x8C }, + }, + { + { 0x49, 0xDC, 0xF8, 0xFA, 0x68, 0xE9, 0x2B, 0x5C, 0x21, 0xFE, 0xF9, 0x3D, 0x26, 0x0C, 0x24, 0x8C, + 0xE3, 0xBE, 0x98, 0x62, 0x68, 0x68, 0xE7, 0x5A, 0x3F, 0x63, 0x34, 0xBB, 0x7D, 0xC1, 0x81, 0xEC }, + }, + { + { 0x49, 0xE0, 0xD6, 0x97, 0x5A, 0x23, 0x47, 0x67, 0x2C, 0xC4, 0x1A, 0x76, 0x86, 0x3A, 0xA9, 0x30, + 0xB6, 0x7C, 0x2A, 0xA4, 0xF6, 0x65, 0x1F, 0x9A, 0x28, 0xF7, 0xFB, 0x38, 0xB4, 0xA4, 0x41, 0x96 }, + }, + { + { 0x49, 0xF3, 0x0D, 0xB3, 0x32, 0xF4, 0x53, 0x6A, 0xD4, 0x53, 0xBC, 0x68, 0x9C, 0x2C, 0x63, 0x10, + 0x6F, 0xFF, 0xC2, 0xB1, 0x86, 0x23, 0xAA, 0x0B, 0xDE, 0xAA, 0xB4, 0xF9, 0xEB, 0x7C, 0x0E, 0x42 }, + }, + { + { 0x4A, 0x10, 0xBC, 0x78, 0x52, 0x2D, 0xAA, 0x83, 0xF4, 0x55, 0x81, 0xE5, 0xFB, 0xF6, 0x3D, 0xE8, + 0x47, 0x92, 0x4F, 0x93, 0x78, 0x3C, 0xB0, 0x5C, 0xAE, 0x3C, 0x1C, 0x5B, 0x57, 0x01, 0x04, 0x69 }, + }, + { + { 0x4A, 0x47, 0x5B, 0x01, 0xD5, 0xE2, 0x70, 0xAB, 0xEE, 0xA0, 0xCC, 0x08, 0xAF, 0x77, 0xB9, 0x6C, + 0x8A, 0xE2, 0x82, 0x6F, 0x32, 0x61, 0xA0, 0xFD, 0xA3, 0x7A, 0xCA, 0xD3, 0xC9, 0xC8, 0x60, 0x41 }, + }, + { + { 0x4A, 0x8E, 0x3A, 0xDB, 0xDC, 0xBE, 0x3E, 0x7E, 0xD8, 0x7D, 0x81, 0x4F, 0x60, 0x46, 0x1B, 0x82, + 0x36, 0x24, 0xF4, 0x9B, 0xE3, 0x5D, 0x66, 0x39, 0x09, 0xEC, 0xB1, 0x8F, 0xBF, 0x06, 0x01, 0x3F }, + }, + { + { 0x4A, 0x90, 0x3B, 0x61, 0xE8, 0x1B, 0x53, 0xDA, 0xEF, 0x8E, 0xD3, 0xF7, 0x72, 0x14, 0xC6, 0xB7, + 0x74, 0xD4, 0xD2, 0x9D, 0xD6, 0x75, 0xC9, 0x1C, 0xDB, 0x2E, 0x0C, 0xEB, 0x36, 0xBC, 0x66, 0xE7 }, + }, + { + { 0x4A, 0xA7, 0xD5, 0xCD, 0xB1, 0x8E, 0x5E, 0xAE, 0x05, 0x9D, 0x54, 0x10, 0xFD, 0x5B, 0x44, 0xA5, + 0x9E, 0xBA, 0x0D, 0xE9, 0x66, 0x3C, 0x42, 0x2F, 0x42, 0x35, 0x87, 0x04, 0xC3, 0x2C, 0x90, 0x2D }, + }, + { + { 0x4A, 0xCF, 0x9D, 0xA9, 0x05, 0x2F, 0x0B, 0x8C, 0xFF, 0xF7, 0x37, 0xCD, 0xA3, 0x39, 0x11, 0xC2, + 0x9E, 0xFC, 0xBF, 0xFD, 0x4B, 0xF4, 0xB7, 0x24, 0x83, 0xFA, 0xA7, 0xC7, 0x45, 0x1D, 0xFD, 0x42 }, + }, + { + { 0x4A, 0xD2, 0x17, 0xA9, 0x6E, 0x15, 0x30, 0xCB, 0xC5, 0xDE, 0xB8, 0x6A, 0xFF, 0x27, 0x63, 0x55, + 0x23, 0x59, 0xDA, 0x5B, 0x59, 0x82, 0xE5, 0x38, 0xBA, 0xB7, 0xC9, 0x2A, 0x15, 0x9C, 0xB8, 0x3C }, + }, + { + { 0x4A, 0xE5, 0xE5, 0x1E, 0x7F, 0xF1, 0x67, 0x47, 0x77, 0x5E, 0x2B, 0x2C, 0x05, 0x72, 0x1D, 0x95, + 0xEB, 0xEB, 0x8C, 0x46, 0x01, 0xFD, 0xDC, 0xDC, 0x90, 0xFB, 0xCE, 0x69, 0x7E, 0x35, 0x01, 0x2C }, + }, + { + { 0x4B, 0x04, 0x83, 0x2E, 0x6C, 0x99, 0xEA, 0x3A, 0x31, 0xF4, 0x83, 0x76, 0x82, 0xB5, 0x43, 0x7C, + 0x09, 0x99, 0x78, 0x1E, 0x77, 0xCB, 0xDE, 0xB8, 0x93, 0xDB, 0xFE, 0xF3, 0x1E, 0x0E, 0xE3, 0x3E }, + }, + { + { 0x4B, 0x1F, 0xC8, 0x2D, 0x24, 0x72, 0x92, 0x7A, 0xC1, 0x7C, 0x58, 0x43, 0x07, 0xCB, 0x96, 0xD6, + 0xFD, 0xDB, 0x8D, 0x50, 0xA5, 0x29, 0x53, 0x07, 0xD3, 0x0C, 0x75, 0x88, 0x59, 0x6A, 0xD4, 0x0B }, + }, + { + { 0x4B, 0x2D, 0xF9, 0xFA, 0xF4, 0x2F, 0x2B, 0x06, 0x61, 0x28, 0x80, 0xD2, 0x69, 0x04, 0x2B, 0x6C, + 0x1C, 0x51, 0xE7, 0xAC, 0xF0, 0x45, 0x91, 0xB6, 0x68, 0x66, 0x33, 0x5F, 0xCE, 0x7C, 0xC6, 0x84 }, + }, + { + { 0x4B, 0x35, 0x02, 0xFF, 0xAD, 0x64, 0x16, 0x39, 0x4F, 0x2F, 0x78, 0x47, 0x76, 0x13, 0x39, 0x69, + 0xA5, 0x5C, 0xA8, 0xF3, 0x9F, 0x78, 0x3C, 0x26, 0x0F, 0xFE, 0xDB, 0xA8, 0xFC, 0xE4, 0x19, 0x70 }, + }, + { + { 0x4B, 0x51, 0xFC, 0x11, 0x4B, 0xAC, 0x8E, 0x2D, 0x2A, 0xF2, 0xAE, 0x56, 0x84, 0x42, 0x9C, 0xCA, + 0xAB, 0x21, 0x39, 0xC9, 0xB3, 0x51, 0xBF, 0x7E, 0x1B, 0x03, 0x0A, 0xE8, 0x62, 0x4A, 0xC1, 0x72 }, + }, + { + { 0x4B, 0x5D, 0xBF, 0x01, 0x0B, 0x3E, 0x62, 0x78, 0x9C, 0x43, 0x8E, 0x07, 0x18, 0xEC, 0xB4, 0x4A, + 0x5D, 0xC0, 0x8F, 0xEB, 0xCF, 0xF7, 0x0A, 0xDF, 0x5B, 0xE0, 0x0A, 0x6E, 0x49, 0xE5, 0x71, 0xF7 }, + }, + { + { 0x4B, 0x92, 0xDC, 0xFD, 0x0E, 0xDA, 0x00, 0x5D, 0x9A, 0x37, 0x3D, 0x91, 0xA6, 0x1F, 0x23, 0x12, + 0x9D, 0x7B, 0x85, 0x3D, 0x79, 0x52, 0x87, 0xC9, 0x5C, 0x7E, 0x17, 0x24, 0xA9, 0x1C, 0x53, 0xB3 }, + }, + { + { 0x4B, 0xB1, 0x83, 0xDE, 0xB1, 0x16, 0xAC, 0x82, 0xAD, 0xC2, 0xC1, 0x0F, 0x61, 0x4C, 0x13, 0x11, + 0xBF, 0xE9, 0xAA, 0xAB, 0x0D, 0x34, 0x87, 0x00, 0xC4, 0xD2, 0xD3, 0x52, 0xFD, 0xBA, 0x67, 0x7E }, + }, + { + { 0x4C, 0x08, 0x8A, 0x68, 0x93, 0x6D, 0x5F, 0x6F, 0x12, 0xCB, 0x4A, 0x8F, 0x97, 0xA8, 0xF4, 0xAB, + 0x94, 0x96, 0x4C, 0xF6, 0xFB, 0x27, 0x6F, 0x0A, 0x9D, 0x78, 0x9E, 0xA6, 0x73, 0xB2, 0x7E, 0x04 }, + }, + { + { 0x4C, 0x33, 0x6E, 0x46, 0x9E, 0x9C, 0x01, 0xC3, 0x84, 0xAB, 0x9A, 0xA2, 0x2E, 0x9E, 0x3F, 0x36, + 0xF1, 0xE5, 0x9C, 0xFE, 0x05, 0x0F, 0x66, 0xEC, 0x07, 0xD0, 0xFD, 0x02, 0x30, 0xCC, 0xF4, 0x23 }, + }, + { + { 0x4C, 0x3A, 0x76, 0xD1, 0x2C, 0x70, 0x0C, 0x25, 0x1B, 0x02, 0x04, 0xBA, 0x9F, 0x27, 0xC0, 0xDA, + 0xCB, 0x2E, 0x47, 0x37, 0x72, 0x64, 0xCD, 0x31, 0xC4, 0xFE, 0xA4, 0xA4, 0x58, 0x5A, 0x99, 0x60 }, + }, + { + { 0x4C, 0x3C, 0x7C, 0xBC, 0x42, 0x1C, 0xE0, 0xD1, 0x84, 0x4E, 0xA7, 0xB4, 0x6F, 0x61, 0xD7, 0x87, + 0xE0, 0x4F, 0x94, 0x01, 0x71, 0x49, 0xBE, 0xA3, 0x28, 0xED, 0xC3, 0x6C, 0x20, 0xE3, 0x2F, 0xAA }, + }, + { + { 0x4C, 0x4B, 0xB6, 0x05, 0x65, 0xB5, 0xCA, 0x7F, 0x02, 0xF8, 0xF5, 0x9B, 0xFA, 0x1D, 0x1D, 0x62, + 0x71, 0xB2, 0xF1, 0x4D, 0x5C, 0xD3, 0xA0, 0x43, 0x51, 0xC3, 0xC4, 0x9D, 0x3F, 0xA0, 0x43, 0xB4 }, + }, + { + { 0x4C, 0x8A, 0x29, 0xB5, 0x81, 0x7D, 0x90, 0x99, 0xA4, 0xFE, 0xD1, 0xE7, 0x93, 0xB2, 0x8E, 0x2F, + 0xAF, 0x6E, 0x87, 0x14, 0xEE, 0x77, 0x60, 0xA7, 0xD5, 0x3E, 0x31, 0x15, 0x2C, 0x18, 0xAC, 0xC2 }, + }, + { + { 0x4C, 0xBA, 0x10, 0x70, 0x0C, 0x5F, 0xA6, 0xE0, 0x4F, 0x2E, 0xDF, 0xE5, 0x40, 0x2A, 0xDD, 0x82, + 0xBD, 0x8E, 0xAF, 0xAB, 0x38, 0x44, 0x71, 0x11, 0xBE, 0x62, 0x63, 0x7D, 0x64, 0x9F, 0xE3, 0xC6 }, + }, + { + { 0x4C, 0xD0, 0xD6, 0x7E, 0xCC, 0x3B, 0x01, 0xC8, 0xC2, 0x63, 0x4E, 0x7A, 0x73, 0x76, 0x12, 0xF6, + 0x3A, 0x17, 0xFF, 0x51, 0x0A, 0x77, 0xA8, 0x04, 0xBB, 0x33, 0x1B, 0x2B, 0xE5, 0x8D, 0xFE, 0x0C }, + }, + { + { 0x4C, 0xD6, 0xDC, 0xC0, 0x71, 0xC6, 0x81, 0x56, 0x6F, 0x1F, 0xB5, 0x46, 0x95, 0x12, 0x67, 0xE3, + 0x2A, 0x36, 0x9D, 0x64, 0xAD, 0x95, 0x1A, 0xB4, 0xCA, 0x83, 0x36, 0xF6, 0xEE, 0x86, 0xC6, 0x08 }, + }, + { + { 0x4C, 0xD8, 0x6A, 0xA6, 0x0C, 0xB3, 0x69, 0x00, 0xA9, 0xAA, 0x3B, 0x7B, 0x02, 0x7D, 0x71, 0x4C, + 0x0F, 0x76, 0x07, 0xC3, 0x56, 0x73, 0x3B, 0xA2, 0x21, 0xAA, 0xE4, 0x09, 0x47, 0xF7, 0xFA, 0xCB }, + }, + { + { 0x4D, 0x25, 0x2E, 0x6E, 0x1A, 0x15, 0x9A, 0xC2, 0x22, 0xB3, 0x2E, 0x9D, 0xD0, 0x31, 0x56, 0x7B, + 0x69, 0x31, 0x4B, 0xE8, 0xE8, 0x21, 0x1C, 0x1F, 0xB3, 0xC8, 0xB5, 0x3C, 0x26, 0x0A, 0x74, 0xE5 }, + }, + { + { 0x4D, 0x54, 0x4D, 0x4E, 0x41, 0xC0, 0xFB, 0x15, 0x5F, 0x04, 0x7D, 0x7F, 0xB1, 0xEF, 0x29, 0xD1, + 0x1B, 0xDF, 0xEC, 0xA9, 0xD4, 0x11, 0xAF, 0x8B, 0x12, 0x54, 0x1F, 0x11, 0x50, 0xC0, 0xB4, 0x44 }, + }, + { + { 0x4D, 0xCF, 0xEB, 0xDC, 0x15, 0x4B, 0x0C, 0x85, 0x46, 0x7F, 0x6F, 0x52, 0xAD, 0x80, 0x4E, 0x19, + 0x1D, 0x5B, 0xC8, 0x13, 0x51, 0x72, 0x0E, 0xC0, 0xD1, 0x9B, 0xD2, 0x5B, 0xF8, 0xF0, 0xA5, 0x53 }, + }, + { + { 0x4D, 0xE2, 0x4B, 0x7F, 0xE2, 0x6D, 0x50, 0x6E, 0x76, 0xAC, 0x3A, 0xCB, 0x32, 0x53, 0x3D, 0x50, + 0x1B, 0xC1, 0x6A, 0x2D, 0x50, 0xB5, 0x6D, 0x65, 0x96, 0xB3, 0x0B, 0x21, 0xB0, 0x1E, 0x4D, 0x09 }, + }, + { + { 0x4D, 0xE5, 0xA5, 0xDE, 0x12, 0x4E, 0x27, 0x69, 0x81, 0x79, 0x67, 0x53, 0xDD, 0x20, 0x20, 0xB1, + 0x10, 0x54, 0x09, 0x32, 0xF7, 0x4F, 0x97, 0x41, 0xD9, 0x6C, 0x1D, 0xB9, 0x50, 0x5D, 0x5F, 0xF1 }, + }, + { + { 0x4E, 0x33, 0x78, 0xEC, 0x23, 0x7C, 0x01, 0xA3, 0xCD, 0x85, 0x9E, 0x1D, 0xC9, 0x29, 0xD6, 0xA6, + 0xEF, 0xB6, 0x36, 0x7A, 0x72, 0x58, 0x41, 0xCF, 0x54, 0x13, 0x25, 0xC0, 0x61, 0xF8, 0xBF, 0xD4 }, + }, + { + { 0x4E, 0x48, 0xC1, 0x6C, 0x9D, 0x0D, 0xE5, 0xDD, 0x8C, 0x9C, 0x36, 0x37, 0x35, 0xDD, 0xFB, 0xC3, + 0xDB, 0xD2, 0x6E, 0xA0, 0xAE, 0xCD, 0xE1, 0xC7, 0x62, 0xBB, 0x56, 0xBB, 0x3F, 0xE4, 0xFA, 0x74 }, + }, + { + { 0x4E, 0x56, 0x28, 0x87, 0x76, 0x0B, 0xA6, 0xC0, 0x2C, 0x8B, 0x1D, 0x54, 0xC6, 0x05, 0xD2, 0x67, + 0x5A, 0xC9, 0x9B, 0x13, 0x24, 0x52, 0xDE, 0x6F, 0xE9, 0x6B, 0xAE, 0x54, 0x75, 0x5E, 0xD8, 0x90 }, + }, + { + { 0x4E, 0x59, 0x82, 0xAC, 0x8E, 0xB9, 0x51, 0x12, 0x2D, 0x08, 0x77, 0xBB, 0xED, 0x12, 0x8C, 0x14, + 0xC3, 0x30, 0xE4, 0xFE, 0x98, 0xB9, 0x20, 0x04, 0x91, 0x58, 0x75, 0x10, 0x38, 0x26, 0xDE, 0x30 }, + }, + { + { 0x4E, 0x6F, 0xB7, 0x05, 0x5D, 0xA4, 0x37, 0xEB, 0x46, 0x8D, 0x77, 0x94, 0x59, 0x96, 0xBE, 0x17, + 0x7E, 0x97, 0xDD, 0xA8, 0x9E, 0xF9, 0xA4, 0xB0, 0x61, 0x17, 0xB4, 0xE9, 0x75, 0xE1, 0xC5, 0x50 }, + }, + { + { 0x4E, 0xF1, 0x31, 0x9C, 0x31, 0x26, 0xF0, 0x22, 0xAD, 0x27, 0xE5, 0xC4, 0x1A, 0x6C, 0x03, 0xFE, + 0x93, 0x05, 0x70, 0x7B, 0xF2, 0x02, 0x9A, 0xF3, 0x7F, 0x9F, 0x89, 0xE0, 0xF2, 0x5A, 0x93, 0x1C }, + }, + { + { 0x4F, 0x19, 0xDD, 0x12, 0x92, 0x4C, 0xE0, 0xC1, 0x4F, 0x82, 0xC0, 0x56, 0xC7, 0xD4, 0x2B, 0xAC, + 0x43, 0xD0, 0x13, 0x3A, 0xAF, 0x89, 0xC1, 0xEF, 0xDC, 0xFA, 0x3C, 0x3E, 0x47, 0x09, 0x7D, 0x59 }, + }, + { + { 0x4F, 0x23, 0xC6, 0x87, 0x0C, 0x7C, 0xFA, 0x6D, 0x31, 0x92, 0x70, 0x3D, 0xCA, 0xFD, 0x8F, 0x46, + 0xB7, 0xBC, 0xC3, 0x72, 0xDC, 0x6D, 0x1C, 0x61, 0x00, 0x9A, 0x01, 0x75, 0x20, 0xE9, 0xF3, 0xDF }, + }, + { + { 0x4F, 0x54, 0x31, 0xA9, 0xA1, 0x5E, 0x08, 0x9B, 0x70, 0x53, 0xB6, 0x61, 0x47, 0xE2, 0xB6, 0x23, + 0xD5, 0x87, 0x6F, 0x9A, 0x04, 0x56, 0x44, 0x67, 0xAE, 0x16, 0x13, 0xF6, 0xA8, 0x15, 0x98, 0x38 }, + }, + { + { 0x4F, 0x79, 0xC7, 0x9D, 0x52, 0x62, 0x28, 0xB1, 0x0C, 0x70, 0xD3, 0xD7, 0x2A, 0xAA, 0x71, 0x87, + 0xB7, 0x2C, 0x7E, 0xCD, 0x48, 0xF9, 0x16, 0x95, 0xCA, 0x41, 0xA3, 0x6C, 0x55, 0x5C, 0x6C, 0x43 }, + }, + { + { 0x4F, 0x9A, 0xCC, 0x0B, 0x75, 0xCE, 0xAA, 0x7C, 0xB3, 0x88, 0x47, 0x09, 0x52, 0xC9, 0x98, 0x08, + 0xE4, 0xF3, 0xCB, 0x99, 0xA7, 0x73, 0xA6, 0x00, 0xCD, 0xDF, 0x2C, 0xF3, 0x1A, 0xE7, 0xEC, 0x72 }, + }, + { + { 0x4F, 0xAF, 0xAE, 0xBC, 0x7E, 0x20, 0x21, 0xC8, 0x43, 0x86, 0xEC, 0x9D, 0x82, 0xA4, 0x9C, 0x24, + 0xDB, 0xEF, 0xEB, 0x71, 0x2E, 0xA7, 0x2C, 0x0D, 0x64, 0x73, 0x51, 0x86, 0x13, 0x53, 0xCD, 0x69 }, + }, + { + { 0x4F, 0xE9, 0xF1, 0x68, 0x70, 0x6A, 0x07, 0x5D, 0xA9, 0x6C, 0x71, 0x3D, 0xA4, 0x32, 0x61, 0xE3, + 0x39, 0xA9, 0x93, 0x6E, 0xDD, 0xD5, 0x88, 0x8B, 0xD6, 0x35, 0x00, 0xCA, 0xA6, 0xEF, 0xBF, 0xA8 }, + }, + { + { 0x4F, 0xFB, 0x59, 0x19, 0xBC, 0x38, 0x5C, 0x8C, 0x58, 0xE4, 0x62, 0xBF, 0x13, 0x22, 0x10, 0xD8, + 0xB7, 0x86, 0x12, 0xD0, 0xC2, 0x2A, 0x6B, 0x6A, 0x68, 0x2E, 0x0B, 0x9E, 0x9C, 0x9F, 0x9A, 0x44 }, + }, + { + { 0x50, 0x15, 0xB9, 0xC9, 0x92, 0xC8, 0x87, 0xC2, 0x4C, 0x99, 0x15, 0x38, 0xDD, 0xD5, 0x1D, 0x01, + 0x49, 0xCD, 0x9F, 0xF3, 0x60, 0x49, 0xF3, 0xD8, 0xA0, 0xB2, 0xD2, 0x92, 0x23, 0xF7, 0x91, 0x38 }, + }, + { + { 0x50, 0x30, 0x55, 0x80, 0x8F, 0x4C, 0x49, 0xCF, 0xFC, 0xDE, 0x02, 0x27, 0x3C, 0x13, 0x16, 0x38, + 0xF4, 0x3D, 0x38, 0x56, 0x13, 0xE0, 0x73, 0x3D, 0xB4, 0x5F, 0xBD, 0x2A, 0x29, 0x11, 0xD6, 0xE4 }, + }, + { + { 0x50, 0x3C, 0x0A, 0xE6, 0x83, 0x4E, 0x46, 0xCA, 0xED, 0x49, 0x7C, 0x43, 0x73, 0x3F, 0x39, 0x7E, + 0x04, 0xD3, 0x06, 0xD5, 0xF8, 0x10, 0x11, 0xD2, 0x0E, 0x5A, 0x03, 0xC5, 0x6B, 0x89, 0xDA, 0x15 }, + }, + { + { 0x50, 0x81, 0x1D, 0x6E, 0x9D, 0xAF, 0x31, 0x2A, 0x6A, 0xC2, 0xAF, 0x6B, 0x52, 0x13, 0xC9, 0x56, + 0x20, 0xE0, 0x24, 0xE0, 0x87, 0xAE, 0x5E, 0xB0, 0xCC, 0x8A, 0xA2, 0x6F, 0xBE, 0xD9, 0xD9, 0x85 }, + }, + { + { 0x50, 0xF4, 0x78, 0x1E, 0xB1, 0xC1, 0x46, 0x70, 0xD9, 0xA5, 0x52, 0xC3, 0x49, 0x5F, 0xB9, 0xF6, + 0xAE, 0x86, 0x8A, 0xB1, 0xC9, 0xD9, 0x83, 0xE0, 0x82, 0x68, 0x65, 0xA1, 0x02, 0xEC, 0xA6, 0xD3 }, + }, + { + { 0x51, 0x19, 0xB5, 0x19, 0x01, 0x56, 0xDD, 0x6D, 0x6B, 0x34, 0x16, 0x60, 0xF8, 0xA3, 0xC6, 0x25, + 0x0A, 0xC5, 0x2D, 0x82, 0xBD, 0x26, 0xC3, 0x30, 0x7E, 0x28, 0xB4, 0x03, 0xD3, 0x84, 0x94, 0x9F }, + }, + { + { 0x51, 0x3E, 0x76, 0xB7, 0xBF, 0xB0, 0xF4, 0xEE, 0x3F, 0x09, 0x94, 0xC9, 0x56, 0xB9, 0xCD, 0x4F, + 0xFF, 0x03, 0xFA, 0x14, 0x38, 0x68, 0xCF, 0x3C, 0x59, 0x9B, 0x7C, 0x33, 0xCC, 0x41, 0xA2, 0xF4 }, + }, + { + { 0x51, 0x45, 0x0F, 0x2B, 0x44, 0x5C, 0x6D, 0xED, 0x83, 0x9C, 0xD9, 0x97, 0x86, 0xD4, 0x03, 0x01, + 0x1C, 0x2D, 0xBE, 0xDC, 0x72, 0x96, 0xDB, 0xC8, 0x55, 0x44, 0xAC, 0x1B, 0x71, 0xDA, 0x4A, 0x95 }, + }, + { + { 0x51, 0x6A, 0x2F, 0x33, 0x60, 0xC7, 0x6F, 0xC4, 0x6A, 0xB2, 0x88, 0x7F, 0x88, 0xE8, 0xD0, 0x8E, + 0xFB, 0xD8, 0x44, 0x5A, 0xA7, 0xBB, 0xD2, 0x29, 0xDF, 0xC7, 0x1A, 0x90, 0x4F, 0x55, 0xAE, 0xB4 }, + }, + { + { 0x51, 0xC5, 0x2A, 0x80, 0xBC, 0x2E, 0x24, 0xFB, 0x47, 0x1F, 0xE4, 0x5E, 0x78, 0xCF, 0x01, 0x84, + 0xE0, 0xC4, 0x67, 0x0E, 0x20, 0xE6, 0xCA, 0xDA, 0x20, 0xBD, 0xF9, 0x6E, 0x2D, 0x71, 0x20, 0xF7 }, + }, + { + { 0x52, 0x1F, 0x6C, 0x6A, 0x84, 0x36, 0x65, 0x79, 0xCA, 0x2D, 0xEA, 0xEB, 0x23, 0x15, 0xBF, 0x8E, + 0x53, 0x1C, 0x9F, 0xA4, 0x7B, 0x89, 0x9D, 0xA2, 0x72, 0x16, 0xA9, 0x98, 0x82, 0x86, 0xAF, 0xE5 }, + }, + { + { 0x52, 0x75, 0xC2, 0x38, 0x02, 0x7B, 0x22, 0xAA, 0x51, 0x9B, 0x36, 0xA8, 0x03, 0xAF, 0xF5, 0x6E, + 0xBB, 0x4E, 0x1A, 0x6C, 0x56, 0x9A, 0x81, 0xEA, 0xDE, 0xD5, 0x86, 0x35, 0xA7, 0x7B, 0x15, 0x80 }, + }, + { + { 0x52, 0xE4, 0x38, 0x85, 0x10, 0x91, 0xB9, 0x8C, 0x01, 0xFE, 0x1A, 0x5E, 0xC5, 0x4F, 0xA9, 0x8A, + 0xA0, 0x64, 0xAB, 0xA6, 0xE1, 0xB3, 0x3D, 0xD9, 0x83, 0xC4, 0x15, 0x15, 0x28, 0x96, 0xF0, 0xB8 }, + }, + { + { 0x52, 0xFF, 0x8B, 0x6E, 0x98, 0xB0, 0x96, 0x19, 0x90, 0x03, 0xDE, 0x97, 0xBC, 0xCF, 0xD2, 0xA7, + 0xF1, 0xAC, 0x57, 0xA8, 0x31, 0x35, 0xB9, 0x55, 0xFF, 0x68, 0x63, 0x36, 0xA6, 0x91, 0xD5, 0xCA }, + }, + { + { 0x53, 0x49, 0x98, 0x5A, 0x83, 0x22, 0xC0, 0xA9, 0x54, 0x1F, 0xB6, 0x81, 0x31, 0xC2, 0xA4, 0xF4, + 0x7D, 0x46, 0xC5, 0xBB, 0x3B, 0xAC, 0x23, 0x76, 0x6A, 0x26, 0x55, 0x17, 0x43, 0x71, 0x40, 0xB6 }, + }, + { + { 0x53, 0x79, 0x64, 0x58, 0xDA, 0x97, 0xCE, 0x36, 0x78, 0xF2, 0xD1, 0xD9, 0xB2, 0xA5, 0xB2, 0xFB, + 0x30, 0x75, 0xEA, 0xFA, 0xF6, 0xFF, 0x04, 0x78, 0xB5, 0x72, 0xDD, 0xFD, 0x70, 0x99, 0xAE, 0xE2 }, + }, + { + { 0x53, 0x96, 0x8B, 0x36, 0x22, 0x80, 0xFE, 0xB7, 0x27, 0x51, 0xF6, 0xED, 0xB9, 0xB2, 0x7C, 0x5F, + 0x50, 0xDD, 0x4C, 0x0E, 0x43, 0x4A, 0x54, 0x09, 0x76, 0xA5, 0xBE, 0xE3, 0x40, 0x3C, 0x92, 0x7E }, + }, + { + { 0x53, 0x96, 0xB9, 0x32, 0x9D, 0xE7, 0xB3, 0x55, 0x2E, 0x18, 0x0D, 0xDD, 0x33, 0x17, 0x63, 0x53, + 0xBA, 0xCD, 0x65, 0x66, 0x18, 0x2B, 0x2B, 0x23, 0x05, 0x71, 0x67, 0x0A, 0xCE, 0xB0, 0xC1, 0x91 }, + }, + { + { 0x53, 0x9C, 0xA9, 0xE1, 0xF0, 0x6A, 0xF2, 0x10, 0x7F, 0x96, 0xBF, 0x4B, 0x7D, 0xD4, 0xCE, 0xCD, + 0x9E, 0xD1, 0x1A, 0x38, 0xD6, 0x70, 0x91, 0x69, 0x9C, 0x56, 0x26, 0xE2, 0x7A, 0x1F, 0x54, 0xA5 }, + }, + { + { 0x53, 0xAF, 0xBD, 0xDB, 0xFA, 0xC7, 0x4E, 0xBC, 0xA1, 0xBE, 0xF4, 0xBA, 0xCD, 0xEB, 0x45, 0x29, + 0x7C, 0x43, 0xF0, 0xF7, 0x4E, 0x8D, 0x04, 0xBA, 0x81, 0x79, 0xB4, 0xF3, 0x72, 0x41, 0xBE, 0x6C }, + }, + { + { 0x53, 0xB6, 0xE2, 0xAA, 0xA6, 0x2D, 0x18, 0x5A, 0x42, 0x3E, 0x92, 0x9D, 0x8C, 0x75, 0xD7, 0xE3, + 0x2B, 0x37, 0x2F, 0x5D, 0xF0, 0x06, 0x0A, 0x73, 0xBA, 0xFA, 0xC4, 0x9A, 0xA8, 0x51, 0x1E, 0x24 }, + }, + { + { 0x53, 0xEB, 0xD5, 0x29, 0x2D, 0x32, 0xCE, 0xA0, 0x08, 0x60, 0x96, 0x78, 0xC4, 0x3B, 0xDD, 0xAB, + 0x90, 0x28, 0xBA, 0x6C, 0x17, 0x68, 0x4C, 0x51, 0x22, 0x42, 0x62, 0x43, 0xCB, 0x61, 0x2A, 0x29 }, + }, + { + { 0x53, 0xED, 0x84, 0xE5, 0xC9, 0xAD, 0x2B, 0xD1, 0xCB, 0x2C, 0xC8, 0x36, 0x52, 0xEA, 0x0C, 0xC3, + 0x71, 0xCD, 0x53, 0x4B, 0xD5, 0x97, 0xCE, 0x7E, 0x07, 0x37, 0xA0, 0xAB, 0x10, 0x65, 0x73, 0xAA }, + }, + { + { 0x54, 0x1B, 0xED, 0x16, 0x7D, 0x7D, 0xE0, 0x5F, 0x80, 0x63, 0x73, 0xA3, 0x86, 0x8F, 0x73, 0x4C, + 0xBD, 0xF7, 0x09, 0x53, 0x6B, 0x3B, 0xCF, 0x20, 0x64, 0xB2, 0x59, 0xFE, 0x2A, 0x83, 0x76, 0xAA }, + }, + { + { 0x54, 0x41, 0xFB, 0xB0, 0x5D, 0x6D, 0x4A, 0xED, 0xE0, 0x3B, 0x48, 0x2F, 0x51, 0x95, 0x1C, 0x7E, + 0xF0, 0x73, 0x45, 0x53, 0xCE, 0xC7, 0x80, 0xFB, 0xDC, 0xFA, 0x30, 0x0C, 0xC1, 0x79, 0x0D, 0x66 }, + }, + { + { 0x54, 0xA5, 0x1F, 0x64, 0xD6, 0x28, 0x61, 0x49, 0xF2, 0x3A, 0x43, 0xCC, 0x73, 0x67, 0x00, 0x0E, + 0xF0, 0x16, 0x03, 0x89, 0x9C, 0xBC, 0x94, 0xA1, 0xA4, 0xE3, 0xBE, 0xEC, 0xFE, 0xE8, 0x40, 0x66 }, + }, + { + { 0x55, 0x21, 0xF9, 0x63, 0x57, 0x81, 0x58, 0xB8, 0xD0, 0xE7, 0xC4, 0x91, 0xCD, 0xB8, 0x5C, 0x3D, + 0xE9, 0xD5, 0x2E, 0xA5, 0x1F, 0xFC, 0xB0, 0x93, 0xD3, 0x12, 0x28, 0x11, 0x13, 0x14, 0x97, 0xEB }, + }, + { + { 0x55, 0x54, 0xEC, 0x61, 0xF2, 0x57, 0x6E, 0x34, 0xE7, 0x21, 0x56, 0xA6, 0xF6, 0xFD, 0x5E, 0xE8, + 0xF4, 0x26, 0x2A, 0xB5, 0x3F, 0x7B, 0xC9, 0xF1, 0x8B, 0xB6, 0xD7, 0xEB, 0x3E, 0x16, 0x28, 0xDE }, + }, + { + { 0x55, 0xB2, 0x84, 0x5F, 0x48, 0x44, 0xA7, 0x72, 0x46, 0x36, 0x41, 0x78, 0xA1, 0x71, 0xC2, 0x26, + 0xFC, 0xFD, 0x75, 0xC7, 0x63, 0xBA, 0xD0, 0x87, 0xF6, 0x02, 0xE7, 0xB4, 0xAC, 0xD9, 0xEC, 0xB3 }, + }, + { + { 0x55, 0xD0, 0xEB, 0xE3, 0x2C, 0xBA, 0x09, 0xF6, 0x58, 0x4D, 0x9E, 0x7B, 0x57, 0x92, 0xA4, 0x03, + 0xC2, 0x1D, 0x39, 0xD6, 0xE1, 0xF5, 0xE8, 0xED, 0x37, 0xB9, 0x3F, 0xA6, 0x1D, 0x88, 0x35, 0x16 }, + }, + { + { 0x56, 0x65, 0xC2, 0xE5, 0x64, 0x33, 0x29, 0x85, 0xB8, 0xD2, 0xC4, 0xFB, 0x61, 0x14, 0x57, 0xD8, + 0xD5, 0x65, 0x9A, 0xE0, 0x05, 0x87, 0x4C, 0x6F, 0x30, 0x34, 0xD2, 0x9F, 0x2A, 0x9A, 0x78, 0x32 }, + }, + { + { 0x56, 0x81, 0x4B, 0xB4, 0x69, 0xC3, 0x87, 0x31, 0xFC, 0x0D, 0x84, 0xB8, 0x6F, 0x87, 0xB3, 0x5B, + 0xAF, 0xF3, 0x2A, 0x0F, 0x13, 0xC2, 0x61, 0x64, 0x02, 0x70, 0x36, 0xC9, 0x4E, 0x8D, 0x64, 0x3F }, + }, + { + { 0x56, 0x8F, 0x37, 0xB3, 0xAB, 0xBD, 0xA3, 0xE8, 0x03, 0x12, 0xB1, 0xB1, 0x43, 0x27, 0x2C, 0x44, + 0xE1, 0xFB, 0x78, 0xEE, 0x3F, 0x30, 0x0F, 0x5B, 0x54, 0xF5, 0xB2, 0x9A, 0x7A, 0xD8, 0xD7, 0x43 }, + }, + { + { 0x56, 0x96, 0x18, 0xD5, 0x4E, 0x3C, 0x61, 0x1B, 0x79, 0x7E, 0xEB, 0x01, 0xDF, 0x9C, 0x1C, 0x5C, + 0x14, 0x6D, 0x87, 0xB3, 0xB1, 0x29, 0xBA, 0x42, 0x29, 0x88, 0x88, 0x82, 0x10, 0x04, 0xFD, 0xCB }, + }, + { + { 0x57, 0xB8, 0xBF, 0xB7, 0x22, 0x41, 0x15, 0xB7, 0xF2, 0xAE, 0x12, 0x89, 0x74, 0xB6, 0xD0, 0x74, + 0x1B, 0xB2, 0x8F, 0x48, 0x0B, 0xE8, 0x96, 0xEE, 0x09, 0x7C, 0xEE, 0x68, 0x6E, 0xA3, 0xAA, 0xAB }, + }, + { + { 0x57, 0xC1, 0x4C, 0x78, 0x2C, 0xF5, 0x8C, 0x3B, 0x72, 0x28, 0x0F, 0xEF, 0x7D, 0xA9, 0xE2, 0xD9, + 0x71, 0xE5, 0x25, 0x03, 0xC4, 0x15, 0x99, 0x59, 0x68, 0xB6, 0x04, 0x37, 0x2A, 0x18, 0x96, 0xBF }, + }, + { + { 0x58, 0x0C, 0x45, 0xD6, 0xE2, 0x55, 0x8E, 0x7C, 0x7D, 0xA8, 0x19, 0xA5, 0x99, 0xD5, 0xB1, 0x6F, + 0x0E, 0x18, 0x79, 0xF0, 0xCB, 0x58, 0x31, 0xDF, 0xDB, 0x9A, 0xB2, 0xFF, 0x6E, 0x8E, 0x4B, 0xA0 }, + }, + { + { 0x58, 0x1A, 0xDE, 0x64, 0x84, 0x95, 0xB4, 0xB1, 0x62, 0x9C, 0x3C, 0x7C, 0x78, 0xEF, 0xBE, 0xF2, + 0x75, 0x06, 0x56, 0x65, 0xB2, 0x41, 0x1C, 0x0E, 0x5F, 0xCF, 0xBC, 0x7E, 0xB4, 0xBE, 0x34, 0x0B }, + }, + { + { 0x58, 0x36, 0x98, 0x46, 0xC0, 0x25, 0x15, 0x0E, 0xCF, 0xB2, 0x2C, 0xCE, 0xB8, 0xE4, 0xDE, 0x9A, + 0xC3, 0xD0, 0x2D, 0x9E, 0x23, 0x6C, 0x02, 0xEF, 0xB5, 0x5F, 0x63, 0xEB, 0xAF, 0xEA, 0xF7, 0x5B }, + }, + { + { 0x58, 0x98, 0xBE, 0xD1, 0x46, 0x1E, 0x18, 0x9D, 0xC5, 0x97, 0x73, 0x75, 0x9C, 0xB6, 0x9B, 0xE3, + 0x36, 0x86, 0xB2, 0xD8, 0x0E, 0x73, 0x21, 0x9F, 0x07, 0x96, 0xEB, 0x8F, 0x0F, 0x79, 0x59, 0x09 }, + }, + { + { 0x59, 0x3F, 0x23, 0x88, 0x0B, 0x59, 0xED, 0x5A, 0xA4, 0x8A, 0x2D, 0xB5, 0x01, 0x44, 0xFC, 0x8E, + 0xAB, 0xB7, 0xB5, 0x35, 0xA6, 0x2A, 0x61, 0x7B, 0x28, 0x82, 0xB8, 0x5D, 0xCF, 0x50, 0xB8, 0x02 }, + }, + { + { 0x59, 0x43, 0x09, 0x51, 0x02, 0x8B, 0x87, 0x78, 0x01, 0x67, 0xC9, 0x56, 0x47, 0x9A, 0x81, 0x5F, + 0x91, 0xBC, 0x6C, 0x00, 0xC2, 0xE5, 0x0C, 0x35, 0xF0, 0x5F, 0xCF, 0xF5, 0x27, 0x68, 0xC7, 0x37 }, + }, + { + { 0x59, 0xC9, 0xE8, 0xDF, 0x03, 0x0B, 0x1C, 0xD5, 0x89, 0xA8, 0xB3, 0x4F, 0xE7, 0x42, 0x51, 0xEA, + 0xD5, 0xA5, 0xFB, 0xE9, 0xE6, 0x13, 0x67, 0xCA, 0x76, 0xAF, 0xD9, 0xDD, 0xD9, 0xC6, 0xF1, 0x6F }, + }, + { + { 0x59, 0xE8, 0x20, 0x27, 0xA5, 0xF6, 0x28, 0x1A, 0xBC, 0xFB, 0x41, 0xA9, 0x9F, 0xFC, 0xB5, 0xBA, + 0xB1, 0x3A, 0xA1, 0x32, 0x57, 0xFC, 0x12, 0xE1, 0xDD, 0x4C, 0x38, 0x08, 0xB9, 0x64, 0x27, 0x39 }, + }, + { + { 0x59, 0xE9, 0xFA, 0x2F, 0xF0, 0x76, 0x89, 0x33, 0x28, 0x33, 0xC6, 0x40, 0xF5, 0x05, 0xFA, 0x24, + 0x09, 0xEB, 0x88, 0x93, 0x32, 0x57, 0xC1, 0x93, 0xB0, 0x07, 0xD3, 0xA2, 0x89, 0x6A, 0x98, 0x50 }, + }, + { + { 0x59, 0xEE, 0x2C, 0xB6, 0x0C, 0x80, 0xE7, 0x37, 0x33, 0x72, 0x1C, 0xA6, 0xCD, 0x0C, 0x88, 0x63, + 0xDD, 0x9A, 0xF6, 0xB8, 0x2F, 0x35, 0x0C, 0xE9, 0x88, 0x72, 0xF2, 0x2E, 0x23, 0x89, 0x5A, 0x55 }, + }, + { + { 0x59, 0xEE, 0x9B, 0x36, 0x80, 0xAE, 0x20, 0x56, 0x83, 0x9C, 0x0B, 0xF6, 0x9E, 0xE6, 0x63, 0x26, + 0x57, 0x16, 0xA8, 0xE2, 0x4C, 0xC6, 0x49, 0x95, 0xFB, 0xA6, 0xCB, 0x6F, 0x0C, 0x12, 0x39, 0xDC }, + }, + { + { 0x5A, 0x28, 0x15, 0x08, 0x72, 0x33, 0x83, 0xE1, 0x3D, 0x56, 0x37, 0x61, 0x41, 0x19, 0x23, 0xFB, + 0x20, 0xD5, 0xC2, 0x83, 0x56, 0x64, 0xAB, 0xFC, 0x9C, 0x02, 0x4E, 0x54, 0xE9, 0x5B, 0xCA, 0x87 }, + }, + { + { 0x5A, 0x2A, 0x8B, 0xCB, 0xEF, 0x60, 0xF7, 0x79, 0x13, 0xB1, 0xB6, 0xAE, 0xDF, 0xD3, 0xAE, 0x8F, + 0xE5, 0xFC, 0x42, 0x2F, 0xDB, 0x3B, 0xA7, 0x9E, 0xF7, 0x17, 0xA9, 0xBE, 0x19, 0xFA, 0x89, 0xDC }, + }, + { + { 0x5A, 0x6B, 0xB1, 0x1F, 0x2E, 0xFD, 0x5E, 0x60, 0x25, 0xC6, 0x06, 0xF5, 0x58, 0x81, 0x30, 0xE1, + 0x7C, 0x88, 0xED, 0xAE, 0xDC, 0x2A, 0xA9, 0x41, 0xE2, 0x54, 0x3A, 0xDD, 0x77, 0x25, 0x31, 0xBE }, + }, + { + { 0x5A, 0x84, 0xAF, 0xE6, 0x74, 0x05, 0xAB, 0xE8, 0x4A, 0x0C, 0xD4, 0x2C, 0x2B, 0xA2, 0xE4, 0xC8, + 0x8F, 0x35, 0xE0, 0xA5, 0x95, 0xE5, 0x69, 0xA3, 0xE1, 0x86, 0x69, 0x44, 0x40, 0x5B, 0xE7, 0x36 }, + }, + { + { 0x5A, 0x87, 0x99, 0x5F, 0x97, 0xBB, 0x5A, 0x55, 0x61, 0x7F, 0x5F, 0x8B, 0xE9, 0x53, 0xB9, 0x5E, + 0x3C, 0x45, 0xE2, 0x51, 0x5E, 0x7D, 0x38, 0xB6, 0xA4, 0x33, 0xD8, 0xC4, 0xA4, 0xAA, 0x4E, 0xF4 }, + }, + { + { 0x5A, 0x8C, 0x3A, 0x7D, 0x66, 0xEA, 0x0F, 0x6E, 0x88, 0xBE, 0x15, 0xD3, 0x28, 0x62, 0xFB, 0x39, + 0xF2, 0x5F, 0xEA, 0xAC, 0x12, 0xC2, 0xCD, 0x6A, 0x68, 0xE8, 0x9C, 0x4C, 0x30, 0xEE, 0x73, 0x63 }, + }, + { + { 0x5A, 0x8E, 0x86, 0x21, 0x2C, 0x06, 0x33, 0x94, 0x94, 0xF8, 0x5B, 0x5F, 0x85, 0x11, 0xDF, 0x00, + 0x00, 0x23, 0x94, 0x07, 0x8F, 0xFC, 0x77, 0x4D, 0x43, 0x6F, 0x0D, 0x63, 0x86, 0xD7, 0xA6, 0xF7 }, + }, + { + { 0x5A, 0xC0, 0x98, 0x2D, 0xA0, 0xC8, 0x3D, 0x0B, 0xA9, 0x38, 0x1A, 0x5C, 0xD8, 0x7B, 0x80, 0xD1, + 0x10, 0xF2, 0x6E, 0xE8, 0x39, 0x27, 0x1B, 0xC2, 0x70, 0x60, 0x8F, 0xD1, 0x43, 0x7F, 0x55, 0xB0 }, + }, + { + { 0x5A, 0xD0, 0x17, 0xDD, 0x25, 0x23, 0xF2, 0x51, 0xAF, 0x5E, 0xDC, 0xE4, 0x2A, 0x8F, 0x18, 0x5E, + 0x6D, 0x0E, 0x7D, 0xC8, 0x00, 0xF4, 0xA5, 0x9A, 0xF7, 0x7C, 0x12, 0x47, 0x37, 0x69, 0xD9, 0x37 }, + }, + { + { 0x5A, 0xE2, 0xFA, 0x90, 0x43, 0x53, 0x46, 0x3B, 0xAE, 0xE6, 0x96, 0x53, 0xB2, 0x19, 0xC1, 0x5B, + 0xC9, 0xCD, 0x80, 0xE7, 0x01, 0x40, 0x08, 0xE7, 0x26, 0x31, 0x09, 0x79, 0x52, 0x54, 0x8C, 0x60 }, + }, + { + { 0x5A, 0xED, 0x28, 0x2D, 0x88, 0x21, 0xAA, 0xDF, 0x6E, 0x01, 0x0D, 0x94, 0x66, 0x66, 0x09, 0x25, + 0x7C, 0xA0, 0xAF, 0x4C, 0xE5, 0xBD, 0x7F, 0xC9, 0xCD, 0x8C, 0x9F, 0x32, 0x5F, 0xEB, 0xAE, 0x6D }, + }, + { + { 0x5B, 0x1F, 0x32, 0x78, 0x8D, 0xD9, 0xD7, 0xE9, 0x06, 0x80, 0x7D, 0x03, 0x01, 0x45, 0xC8, 0xAD, + 0x20, 0x11, 0x03, 0x0C, 0xDB, 0xF0, 0xA6, 0x03, 0x08, 0x14, 0x93, 0x7E, 0x54, 0xD1, 0x54, 0x68 }, + }, + { + { 0x5B, 0x1F, 0x32, 0xF6, 0x88, 0x12, 0xD9, 0xC3, 0xD3, 0x34, 0x99, 0x39, 0x48, 0x4E, 0x3E, 0xDF, + 0xC6, 0xC2, 0x33, 0xB6, 0x5F, 0x9D, 0xDB, 0x3D, 0x4B, 0x30, 0xFC, 0x4B, 0xE2, 0x0E, 0x0D, 0x84 }, + }, + { + { 0x5B, 0x29, 0x3D, 0x30, 0x9F, 0x64, 0x24, 0xBC, 0x26, 0x4F, 0x4B, 0xB0, 0x18, 0xAE, 0xF5, 0x0E, + 0x63, 0xE3, 0x37, 0xD1, 0x4D, 0xF0, 0x64, 0xC5, 0x7A, 0x23, 0x52, 0x83, 0x42, 0x16, 0x1C, 0x68 }, + }, + { + { 0x5C, 0x06, 0x2F, 0x0D, 0x7E, 0x21, 0x91, 0xDF, 0xC1, 0x60, 0xE4, 0xC0, 0x59, 0xAE, 0xD4, 0xD1, + 0x83, 0xBD, 0x2D, 0x0F, 0x40, 0x98, 0x3D, 0x03, 0xB4, 0xE8, 0xDA, 0xA1, 0x1F, 0xF5, 0xE8, 0x95 }, + }, + { + { 0x5C, 0x35, 0x91, 0x21, 0x9B, 0x7A, 0x55, 0x9A, 0x0D, 0x78, 0xAF, 0xE0, 0x6D, 0xFC, 0x80, 0x85, + 0x78, 0x23, 0xD2, 0x49, 0x56, 0x30, 0x08, 0x22, 0xBB, 0x1D, 0x6E, 0x60, 0x01, 0x98, 0x11, 0xE8 }, + }, + { + { 0x5C, 0x7F, 0xF0, 0x55, 0xC2, 0xFD, 0x03, 0x3F, 0x34, 0xC4, 0xC4, 0xF7, 0xC4, 0xFB, 0x7D, 0xDA, + 0xAA, 0xFB, 0x43, 0x56, 0xC5, 0x60, 0xC9, 0x9E, 0xDF, 0xF0, 0x74, 0xDA, 0x04, 0xAF, 0x65, 0x7C }, + }, + { + { 0x5C, 0xD2, 0x44, 0x6A, 0x8E, 0x4A, 0x0F, 0xA7, 0xE3, 0xCD, 0xF8, 0x00, 0x5D, 0xED, 0xCE, 0xBA, + 0xE9, 0xE6, 0x81, 0x9A, 0x8A, 0x69, 0x87, 0x31, 0x55, 0x5B, 0x7D, 0xC9, 0xD0, 0xA2, 0x3F, 0xC0 }, + }, + { + { 0x5C, 0xEB, 0xEB, 0xD8, 0x34, 0x01, 0xB7, 0x0B, 0xAC, 0xB5, 0x4F, 0x66, 0xA9, 0xB7, 0x78, 0x55, + 0x69, 0x6E, 0xCE, 0x16, 0x7F, 0xE6, 0xC6, 0x0A, 0x05, 0x16, 0x8B, 0xE4, 0x39, 0x19, 0xC8, 0x0F }, + }, + { + { 0x5D, 0x01, 0x5E, 0x1F, 0xF4, 0x40, 0xD8, 0x3E, 0x1E, 0x1C, 0xE0, 0x99, 0x9C, 0x42, 0x6C, 0xED, + 0xD8, 0x75, 0xEE, 0x22, 0x6F, 0x79, 0xA6, 0xD6, 0xB8, 0xFB, 0xBF, 0x14, 0x6A, 0x43, 0xF4, 0x2D }, + }, + { + { 0x5D, 0x69, 0x52, 0x4D, 0xE6, 0x3A, 0x8B, 0xE0, 0x1A, 0x82, 0x31, 0xB4, 0x33, 0x3E, 0xC8, 0x97, + 0x74, 0xC5, 0x8D, 0x82, 0xB4, 0xAD, 0xBD, 0x20, 0x91, 0x42, 0x84, 0x06, 0xA0, 0x6B, 0x16, 0xB0 }, + }, + { + { 0x5E, 0x23, 0xDB, 0xD4, 0xD0, 0xC9, 0xBF, 0xB1, 0x5F, 0x61, 0x6A, 0x95, 0x17, 0xA1, 0x30, 0xD8, + 0x66, 0xA8, 0xCB, 0x0B, 0x18, 0x96, 0x3D, 0x54, 0xE7, 0xED, 0xAE, 0xE2, 0x61, 0xCB, 0x1C, 0x19 }, + }, + { + { 0x5E, 0xAE, 0xD7, 0x13, 0x5C, 0x21, 0x69, 0x76, 0xAD, 0x4E, 0xDC, 0x4D, 0xBB, 0x3F, 0x1F, 0xA1, + 0xF7, 0xC2, 0x85, 0x54, 0xF1, 0x4F, 0x1A, 0xD1, 0xC6, 0x2A, 0xBA, 0xBB, 0x00, 0xCF, 0x7B, 0x66 }, + }, + { + { 0x5F, 0x1E, 0xAE, 0xF6, 0xB7, 0xE3, 0x2F, 0x26, 0xC8, 0x7A, 0xD9, 0x4A, 0x10, 0xF9, 0x0B, 0xF2, + 0xB3, 0x4F, 0x0E, 0x21, 0x13, 0x71, 0x37, 0x0C, 0xB3, 0xDA, 0xCD, 0xE1, 0x00, 0x63, 0x9D, 0xBE }, + }, + { + { 0x5F, 0x30, 0xF0, 0x3A, 0x89, 0xBF, 0x8F, 0x2B, 0x9B, 0x82, 0xC9, 0x35, 0xF8, 0x8E, 0xC6, 0x87, + 0xEC, 0x07, 0xBC, 0xC8, 0x0E, 0xC8, 0x24, 0xE5, 0x74, 0x51, 0x72, 0xB4, 0x50, 0x29, 0x90, 0xBE }, + }, + { + { 0x5F, 0x5C, 0xCA, 0x19, 0x1E, 0xC9, 0x2F, 0x4D, 0xAD, 0x96, 0x6D, 0xAA, 0xFD, 0x6D, 0xE7, 0x56, + 0x34, 0x44, 0x18, 0x60, 0x4D, 0x8A, 0xD5, 0x0A, 0x78, 0x14, 0xF4, 0x39, 0xF4, 0xF2, 0x0A, 0xF1 }, + }, + { + { 0x5F, 0x85, 0xDE, 0xA9, 0xBB, 0x0D, 0x94, 0x81, 0xC2, 0x47, 0x23, 0x2E, 0xF2, 0x5C, 0x77, 0xE8, + 0x4E, 0x68, 0x95, 0x60, 0x0D, 0x0B, 0xDA, 0xF8, 0xE7, 0x0E, 0x82, 0x8A, 0xDC, 0x6F, 0xD4, 0xFF }, + }, + { + { 0x5F, 0x8B, 0x88, 0x8E, 0xE9, 0x6C, 0x0C, 0x0F, 0x5A, 0x91, 0x72, 0x90, 0xAC, 0xA6, 0x5A, 0xFD, + 0x6E, 0xBD, 0xAE, 0x05, 0xA0, 0x2A, 0xAF, 0x04, 0x29, 0xE9, 0x72, 0xEC, 0x01, 0x90, 0xEC, 0xFC }, + }, + { + { 0x60, 0x1A, 0xF7, 0x2F, 0xB0, 0x6F, 0xE6, 0x68, 0x79, 0x92, 0xC5, 0x8F, 0xAC, 0x32, 0xE3, 0x0C, + 0x01, 0x9E, 0xAF, 0x41, 0xE0, 0xB3, 0x85, 0x7E, 0xA9, 0x00, 0xA1, 0x61, 0x08, 0xEB, 0x34, 0xDE }, + }, + { + { 0x60, 0x28, 0x6B, 0x5F, 0xB1, 0xA4, 0x7F, 0x8C, 0x79, 0x3E, 0xBE, 0x0A, 0x4F, 0x9E, 0xA0, 0xEF, + 0xB6, 0xFF, 0xF7, 0xD0, 0x1C, 0x79, 0x10, 0xEF, 0xF7, 0x4E, 0xD3, 0xB2, 0x88, 0xF4, 0xE6, 0x27 }, + }, + { + { 0x60, 0x38, 0x42, 0xEB, 0x89, 0xDA, 0xAD, 0xF7, 0x17, 0xF7, 0xE0, 0x91, 0x22, 0xA0, 0x6A, 0xC8, + 0x19, 0x04, 0x51, 0x2C, 0x2D, 0xA1, 0xCB, 0xC2, 0x90, 0xCC, 0x52, 0xD4, 0xDC, 0x0C, 0x7F, 0xEC }, + }, + { + { 0x60, 0x47, 0xA1, 0x61, 0x21, 0xDA, 0x00, 0xB4, 0x31, 0x60, 0x6D, 0x15, 0xE8, 0x40, 0x5F, 0x0D, + 0x19, 0xCF, 0xFE, 0x7C, 0xDE, 0x91, 0x69, 0x8C, 0x79, 0x4B, 0x3A, 0x35, 0x1D, 0xB1, 0x4D, 0x6B }, + }, + { + { 0x60, 0x4C, 0xE5, 0x2B, 0x8F, 0xC5, 0x72, 0xF0, 0xEC, 0x55, 0xF1, 0xC6, 0x37, 0x08, 0xDF, 0xD9, + 0x7E, 0xF1, 0xC7, 0x99, 0xD4, 0x8C, 0x27, 0x6B, 0x37, 0x34, 0x75, 0xE3, 0xA4, 0x61, 0xF3, 0x12 }, + }, + { + { 0x60, 0x69, 0xE0, 0x4E, 0xF3, 0x7E, 0xE3, 0x29, 0xCF, 0x15, 0xE9, 0xFD, 0x64, 0x1F, 0x18, 0x24, + 0xB8, 0x4B, 0x34, 0x4B, 0x63, 0x80, 0x30, 0x05, 0x81, 0x66, 0x2B, 0x2D, 0x44, 0x31, 0x3A, 0x95 }, + }, + { + { 0x60, 0xA3, 0xFB, 0x74, 0x7C, 0xF6, 0x5B, 0x04, 0xE9, 0xBE, 0x15, 0xDA, 0x26, 0xA9, 0xDD, 0x99, + 0x59, 0x71, 0xA9, 0x1A, 0x6F, 0x02, 0xE0, 0x14, 0xA9, 0xD7, 0x4D, 0x1F, 0x69, 0x45, 0xE1, 0x2E }, + }, + { + { 0x60, 0xCA, 0x81, 0xE3, 0x5B, 0x9A, 0x6F, 0x07, 0xE1, 0x3C, 0x02, 0xAE, 0x41, 0x15, 0xB0, 0x00, + 0x54, 0x30, 0xCF, 0x46, 0x0E, 0xFC, 0x7D, 0xBA, 0xF1, 0x5F, 0x51, 0xF7, 0xA9, 0x4A, 0xD1, 0x6A }, + }, + { + { 0x60, 0xDF, 0xF2, 0xAB, 0xA6, 0x5C, 0x74, 0xB5, 0x07, 0x49, 0x16, 0x32, 0xAD, 0x81, 0xC0, 0x9A, + 0x54, 0x71, 0xAE, 0xE8, 0x7C, 0xA1, 0x58, 0x03, 0x5D, 0x66, 0x79, 0x47, 0x83, 0x5E, 0xA8, 0xBF }, + }, + { + { 0x61, 0x65, 0xFD, 0x7A, 0x3D, 0xCB, 0x29, 0xAD, 0x23, 0xCC, 0x44, 0x64, 0x4F, 0xC2, 0x23, 0x25, + 0x94, 0x5D, 0xDF, 0xED, 0x0C, 0x18, 0xB3, 0x5B, 0x17, 0x43, 0xAD, 0x96, 0x28, 0x43, 0x69, 0xBE }, + }, + { + { 0x61, 0x91, 0x5B, 0xC8, 0xDF, 0x67, 0x8C, 0x52, 0xA2, 0x3C, 0x2D, 0x53, 0xC6, 0x47, 0x31, 0x4E, + 0x63, 0x6E, 0xEF, 0xC5, 0x40, 0x81, 0xA7, 0x0D, 0x3A, 0xC1, 0x45, 0x28, 0x66, 0x1D, 0x62, 0xFF }, + }, + { + { 0x61, 0xA7, 0x62, 0xEF, 0x47, 0xBC, 0xA4, 0xEE, 0x77, 0xA5, 0xC8, 0xAF, 0x03, 0x98, 0x9A, 0x9D, + 0xEA, 0xCA, 0x4D, 0x82, 0x8A, 0x53, 0xD9, 0x23, 0xE7, 0x0B, 0xFB, 0xC7, 0x25, 0x4A, 0xC7, 0x70 }, + }, + { + { 0x61, 0xC8, 0xF2, 0xE2, 0x97, 0xD0, 0x51, 0x91, 0x32, 0x07, 0xEF, 0x02, 0x93, 0x63, 0xB8, 0xE7, + 0x33, 0x7A, 0x39, 0x6E, 0x09, 0x9C, 0xA9, 0xDC, 0xF8, 0x07, 0x33, 0x97, 0x32, 0x66, 0x4B, 0x74 }, + }, + { + { 0x62, 0x2E, 0xC3, 0xBE, 0x7C, 0xF5, 0xE4, 0xE6, 0x3F, 0x74, 0x18, 0x69, 0x28, 0x74, 0x40, 0x05, + 0xCB, 0xB7, 0x8D, 0xF3, 0x06, 0xB8, 0x67, 0xC3, 0xFC, 0xAD, 0x5E, 0x2B, 0xA7, 0x53, 0x96, 0x83 }, + }, + { + { 0x62, 0x61, 0x3D, 0xA8, 0x69, 0xE5, 0xA2, 0x36, 0xC1, 0x29, 0x21, 0x73, 0x87, 0x25, 0xE9, 0x7C, + 0x68, 0x05, 0x8D, 0x04, 0x0A, 0x07, 0xE9, 0x65, 0x4B, 0x2D, 0xF5, 0xE2, 0xD8, 0x7D, 0x05, 0x1F }, + }, + { + { 0x62, 0x6F, 0x7E, 0xB4, 0xFD, 0x9B, 0x71, 0xFF, 0xAA, 0x0C, 0x8E, 0xC9, 0x65, 0x54, 0x64, 0xE6, + 0x5E, 0x7F, 0x96, 0xCF, 0xA3, 0x82, 0x73, 0x97, 0x41, 0x35, 0x66, 0xAA, 0x2C, 0xC1, 0xE5, 0x72 }, + }, + { + { 0x63, 0x35, 0x8C, 0x6D, 0xEB, 0xDF, 0x48, 0x2B, 0xB2, 0xD3, 0x21, 0x13, 0xD3, 0xF0, 0xB1, 0x73, + 0x77, 0xE2, 0xF7, 0xC9, 0x25, 0xB9, 0xFE, 0xB3, 0x47, 0x8B, 0xD9, 0x94, 0x56, 0x31, 0x3E, 0x78 }, + }, + { + { 0x63, 0x64, 0x15, 0x61, 0x77, 0xDC, 0xDF, 0x60, 0x4D, 0xF9, 0x1E, 0x31, 0x32, 0x2E, 0x57, 0x74, + 0x69, 0x1E, 0x0C, 0x41, 0xFA, 0x0D, 0x2F, 0x25, 0x7A, 0xD7, 0xF9, 0xF0, 0x25, 0x98, 0x14, 0x45 }, + }, + { + { 0x63, 0x65, 0xEB, 0x4E, 0x37, 0xEA, 0x23, 0x8B, 0xBC, 0x40, 0xA7, 0x65, 0x1E, 0xDD, 0x9A, 0x1C, + 0x65, 0xFC, 0x54, 0xE3, 0xB8, 0x8F, 0xA7, 0xA0, 0x6D, 0x92, 0xC6, 0x13, 0xAE, 0xDE, 0xD6, 0x5D }, + }, + { + { 0x63, 0x6A, 0x25, 0xBD, 0xDB, 0xB6, 0x5E, 0x7C, 0xC0, 0xE6, 0x1F, 0x91, 0xCA, 0xFE, 0xB1, 0xFE, + 0x5D, 0xD2, 0x67, 0xAC, 0x67, 0x32, 0x25, 0xCC, 0x81, 0x8E, 0xA0, 0x2B, 0x9C, 0xC9, 0x4B, 0xE2 }, + }, + { + { 0x63, 0x80, 0x65, 0xEC, 0x95, 0xF1, 0xEA, 0x81, 0xD9, 0x5B, 0xA4, 0xDB, 0x9E, 0xA9, 0xA2, 0xEF, + 0xE2, 0xD6, 0xCD, 0x78, 0x75, 0x88, 0x67, 0x04, 0x5C, 0x06, 0xB6, 0x48, 0xA5, 0xDA, 0x89, 0xB2 }, + }, + { + { 0x63, 0xEA, 0x63, 0x4F, 0x3C, 0x84, 0x62, 0x3C, 0xF7, 0xB0, 0x61, 0x29, 0xE2, 0x7A, 0xCD, 0xF2, + 0x13, 0xD2, 0x52, 0xBE, 0x85, 0x87, 0xEB, 0xB0, 0x7A, 0x63, 0x68, 0x07, 0x78, 0x2B, 0xBD, 0x61 }, + }, + { + { 0x64, 0x87, 0xC9, 0x20, 0xB1, 0x30, 0x16, 0xF4, 0xA0, 0xAA, 0xD3, 0x9F, 0xE1, 0x97, 0x8B, 0xEC, + 0xE9, 0xF4, 0xFA, 0x13, 0xED, 0x0C, 0x42, 0x4D, 0xAA, 0x41, 0x6B, 0xAA, 0x75, 0x89, 0x62, 0x01 }, + }, + { + { 0x64, 0xD4, 0x92, 0x41, 0x6E, 0xE0, 0x55, 0x57, 0x9C, 0x46, 0x3B, 0x21, 0x1A, 0xFE, 0xF7, 0x46, + 0xC3, 0x30, 0xCA, 0x05, 0xF4, 0x4D, 0x85, 0x90, 0x85, 0x59, 0x5D, 0x6F, 0x10, 0xE5, 0x0E, 0xC4 }, + }, + { + { 0x64, 0xDE, 0xB1, 0x36, 0xA4, 0x3E, 0x7D, 0x21, 0x62, 0x29, 0x9B, 0x82, 0xA4, 0xFE, 0x8D, 0xB9, + 0x60, 0xC6, 0x61, 0x7C, 0x60, 0x3B, 0x7D, 0x96, 0x72, 0xA6, 0x2C, 0xA1, 0x40, 0xA6, 0xDA, 0x6A }, + }, + { + { 0x65, 0x66, 0x00, 0xA4, 0x5E, 0x45, 0x6A, 0xBA, 0x5B, 0x00, 0x8D, 0x87, 0x91, 0x54, 0xB7, 0x69, + 0x0D, 0x7F, 0x27, 0x31, 0x02, 0x09, 0x7D, 0x8F, 0xD8, 0xC3, 0xDE, 0xAB, 0x30, 0xD8, 0x4A, 0xB2 }, + }, + { + { 0x65, 0xC1, 0x3A, 0x93, 0x7F, 0xCD, 0x1E, 0xAC, 0x7D, 0x52, 0x33, 0x03, 0xB9, 0x09, 0x91, 0x75, + 0xFE, 0xB7, 0xC3, 0x57, 0x0F, 0xBD, 0xA2, 0xE5, 0x7D, 0x57, 0xD3, 0xFC, 0x47, 0x24, 0xDC, 0xB5 }, + }, + { + { 0x65, 0xEB, 0x8A, 0x1C, 0x57, 0x67, 0x6D, 0x21, 0x53, 0xF2, 0x1A, 0x34, 0x11, 0xB8, 0x9C, 0xCD, + 0x71, 0xBC, 0xC8, 0xC9, 0xDC, 0x2C, 0xC6, 0x1F, 0x83, 0x65, 0x27, 0xE0, 0x81, 0xC0, 0x56, 0x72 }, + }, + { + { 0x65, 0xED, 0x61, 0xA8, 0x8C, 0x55, 0xEF, 0xB0, 0x38, 0x07, 0x1A, 0xEE, 0xDE, 0xF8, 0xE1, 0x83, + 0xE2, 0x37, 0x38, 0x46, 0x97, 0x26, 0xEB, 0x99, 0x68, 0x0C, 0xD2, 0x44, 0x72, 0x73, 0x6B, 0xEC }, + }, + { + { 0x66, 0x07, 0xDF, 0xFF, 0x5D, 0x0B, 0xD3, 0xC9, 0x75, 0x92, 0xCC, 0x75, 0x39, 0x4D, 0x8B, 0x58, + 0x59, 0xF7, 0x5D, 0xA5, 0x12, 0x31, 0x34, 0xD7, 0xC7, 0xE2, 0x1A, 0xA7, 0x48, 0x91, 0x84, 0xEB }, + }, + { + { 0x66, 0x30, 0xB4, 0x4A, 0x1A, 0x28, 0xDE, 0xCB, 0x3B, 0x58, 0xED, 0xCE, 0xEC, 0x13, 0xB2, 0xC5, + 0xA7, 0x4F, 0x38, 0x6A, 0x1B, 0xF1, 0x18, 0x73, 0x75, 0xDE, 0x17, 0x8E, 0x4E, 0x9B, 0xB2, 0x8E }, + }, + { + { 0x66, 0x49, 0xE0, 0x34, 0xC6, 0x9D, 0x14, 0x24, 0xD2, 0x8C, 0x42, 0x68, 0xBA, 0x95, 0x1E, 0xE1, + 0xB4, 0x8A, 0xE1, 0x5F, 0xEB, 0xE7, 0xD6, 0xBE, 0x9D, 0x75, 0xF6, 0xA4, 0xAC, 0x7A, 0xC2, 0x53 }, + }, + { + { 0x66, 0x50, 0xB2, 0xEA, 0x64, 0x4C, 0x3F, 0x4E, 0x8C, 0x9E, 0x3C, 0x46, 0xAC, 0xEA, 0xC4, 0x52, + 0x33, 0xD8, 0x66, 0xE3, 0x98, 0xFF, 0x90, 0xEB, 0x59, 0xB2, 0xC6, 0x25, 0x20, 0x82, 0xAC, 0x04 }, + }, + { + { 0x66, 0x72, 0x1F, 0xE0, 0x69, 0xF1, 0xAA, 0x25, 0x32, 0x11, 0x68, 0x0E, 0xAD, 0x5C, 0x9E, 0x3D, + 0x12, 0x3C, 0x21, 0x24, 0xD3, 0xA2, 0xA4, 0xBD, 0x78, 0x82, 0xF7, 0x36, 0x5A, 0x33, 0x05, 0xA3 }, + }, + { + { 0x66, 0x79, 0x28, 0x7E, 0xBB, 0xC5, 0x67, 0x48, 0xEE, 0xD6, 0x8F, 0x9E, 0x4C, 0xCF, 0x24, 0xEF, + 0x96, 0xA4, 0x1F, 0x73, 0xBB, 0x83, 0x4A, 0x51, 0x71, 0x64, 0xF0, 0x41, 0xCC, 0x5D, 0x86, 0x05 }, + }, + { + { 0x66, 0xBE, 0x7E, 0xA1, 0x13, 0x8B, 0xCB, 0xA4, 0xDE, 0x0B, 0x41, 0x28, 0x5D, 0x9A, 0x13, 0x3F, + 0xA7, 0xF5, 0x70, 0xA3, 0xC8, 0x13, 0x55, 0x79, 0xB8, 0x60, 0x19, 0x9D, 0x0A, 0x51, 0x45, 0x7C }, + }, + { + { 0x66, 0xC9, 0x9A, 0x49, 0x61, 0x2E, 0x60, 0x18, 0x90, 0x02, 0xE2, 0x03, 0x04, 0xD2, 0xFC, 0xC5, + 0xBE, 0x07, 0x59, 0xDF, 0xBA, 0x84, 0x04, 0x70, 0x7E, 0x85, 0x37, 0x00, 0x26, 0x51, 0x84, 0x85 }, + }, + { + { 0x67, 0xA1, 0xBD, 0x09, 0x91, 0x6A, 0x22, 0xC0, 0x53, 0x3D, 0x0B, 0xF6, 0xCA, 0x1F, 0x3B, 0x03, + 0x3F, 0xAD, 0xCA, 0xC1, 0xFF, 0x8A, 0x89, 0x94, 0xD7, 0xF5, 0xC4, 0x79, 0xAD, 0x3A, 0x2E, 0xF5 }, + }, + { + { 0x67, 0xC3, 0xC0, 0xA1, 0x60, 0xE9, 0x28, 0x5E, 0x35, 0xA4, 0x22, 0xBB, 0x43, 0x4B, 0xFF, 0xFF, + 0xEE, 0x28, 0x79, 0xC6, 0xC0, 0xA5, 0x69, 0x36, 0x56, 0xE7, 0x73, 0xA6, 0xDD, 0x68, 0x5F, 0x0E }, + }, + { + { 0x67, 0xCF, 0x34, 0x6C, 0xF2, 0x46, 0x77, 0x1B, 0x3F, 0x5F, 0x3E, 0x51, 0xCD, 0x75, 0x4E, 0x10, + 0x93, 0x27, 0x3D, 0x35, 0x69, 0x88, 0x80, 0x84, 0x26, 0xF5, 0xDD, 0x2E, 0xD4, 0x8B, 0xBF, 0x49 }, + }, + { + { 0x68, 0x6E, 0xA9, 0xA7, 0x73, 0x2C, 0x5A, 0x6E, 0xDC, 0xA8, 0x44, 0xA6, 0x1F, 0x9D, 0xFD, 0x05, + 0xAC, 0x2F, 0x80, 0xF6, 0xC7, 0xED, 0x5E, 0xDF, 0x19, 0x9B, 0x8B, 0xD2, 0x78, 0x5D, 0x92, 0xFC }, + }, + { + { 0x68, 0x99, 0x4C, 0xFE, 0x06, 0x8D, 0xE8, 0x75, 0xEC, 0x56, 0x82, 0xBE, 0x3C, 0x5C, 0xB3, 0x25, + 0x47, 0x3B, 0x21, 0x25, 0xE6, 0xF1, 0xF3, 0xEA, 0x57, 0xCC, 0x09, 0xFE, 0x25, 0xB5, 0xB6, 0x93 }, + }, + { + { 0x68, 0xD3, 0x49, 0x5B, 0x3C, 0xAE, 0xE4, 0x1A, 0x70, 0x9A, 0x41, 0x65, 0xD4, 0x9D, 0xFE, 0xE7, + 0x4D, 0xCF, 0xB6, 0xD1, 0x3F, 0x7C, 0xF9, 0x43, 0xAA, 0xFF, 0xB9, 0xE6, 0xDC, 0x81, 0xDB, 0x04 }, + }, + { + { 0x69, 0x01, 0x4B, 0xBC, 0x84, 0x29, 0xD8, 0x5F, 0x41, 0xC2, 0x22, 0xD9, 0x7F, 0x7E, 0xD5, 0x35, + 0xCF, 0x81, 0x23, 0x9A, 0xF2, 0x7A, 0xCC, 0x88, 0x70, 0xDC, 0xD4, 0x08, 0x34, 0x8B, 0x48, 0xBA }, + }, + { + { 0x69, 0x21, 0x1F, 0x36, 0x3A, 0x2D, 0xBE, 0x01, 0x5B, 0x31, 0xCB, 0xD9, 0xFC, 0x5E, 0x94, 0xC2, + 0xF6, 0xF4, 0x3C, 0x58, 0xDB, 0xDE, 0xE9, 0xE3, 0xE4, 0x6B, 0x19, 0xD7, 0x59, 0xBB, 0xB8, 0x81 }, + }, + { + { 0x69, 0x44, 0xFE, 0x2E, 0xFD, 0x6C, 0x78, 0xE1, 0x40, 0x74, 0xBC, 0x3D, 0x9A, 0xC2, 0x3C, 0x8A, + 0x65, 0x7D, 0x0E, 0x8E, 0xBD, 0xF7, 0x4E, 0xC2, 0xCD, 0x26, 0x67, 0x74, 0x9D, 0x9D, 0xAD, 0xCB }, + }, + { + { 0x69, 0x52, 0x89, 0x99, 0x34, 0xD7, 0x23, 0x2B, 0xF9, 0xF6, 0x96, 0x8B, 0xCA, 0x13, 0x43, 0x92, + 0x47, 0xBF, 0xC3, 0x65, 0x92, 0x98, 0x00, 0x3D, 0xB1, 0xEE, 0xB7, 0x43, 0x92, 0x81, 0xB1, 0xD6 }, + }, + { + { 0x69, 0x54, 0x0E, 0x3B, 0xAB, 0x9A, 0x6E, 0x46, 0x58, 0x62, 0xCF, 0x2B, 0xCA, 0x5A, 0x63, 0x62, + 0x55, 0xF6, 0x9D, 0x46, 0x26, 0x39, 0xD3, 0xD9, 0x23, 0xFF, 0x93, 0x91, 0x90, 0x1B, 0x6C, 0x92 }, + }, + { + { 0x69, 0x75, 0x67, 0xBB, 0xAC, 0x94, 0xEE, 0xC3, 0xE6, 0xFA, 0x4A, 0x4E, 0x46, 0xFA, 0x51, 0x74, + 0x05, 0xF3, 0x77, 0xC0, 0xDE, 0xE3, 0xD4, 0x29, 0x91, 0x4E, 0x6B, 0x7E, 0xA0, 0x8C, 0xB1, 0xA6 }, + }, + { + { 0x69, 0xD3, 0x38, 0xE5, 0xD8, 0xC0, 0x69, 0xE7, 0xDC, 0x10, 0xD3, 0x82, 0x1F, 0x7A, 0x83, 0x0D, + 0xEB, 0x5D, 0x95, 0x7C, 0x8E, 0xC6, 0xEC, 0xD2, 0x5A, 0xF7, 0x24, 0x3E, 0xD0, 0xE4, 0xDC, 0x26 }, + }, + { + { 0x6A, 0x9C, 0x89, 0x45, 0x1E, 0xF3, 0xC9, 0xE3, 0xA2, 0x96, 0x2F, 0x8D, 0xB6, 0xF8, 0x7D, 0x20, + 0x77, 0x8D, 0x05, 0xA8, 0x74, 0x34, 0xA0, 0x78, 0x2B, 0x02, 0x53, 0x6D, 0xCD, 0x02, 0x4B, 0x4B }, + }, + { + { 0x6A, 0xAC, 0xC5, 0x09, 0x2F, 0x12, 0xBC, 0x94, 0xA0, 0xAD, 0x0E, 0x9E, 0xF6, 0x36, 0x43, 0x7D, + 0x36, 0x0D, 0xC7, 0xC9, 0xF1, 0x40, 0x44, 0x17, 0xA3, 0x36, 0x91, 0x94, 0x4E, 0x76, 0x31, 0x36 }, + }, + { + { 0x6A, 0xC3, 0x2D, 0xA9, 0x16, 0x8F, 0x70, 0xD0, 0x9F, 0xE9, 0xF7, 0x55, 0x3E, 0x67, 0x0F, 0xA4, + 0xAA, 0xAC, 0xE8, 0x7B, 0x5A, 0x0B, 0x9A, 0x3F, 0x22, 0x2D, 0x7A, 0x8B, 0xBA, 0x76, 0xD2, 0xF2 }, + }, + { + { 0x6A, 0xE7, 0x98, 0xD7, 0xDE, 0x07, 0x84, 0x90, 0xA5, 0x0F, 0x73, 0x89, 0x86, 0xD4, 0x03, 0x39, + 0x42, 0x97, 0x9D, 0xE2, 0x42, 0x6A, 0xFA, 0x95, 0x42, 0x24, 0x2E, 0x76, 0x3F, 0xEC, 0xF4, 0xA6 }, + }, + { + { 0x6B, 0x15, 0x66, 0xBF, 0x94, 0xA2, 0x26, 0xEE, 0x7C, 0xF3, 0x67, 0x5D, 0x63, 0x92, 0x73, 0x16, + 0x54, 0x56, 0x4B, 0x05, 0xC7, 0x2F, 0xCD, 0x7F, 0x6A, 0x97, 0xBA, 0xA1, 0x53, 0xE7, 0x6A, 0x18 }, + }, + { + { 0x6B, 0x37, 0xDD, 0x56, 0xDB, 0xC9, 0x97, 0x01, 0xEE, 0x6B, 0x55, 0x75, 0x23, 0x8B, 0x1E, 0xCF, + 0x35, 0xDF, 0x1B, 0x5E, 0x85, 0x91, 0x09, 0x1D, 0xB6, 0x8C, 0xC3, 0x5B, 0xD5, 0xA3, 0x6C, 0xE4 }, + }, + { + { 0x6B, 0x4A, 0x8C, 0xB6, 0x07, 0xF5, 0x1C, 0x83, 0x0D, 0xE7, 0x20, 0xF4, 0xBB, 0xDE, 0xDF, 0x49, + 0x10, 0x15, 0x13, 0xDF, 0xD1, 0xDB, 0x0B, 0x0A, 0x97, 0xCC, 0x3F, 0xDD, 0x9A, 0x39, 0xC6, 0xE7 }, + }, + { + { 0x6C, 0x07, 0x12, 0x67, 0x53, 0x03, 0x6A, 0x21, 0xBD, 0x20, 0xFC, 0x64, 0xEC, 0x6B, 0xA6, 0xE7, + 0x32, 0x59, 0x19, 0x1C, 0xBB, 0xBB, 0xFF, 0x21, 0x03, 0x74, 0xC8, 0x9E, 0x64, 0xF4, 0xD8, 0xD6 }, + }, + { + { 0x6C, 0x21, 0xDC, 0xB3, 0x38, 0x5C, 0x2B, 0x75, 0xA1, 0x5B, 0x2F, 0x61, 0x22, 0xFB, 0x58, 0xA1, + 0x24, 0x86, 0xAA, 0x4A, 0x4D, 0x23, 0x9E, 0xD0, 0x16, 0x74, 0x35, 0x8C, 0x9C, 0x71, 0x48, 0x6D }, + }, + { + { 0x6C, 0x67, 0xE6, 0x03, 0x63, 0x52, 0x5A, 0x65, 0x0A, 0x86, 0xB5, 0xE9, 0x46, 0x09, 0xDE, 0x13, + 0xF6, 0xBD, 0xB9, 0x0E, 0xCC, 0x2B, 0xB2, 0xA1, 0x8F, 0xDA, 0x99, 0x59, 0x52, 0x3A, 0x18, 0xD9 }, + }, + { + { 0x6C, 0x72, 0x94, 0x87, 0xC9, 0x02, 0x5D, 0x18, 0x10, 0x51, 0x29, 0xFA, 0x0B, 0xA2, 0x94, 0x4D, + 0xA8, 0x6A, 0xF1, 0xDB, 0x2D, 0x03, 0x4B, 0xE2, 0xBB, 0x73, 0x64, 0x50, 0x0C, 0x05, 0xA6, 0xDE }, + }, + { + { 0x6C, 0x8D, 0x4E, 0x52, 0x7E, 0x74, 0x08, 0x82, 0x6D, 0xB8, 0x4D, 0x04, 0x1A, 0x0E, 0x29, 0xD6, + 0xDE, 0x13, 0xA6, 0x1E, 0x63, 0x6B, 0xF6, 0xB6, 0xF5, 0xF6, 0x75, 0x42, 0x7A, 0xCE, 0xCE, 0x9E }, + }, + { + { 0x6C, 0x8F, 0xD1, 0xE6, 0xE1, 0x1B, 0xAF, 0xA6, 0x17, 0x78, 0x13, 0xA0, 0x44, 0x40, 0xB1, 0xB9, + 0x6A, 0x1C, 0xDB, 0x7C, 0x2D, 0x70, 0x3F, 0x55, 0xDE, 0x85, 0x7C, 0x80, 0xA8, 0x9E, 0x73, 0x25 }, + }, + { + { 0x6C, 0xC6, 0xDC, 0xDA, 0x58, 0xC6, 0x1F, 0xB2, 0x86, 0x70, 0xD1, 0xC2, 0x01, 0x76, 0x57, 0xB0, + 0xC5, 0xD6, 0x1A, 0x26, 0xC9, 0xCB, 0xD1, 0xEA, 0x75, 0x5C, 0x68, 0x20, 0xB5, 0xF6, 0xD6, 0x7D }, + }, + { + { 0x6C, 0xC8, 0x0F, 0x47, 0x96, 0x4E, 0x0D, 0xCB, 0x39, 0xE4, 0xD0, 0x1B, 0x3B, 0x3E, 0xBC, 0x8B, + 0x9C, 0x77, 0xB4, 0x08, 0x59, 0xBB, 0x5D, 0x5C, 0x31, 0x27, 0x4D, 0xA5, 0x39, 0xFA, 0xCA, 0x8D }, + }, + { + { 0x6D, 0x32, 0xF4, 0x93, 0x40, 0x56, 0xEE, 0x17, 0x14, 0xCA, 0x72, 0x70, 0x3F, 0x64, 0x46, 0x9B, + 0x98, 0x58, 0xFC, 0x39, 0x96, 0x4B, 0x4C, 0x03, 0x93, 0xB3, 0x7D, 0xDE, 0xAB, 0x8B, 0x19, 0x75 }, + }, + { + { 0x6D, 0x4E, 0xD4, 0x29, 0x38, 0x15, 0x90, 0xBD, 0x3C, 0x6B, 0x7C, 0xB7, 0xE4, 0xE4, 0x25, 0xC8, + 0xE2, 0x1F, 0x79, 0xFF, 0x4D, 0x40, 0x00, 0xB9, 0x65, 0x3F, 0xA1, 0x27, 0xE1, 0x41, 0xD3, 0x50 }, + }, + { + { 0x6D, 0x4E, 0xE5, 0x3B, 0xF9, 0x9F, 0xFA, 0xBB, 0x1C, 0x9B, 0x77, 0x96, 0x66, 0xEF, 0xC4, 0x5E, + 0x6A, 0xB3, 0xFA, 0x74, 0xAB, 0x37, 0x30, 0x9F, 0x8C, 0xDE, 0xF7, 0x2C, 0x94, 0x39, 0x23, 0xEE }, + }, + { + { 0x6D, 0x84, 0x0B, 0xBB, 0xA9, 0x3F, 0x53, 0x9B, 0xE0, 0x84, 0x9D, 0x26, 0xD5, 0x27, 0x7B, 0xD7, + 0xF2, 0x4B, 0xBA, 0x93, 0x5E, 0x05, 0x0D, 0x11, 0x26, 0xD7, 0x78, 0x22, 0xB5, 0x90, 0x26, 0x83 }, + }, + { + { 0x6D, 0xC9, 0x87, 0x5C, 0xD3, 0x46, 0xA2, 0x2B, 0x47, 0xB2, 0x80, 0xB1, 0xB1, 0x45, 0x0D, 0x87, + 0x8E, 0x09, 0x8B, 0xB2, 0xE2, 0xA9, 0xE3, 0xC2, 0x5C, 0xC7, 0x6A, 0xFF, 0x93, 0xC0, 0xBE, 0xAB }, + }, + { + { 0x6E, 0x0C, 0x0B, 0x5D, 0x7B, 0x82, 0x23, 0x21, 0x87, 0x41, 0xE6, 0x7B, 0x87, 0x6C, 0xCB, 0x8C, + 0xB5, 0x81, 0x11, 0x48, 0x82, 0x87, 0xDA, 0x8C, 0x30, 0x64, 0xE8, 0x2E, 0xCC, 0xC2, 0x70, 0x12 }, + }, + { + { 0x6E, 0x16, 0x35, 0x9E, 0x05, 0xEB, 0x14, 0xEC, 0x86, 0xEE, 0xE5, 0x9D, 0x01, 0x0C, 0xD6, 0x4F, + 0x1D, 0x1B, 0x4B, 0xA1, 0xEF, 0x46, 0xA2, 0x0F, 0x35, 0xC6, 0xA6, 0x3D, 0xC5, 0x3A, 0x2A, 0xCB }, + }, + { + { 0x6E, 0x1A, 0x88, 0x63, 0xF2, 0x93, 0x4B, 0x39, 0x01, 0x23, 0x7E, 0x84, 0xD0, 0x76, 0x27, 0x04, + 0x23, 0x06, 0x78, 0x7F, 0x2D, 0xE0, 0x66, 0x30, 0xBD, 0x37, 0xD8, 0x03, 0x94, 0x35, 0xBF, 0xCA }, + }, + { + { 0x6E, 0x1C, 0xB1, 0x2A, 0x08, 0x3C, 0x89, 0x08, 0xFB, 0x06, 0x04, 0x56, 0xEE, 0xE8, 0x74, 0xED, + 0xD9, 0xFA, 0x71, 0x3F, 0x26, 0x95, 0xEE, 0x5E, 0xE8, 0x59, 0x84, 0x83, 0xE3, 0x02, 0x8F, 0x0B }, + }, + { + { 0x6E, 0x8D, 0x55, 0xEE, 0x2F, 0x72, 0x5A, 0x0B, 0xA5, 0xDF, 0x43, 0x43, 0xA0, 0x6F, 0xD3, 0x71, + 0x54, 0x25, 0x6B, 0xCF, 0xF7, 0xCE, 0xE0, 0xB7, 0x00, 0xAC, 0xDD, 0x91, 0x56, 0x49, 0x79, 0x99 }, + }, + { + { 0x6E, 0xB8, 0xA7, 0xBA, 0x7F, 0xC2, 0x1C, 0x62, 0x40, 0x3F, 0x63, 0x76, 0xBB, 0x10, 0x44, 0x82, + 0x48, 0x8D, 0xA9, 0xC1, 0x41, 0x4A, 0xE3, 0xAB, 0x06, 0xE0, 0x1E, 0xD7, 0x32, 0x42, 0xAB, 0xD7 }, + }, + { + { 0x6E, 0xEB, 0x39, 0xDA, 0xD7, 0x3F, 0xC5, 0x99, 0x72, 0x42, 0x17, 0xCF, 0xF0, 0x21, 0xD5, 0xAC, + 0x4E, 0x7E, 0x2B, 0xF4, 0x76, 0xEA, 0xF4, 0xFD, 0x4D, 0x7B, 0xFB, 0x6E, 0x4F, 0x18, 0xC1, 0x73 }, + }, + { + { 0x6F, 0x1C, 0x4A, 0x29, 0x79, 0xFC, 0xBE, 0xAD, 0xC5, 0xD5, 0x80, 0xE5, 0xBF, 0xDB, 0xF8, 0x4C, + 0xC6, 0xA0, 0xF2, 0xA9, 0x2E, 0xB1, 0xC6, 0x88, 0xD5, 0x31, 0x3A, 0x0F, 0xDA, 0xCF, 0x0B, 0x56 }, + }, + { + { 0x6F, 0x3B, 0xB3, 0x4B, 0x5D, 0x32, 0x91, 0xDF, 0xB3, 0xE4, 0x12, 0x71, 0xA1, 0xD7, 0x30, 0xCD, + 0xBC, 0xFF, 0xC1, 0x0B, 0x68, 0x05, 0x9D, 0xCC, 0xD3, 0x1C, 0x47, 0x4B, 0xB7, 0x44, 0x16, 0xE5 }, + }, + { + { 0x6F, 0x7E, 0x99, 0xB2, 0x6C, 0xF2, 0x57, 0x61, 0xCA, 0x87, 0xD7, 0x0E, 0xB1, 0xDD, 0x32, 0xCD, + 0x0D, 0x2B, 0xD1, 0xFE, 0x7F, 0x62, 0x2E, 0xF6, 0x47, 0x18, 0x9C, 0xEB, 0x91, 0x43, 0x8D, 0x99 }, + }, + { + { 0x6F, 0x92, 0x7B, 0x13, 0xE5, 0x9C, 0xA9, 0x87, 0x61, 0x82, 0x07, 0xAF, 0xED, 0xE2, 0xE8, 0xE1, + 0xD9, 0xC3, 0x03, 0xE1, 0xF1, 0x2F, 0x19, 0x2D, 0xF3, 0xF7, 0x0E, 0x5D, 0x1D, 0x4D, 0x2C, 0x18 }, + }, + { + { 0x6F, 0x95, 0xDB, 0x28, 0x26, 0x61, 0x3C, 0xA6, 0x12, 0x0D, 0x81, 0x15, 0xFB, 0xA3, 0xDD, 0x0A, + 0x2A, 0x22, 0x31, 0x2D, 0x74, 0x88, 0xBF, 0x77, 0x0F, 0x9C, 0x57, 0x96, 0xC9, 0x02, 0xBC, 0xC3 }, + }, + { + { 0x6F, 0xB0, 0x06, 0xB4, 0x5F, 0x4A, 0xB6, 0xF5, 0x28, 0x12, 0xBD, 0x1F, 0x9D, 0x8C, 0xF1, 0x0E, + 0x2B, 0x4C, 0x8C, 0xE5, 0x2A, 0x4D, 0xF6, 0x56, 0x84, 0xF3, 0x08, 0x48, 0x1C, 0xEE, 0xC8, 0x93 }, + }, + { + { 0x6F, 0xBD, 0xCD, 0xF1, 0xB4, 0x37, 0x9F, 0xC4, 0x73, 0xAB, 0x5E, 0xEA, 0x4E, 0xC2, 0xF4, 0x84, + 0xCE, 0x91, 0xD1, 0x0E, 0x31, 0x34, 0x5F, 0x15, 0xA7, 0x6A, 0x84, 0x85, 0xB8, 0xFF, 0xFB, 0x7E }, + }, + { + { 0x6F, 0xDC, 0x18, 0xD6, 0x55, 0x14, 0xDD, 0xCE, 0xF0, 0x2F, 0xEA, 0x81, 0x7A, 0x1B, 0x70, 0x84, + 0x71, 0x95, 0xFF, 0x5C, 0x07, 0xB1, 0x3D, 0x6A, 0x97, 0x1E, 0x0E, 0x77, 0x4B, 0x44, 0x10, 0xA0 }, + }, + { + { 0x70, 0xB8, 0xEC, 0xD5, 0x62, 0xEC, 0x3D, 0x9F, 0x48, 0x64, 0x75, 0x2A, 0x3A, 0x8C, 0x54, 0x39, + 0x93, 0xB4, 0x38, 0x72, 0x8F, 0xE2, 0x71, 0x81, 0xF4, 0xC0, 0x8D, 0xE6, 0xA0, 0xD8, 0xB7, 0x9A }, + }, + { + { 0x70, 0xE0, 0xB7, 0xF5, 0xC7, 0xA3, 0xD1, 0xF3, 0x96, 0x85, 0x84, 0x5D, 0x94, 0xFC, 0x9E, 0x77, + 0x7C, 0x12, 0x69, 0xCF, 0x15, 0x31, 0x68, 0x51, 0x98, 0x3D, 0x60, 0x58, 0x76, 0x1C, 0xF0, 0x63 }, + }, + { + { 0x70, 0xED, 0x64, 0x0C, 0xBC, 0xE7, 0x84, 0xA6, 0x8E, 0xCD, 0xD6, 0x32, 0x0B, 0x61, 0x3C, 0x88, + 0x42, 0xE6, 0xD7, 0x09, 0xBD, 0x96, 0xF1, 0xD2, 0x43, 0xE4, 0xB2, 0x1E, 0xED, 0x8B, 0x12, 0x8C }, + }, + { + { 0x71, 0x1E, 0xF0, 0x96, 0x33, 0x43, 0x8A, 0xC5, 0xBE, 0x9D, 0xA8, 0x12, 0x2E, 0x7A, 0xCF, 0x0E, + 0xA2, 0x68, 0xB8, 0x72, 0xAD, 0xDC, 0x3E, 0xE8, 0x37, 0x2B, 0x91, 0x6D, 0x60, 0x65, 0xCF, 0xA8 }, + }, + { + { 0x71, 0xCF, 0x8D, 0x5C, 0x16, 0xF0, 0xDF, 0x67, 0xD2, 0x3F, 0x67, 0x06, 0xAE, 0xB9, 0x7C, 0x8E, + 0xAE, 0x2C, 0xAF, 0xC6, 0xBE, 0xC9, 0x4A, 0x4D, 0xB2, 0x40, 0x5A, 0x37, 0xFF, 0x30, 0x92, 0x5F }, + }, + { + { 0x72, 0x1B, 0x1F, 0x92, 0x9D, 0xA7, 0xEA, 0xF8, 0x96, 0x24, 0x64, 0x7B, 0xA3, 0xCC, 0x4E, 0x1E, + 0xD1, 0x57, 0x54, 0xAB, 0x83, 0x6E, 0x33, 0x58, 0xB0, 0x35, 0xA1, 0xF2, 0x27, 0x4A, 0x43, 0xBE }, + }, + { + { 0x72, 0xAA, 0x1A, 0xF2, 0x9A, 0xB0, 0x96, 0x5B, 0x34, 0x57, 0x14, 0x79, 0x84, 0x9B, 0x84, 0x74, + 0xB8, 0x81, 0x80, 0xE2, 0x1B, 0x98, 0x58, 0x92, 0x9B, 0xD6, 0x3E, 0x30, 0x91, 0x9C, 0xFC, 0xD9 }, + }, + { + { 0x72, 0xB6, 0x11, 0x01, 0x0E, 0xA4, 0x7D, 0x3D, 0x1E, 0x24, 0x53, 0xD7, 0x9D, 0x19, 0x03, 0x15, + 0x53, 0x4E, 0x55, 0x31, 0x2A, 0x7E, 0xBC, 0xAA, 0xB0, 0xE5, 0x5F, 0xF0, 0x03, 0x41, 0xD7, 0x14 }, + }, + { + { 0x72, 0xE7, 0x49, 0x87, 0x21, 0x0C, 0x7E, 0xF6, 0x67, 0x46, 0xE4, 0x9A, 0x96, 0xDF, 0x55, 0xCC, + 0x6F, 0xAD, 0xF7, 0xA6, 0x31, 0xC7, 0xAE, 0x3F, 0x3E, 0x9E, 0x18, 0x72, 0x3D, 0xE5, 0x2A, 0x6E }, + }, + { + { 0x73, 0x06, 0x2E, 0xFC, 0x20, 0xB4, 0x17, 0xF7, 0x4C, 0xD1, 0xA4, 0xE6, 0xA6, 0x36, 0x9F, 0x97, + 0x18, 0x86, 0x94, 0xFF, 0x9D, 0xCE, 0xFF, 0x1F, 0x5E, 0x4C, 0x11, 0x99, 0x74, 0x44, 0x6A, 0x3F }, + }, + { + { 0x73, 0x29, 0x62, 0x43, 0xC0, 0xDD, 0x61, 0xB1, 0x7F, 0x5C, 0x58, 0x89, 0x4C, 0x31, 0x3E, 0xF7, + 0xA8, 0x48, 0xAE, 0xE3, 0x1B, 0x08, 0x96, 0xE0, 0xB3, 0xE1, 0x51, 0x7F, 0x6E, 0x6D, 0x9F, 0x2F }, + }, + { + { 0x73, 0x3B, 0x42, 0x24, 0x25, 0x8D, 0xEE, 0x07, 0x0E, 0xDF, 0xA3, 0x41, 0x1F, 0xBC, 0x9B, 0xAD, + 0x31, 0x65, 0xBE, 0x66, 0x0F, 0x34, 0x0A, 0xA2, 0x30, 0x8A, 0x5A, 0x33, 0x23, 0xFA, 0xBF, 0xA7 }, + }, + { + { 0x73, 0x46, 0x99, 0x89, 0x4A, 0xD4, 0xB5, 0xA8, 0xA2, 0xDD, 0x9A, 0xB4, 0xFD, 0x5F, 0x63, 0x25, + 0x30, 0x3B, 0x49, 0x16, 0x4C, 0xA8, 0xD8, 0xE7, 0xBA, 0x99, 0x77, 0x81, 0x7E, 0x4A, 0xE2, 0x4F }, + }, + { + { 0x73, 0x9D, 0x17, 0x23, 0x23, 0xF2, 0xB2, 0x84, 0x07, 0x0A, 0xCE, 0x43, 0x09, 0x8C, 0x8B, 0x21, + 0xC4, 0x7A, 0x53, 0xF9, 0x98, 0x5F, 0x2F, 0xAD, 0x5F, 0x8B, 0x2E, 0xB7, 0x03, 0x4F, 0xDB, 0x21 }, + }, + { + { 0x73, 0xB4, 0x34, 0x22, 0x97, 0x6D, 0xAE, 0x7F, 0x98, 0x1E, 0xE5, 0x0A, 0xD7, 0x5B, 0xE2, 0x3A, + 0x41, 0xFF, 0x77, 0x09, 0xA7, 0x25, 0x2A, 0x4D, 0x15, 0x98, 0x52, 0x5F, 0x9D, 0x88, 0x22, 0x97 }, + }, + { + { 0x73, 0xBF, 0x46, 0xA8, 0x4B, 0x39, 0x94, 0xC7, 0x08, 0xA8, 0x2C, 0xD7, 0xC5, 0xB7, 0xAF, 0xFC, + 0xF9, 0x09, 0xF9, 0x6F, 0x16, 0x8E, 0x8D, 0xD1, 0xBD, 0x1A, 0xDB, 0xC7, 0x15, 0x99, 0xEC, 0xAA }, + }, + { + { 0x74, 0x2F, 0xCF, 0x73, 0x56, 0x51, 0xCE, 0xB1, 0x84, 0x3C, 0xE3, 0xD6, 0x56, 0x72, 0x34, 0x68, + 0xAB, 0x22, 0x85, 0x6C, 0x6A, 0x80, 0x56, 0xB9, 0x1C, 0x75, 0xC5, 0x8A, 0x67, 0xEC, 0xA8, 0xBE }, + }, + { + { 0x74, 0x54, 0x0F, 0xA5, 0x0A, 0x36, 0x2E, 0x68, 0x6D, 0x99, 0x17, 0x98, 0x18, 0x35, 0x09, 0x83, + 0x6C, 0x95, 0xA3, 0xFB, 0x04, 0x58, 0x00, 0x22, 0xF9, 0x68, 0x58, 0x4F, 0x8A, 0xCF, 0x60, 0x1F }, + }, + { + { 0x74, 0x8D, 0x42, 0x49, 0x6D, 0xA9, 0x25, 0x45, 0x90, 0x54, 0xE1, 0x3E, 0x38, 0xEC, 0x9F, 0x8E, + 0x6C, 0x5F, 0x97, 0x29, 0x7A, 0xB3, 0xA0, 0x14, 0x58, 0x99, 0x85, 0x26, 0xB0, 0xFD, 0x3A, 0xED }, + }, + { + { 0x74, 0xA9, 0x27, 0xE7, 0xB2, 0xF1, 0xF6, 0x48, 0x3D, 0xC2, 0x59, 0x21, 0xAB, 0xBE, 0x2F, 0x97, + 0x74, 0xA2, 0x0C, 0xB8, 0x96, 0xBA, 0xB5, 0x64, 0x8C, 0x2A, 0xB0, 0xF9, 0xDB, 0xDA, 0x3D, 0xA6 }, + }, + { + { 0x75, 0x83, 0x10, 0x84, 0x6A, 0xD5, 0x74, 0x05, 0x71, 0x1A, 0xDC, 0x4A, 0x1A, 0xF0, 0xEC, 0x51, + 0x8F, 0x82, 0x2D, 0x1A, 0x6C, 0xA9, 0x1E, 0xC2, 0x51, 0xF1, 0x22, 0xD4, 0x10, 0x6F, 0x99, 0xD9 }, + }, + { + { 0x75, 0x86, 0x5A, 0xA6, 0xFC, 0x45, 0x8E, 0x5A, 0x7B, 0x63, 0x04, 0x07, 0x07, 0x4F, 0x43, 0x11, + 0x1D, 0xD9, 0x21, 0x24, 0xB7, 0x7C, 0xE4, 0x02, 0x6D, 0x82, 0x41, 0xCF, 0x23, 0x71, 0xD9, 0xCC }, + }, + { + { 0x75, 0xBB, 0x15, 0x25, 0x09, 0xB7, 0x19, 0x04, 0xE4, 0x40, 0x0F, 0xB4, 0x23, 0xA5, 0x80, 0xAA, + 0xE1, 0xDD, 0xB7, 0x68, 0xF6, 0xFD, 0x36, 0xE6, 0x30, 0x94, 0xEB, 0xE3, 0x92, 0x15, 0xF3, 0x90 }, + }, + { + { 0x75, 0xC1, 0x6D, 0x87, 0x10, 0x9A, 0x9D, 0x86, 0xE3, 0x90, 0x2E, 0xE1, 0xE0, 0x7B, 0xE1, 0x13, + 0xB4, 0x15, 0x53, 0x0D, 0xC7, 0x3F, 0x7F, 0x7F, 0x1D, 0x7F, 0xE0, 0xDB, 0x7B, 0x02, 0x50, 0x30 }, + }, + { + { 0x75, 0xE9, 0xA1, 0x5D, 0x94, 0x88, 0x0C, 0x66, 0x14, 0x82, 0xCF, 0xC1, 0x96, 0x4C, 0xBC, 0xE2, + 0xB1, 0xCA, 0x7A, 0x9F, 0x81, 0xD4, 0x07, 0x30, 0x12, 0x47, 0x1F, 0x27, 0x23, 0xCB, 0x72, 0x8A }, + }, + { + { 0x76, 0x73, 0x18, 0x0F, 0x9D, 0x9A, 0x85, 0x48, 0x4B, 0x5C, 0x16, 0x99, 0xA2, 0xDC, 0x17, 0xFC, + 0x61, 0x13, 0xA3, 0xED, 0x5B, 0xC9, 0xC0, 0x55, 0x8C, 0xB8, 0x2D, 0xFF, 0x9E, 0x50, 0x32, 0x09 }, + }, + { + { 0x76, 0x98, 0x67, 0x60, 0xAC, 0xFE, 0x55, 0x59, 0xA2, 0xA2, 0xAB, 0x2A, 0x4E, 0x85, 0x49, 0x83, + 0xC5, 0xFD, 0xE6, 0x73, 0xCE, 0x8E, 0xB1, 0x71, 0x23, 0x49, 0x48, 0x64, 0x86, 0x7A, 0x98, 0xB1 }, + }, + { + { 0x76, 0xBC, 0x5D, 0x17, 0xFE, 0x9F, 0x0E, 0x89, 0x7E, 0x4D, 0xDB, 0x87, 0xD5, 0xB8, 0xDD, 0x2E, + 0xB2, 0xAC, 0x82, 0xF6, 0xA3, 0x11, 0x06, 0xED, 0xFD, 0x67, 0xDD, 0xCD, 0xE6, 0xA4, 0x3F, 0x17 }, + }, + { + { 0x76, 0xCA, 0x72, 0xCC, 0x37, 0xAB, 0x2A, 0xA3, 0x83, 0x98, 0x71, 0x0F, 0x02, 0x20, 0xFA, 0xF3, + 0x30, 0x1D, 0x54, 0x49, 0x38, 0xFB, 0x24, 0x19, 0x2D, 0xEC, 0x32, 0xF7, 0x44, 0xE4, 0x22, 0x10 }, + }, + { + { 0x76, 0xCD, 0xF0, 0x78, 0xA8, 0x89, 0x1F, 0x1B, 0x3D, 0x0A, 0xA7, 0x1D, 0x6E, 0x18, 0xD7, 0x6A, + 0x4D, 0x20, 0x7A, 0xAF, 0x84, 0xC6, 0x12, 0x95, 0x0E, 0xDF, 0xCD, 0x92, 0x82, 0xA1, 0x11, 0x44 }, + }, + { + { 0x77, 0x4F, 0x40, 0x72, 0x98, 0x9C, 0xA1, 0x55, 0x18, 0x17, 0x73, 0xB0, 0x55, 0x07, 0x6F, 0xFD, + 0x10, 0x21, 0x82, 0xC6, 0xAB, 0xE2, 0xA9, 0xCE, 0x03, 0x0F, 0x8D, 0xF2, 0x99, 0x56, 0xE1, 0x48 }, + }, + { + { 0x77, 0x59, 0x71, 0xD4, 0x48, 0x9D, 0xBE, 0x27, 0x72, 0xDB, 0x72, 0xAC, 0x28, 0xB8, 0xB3, 0x71, + 0xB0, 0x21, 0xC3, 0xD6, 0x26, 0x14, 0xD0, 0x7B, 0x6F, 0x5B, 0x8C, 0x2A, 0x57, 0x70, 0x25, 0xAE }, + }, + { + { 0x77, 0x95, 0x6B, 0x48, 0xCD, 0xD9, 0x15, 0x0B, 0xD8, 0x7D, 0x8D, 0x81, 0x50, 0x60, 0xAC, 0x8C, + 0x84, 0x81, 0x3A, 0x53, 0x87, 0x1A, 0x58, 0x6A, 0x69, 0x8B, 0x18, 0x79, 0x89, 0x13, 0xD3, 0xB8 }, + }, + { + { 0x77, 0xAC, 0x72, 0x54, 0x6A, 0x39, 0xCA, 0x2F, 0x24, 0xE2, 0xD1, 0x3C, 0x0D, 0x74, 0x91, 0x5F, + 0x67, 0xBC, 0xD4, 0x37, 0x09, 0xA9, 0xE5, 0xDB, 0x8B, 0x33, 0x1A, 0x55, 0x77, 0xFD, 0x50, 0x88 }, + }, + { + { 0x77, 0xB7, 0xCC, 0x99, 0xCE, 0x02, 0x4E, 0x0B, 0x7E, 0xD5, 0x33, 0xC9, 0x9C, 0xC8, 0x25, 0x08, + 0xEB, 0xA6, 0xAC, 0x3A, 0x0B, 0xE5, 0xBC, 0xBF, 0x7A, 0xC9, 0x94, 0x95, 0x2B, 0x6D, 0x35, 0x07 }, + }, + { + { 0x77, 0xB9, 0x6A, 0x00, 0x77, 0x15, 0xA0, 0x8C, 0x6A, 0x22, 0xDB, 0x14, 0xC7, 0xF4, 0xF1, 0xD7, + 0xF4, 0xA7, 0x41, 0xCE, 0x47, 0x32, 0xEC, 0xF8, 0x3E, 0x74, 0xC1, 0xC9, 0x63, 0x22, 0x83, 0xCD }, + }, + { + { 0x77, 0xDD, 0xC8, 0x1B, 0xD2, 0x8B, 0x9D, 0x46, 0x1E, 0x7D, 0x3C, 0xD4, 0xA8, 0x12, 0x2A, 0xA9, + 0x8A, 0x24, 0x60, 0xFB, 0xA0, 0x8F, 0x1B, 0x7B, 0xAC, 0xB6, 0x6C, 0x92, 0xD7, 0x99, 0x1C, 0xCC }, + }, + { + { 0x78, 0x0C, 0x33, 0xFE, 0x95, 0x4C, 0xC4, 0xDB, 0x39, 0x04, 0xD7, 0x6A, 0x68, 0x58, 0xBC, 0xD1, + 0x01, 0x7F, 0x52, 0xDA, 0x59, 0x9D, 0x36, 0xDA, 0xE6, 0x66, 0xC0, 0x4E, 0x41, 0xAF, 0x8D, 0xCD }, + }, + { + { 0x78, 0x41, 0x36, 0x37, 0x9B, 0xA0, 0xDB, 0xD7, 0xB3, 0xBA, 0xDC, 0x52, 0xDC, 0xE6, 0xBB, 0x81, + 0x07, 0xA3, 0x56, 0xC8, 0x48, 0x3F, 0x13, 0xE1, 0x69, 0x75, 0x0B, 0xC2, 0x07, 0x0A, 0x67, 0xD9 }, + }, + { + { 0x78, 0xC9, 0x30, 0x40, 0x5A, 0x72, 0x0D, 0x9F, 0x00, 0x66, 0xDD, 0x88, 0xA2, 0xA8, 0xDA, 0xFB, + 0xBE, 0x6C, 0xD6, 0x5D, 0x54, 0xB7, 0x76, 0x06, 0x42, 0x1B, 0x45, 0x43, 0x8C, 0x65, 0x8A, 0xD4 }, + }, + { + { 0x79, 0x17, 0x21, 0x35, 0x7E, 0x4B, 0xA1, 0x38, 0xE0, 0x3D, 0x59, 0xBA, 0xC1, 0x41, 0x42, 0x80, + 0x52, 0xE9, 0x88, 0x42, 0x39, 0x84, 0x7A, 0x4D, 0x92, 0xCA, 0xC0, 0x9F, 0xEB, 0xFE, 0x6A, 0xA4 }, + }, + { + { 0x79, 0x44, 0x5A, 0x43, 0x7B, 0xBE, 0xB4, 0xA5, 0x59, 0xC8, 0x1C, 0x8E, 0x57, 0xBB, 0xFB, 0x18, + 0x66, 0xE2, 0xE2, 0xBF, 0x6E, 0x70, 0xA5, 0x63, 0x22, 0x1B, 0x62, 0x7B, 0x71, 0x7D, 0xE6, 0xB1 }, + }, + { + { 0x79, 0x8F, 0x83, 0xB1, 0xC4, 0xC6, 0x5C, 0x4D, 0x5D, 0xEA, 0x13, 0x03, 0x53, 0x53, 0xD8, 0xED, + 0xE5, 0xD7, 0x1D, 0x99, 0x47, 0xF4, 0x34, 0xFD, 0xEA, 0x0D, 0xBC, 0x1E, 0xC8, 0x2F, 0x45, 0x35 }, + }, + { + { 0x79, 0x94, 0x68, 0xFC, 0x28, 0x7D, 0x4F, 0x78, 0x13, 0xBD, 0xC1, 0x53, 0xF2, 0x8F, 0x77, 0x91, + 0x24, 0xCB, 0x79, 0xAE, 0xC9, 0x35, 0xB2, 0x2C, 0x7A, 0x6A, 0xAC, 0xB9, 0x8D, 0xD5, 0x14, 0x0C }, + }, + { + { 0x79, 0xA8, 0xFC, 0x72, 0x70, 0xB2, 0xE5, 0xF3, 0x35, 0x6B, 0x09, 0xC6, 0xB8, 0x64, 0xFC, 0x92, + 0xE5, 0xFB, 0xC9, 0xE6, 0x9B, 0xEC, 0x93, 0xA4, 0xE3, 0x3B, 0x8D, 0xF5, 0x75, 0x60, 0x17, 0xBE }, + }, + { + { 0x79, 0xBE, 0x4E, 0x3A, 0x42, 0x2B, 0x14, 0x29, 0x92, 0xEA, 0x5B, 0xAB, 0xFC, 0x3A, 0xAD, 0x5F, + 0x31, 0xDB, 0x1C, 0x40, 0xEF, 0x82, 0x9A, 0x38, 0x03, 0xF7, 0xF5, 0xCF, 0xEF, 0xEF, 0xD1, 0x60 }, + }, + { + { 0x7A, 0x1E, 0x5E, 0xA4, 0xE9, 0x74, 0xEB, 0x10, 0x8A, 0xDA, 0x2D, 0xDF, 0xBD, 0x06, 0x8A, 0xC3, + 0x5D, 0x0F, 0x9D, 0xFA, 0xE6, 0x70, 0xF3, 0xE3, 0x95, 0xD4, 0x03, 0x7C, 0x3F, 0x8C, 0x4D, 0xD0 }, + }, + { + { 0x7A, 0x31, 0xB7, 0x14, 0x7A, 0x27, 0x75, 0x33, 0x8B, 0xFA, 0x3D, 0x0B, 0xBB, 0x68, 0x56, 0x33, + 0xFE, 0xB8, 0x5E, 0x2A, 0xF9, 0x4D, 0x71, 0xBF, 0x2B, 0x64, 0x0B, 0xE1, 0xE7, 0x1C, 0xE8, 0x34 }, + }, + { + { 0x7A, 0x33, 0x5D, 0x4D, 0xB3, 0x54, 0x8B, 0xA0, 0xA4, 0x73, 0x79, 0x7D, 0x3A, 0x5B, 0xE2, 0x58, + 0x4B, 0x42, 0x55, 0x83, 0xAD, 0x6F, 0x28, 0x69, 0xD4, 0x79, 0xB9, 0x72, 0xBD, 0x0F, 0x53, 0xCA }, + }, + { + { 0x7A, 0x42, 0xD5, 0x7B, 0x05, 0x32, 0x4E, 0x85, 0x83, 0x55, 0x05, 0x58, 0x26, 0xB1, 0x55, 0x17, + 0x42, 0x5B, 0x5A, 0x18, 0x9C, 0x17, 0xB4, 0x7C, 0x18, 0x4C, 0xAC, 0xE7, 0xAC, 0x63, 0x18, 0xD0 }, + }, + { + { 0x7A, 0x4C, 0x08, 0x9A, 0x75, 0xD1, 0x85, 0x93, 0x3C, 0xA0, 0xB8, 0x24, 0xB3, 0x86, 0x08, 0xE2, + 0x6F, 0x2D, 0xF0, 0x15, 0x01, 0x62, 0x26, 0xD2, 0x15, 0x8A, 0x7B, 0x3B, 0x82, 0x02, 0x9A, 0x05 }, + }, + { + { 0x7A, 0x5B, 0x68, 0x1E, 0x54, 0x45, 0x1D, 0xCB, 0x0A, 0xA6, 0x0D, 0x9F, 0x02, 0xFD, 0x13, 0x7F, + 0xA5, 0xC1, 0x9E, 0x2B, 0xF7, 0x30, 0xC8, 0x9F, 0x36, 0xC9, 0x1C, 0xC6, 0xE7, 0x8C, 0xC6, 0xFB }, + }, + { + { 0x7B, 0x2C, 0x84, 0x1F, 0x5A, 0x96, 0x35, 0x28, 0xC8, 0x79, 0x9F, 0x4B, 0x71, 0x48, 0xF9, 0xF2, + 0xA5, 0x05, 0x15, 0x76, 0x06, 0x9D, 0xEF, 0xD9, 0xF6, 0xC0, 0xCA, 0x31, 0x3D, 0xF2, 0xDB, 0x99 }, + }, + { + { 0x7B, 0x78, 0xBF, 0x4D, 0x71, 0x4E, 0xDF, 0xD5, 0xCE, 0x84, 0xA3, 0x86, 0x6D, 0xDF, 0x14, 0x82, + 0x36, 0xBD, 0x80, 0xFC, 0xCA, 0x6B, 0x9E, 0xF2, 0x6D, 0xC5, 0xB0, 0xDF, 0x9F, 0xE3, 0xE2, 0x0F }, + }, + { + { 0x7B, 0x8D, 0xD4, 0xFC, 0x3F, 0xC9, 0xA9, 0x00, 0x77, 0x96, 0x0E, 0x15, 0x32, 0x2F, 0x9C, 0xD2, + 0x29, 0x8C, 0xF2, 0xED, 0x16, 0xC0, 0xDD, 0x3D, 0xDA, 0xB2, 0x3E, 0xDD, 0xBF, 0x4E, 0x28, 0xC0 }, + }, + { + { 0x7B, 0x93, 0xA8, 0x76, 0x2E, 0x89, 0x97, 0x0B, 0xFB, 0x19, 0xEC, 0x06, 0xE9, 0x39, 0x1E, 0x87, + 0x48, 0xB1, 0x69, 0x95, 0x1A, 0x8D, 0xA9, 0x86, 0x8F, 0x07, 0xEC, 0x68, 0xD0, 0x6A, 0x57, 0x34 }, + }, + { + { 0x7B, 0xFE, 0x47, 0xAE, 0xBA, 0x8B, 0x0A, 0x3A, 0x94, 0x5A, 0x88, 0xD8, 0xEF, 0x18, 0x91, 0xC9, + 0x89, 0x97, 0x8A, 0xBF, 0x12, 0x2E, 0xC5, 0xE0, 0x51, 0x4B, 0xE3, 0x6C, 0x3A, 0x7F, 0x22, 0x9B }, + }, + { + { 0x7C, 0x30, 0xFF, 0x35, 0xE7, 0x8A, 0xBA, 0x08, 0xF8, 0xA9, 0xB4, 0xD9, 0x8E, 0xA2, 0x9A, 0xE4, + 0xA5, 0xA4, 0x24, 0x72, 0xF5, 0x91, 0xCA, 0x11, 0xFB, 0x5E, 0x11, 0x21, 0x06, 0x28, 0x63, 0x96 }, + }, + { + { 0x7C, 0x63, 0xB8, 0x8E, 0x58, 0x19, 0x07, 0x0F, 0xC1, 0x4A, 0xDB, 0x67, 0xD6, 0xDA, 0xA1, 0x29, + 0x83, 0x14, 0x30, 0x4A, 0x9C, 0x05, 0x30, 0x18, 0x02, 0x7D, 0xF8, 0x36, 0x91, 0x4D, 0x73, 0xD4 }, + }, + { + { 0x7C, 0xA0, 0x86, 0x8B, 0xEB, 0xAE, 0x8A, 0xCA, 0x9D, 0x0F, 0x75, 0x38, 0x65, 0xC3, 0x2A, 0x0D, + 0x2D, 0xD4, 0xF1, 0x48, 0x6E, 0x37, 0x34, 0xA6, 0xA3, 0x71, 0x0E, 0xCC, 0x3E, 0x57, 0xF9, 0xED }, + }, + { + { 0x7C, 0xF9, 0x2F, 0x75, 0xBB, 0xE7, 0xA1, 0x4D, 0x86, 0x93, 0xF9, 0x93, 0xC3, 0xD1, 0xA6, 0x08, + 0xDB, 0xE0, 0xD1, 0x8F, 0x80, 0x8E, 0x21, 0x2D, 0xC8, 0xE1, 0xF5, 0xDA, 0x58, 0x04, 0xB3, 0x07 }, + }, + { + { 0x7D, 0x0D, 0x63, 0xAC, 0x53, 0x9B, 0xB6, 0xC1, 0x0F, 0x2C, 0xAC, 0x34, 0xC4, 0xE8, 0x08, 0xC5, + 0x23, 0xCB, 0x5F, 0xE2, 0x79, 0x44, 0xF3, 0xD1, 0x58, 0x84, 0x95, 0xCC, 0xB3, 0xFC, 0xF8, 0xE0 }, + }, + { + { 0x7D, 0x20, 0xC7, 0xA9, 0x27, 0x26, 0x2B, 0xE7, 0x38, 0xD2, 0x58, 0xD0, 0xFD, 0x97, 0x6E, 0x9A, + 0xF3, 0x6E, 0xF7, 0x99, 0x5F, 0x05, 0xE2, 0x87, 0x6A, 0x29, 0xAE, 0xBC, 0x3A, 0x24, 0xAA, 0xCE }, + }, + { + { 0x7D, 0x27, 0x04, 0xF3, 0x8E, 0x5D, 0x3F, 0x86, 0x0E, 0x58, 0xE9, 0x5F, 0xBD, 0x13, 0x57, 0x37, + 0xE6, 0x29, 0xE3, 0xF5, 0x3C, 0x07, 0xE2, 0x11, 0xBF, 0x48, 0x33, 0x86, 0x0C, 0xA5, 0x40, 0xC3 }, + }, + { + { 0x7D, 0x2D, 0x31, 0x2B, 0xA8, 0x5E, 0x81, 0xC4, 0xC5, 0xF0, 0x4B, 0xCB, 0x48, 0x3F, 0xF8, 0xCB, + 0x62, 0xFA, 0xF8, 0x32, 0xBE, 0x9F, 0x1E, 0xA0, 0x95, 0x0A, 0x12, 0x6E, 0xA2, 0x52, 0xBC, 0xE6 }, + }, + { + { 0x7D, 0xB2, 0x70, 0xBC, 0xAC, 0xD6, 0x26, 0x5D, 0x05, 0x05, 0x60, 0x85, 0x24, 0xA9, 0x03, 0xF9, + 0x87, 0xC1, 0xC8, 0xC9, 0xEA, 0xF5, 0x1F, 0x66, 0x65, 0x5E, 0xB8, 0x36, 0xB5, 0x05, 0xA6, 0xDA }, + }, + { + { 0x7D, 0xF7, 0x1C, 0x35, 0x19, 0x78, 0x05, 0x7A, 0x4D, 0x30, 0x0E, 0x15, 0xAD, 0xB7, 0xCF, 0x28, + 0xF1, 0xA5, 0xBB, 0x76, 0x92, 0x9C, 0x58, 0xA2, 0x50, 0x25, 0x3C, 0x30, 0x48, 0xF2, 0x88, 0xDB }, + }, + { + { 0x7E, 0x2E, 0xDB, 0x9D, 0x38, 0xF9, 0x29, 0x3C, 0xDD, 0xD6, 0x03, 0xB1, 0x75, 0xC9, 0xB2, 0x05, + 0xAC, 0x0B, 0x55, 0x3A, 0x4B, 0xF5, 0xFB, 0x08, 0xC2, 0x46, 0xEC, 0xF9, 0xC8, 0x49, 0xDB, 0x28 }, + }, + { + { 0x7E, 0x70, 0x13, 0x07, 0x36, 0xAE, 0xD9, 0xBC, 0xD2, 0x18, 0x44, 0x96, 0x6D, 0x0D, 0x1E, 0x2F, + 0xBA, 0x58, 0xE7, 0xC3, 0x9E, 0xA1, 0x47, 0x76, 0x13, 0xF7, 0x9E, 0x0F, 0x60, 0x40, 0xB5, 0x44 }, + }, + { + { 0x7E, 0x8A, 0x44, 0x80, 0xAB, 0x99, 0xAB, 0x10, 0x36, 0x89, 0xF4, 0x6F, 0xC9, 0xB7, 0x9F, 0xA0, + 0xD9, 0xFD, 0xA4, 0x64, 0xAF, 0x96, 0xEC, 0x20, 0xCC, 0xE6, 0xA2, 0x5B, 0x9C, 0xF7, 0xDC, 0xD3 }, + }, + { + { 0x7F, 0x41, 0xA6, 0x10, 0x7E, 0x34, 0x2B, 0x5D, 0x73, 0x80, 0x8D, 0xB0, 0x2A, 0x86, 0x8B, 0xB0, + 0xA8, 0xCB, 0xDE, 0xA3, 0x6A, 0x70, 0x54, 0x54, 0xAA, 0x8D, 0x86, 0xC8, 0xDE, 0x5C, 0x40, 0x55 }, + }, + { + { 0x7F, 0x83, 0xAC, 0xEF, 0xC5, 0x22, 0xD2, 0xAC, 0x23, 0xB2, 0x22, 0x10, 0xAF, 0x23, 0xE2, 0x99, + 0xEB, 0x69, 0x9A, 0x32, 0x1C, 0xBF, 0xDC, 0x78, 0xE4, 0x3A, 0x8C, 0xCB, 0x8F, 0x08, 0x6A, 0x84 }, + }, + { + { 0x7F, 0x86, 0xD3, 0xAA, 0x7E, 0xA7, 0x5C, 0x18, 0x03, 0x9D, 0x6A, 0xF9, 0x9C, 0xEF, 0x75, 0x04, + 0xCE, 0x7B, 0x05, 0x05, 0x9B, 0xBF, 0xE7, 0x3F, 0xCD, 0xEC, 0xFC, 0x71, 0xB2, 0x53, 0x8D, 0x72 }, + }, + { + { 0x7F, 0x95, 0x9B, 0x06, 0x34, 0xDA, 0x94, 0xFA, 0xCA, 0xDA, 0xB0, 0x21, 0xCF, 0x94, 0x20, 0x78, + 0x16, 0x00, 0x36, 0x13, 0xEF, 0x09, 0xEB, 0x54, 0xF6, 0x48, 0x60, 0x50, 0x08, 0x19, 0x02, 0x75 }, + }, + { + { 0x7F, 0x9A, 0x69, 0xCF, 0xA2, 0xF5, 0x0C, 0x13, 0xE1, 0xB7, 0x11, 0xDD, 0x6B, 0x14, 0x69, 0x2B, + 0xDB, 0x77, 0xD9, 0xFF, 0xD8, 0xC1, 0x10, 0xAE, 0x5D, 0x05, 0xA4, 0xCB, 0x73, 0x12, 0x37, 0x48 }, + }, + { + { 0x7F, 0xDD, 0xAE, 0x79, 0x7D, 0xA7, 0x9C, 0x9F, 0xA8, 0xD6, 0x9C, 0x15, 0x79, 0x31, 0x69, 0x22, + 0x13, 0x64, 0xEA, 0x95, 0xE7, 0xC1, 0xB2, 0x39, 0x71, 0x32, 0x3D, 0xB1, 0xB0, 0x88, 0xDE, 0x9C }, + }, + { + { 0x7F, 0xE5, 0x74, 0x9C, 0xA3, 0xF3, 0xDB, 0x71, 0xD5, 0xC7, 0x40, 0xD9, 0x75, 0x87, 0x16, 0x3D, + 0x21, 0x1E, 0xFF, 0xAF, 0x79, 0x40, 0xDA, 0x62, 0xA6, 0xAA, 0x07, 0xEC, 0x64, 0xBD, 0xFB, 0x2D }, + }, + { + { 0x80, 0x20, 0x56, 0xE1, 0xDB, 0x9D, 0x9B, 0x73, 0x21, 0xD1, 0xFF, 0xBB, 0xE1, 0x2F, 0x5C, 0xBE, + 0xDE, 0xC3, 0x6D, 0x0B, 0x5E, 0xC2, 0xA4, 0xE1, 0x8D, 0x99, 0x54, 0x36, 0x4C, 0xEC, 0x81, 0x29 }, + }, + { + { 0x80, 0x47, 0x74, 0x1D, 0x79, 0x7E, 0xB4, 0xED, 0x49, 0xE5, 0x1E, 0xD6, 0x77, 0x45, 0xA4, 0xE4, + 0xEE, 0x90, 0x23, 0xC4, 0x37, 0xAE, 0x53, 0x23, 0xCB, 0xEE, 0x97, 0x05, 0xEF, 0x9C, 0x4C, 0xD6 }, + }, + { + { 0x80, 0x58, 0x7F, 0x37, 0x5E, 0xA1, 0x5D, 0x52, 0x19, 0x26, 0xD7, 0x0B, 0x35, 0x26, 0xC0, 0x80, + 0xF4, 0x8C, 0x05, 0x6E, 0x9B, 0x13, 0x40, 0xCB, 0xBA, 0x1F, 0x9E, 0x11, 0xBB, 0xE8, 0x78, 0x96 }, + }, + { + { 0x80, 0x97, 0x63, 0x4C, 0xE3, 0x3D, 0x41, 0x53, 0x3D, 0x41, 0x5D, 0xAF, 0xDB, 0x8B, 0xA1, 0x91, + 0xC0, 0x30, 0x52, 0xAC, 0x8B, 0xAA, 0x25, 0x54, 0x34, 0x77, 0x3A, 0x16, 0x4B, 0x91, 0x1D, 0x6E }, + }, + { + { 0x80, 0xD0, 0x17, 0x09, 0x34, 0xD2, 0x2A, 0xEA, 0x73, 0x3F, 0x11, 0x5E, 0x52, 0x42, 0xC6, 0xB8, + 0x6D, 0x7F, 0xCF, 0xB4, 0x90, 0x4E, 0x65, 0xB7, 0xB7, 0xB9, 0x07, 0xF2, 0xCA, 0x94, 0xED, 0x71 }, + }, + { + { 0x80, 0xDC, 0xF7, 0x3D, 0xE4, 0x85, 0x8B, 0xDC, 0x49, 0x33, 0x9C, 0x62, 0xA6, 0xB6, 0x96, 0x93, + 0x31, 0x10, 0x03, 0x6E, 0x4F, 0x9E, 0xFD, 0x83, 0x4F, 0x22, 0xA7, 0xB6, 0x62, 0xF9, 0x5C, 0x6A }, + }, + { + { 0x80, 0xE7, 0x3A, 0x40, 0x88, 0xF2, 0x8A, 0x18, 0x67, 0xD5, 0x5D, 0xA9, 0x87, 0x67, 0xEF, 0x22, + 0xA5, 0xAE, 0xE8, 0xF4, 0x45, 0x0B, 0x61, 0x1B, 0x4B, 0x32, 0x78, 0xEF, 0x25, 0x87, 0xB6, 0x6B }, + }, + { + { 0x80, 0xF3, 0xEB, 0x58, 0xEA, 0x6A, 0xA2, 0x85, 0x11, 0xB0, 0x9B, 0x68, 0xF2, 0xDE, 0xF9, 0xB4, + 0xAF, 0xA9, 0x9C, 0x97, 0x44, 0xC0, 0xBE, 0x4E, 0x23, 0x94, 0x89, 0xF0, 0x4F, 0x75, 0xA3, 0xA5 }, + }, + { + { 0x80, 0xF6, 0xC1, 0xE5, 0x6A, 0xEC, 0x30, 0x64, 0x72, 0x50, 0x23, 0x05, 0x61, 0x06, 0x61, 0xF9, + 0x8A, 0x00, 0xA5, 0xAD, 0x10, 0x33, 0x1D, 0x57, 0xBE, 0xF0, 0xD9, 0x7F, 0x32, 0x2A, 0xD8, 0x48 }, + }, + { + { 0x81, 0x1D, 0xF2, 0xF4, 0x73, 0x6F, 0x85, 0x62, 0xE2, 0x02, 0xFD, 0x00, 0x75, 0x32, 0xF1, 0xDE, + 0x40, 0x17, 0x86, 0x1E, 0xFA, 0xBE, 0x67, 0x34, 0x20, 0xC2, 0x7F, 0x2E, 0x2A, 0x33, 0xFA, 0xC1 }, + }, + { + { 0x81, 0x1E, 0x37, 0x86, 0x37, 0xB1, 0xD2, 0xCB, 0xB1, 0x89, 0xAF, 0xD6, 0x74, 0x95, 0xFE, 0x8A, + 0xB9, 0xD8, 0x3A, 0x74, 0x2E, 0x35, 0x8C, 0xBB, 0xDB, 0xD1, 0x54, 0x98, 0xBF, 0x9C, 0x7B, 0x56 }, + }, + { + { 0x81, 0x21, 0x5F, 0x4C, 0x05, 0x58, 0x6C, 0x90, 0x8B, 0xA6, 0x65, 0x15, 0xD6, 0xA2, 0x64, 0x81, + 0xED, 0xDC, 0xD9, 0x89, 0x44, 0xAC, 0x01, 0x98, 0x40, 0xE9, 0xE3, 0x32, 0x2E, 0x35, 0x8D, 0xD2 }, + }, + { + { 0x81, 0xA0, 0xF1, 0xD0, 0x29, 0x46, 0x8E, 0xE8, 0x66, 0x36, 0x4A, 0x19, 0x8A, 0x26, 0x08, 0x58, + 0x30, 0xC2, 0xA4, 0x16, 0xE4, 0x9E, 0x22, 0x4C, 0xE8, 0x09, 0x66, 0xFC, 0xC4, 0x99, 0xD6, 0x36 }, + }, + { + { 0x81, 0xA9, 0x15, 0x6B, 0x26, 0x47, 0xCA, 0xFA, 0x38, 0xB2, 0xE3, 0x15, 0x1A, 0x5A, 0x5D, 0x17, + 0xDB, 0xED, 0x81, 0xE9, 0x07, 0x54, 0xD1, 0xE8, 0x25, 0xF0, 0xBF, 0xC9, 0x13, 0x7C, 0x8B, 0xBF }, + }, + { + { 0x81, 0xD4, 0xB0, 0x8A, 0xCD, 0x90, 0xF2, 0xDE, 0xE1, 0x8A, 0xC4, 0x20, 0xF5, 0x1D, 0xA9, 0x91, + 0x05, 0x35, 0x82, 0x47, 0xBB, 0x03, 0x87, 0xCF, 0xA9, 0x4D, 0xD9, 0x67, 0xA9, 0xCC, 0x18, 0x68 }, + }, + { + { 0x81, 0xEE, 0x8C, 0x58, 0x6E, 0xC3, 0xE4, 0x77, 0xC8, 0x1E, 0xF4, 0x44, 0xDF, 0x09, 0x5A, 0xE0, + 0x99, 0xD8, 0x06, 0x9B, 0x89, 0xFF, 0xB1, 0xD0, 0x8F, 0xAD, 0x75, 0x3E, 0xE4, 0xE9, 0x4F, 0x71 }, + }, + { + { 0x82, 0x2E, 0xBE, 0x7B, 0x2E, 0x8A, 0xF1, 0x78, 0x8A, 0x36, 0x08, 0x83, 0x84, 0xF4, 0xC0, 0x6A, + 0x6D, 0x65, 0x9D, 0x95, 0x56, 0x83, 0xF0, 0x99, 0xE2, 0x54, 0x2D, 0x97, 0x58, 0xE1, 0xA6, 0x21 }, + }, + { + { 0x82, 0x33, 0xDE, 0x42, 0x18, 0xE4, 0xEF, 0x19, 0x38, 0xE6, 0xA8, 0xA3, 0x8A, 0xB0, 0xBC, 0x1A, + 0x96, 0x4B, 0xA5, 0x76, 0x1A, 0x52, 0x99, 0x50, 0x22, 0x15, 0x0C, 0x86, 0x02, 0x6B, 0x90, 0xC9 }, + }, + { + { 0x82, 0x42, 0x7C, 0x6E, 0xF1, 0x1E, 0xCE, 0x3B, 0x94, 0x0B, 0xE6, 0xB3, 0x93, 0x62, 0x2F, 0xC9, + 0x51, 0x7D, 0xBC, 0xE1, 0xC0, 0x0C, 0xF9, 0x18, 0x50, 0x89, 0x64, 0x43, 0xF5, 0x38, 0x2F, 0x89 }, + }, + { + { 0x82, 0x4E, 0xF3, 0x18, 0x7F, 0x9C, 0xFE, 0x14, 0x27, 0x10, 0x13, 0xBC, 0xFB, 0x85, 0xE1, 0x4B, + 0x5A, 0x8E, 0x0D, 0x72, 0x1C, 0x3F, 0x53, 0x6E, 0x0F, 0xDD, 0xFF, 0x42, 0x4D, 0x1F, 0xA0, 0xD8 }, + }, + { + { 0x82, 0x56, 0x8B, 0x3B, 0xB3, 0xC6, 0x55, 0xD7, 0xF2, 0x2D, 0x8C, 0x97, 0xA5, 0x66, 0x9C, 0xC8, + 0x34, 0xA2, 0xDD, 0x7C, 0xDA, 0xE7, 0x5A, 0x26, 0x45, 0x59, 0x55, 0x16, 0x46, 0x55, 0x8E, 0x14 }, + }, + { + { 0x82, 0x7C, 0x8C, 0x80, 0x11, 0x1F, 0xF2, 0x21, 0xC3, 0xEB, 0x1E, 0xF5, 0xC0, 0xD5, 0xD4, 0x34, + 0x48, 0x31, 0x86, 0xE2, 0x09, 0x00, 0x75, 0x63, 0x15, 0x8E, 0x9E, 0x76, 0xD2, 0x79, 0x0F, 0x1C }, + }, + { + { 0x82, 0x92, 0x67, 0xC5, 0xAD, 0x70, 0xE5, 0x45, 0x18, 0x02, 0x3A, 0xB7, 0x85, 0xFA, 0x3C, 0xDE, + 0xD6, 0x6F, 0x42, 0x5D, 0xE1, 0xF3, 0x2F, 0xCD, 0x72, 0x1B, 0x49, 0x46, 0x3A, 0x5A, 0x5F, 0x5B }, + }, + { + { 0x82, 0xAF, 0x5C, 0xB6, 0xAD, 0x08, 0x2A, 0xDA, 0x2C, 0x25, 0x2F, 0x74, 0x96, 0x7B, 0xED, 0x01, + 0xAB, 0xA0, 0x87, 0x88, 0x42, 0x02, 0xD4, 0x5D, 0xD4, 0x80, 0xFB, 0x1C, 0x3D, 0x1C, 0x0C, 0x63 }, + }, + { + { 0x82, 0xB1, 0xDD, 0x9C, 0x01, 0xE8, 0xCD, 0x57, 0xDD, 0xA5, 0x1C, 0xCC, 0x29, 0x0B, 0x32, 0xE2, + 0xBB, 0xFD, 0x08, 0x8C, 0x2B, 0xDF, 0x75, 0x46, 0xA8, 0x9C, 0x60, 0x99, 0x78, 0xC8, 0x1B, 0xC2 }, + }, + { + { 0x82, 0xC0, 0x7B, 0x94, 0x4B, 0xBA, 0xC1, 0xB2, 0x95, 0xE2, 0x5F, 0x91, 0xA5, 0xFB, 0x0F, 0x2A, + 0xFC, 0xBA, 0x7E, 0x09, 0xB2, 0x17, 0x27, 0xEE, 0xD8, 0x13, 0x0C, 0xDE, 0x8F, 0x08, 0x0F, 0xCA }, + }, + { + { 0x82, 0xD1, 0x9B, 0xD8, 0x0A, 0x88, 0x6B, 0x28, 0x61, 0xC3, 0x09, 0x97, 0x4C, 0x1C, 0x99, 0x3D, + 0xBE, 0xC3, 0x7E, 0x30, 0x85, 0xC1, 0x47, 0xC4, 0x1F, 0x23, 0xD9, 0xF1, 0x20, 0xD8, 0x9B, 0x68 }, + }, + { + { 0x82, 0xE1, 0xBD, 0xB3, 0xDC, 0x4F, 0x02, 0x36, 0x3A, 0x79, 0x6B, 0x60, 0xA8, 0x8E, 0x4E, 0x71, + 0xBD, 0x33, 0xB0, 0xBE, 0x4C, 0xC5, 0xB8, 0x33, 0x25, 0x2B, 0x83, 0x27, 0xB8, 0x0B, 0xD7, 0xE2 }, + }, + { + { 0x83, 0x23, 0xBD, 0x61, 0x09, 0xFD, 0x94, 0xD5, 0x5F, 0x57, 0xA9, 0x60, 0x42, 0xA2, 0x16, 0xD8, + 0x6A, 0x04, 0xEC, 0xDB, 0x65, 0x7C, 0xEF, 0xEE, 0x62, 0x8C, 0x35, 0xF2, 0x1F, 0x29, 0x4A, 0x68 }, + }, + { + { 0x83, 0x25, 0x41, 0x78, 0xAE, 0x2C, 0x8B, 0xAA, 0x1A, 0xCB, 0xB9, 0x99, 0x82, 0x63, 0x8C, 0x79, + 0x9B, 0x9B, 0x37, 0x9D, 0xA4, 0xD0, 0x2B, 0x28, 0x91, 0x86, 0x20, 0xE2, 0xF1, 0xD8, 0x35, 0xC5 }, + }, + { + { 0x83, 0x34, 0xEA, 0xB8, 0x1C, 0x60, 0x4E, 0x99, 0xD5, 0x40, 0x51, 0x3E, 0xF2, 0xE3, 0x7A, 0xBA, + 0x71, 0x4F, 0x07, 0xB2, 0xBA, 0x01, 0x0A, 0xD7, 0x1D, 0xC4, 0xE1, 0x1A, 0x92, 0x18, 0xC1, 0x8C }, + }, + { + { 0x83, 0x54, 0x7A, 0xCA, 0x3C, 0xED, 0x73, 0xDF, 0x99, 0x14, 0xF3, 0x15, 0x60, 0x74, 0x63, 0x79, + 0x29, 0x4C, 0x76, 0x0E, 0xF9, 0xA8, 0xB7, 0x6E, 0x00, 0x06, 0x46, 0xC7, 0x39, 0x07, 0x21, 0x65 }, + }, + { + { 0x83, 0x89, 0xC8, 0x79, 0xB6, 0x3B, 0x82, 0x9D, 0x2D, 0x39, 0xA8, 0xCF, 0xB7, 0x87, 0xE7, 0x72, + 0x77, 0xD5, 0xCF, 0xA3, 0xE3, 0x6F, 0xDA, 0xCB, 0xAB, 0x4D, 0x18, 0xB2, 0xB0, 0x4E, 0x32, 0x94 }, + }, + { + { 0x83, 0xF8, 0x00, 0xB3, 0xE5, 0x28, 0x52, 0xDE, 0xBC, 0xC5, 0x04, 0xC2, 0x5B, 0x63, 0x58, 0x34, + 0x30, 0x7B, 0x14, 0x5E, 0x38, 0x87, 0x50, 0xAA, 0xC1, 0x63, 0x90, 0x9D, 0x30, 0x4B, 0xE3, 0xD2 }, + }, + { + { 0x84, 0x23, 0xB3, 0xF1, 0xCC, 0x85, 0x2B, 0x49, 0xCF, 0x81, 0xB7, 0xD5, 0xFF, 0x51, 0xA7, 0xA5, + 0x6A, 0x84, 0x78, 0x3A, 0x2D, 0xF7, 0x43, 0x61, 0xFF, 0x2E, 0xEE, 0x0F, 0x92, 0x12, 0xC1, 0x59 }, + }, + { + { 0x84, 0x26, 0xBC, 0x06, 0xDB, 0xB5, 0x18, 0x71, 0x34, 0x66, 0xC7, 0x6A, 0xEA, 0x52, 0x1B, 0xCE, + 0x39, 0xD3, 0x91, 0xA8, 0x89, 0xCB, 0xBA, 0x9B, 0x7B, 0x72, 0xDC, 0xDA, 0x89, 0xF3, 0x46, 0x55 }, + }, + { + { 0x84, 0x3D, 0x84, 0x33, 0x2B, 0x42, 0xAB, 0xBA, 0xB3, 0x71, 0xC9, 0xD9, 0xEF, 0xEC, 0xEB, 0x34, + 0x21, 0x8B, 0x72, 0xF5, 0xD8, 0x79, 0x29, 0xE2, 0xE5, 0x6C, 0xA2, 0xFD, 0x0A, 0x60, 0x41, 0xB6 }, + }, + { + { 0x84, 0x7B, 0x5F, 0x1E, 0xEB, 0x2A, 0x44, 0x13, 0xC8, 0xFA, 0x37, 0x98, 0x21, 0x97, 0x37, 0xE1, + 0x92, 0xBA, 0x72, 0x72, 0xA1, 0x08, 0xB7, 0x17, 0x28, 0xA8, 0xD1, 0x65, 0x17, 0xF6, 0x1E, 0x9D }, + }, + { + { 0x84, 0x88, 0x61, 0x71, 0x6D, 0x7A, 0xD3, 0xF9, 0x6F, 0xFF, 0x73, 0xF8, 0x2E, 0x6C, 0x75, 0x7C, + 0x43, 0x35, 0xAE, 0x5D, 0x3A, 0x1F, 0x52, 0xC4, 0xB6, 0x24, 0x08, 0xDB, 0x51, 0xDF, 0x9E, 0xB2 }, + }, + { + { 0x85, 0x04, 0x81, 0x97, 0xF0, 0x2B, 0xF1, 0xA0, 0x38, 0x81, 0x27, 0xE3, 0x2B, 0x5F, 0x0A, 0xD5, + 0xBC, 0xD9, 0x39, 0x89, 0x14, 0x1E, 0x2C, 0xF3, 0x2B, 0x04, 0x6F, 0x19, 0x01, 0x50, 0x59, 0xC8 }, + }, + { + { 0x85, 0x09, 0xCC, 0xB8, 0x81, 0xDB, 0x1D, 0x96, 0x1D, 0xD9, 0xA0, 0x6C, 0xE9, 0x8A, 0xA6, 0x2F, + 0x19, 0xC9, 0x5F, 0x3C, 0x2A, 0xC3, 0x60, 0x2E, 0x0C, 0xD3, 0xC6, 0xC3, 0x8E, 0x68, 0x6E, 0xD4 }, + }, + { + { 0x85, 0x31, 0xB2, 0xBF, 0xC5, 0x45, 0x79, 0xE8, 0xF1, 0x8F, 0x27, 0xB2, 0xE6, 0xEC, 0xC0, 0xF8, + 0x90, 0x64, 0xEE, 0x86, 0x87, 0x0E, 0xCC, 0x8B, 0xBE, 0x0C, 0xE6, 0x86, 0xEC, 0xDA, 0x2C, 0x17 }, + }, + { + { 0x85, 0x76, 0x0F, 0x59, 0x51, 0x90, 0xE9, 0xB4, 0x67, 0x8B, 0xBF, 0x44, 0xEF, 0xB5, 0xCF, 0x8F, + 0x6B, 0x19, 0x37, 0xA9, 0xB8, 0x6B, 0x31, 0xB7, 0x51, 0xBE, 0xCF, 0x72, 0x18, 0x03, 0xB0, 0x1C }, + }, + { + { 0x85, 0xF0, 0x79, 0x36, 0xB4, 0x29, 0x1F, 0x36, 0xD9, 0xB7, 0x5F, 0x42, 0xE8, 0xB7, 0xEE, 0x8A, + 0x64, 0xE6, 0x32, 0xA1, 0x18, 0x11, 0x65, 0xFE, 0x72, 0xB4, 0x88, 0x23, 0xC3, 0xD9, 0x9D, 0x9D }, + }, + { + { 0x86, 0x12, 0x9F, 0xE7, 0x61, 0x99, 0x4D, 0x7B, 0x64, 0xE4, 0x02, 0x85, 0x8F, 0x88, 0xC5, 0x2B, + 0x3E, 0xB9, 0xC0, 0x71, 0xFF, 0xBE, 0x80, 0x02, 0x80, 0xAC, 0x8C, 0x0C, 0x6F, 0x79, 0xE7, 0xA6 }, + }, + { + { 0x86, 0x19, 0x6B, 0x0F, 0xD3, 0x0F, 0x8F, 0x57, 0x56, 0x98, 0xB5, 0xEE, 0xF2, 0x69, 0xD0, 0x69, + 0x2F, 0x88, 0xAD, 0xEA, 0xC4, 0x83, 0x6A, 0x62, 0x67, 0xAB, 0xC8, 0x36, 0x23, 0x34, 0x00, 0x86 }, + }, + { + { 0x86, 0xD1, 0x8B, 0xCD, 0xDE, 0x16, 0x45, 0x42, 0x48, 0x6E, 0x56, 0x44, 0x2C, 0xE1, 0xB8, 0x8B, + 0x1A, 0x10, 0x73, 0x7C, 0xBD, 0x5E, 0xA4, 0xAA, 0xB8, 0xD5, 0xB8, 0xAF, 0x51, 0xF5, 0x29, 0x09 }, + }, + { + { 0x87, 0x09, 0x8D, 0x69, 0x5D, 0xA4, 0xA2, 0x84, 0x8D, 0xD4, 0x18, 0xF2, 0xC6, 0x4A, 0xDF, 0x3B, + 0xD7, 0x11, 0x7C, 0x98, 0xE9, 0xB7, 0x2E, 0x0F, 0x46, 0xA3, 0x67, 0x80, 0x64, 0x5E, 0x4F, 0x80 }, + }, + { + { 0x87, 0xEB, 0xCB, 0xB0, 0x73, 0x7A, 0xE3, 0x27, 0xC6, 0xBE, 0x9D, 0x3F, 0xA2, 0xC7, 0x5D, 0x1E, + 0xEA, 0x0A, 0xE6, 0x6D, 0x20, 0xD3, 0x8A, 0xF6, 0xED, 0x76, 0xE6, 0xB1, 0x49, 0x9C, 0x83, 0x1F }, + }, + { + { 0x87, 0xEB, 0xCD, 0x34, 0x6C, 0xBF, 0xD5, 0x3E, 0x1A, 0x0E, 0x38, 0x25, 0x69, 0x69, 0x07, 0xE2, + 0x9F, 0x26, 0x9F, 0xEB, 0x06, 0x64, 0xA9, 0x42, 0x67, 0x78, 0xF5, 0x73, 0xC0, 0x68, 0xA6, 0x96 }, + }, + { + { 0x88, 0x51, 0x76, 0x78, 0x61, 0xC9, 0x72, 0x7D, 0x92, 0x77, 0x63, 0x62, 0x78, 0xFB, 0x94, 0x1B, + 0x88, 0x85, 0xD9, 0x99, 0x02, 0x48, 0xBF, 0x91, 0x45, 0x9E, 0x52, 0x7C, 0xE7, 0xF0, 0x6C, 0xF6 }, + }, + { + { 0x88, 0x76, 0x88, 0xDC, 0x6E, 0x9F, 0xE3, 0xDB, 0x05, 0x05, 0x7F, 0xC6, 0x38, 0xEB, 0x8B, 0x29, + 0x4C, 0x3D, 0x8E, 0x0A, 0xAE, 0x17, 0x51, 0xF7, 0x58, 0xF6, 0x36, 0x70, 0x37, 0x2E, 0x66, 0x6D }, + }, + { + { 0x88, 0x8D, 0x6D, 0x77, 0xD8, 0x1C, 0x62, 0x91, 0xCB, 0x84, 0xD9, 0xD6, 0x56, 0x27, 0x82, 0xFD, + 0x2E, 0xB3, 0x42, 0x5D, 0x49, 0x1E, 0x68, 0x74, 0x20, 0x28, 0x4B, 0x76, 0xA1, 0xDE, 0xBF, 0xAB }, + }, + { + { 0x88, 0xB0, 0x25, 0x04, 0x88, 0x31, 0x94, 0xB9, 0x9F, 0xD1, 0xB8, 0x1D, 0x5D, 0x5D, 0xC4, 0x99, + 0xD3, 0x97, 0x65, 0x62, 0x1F, 0x7F, 0x43, 0x0C, 0x73, 0x46, 0xA7, 0x7B, 0x23, 0x39, 0x43, 0x82 }, + }, + { + { 0x89, 0x76, 0xB5, 0x94, 0xAC, 0xDD, 0xC1, 0xB2, 0xAB, 0xD7, 0x5F, 0xA1, 0xA1, 0xEA, 0x24, 0x59, + 0x92, 0x9A, 0x7E, 0x81, 0x4C, 0x9E, 0xE3, 0xF7, 0xBA, 0x21, 0xB3, 0x80, 0x82, 0x88, 0xBE, 0xBB }, + }, + { + { 0x89, 0xAF, 0x0E, 0x54, 0xC7, 0x62, 0x77, 0x86, 0x93, 0x52, 0x9D, 0x0A, 0x95, 0x0B, 0x78, 0x33, + 0xF5, 0xEA, 0xBA, 0xF3, 0x42, 0x79, 0x72, 0x60, 0x7F, 0xB2, 0xC7, 0x0C, 0x96, 0xA3, 0x21, 0x61 }, + }, + { + { 0x89, 0xB6, 0xA4, 0x32, 0x03, 0xD5, 0x82, 0x55, 0xD9, 0x1C, 0xC4, 0x67, 0x25, 0x4B, 0x85, 0x2F, + 0xE6, 0x43, 0x47, 0x38, 0x97, 0x44, 0x79, 0xCE, 0x21, 0x64, 0x0B, 0x7E, 0xC3, 0x5F, 0x24, 0xAC }, + }, + { + { 0x89, 0xCE, 0x0F, 0xE0, 0xE0, 0xB3, 0xE3, 0xAC, 0x38, 0x6E, 0x3A, 0xD6, 0x70, 0xF3, 0x45, 0x57, + 0xE4, 0x73, 0xB8, 0x01, 0xBC, 0x56, 0xE4, 0x1D, 0xBD, 0x91, 0xD7, 0x5A, 0xA1, 0x9A, 0x47, 0x31 }, + }, + { + { 0x89, 0xDA, 0xC7, 0x89, 0x6B, 0x46, 0xF2, 0xFC, 0x8B, 0xEA, 0x62, 0x11, 0xFF, 0x98, 0xB6, 0x1F, + 0xAA, 0x15, 0x7B, 0xA8, 0xC4, 0xAD, 0x6F, 0xD1, 0x75, 0x92, 0x75, 0xCE, 0x39, 0x41, 0xC3, 0x28 }, + }, + { + { 0x8A, 0x09, 0x85, 0xBF, 0x86, 0xE8, 0xC9, 0xB9, 0x17, 0xEC, 0x84, 0xDA, 0x2A, 0x56, 0x73, 0x1E, + 0x75, 0x2A, 0xA0, 0xDC, 0x52, 0x87, 0xC2, 0xBF, 0x39, 0x51, 0x0B, 0xB3, 0xF0, 0xF2, 0x0A, 0xD1 }, + }, + { + { 0x8A, 0x1A, 0xD8, 0x6B, 0xC0, 0x1D, 0x05, 0x9D, 0x53, 0xD7, 0x8D, 0xE1, 0x97, 0xAC, 0x42, 0x99, + 0x8F, 0xEE, 0x20, 0x88, 0x8A, 0xF0, 0xF2, 0x5F, 0x2F, 0x79, 0x7D, 0x62, 0x00, 0xAF, 0xF0, 0xBE }, + }, + { + { 0x8A, 0x59, 0x4E, 0xB2, 0xF8, 0x23, 0x64, 0x65, 0xF0, 0x91, 0x8A, 0xED, 0x99, 0xA7, 0x36, 0x48, + 0x2B, 0x80, 0xAF, 0xD3, 0xD3, 0x3E, 0x9F, 0x17, 0x46, 0x90, 0x8C, 0x21, 0x57, 0xCA, 0xD2, 0x89 }, + }, + { + { 0x8A, 0x74, 0xC4, 0x83, 0xDB, 0x8B, 0x72, 0xDC, 0x6A, 0x59, 0x80, 0xA4, 0x8E, 0x26, 0x2A, 0x5F, + 0x3B, 0x7D, 0xB2, 0xBF, 0xF7, 0xAE, 0xB2, 0xB9, 0xC7, 0xD7, 0x28, 0xF5, 0x4E, 0x55, 0xD6, 0xDD }, + }, + { + { 0x8A, 0xAF, 0x36, 0x3C, 0xC9, 0xD8, 0x44, 0x15, 0xA7, 0xEB, 0x0D, 0x72, 0xDA, 0x08, 0xB3, 0x58, + 0x80, 0x68, 0x55, 0x9C, 0xB0, 0xA9, 0xAE, 0x92, 0xB8, 0xF4, 0x60, 0x2E, 0xDA, 0x23, 0x82, 0xAA }, + }, + { + { 0x8A, 0xB2, 0x77, 0x62, 0xF4, 0xA2, 0xE3, 0x11, 0x22, 0x04, 0x96, 0x98, 0x39, 0x99, 0xC8, 0xC4, + 0x60, 0x96, 0x3D, 0xFC, 0x1B, 0x88, 0x51, 0x11, 0x1D, 0xA4, 0x1D, 0x3F, 0x3B, 0x0A, 0x6E, 0x94 }, + }, + { + { 0x8A, 0xB4, 0x2A, 0x77, 0xBE, 0x55, 0x99, 0xD7, 0x0E, 0x6F, 0xDB, 0xB7, 0x87, 0xE6, 0xA0, 0xFF, + 0x21, 0xC5, 0x09, 0x5F, 0x86, 0xE2, 0xD7, 0x62, 0x34, 0x0D, 0x3D, 0xDD, 0xCC, 0x75, 0x87, 0x0C }, + }, + { + { 0x8A, 0xC9, 0x1B, 0x83, 0x10, 0x9D, 0x39, 0x9C, 0xC2, 0xBC, 0x69, 0x98, 0x49, 0x03, 0x73, 0x37, + 0x9B, 0xDD, 0xE4, 0xDA, 0x04, 0xBA, 0x8B, 0xAA, 0x3B, 0x22, 0x5C, 0x37, 0xDD, 0x21, 0x3C, 0xD9 }, + }, + { + { 0x8A, 0xD1, 0xD5, 0x48, 0x95, 0x27, 0xB5, 0x28, 0xE5, 0xB5, 0xD6, 0xA5, 0x95, 0x78, 0x87, 0x08, + 0x88, 0x8A, 0x3F, 0xB1, 0x9F, 0x2C, 0x7C, 0x8B, 0x38, 0x07, 0x0E, 0x1F, 0x38, 0x98, 0x96, 0x8B }, + }, + { + { 0x8A, 0xDB, 0x49, 0xD4, 0x15, 0x53, 0x56, 0x70, 0x5B, 0x64, 0x42, 0x6A, 0x99, 0x0F, 0x58, 0xB3, + 0xA0, 0x71, 0xEF, 0x78, 0x2E, 0x6C, 0x09, 0x53, 0x07, 0xD7, 0x74, 0x74, 0xD5, 0xB5, 0x7A, 0x62 }, + }, + { + { 0x8B, 0x00, 0xC4, 0x18, 0xC1, 0x50, 0x94, 0x4B, 0x2B, 0x53, 0x2F, 0x5D, 0x87, 0x9F, 0x7D, 0x42, + 0xF8, 0xFE, 0x71, 0x1E, 0x77, 0x35, 0xC6, 0x5D, 0x3C, 0xA0, 0x68, 0x50, 0x74, 0xA2, 0xEA, 0x48 }, + }, + { + { 0x8B, 0x1B, 0x7C, 0x94, 0xB9, 0x94, 0x4F, 0x59, 0xA3, 0xDE, 0x10, 0x21, 0x3B, 0xF6, 0x2B, 0xDC, + 0x50, 0x15, 0x79, 0x0D, 0xDB, 0x18, 0x6F, 0x63, 0x18, 0x24, 0x1A, 0x01, 0x51, 0x51, 0x3C, 0xF6 }, + }, + { + { 0x8B, 0x3A, 0x10, 0x35, 0xC3, 0xFD, 0xF3, 0x45, 0xFB, 0x70, 0x80, 0x44, 0x83, 0xA5, 0x04, 0x49, + 0xA3, 0xD7, 0x60, 0xC6, 0xBA, 0x48, 0xF5, 0xB8, 0x2D, 0x6B, 0xB2, 0x62, 0xED, 0x9D, 0xE3, 0x73 }, + }, + { + { 0x8B, 0x3A, 0x75, 0xCB, 0xC3, 0x62, 0xD2, 0x35, 0x57, 0x0E, 0x5D, 0xE7, 0x04, 0x29, 0x38, 0x70, + 0x8A, 0x1B, 0x0F, 0xCE, 0xB4, 0x59, 0x86, 0x2A, 0x38, 0x67, 0xB7, 0x34, 0xCD, 0xCB, 0x97, 0x94 }, + }, + { + { 0x8B, 0x59, 0x74, 0x2D, 0xFF, 0xF2, 0xD5, 0xBF, 0x70, 0x92, 0x6D, 0x1F, 0xE8, 0x00, 0x7D, 0x35, + 0x57, 0x91, 0x63, 0xFA, 0x4E, 0xEE, 0x1D, 0x03, 0x38, 0xF4, 0x4E, 0xD8, 0xD9, 0xFB, 0x67, 0x28 }, + }, + { + { 0x8B, 0xBE, 0x23, 0x92, 0xCB, 0xCE, 0xEF, 0x09, 0x75, 0xC2, 0xF4, 0xAE, 0xA1, 0xC6, 0x5A, 0xFD, + 0x27, 0x53, 0x0C, 0x9B, 0x05, 0x67, 0x6E, 0x31, 0xA1, 0x17, 0xAF, 0x44, 0xDC, 0x0A, 0x26, 0x98 }, + }, + { + { 0x8B, 0xD6, 0x24, 0xA6, 0x83, 0x99, 0x17, 0xA1, 0x9B, 0x87, 0x13, 0x50, 0xE7, 0x88, 0x98, 0x0C, + 0xA8, 0xF4, 0x2B, 0xA0, 0x96, 0x64, 0x22, 0xE8, 0xB7, 0xDD, 0xB3, 0x75, 0xB4, 0xC3, 0x50, 0xD3 }, + }, + { + { 0x8C, 0x3E, 0x7C, 0x1D, 0xCC, 0x7D, 0xD8, 0xE7, 0xD8, 0xBF, 0x7B, 0x5B, 0x3A, 0xE5, 0xE0, 0x27, + 0x2E, 0x81, 0x1A, 0xB9, 0xF3, 0xC3, 0xC5, 0x38, 0xE5, 0x74, 0x71, 0x77, 0xE6, 0x2D, 0x62, 0x92 }, + }, + { + { 0x8C, 0x3F, 0x58, 0x3D, 0xA8, 0x5F, 0x57, 0x4D, 0xBA, 0x1F, 0xD1, 0xE2, 0x70, 0x28, 0xFF, 0x93, + 0x42, 0x32, 0x2E, 0xF9, 0x08, 0xBB, 0xFA, 0x8B, 0x66, 0x40, 0x65, 0x2C, 0x4A, 0x73, 0x93, 0x7E }, + }, + { + { 0x8C, 0x7C, 0x65, 0x7B, 0xDA, 0x13, 0xCA, 0x62, 0xF2, 0x9A, 0x65, 0xC6, 0xD5, 0x19, 0x3A, 0x93, + 0xCF, 0x6C, 0x58, 0x77, 0x18, 0xAD, 0xCA, 0x67, 0x15, 0x8E, 0x97, 0xD3, 0x6A, 0x62, 0x3E, 0xCA }, + }, + { + { 0x8C, 0xA6, 0x79, 0x62, 0xC4, 0xA8, 0x09, 0x13, 0x33, 0xF2, 0x4E, 0xFD, 0x60, 0xEE, 0x70, 0xCF, + 0xED, 0xDB, 0xD6, 0x41, 0x59, 0x04, 0x70, 0x9E, 0x78, 0x5C, 0x33, 0x1B, 0x1E, 0xF5, 0x8F, 0x8E }, + }, + { + { 0x8C, 0xB4, 0x26, 0x39, 0x8A, 0xD9, 0x7B, 0x04, 0x5D, 0x6A, 0xE9, 0x75, 0x3E, 0x4D, 0x48, 0xB1, + 0x79, 0x23, 0xB9, 0x36, 0x5A, 0x6B, 0x4B, 0x97, 0xC4, 0xEC, 0xAC, 0x4A, 0x4B, 0x37, 0x03, 0x4B }, + }, + { + { 0x8C, 0xCD, 0x79, 0x41, 0x63, 0x00, 0xCA, 0x61, 0xEE, 0x56, 0xA6, 0x0D, 0xA1, 0xC8, 0x09, 0x35, + 0xB8, 0x6E, 0x27, 0x91, 0x93, 0xAD, 0x3D, 0x05, 0x65, 0x72, 0x9D, 0x69, 0xE0, 0x8C, 0x86, 0x96 }, + }, + { + { 0x8C, 0xFA, 0x92, 0x51, 0xB4, 0xDA, 0xEF, 0x50, 0x81, 0x0D, 0x6E, 0x19, 0xF5, 0xF8, 0x8E, 0xA2, + 0xC6, 0x5D, 0xB7, 0xA2, 0xE8, 0xA5, 0x06, 0xF7, 0xDF, 0x99, 0x55, 0x81, 0x7D, 0xDD, 0xEB, 0xC8 }, + }, + { + { 0x8D, 0x44, 0xD4, 0x17, 0x60, 0x46, 0x06, 0x3E, 0x2E, 0xB3, 0xC7, 0x50, 0x38, 0x13, 0xBB, 0xBB, + 0xF6, 0xCA, 0x6D, 0x54, 0x3F, 0x40, 0xB3, 0x99, 0xCC, 0x43, 0xF1, 0x12, 0x4B, 0x28, 0xFB, 0x97 }, + }, + { + { 0x8D, 0x73, 0x19, 0x48, 0x17, 0xF0, 0x97, 0x86, 0x15, 0x84, 0x61, 0x36, 0xC9, 0x8A, 0x59, 0x01, + 0x72, 0x8A, 0xB7, 0xFE, 0x11, 0x92, 0xE4, 0xED, 0x6D, 0x59, 0xB1, 0xDA, 0x5A, 0x42, 0x7D, 0xDA }, + }, + { + { 0x8D, 0x74, 0xC0, 0xD6, 0x6B, 0xB2, 0xEE, 0xB2, 0x6B, 0x9A, 0x55, 0x74, 0x38, 0x5D, 0xA7, 0xB4, + 0x14, 0x0A, 0xF0, 0x70, 0x47, 0xD2, 0xFE, 0x64, 0x3D, 0x1D, 0x1A, 0xE5, 0xB1, 0x96, 0x90, 0x43 }, + }, + { + { 0x8D, 0x85, 0xDA, 0x44, 0x6F, 0x5C, 0x79, 0x54, 0xBD, 0xF7, 0x6C, 0x09, 0x0C, 0xD2, 0x46, 0x68, + 0xFF, 0x23, 0x3C, 0xCD, 0xF6, 0x6B, 0x94, 0xDA, 0xD9, 0x92, 0x98, 0xEB, 0xCB, 0x16, 0x8D, 0xC5 }, + }, + { + { 0x8D, 0x8A, 0xD7, 0xC2, 0x60, 0x58, 0x16, 0xDD, 0x44, 0xB4, 0x29, 0x77, 0x9E, 0xD3, 0x62, 0xB9, + 0x88, 0x37, 0x5B, 0x65, 0x90, 0x46, 0x36, 0x04, 0xF0, 0x86, 0x07, 0x6E, 0x30, 0xE0, 0xA9, 0x5D }, + }, + { + { 0x8D, 0xF5, 0x42, 0x29, 0x9F, 0x9B, 0xDD, 0xF5, 0xAD, 0x42, 0xEE, 0x39, 0x88, 0xDD, 0x21, 0xBF, + 0x21, 0x6B, 0x82, 0x70, 0x91, 0x47, 0xB1, 0x43, 0x1D, 0x08, 0x20, 0xA0, 0x10, 0xD1, 0xC6, 0xBE }, + }, + { + { 0x8D, 0xFE, 0x05, 0xBF, 0x3B, 0x70, 0x65, 0xA3, 0x6F, 0x66, 0xB4, 0xA9, 0x80, 0x6A, 0xBF, 0x8A, + 0x7F, 0x37, 0xF6, 0xD9, 0x2D, 0x3E, 0xB7, 0x11, 0x49, 0xCE, 0x49, 0x21, 0x42, 0xCC, 0x85, 0x79 }, + }, + { + { 0x8E, 0x18, 0xFD, 0xBD, 0xB0, 0x08, 0x16, 0x00, 0x35, 0xFA, 0xF5, 0x01, 0x5B, 0xE7, 0xDA, 0xF4, + 0x63, 0xB5, 0xC4, 0x14, 0xEA, 0xBC, 0x8B, 0x89, 0xF3, 0xDB, 0xA2, 0x05, 0xAB, 0x09, 0xA6, 0x43 }, + }, + { + { 0x8E, 0x2E, 0x4E, 0x29, 0xA3, 0xB4, 0x7F, 0x9B, 0x4A, 0xF7, 0xF6, 0x02, 0xE9, 0xD2, 0xBA, 0xBA, + 0xED, 0xC3, 0x2D, 0x4A, 0x9E, 0xF2, 0x1A, 0x74, 0x1B, 0x07, 0xCE, 0xC1, 0xE4, 0x24, 0x90, 0xCF }, + }, + { + { 0x8E, 0x38, 0x31, 0x6E, 0x38, 0x8B, 0x56, 0x17, 0x8E, 0x60, 0x10, 0xAD, 0xC2, 0xCA, 0xBB, 0x40, + 0x24, 0x92, 0x64, 0xB3, 0x34, 0x42, 0x20, 0xCE, 0xD9, 0xF6, 0xEC, 0xBC, 0xF0, 0x71, 0x1C, 0x34 }, + }, + { + { 0x8E, 0x57, 0x12, 0xC7, 0x5E, 0xC1, 0xE0, 0x31, 0x73, 0x15, 0x96, 0x35, 0x60, 0xF2, 0x6C, 0x8E, + 0xCB, 0x29, 0xA7, 0xA0, 0x28, 0x7F, 0x84, 0xE7, 0xCC, 0x29, 0x99, 0x67, 0x5E, 0x41, 0xA0, 0x5D }, + }, + { + { 0x8E, 0xB9, 0x24, 0x0B, 0x19, 0xA3, 0xCC, 0x2F, 0xF2, 0xCD, 0xF9, 0xAD, 0x2C, 0x71, 0x2E, 0x23, + 0xF4, 0x1E, 0x35, 0x2A, 0xE1, 0xDA, 0x79, 0x29, 0xD6, 0x08, 0xCB, 0xBC, 0x81, 0xA9, 0xE0, 0xC3 }, + }, + { + { 0x8F, 0x01, 0xE1, 0x2E, 0xF4, 0x24, 0x16, 0x9D, 0x2D, 0x5C, 0x2D, 0x25, 0x73, 0xD4, 0x97, 0x36, + 0xE6, 0x9B, 0x05, 0x74, 0x1D, 0x31, 0xB1, 0x62, 0x61, 0xB5, 0xBD, 0xB3, 0xB4, 0x48, 0x77, 0xE2 }, + }, + { + { 0x8F, 0x10, 0x10, 0x47, 0x93, 0xE8, 0x55, 0x42, 0xBC, 0x06, 0x04, 0xD6, 0xCF, 0x21, 0x5F, 0x78, + 0x80, 0xBD, 0x6A, 0x4D, 0xD0, 0xFD, 0xF1, 0xE7, 0xA5, 0xB9, 0xCA, 0x12, 0x46, 0xF5, 0xC4, 0x09 }, + }, + { + { 0x8F, 0x71, 0x27, 0x76, 0x2E, 0xE7, 0x51, 0x69, 0xBD, 0xC3, 0x5B, 0x04, 0xA7, 0x28, 0xE9, 0xD3, + 0x1B, 0x7E, 0x4D, 0x37, 0x89, 0xAA, 0x2C, 0x46, 0xD8, 0xA3, 0x1B, 0x3D, 0xFA, 0x81, 0xA9, 0x7E }, + }, + { + { 0x8F, 0x93, 0xC5, 0xA7, 0xC0, 0x96, 0x66, 0x8B, 0xD4, 0x51, 0x56, 0xBA, 0xD5, 0x6F, 0x06, 0x12, + 0x04, 0x5D, 0x63, 0x65, 0xB6, 0xBB, 0xAA, 0x63, 0xBA, 0xCB, 0xF2, 0xBE, 0x01, 0xB5, 0x2C, 0xD3 }, + }, + { + { 0x8F, 0x94, 0x15, 0x92, 0x6F, 0x40, 0x49, 0xEA, 0x41, 0x8A, 0x30, 0x7C, 0x76, 0x36, 0xE4, 0x9B, + 0x14, 0x4F, 0xA5, 0x3E, 0x52, 0xE1, 0x04, 0x15, 0x5F, 0x58, 0x03, 0x5E, 0x45, 0x41, 0xCD, 0x6E }, + }, + { + { 0x8F, 0x9F, 0x3E, 0x59, 0xD3, 0x6A, 0x9F, 0x33, 0x15, 0x04, 0x9B, 0x99, 0x1C, 0x89, 0xC3, 0x21, + 0xE1, 0xF1, 0xF6, 0x78, 0xE0, 0xA2, 0xA4, 0x2F, 0xC1, 0x44, 0xE5, 0xFF, 0xF2, 0x3B, 0x62, 0xA5 }, + }, + { + { 0x8F, 0xA2, 0x4B, 0x76, 0xD7, 0xAA, 0xD1, 0x53, 0x3F, 0xEA, 0xFE, 0x73, 0xE0, 0x0F, 0xFA, 0x8B, + 0x89, 0x4B, 0x95, 0xB4, 0xE7, 0x01, 0x59, 0x54, 0x9E, 0xAD, 0xA6, 0x58, 0xF6, 0xA2, 0x2B, 0x88 }, + }, + { + { 0x8F, 0xCB, 0x3C, 0x28, 0xE8, 0x1E, 0xFA, 0x6A, 0x1F, 0xE3, 0x4D, 0x03, 0x8A, 0x3B, 0xFB, 0x00, + 0x72, 0x96, 0xA0, 0x48, 0x24, 0xB3, 0xA2, 0x06, 0xE9, 0xEF, 0x28, 0x97, 0xE6, 0x97, 0x51, 0x10 }, + }, + { + { 0x90, 0x30, 0xEC, 0x29, 0x71, 0x10, 0x6A, 0x7C, 0x68, 0x8B, 0xBE, 0xA9, 0x1D, 0x70, 0xF3, 0x4D, + 0x75, 0xD6, 0x74, 0x5B, 0x30, 0x48, 0xFB, 0x1D, 0x9D, 0x3B, 0xC4, 0x9F, 0x9F, 0xC8, 0x78, 0xBA }, + }, + { + { 0x90, 0xB3, 0xA1, 0x85, 0x36, 0x86, 0xAF, 0xEB, 0x15, 0x4A, 0xEF, 0x7E, 0x84, 0x0D, 0x38, 0x04, + 0x4E, 0x7D, 0x7F, 0x6D, 0xC4, 0xCE, 0x82, 0x8C, 0xE3, 0x97, 0x55, 0xAC, 0x88, 0xE4, 0x2E, 0x07 }, + }, + { + { 0x90, 0xE2, 0x51, 0x86, 0x7F, 0x6B, 0x0C, 0x14, 0xBD, 0x9B, 0x51, 0x0C, 0xFD, 0xA8, 0x48, 0x49, + 0x72, 0xFD, 0xF0, 0xE0, 0x6D, 0xC1, 0x1F, 0x5D, 0x1D, 0x59, 0x0B, 0xE3, 0xFC, 0x38, 0xDF, 0xF0 }, + }, + { + { 0x90, 0xF2, 0xF3, 0x73, 0xB9, 0xA6, 0x2E, 0x3C, 0xC8, 0x15, 0x87, 0x57, 0x58, 0x13, 0x18, 0x9B, + 0xA6, 0x9C, 0x67, 0x28, 0x1F, 0x41, 0x93, 0xE4, 0x9B, 0x31, 0x68, 0x9A, 0xA3, 0x7C, 0x3C, 0x21 }, + }, + { + { 0x91, 0x02, 0x41, 0xA2, 0xDD, 0x40, 0xA2, 0x83, 0xEA, 0x1F, 0x0F, 0x4F, 0x31, 0xC9, 0x48, 0x9D, + 0x38, 0x45, 0x0F, 0x08, 0xCA, 0x8B, 0xCC, 0x21, 0x87, 0xF6, 0x90, 0xB4, 0x4F, 0x37, 0x30, 0x17 }, + }, + { + { 0x91, 0x31, 0x4F, 0xF3, 0xFB, 0x23, 0xD3, 0x41, 0x44, 0x63, 0x17, 0xF1, 0xC6, 0xCA, 0x9D, 0x6C, + 0x6D, 0xCB, 0x7A, 0x95, 0x65, 0x1D, 0xA7, 0xE3, 0xF1, 0x56, 0x00, 0xF4, 0x3A, 0x25, 0x8A, 0xF3 }, + }, + { + { 0x91, 0x3B, 0xE0, 0x71, 0xEC, 0x66, 0x46, 0x91, 0x37, 0x98, 0x38, 0x6E, 0x69, 0x4F, 0x08, 0x8B, + 0xF0, 0x9D, 0x48, 0xA3, 0x97, 0xF9, 0x79, 0xE1, 0x24, 0x4C, 0x20, 0x2F, 0x3C, 0x8E, 0x13, 0x8D }, + }, + { + { 0x91, 0x6B, 0x1A, 0x6B, 0x61, 0x6C, 0x6D, 0x8A, 0xC1, 0x49, 0xA3, 0x31, 0x04, 0x83, 0x51, 0x1A, + 0xF7, 0xA7, 0xD5, 0x3C, 0x60, 0x17, 0x9E, 0x7F, 0xA7, 0x93, 0x1E, 0x59, 0x70, 0xB7, 0x82, 0xF1 }, + }, + { + { 0x91, 0x90, 0xF8, 0x25, 0x51, 0x0C, 0x65, 0x98, 0xE1, 0x9D, 0x17, 0xDB, 0xBE, 0x6E, 0x7C, 0x82, + 0x31, 0x86, 0x9C, 0xA7, 0xF6, 0xE3, 0x07, 0xA2, 0xC2, 0xCC, 0x54, 0x77, 0x8D, 0x4A, 0x89, 0xB3 }, + }, + { + { 0x91, 0xC7, 0x6E, 0xF8, 0xC7, 0x05, 0x3B, 0x2A, 0x27, 0x0B, 0x97, 0x19, 0x78, 0x3C, 0x85, 0x10, + 0xA2, 0x89, 0x0A, 0x48, 0x40, 0x18, 0x63, 0x72, 0x6E, 0x23, 0x3A, 0x82, 0xBF, 0x9A, 0x0B, 0xCF }, + }, + { + { 0x92, 0x3F, 0x0F, 0x8C, 0x40, 0x5A, 0x02, 0xE6, 0x82, 0xC4, 0xB4, 0x66, 0x5A, 0x7E, 0xE7, 0x16, + 0xAA, 0x57, 0xE0, 0xA5, 0x86, 0xC2, 0x4A, 0x16, 0x5A, 0xAD, 0x7E, 0x5B, 0xDA, 0x22, 0x78, 0x24 }, + }, + { + { 0x92, 0x71, 0x44, 0x12, 0x1C, 0x23, 0x63, 0x57, 0x07, 0xE9, 0x40, 0x7F, 0x7F, 0xFF, 0x6A, 0x64, + 0x63, 0x5D, 0x7C, 0xE9, 0x06, 0x66, 0xD4, 0x29, 0x94, 0x09, 0x7A, 0xF4, 0x0C, 0x31, 0x36, 0xFB }, + }, + { + { 0x92, 0x83, 0x70, 0x07, 0x63, 0x1B, 0x8F, 0xFA, 0x02, 0x91, 0xD9, 0xE9, 0xC4, 0xB0, 0x8A, 0x5B, + 0xFA, 0x84, 0x5B, 0xA1, 0x7E, 0x79, 0xA2, 0x2D, 0x9D, 0x9D, 0x44, 0xB9, 0x02, 0x23, 0x3D, 0x16 }, + }, + { + { 0x92, 0x8C, 0x1C, 0xD7, 0x50, 0x82, 0x84, 0x1A, 0x02, 0xEF, 0x8B, 0x49, 0x45, 0x6D, 0x6D, 0x3B, + 0x72, 0xB9, 0x79, 0xFF, 0xDA, 0xFB, 0xFD, 0xE2, 0xC6, 0x50, 0xD3, 0x53, 0xDC, 0xD4, 0xF8, 0xFE }, + }, + { + { 0x93, 0x03, 0x43, 0xB5, 0xE8, 0xC1, 0x5D, 0x6D, 0x93, 0x9D, 0x0F, 0x39, 0xF0, 0x53, 0x7A, 0xA6, + 0x23, 0x3F, 0x61, 0x17, 0x93, 0x79, 0xCE, 0xBC, 0x8D, 0x7C, 0x62, 0x01, 0x09, 0x9F, 0xFD, 0xE2 }, + }, + { + { 0x93, 0x8A, 0xE3, 0xE7, 0x15, 0x48, 0xA9, 0xC3, 0x14, 0x27, 0xCB, 0xA7, 0x40, 0xBE, 0x2E, 0xB9, + 0x26, 0x88, 0x68, 0xBD, 0xAC, 0xC1, 0xDA, 0xA8, 0x67, 0x02, 0xFA, 0xB7, 0x93, 0x70, 0xB8, 0xF9 }, + }, + { + { 0x93, 0xAC, 0x4B, 0xBC, 0x6E, 0xBD, 0x52, 0x7E, 0xA9, 0x42, 0xAF, 0x29, 0x4A, 0x5D, 0xAB, 0xD1, + 0x4F, 0xE7, 0x7C, 0x5E, 0x6A, 0x4E, 0xEB, 0x14, 0xB8, 0x0D, 0x42, 0x9F, 0x39, 0xFD, 0xCC, 0xE7 }, + }, + { + { 0x94, 0x18, 0xEF, 0x6D, 0x9F, 0xF6, 0x06, 0xFD, 0xC7, 0x55, 0x78, 0xF0, 0xF5, 0xDE, 0xEA, 0xB1, + 0x39, 0x69, 0x80, 0xF5, 0xB5, 0xD3, 0x96, 0x9D, 0x7A, 0x0F, 0x23, 0x83, 0x70, 0x3F, 0x9B, 0xB1 }, + }, + { + { 0x94, 0x77, 0xCF, 0xEC, 0xDA, 0x46, 0x1D, 0xBC, 0x01, 0xA3, 0xA3, 0x0E, 0xA2, 0x64, 0x31, 0x42, + 0x5B, 0xD1, 0xB1, 0x0C, 0xF7, 0xC2, 0xF2, 0x06, 0x0E, 0xCB, 0x39, 0xF7, 0xD4, 0x15, 0x5B, 0x0D }, + }, + { + { 0x94, 0x97, 0xDC, 0x04, 0xAA, 0xBB, 0xED, 0xF0, 0xD9, 0xE7, 0x65, 0x40, 0x60, 0x02, 0x55, 0x76, + 0x7D, 0xF3, 0xB9, 0x70, 0x59, 0x67, 0x02, 0x86, 0x70, 0x7D, 0x85, 0x85, 0xE4, 0xD8, 0x2C, 0x63 }, + }, + { + { 0x94, 0x9E, 0x13, 0x59, 0x7F, 0x32, 0x06, 0x9F, 0xF3, 0xA6, 0xCF, 0x49, 0x07, 0x1E, 0x70, 0xF4, + 0x0C, 0x4A, 0x2E, 0x07, 0x2E, 0x98, 0x69, 0xFE, 0x15, 0x97, 0xEE, 0x8E, 0xB7, 0x16, 0x34, 0x09 }, + }, + { + { 0x94, 0xC5, 0x29, 0xAA, 0x2D, 0xFE, 0xB3, 0x9F, 0x5E, 0x6C, 0x66, 0xD3, 0x53, 0x37, 0x1E, 0xBC, + 0xD2, 0xCA, 0xED, 0xBD, 0x1F, 0x0E, 0x6C, 0x79, 0x75, 0x5E, 0xEE, 0x61, 0xE9, 0xE6, 0x24, 0xF4 }, + }, + { + { 0x94, 0xDC, 0x80, 0x07, 0x49, 0x1D, 0xA8, 0xBF, 0xB7, 0x39, 0x14, 0xAD, 0xCE, 0xF7, 0x1A, 0x12, + 0x41, 0x58, 0xBA, 0xD1, 0x7B, 0xA8, 0x8F, 0xA9, 0x46, 0x57, 0x9B, 0xBC, 0x2D, 0x64, 0x97, 0x8D }, + }, + { + { 0x95, 0x68, 0x33, 0xAE, 0xE6, 0x61, 0x19, 0x26, 0xE9, 0x52, 0x72, 0xA1, 0xF5, 0x88, 0xF9, 0x2A, + 0xF5, 0x2C, 0xAE, 0x70, 0x7A, 0xCD, 0xCC, 0x82, 0x63, 0x99, 0x7B, 0xFA, 0x8C, 0x71, 0x9C, 0xA8 }, + }, + { + { 0x95, 0x6D, 0xBC, 0x65, 0x57, 0x62, 0xCE, 0x49, 0xE5, 0xE8, 0x46, 0x99, 0x2C, 0x26, 0xEB, 0xF5, + 0x66, 0x60, 0x42, 0xD2, 0xC0, 0xD7, 0xE7, 0xCF, 0x74, 0x04, 0x26, 0xBE, 0x3C, 0x51, 0x99, 0x72 }, + }, + { + { 0x95, 0x89, 0xDA, 0xC9, 0xEC, 0xE7, 0x6D, 0xF5, 0x72, 0x01, 0x96, 0xDC, 0x58, 0x6D, 0x17, 0x9D, + 0x73, 0x5D, 0xF7, 0x17, 0x92, 0x6C, 0x06, 0x1E, 0xA7, 0x0C, 0x40, 0x85, 0x64, 0x8F, 0xF3, 0x12 }, + }, + { + { 0x95, 0xF4, 0x59, 0xAC, 0xF2, 0x57, 0x64, 0x4C, 0x90, 0x9A, 0xDC, 0xAE, 0xAD, 0xD8, 0x8A, 0x3C, + 0x57, 0x76, 0x2E, 0xCB, 0x09, 0x2C, 0x50, 0xB4, 0x51, 0xC1, 0x58, 0x6B, 0x21, 0x8E, 0x6B, 0x26 }, + }, + { + { 0x96, 0xA4, 0x59, 0x90, 0xFC, 0xD0, 0x1C, 0x9C, 0x2A, 0xF0, 0x64, 0x5F, 0x87, 0xB9, 0x69, 0x8B, + 0x05, 0xAF, 0xE6, 0x94, 0x32, 0xEB, 0x57, 0x01, 0x08, 0x20, 0x13, 0xBA, 0xC5, 0xB0, 0x55, 0x60 }, + }, + { + { 0x96, 0xEB, 0x44, 0xAA, 0x6A, 0x20, 0x49, 0xE6, 0xBA, 0xFF, 0xE6, 0xB5, 0x21, 0xC4, 0xAD, 0x8C, + 0x58, 0x77, 0x26, 0xCA, 0xA0, 0x12, 0xE8, 0xFB, 0x8E, 0x8E, 0x21, 0x89, 0x77, 0xBF, 0x1D, 0xF6 }, + }, + { + { 0x97, 0x4F, 0x51, 0xA6, 0x04, 0x68, 0x48, 0xFA, 0xA7, 0xB3, 0x3F, 0xD2, 0x39, 0x13, 0x86, 0x42, + 0x8B, 0xD5, 0x24, 0xEA, 0xEB, 0xA8, 0x01, 0x4E, 0x6D, 0x1F, 0xE2, 0x54, 0x38, 0x3F, 0x41, 0x79 }, + }, + { + { 0x97, 0x83, 0x7F, 0xE4, 0xCF, 0xBF, 0x4F, 0xF0, 0x37, 0x63, 0x1C, 0xF4, 0xB5, 0x3F, 0x9F, 0xA8, + 0xAB, 0x37, 0xA8, 0x30, 0x1C, 0xAB, 0x9E, 0x48, 0x71, 0x5F, 0x53, 0x7D, 0xD0, 0x8A, 0x68, 0x48 }, + }, + { + { 0x97, 0x8D, 0x6F, 0x1E, 0x9A, 0xA3, 0xA3, 0xCE, 0xB1, 0xAD, 0xA6, 0x09, 0xE2, 0x00, 0x95, 0xFB, + 0xC3, 0x3A, 0x6B, 0xBC, 0x6A, 0x21, 0xD8, 0x0A, 0x4E, 0xCB, 0x27, 0x3C, 0x60, 0xAC, 0x2A, 0xC7 }, + }, + { + { 0x97, 0xD6, 0x24, 0xEA, 0xC8, 0x80, 0x91, 0x03, 0x4A, 0x84, 0xB4, 0xDC, 0x63, 0x33, 0x92, 0x37, + 0xDA, 0xF4, 0xA2, 0xB0, 0xF6, 0xC6, 0xE2, 0x55, 0xE7, 0xEC, 0xE6, 0x82, 0x59, 0x1D, 0x5E, 0xDC }, + }, + { + { 0x97, 0xE2, 0x11, 0x70, 0x95, 0x44, 0x9C, 0xDF, 0xC0, 0xA8, 0x3E, 0xD4, 0x9E, 0x65, 0x0A, 0xDF, + 0xD9, 0xBC, 0x0B, 0x3C, 0x50, 0x04, 0x9D, 0x7B, 0x93, 0x24, 0x5A, 0xCC, 0x3A, 0x0C, 0x16, 0xAF }, + }, + { + { 0x98, 0x15, 0x9D, 0xD1, 0x88, 0x39, 0xFD, 0xF4, 0x3E, 0xC0, 0x00, 0x23, 0xAD, 0x1D, 0x4E, 0x27, + 0xD8, 0xF9, 0x50, 0xBE, 0xC8, 0x60, 0x40, 0x11, 0x1E, 0x84, 0x54, 0xCE, 0x44, 0x6F, 0xAB, 0x75 }, + }, + { + { 0x98, 0x39, 0xE6, 0x09, 0x46, 0xEF, 0x20, 0xE2, 0x44, 0x68, 0xC1, 0x81, 0x88, 0xBB, 0xB3, 0xC6, + 0xE8, 0x80, 0xF3, 0x6D, 0x0D, 0xED, 0xE8, 0xD2, 0x4A, 0x23, 0x05, 0x86, 0x3A, 0x5B, 0x5D, 0xFE }, + }, + { + { 0x98, 0x57, 0x02, 0xC0, 0x55, 0x05, 0xD9, 0xBA, 0xE0, 0xCE, 0x23, 0xAB, 0x2C, 0xB8, 0x65, 0xA1, + 0xD1, 0x3F, 0x7B, 0xE0, 0x4F, 0xAB, 0xC1, 0x19, 0x49, 0x4B, 0x4C, 0xC1, 0x0A, 0x7D, 0x9A, 0xDB }, + }, + { + { 0x98, 0x76, 0x8D, 0x66, 0x7E, 0x4D, 0xFC, 0x1D, 0x99, 0x5E, 0x42, 0xC7, 0x1E, 0x31, 0x93, 0x31, + 0x6C, 0xEF, 0x8C, 0x2A, 0xF5, 0x9A, 0x0E, 0xA6, 0x19, 0x81, 0xFB, 0x42, 0x00, 0x72, 0x57, 0xC7 }, + }, + { + { 0x98, 0x7A, 0xD4, 0x70, 0x5F, 0x65, 0x65, 0xAF, 0x64, 0x53, 0x0D, 0x09, 0x60, 0xB8, 0x82, 0x74, + 0x0A, 0xFB, 0x8A, 0x74, 0xD5, 0xCC, 0x3C, 0x68, 0x19, 0x34, 0x69, 0x83, 0xF2, 0x51, 0x33, 0x37 }, + }, + { + { 0x98, 0xAA, 0xB4, 0xED, 0x43, 0x89, 0xF3, 0x5E, 0x74, 0x23, 0x74, 0x90, 0x68, 0x01, 0x15, 0x3D, + 0xC7, 0xC8, 0xE3, 0x2D, 0x18, 0xB4, 0xD7, 0x81, 0x88, 0x28, 0x3A, 0x55, 0x77, 0xCB, 0x55, 0xFB }, + }, + { + { 0x98, 0xB5, 0x92, 0x4E, 0x06, 0xCD, 0xEA, 0x1B, 0xA1, 0x7F, 0xDB, 0x1B, 0x13, 0x97, 0x90, 0x24, + 0xB1, 0xC2, 0x5B, 0x0A, 0x69, 0x0C, 0xFE, 0x87, 0x8D, 0x4C, 0xB4, 0x07, 0x76, 0xB9, 0x6F, 0xB0 }, + }, + { + { 0x98, 0xEB, 0xC4, 0x98, 0xBD, 0x91, 0x23, 0x5E, 0xDF, 0xC2, 0xDC, 0x7B, 0xE1, 0x8D, 0x88, 0xF3, + 0x5E, 0x9F, 0x33, 0x41, 0xD8, 0x8E, 0xF4, 0x38, 0xA8, 0xD4, 0x11, 0xF1, 0x88, 0x11, 0x54, 0x56 }, + }, + { + { 0x99, 0x05, 0x0A, 0x48, 0x01, 0x8D, 0x00, 0xB3, 0xBF, 0xE5, 0xA8, 0x09, 0x24, 0x6E, 0x25, 0x54, + 0x5F, 0x36, 0xD2, 0x17, 0x8F, 0xD2, 0x02, 0xAE, 0x5D, 0xC8, 0xE7, 0xFF, 0x4D, 0x5A, 0x07, 0xF9 }, + }, + { + { 0x99, 0x08, 0xA8, 0xDD, 0x06, 0x0C, 0x74, 0xFA, 0xB2, 0x0C, 0x2F, 0x44, 0x17, 0x26, 0x0A, 0xFA, + 0xF0, 0x6D, 0x6C, 0x10, 0x81, 0xB2, 0x6C, 0x5F, 0x5F, 0x51, 0x5C, 0x2D, 0x04, 0xEB, 0x4A, 0x52 }, + }, + { + { 0x99, 0x45, 0xBA, 0x12, 0xC4, 0x4B, 0x5A, 0x01, 0x4D, 0xBC, 0x4D, 0xBB, 0xCA, 0x86, 0x10, 0x87, + 0xC1, 0x9E, 0xDD, 0x6D, 0xCE, 0xB1, 0x6D, 0x52, 0x88, 0x63, 0x63, 0xA7, 0xCD, 0xC8, 0x69, 0x5F }, + }, + { + { 0x99, 0xA5, 0x5F, 0x76, 0xCB, 0xEA, 0x0F, 0x3E, 0x60, 0x71, 0xD3, 0x82, 0x18, 0x1A, 0xF6, 0xCB, + 0x25, 0xBD, 0xC5, 0x87, 0x5E, 0x29, 0xF0, 0xF4, 0xD7, 0x19, 0xA9, 0xD3, 0x5B, 0x5B, 0xD6, 0xBF }, + }, + { + { 0x99, 0xB1, 0x38, 0xBB, 0x53, 0xC5, 0x4D, 0x1C, 0x7A, 0xC2, 0x9A, 0x57, 0x85, 0xC8, 0xB1, 0x9F, + 0xDD, 0xC3, 0x7D, 0x99, 0x4A, 0x3E, 0x6C, 0x31, 0xF7, 0x50, 0xA1, 0xBF, 0xEB, 0xE9, 0xFE, 0xF9 }, + }, + { + { 0x99, 0xB4, 0x6C, 0x68, 0x90, 0x62, 0x37, 0x40, 0x23, 0xDB, 0x68, 0x19, 0xF8, 0x89, 0xD3, 0xC1, + 0xBB, 0x8A, 0x83, 0x8C, 0x6B, 0x51, 0x7E, 0x32, 0x7E, 0xD9, 0x1C, 0x6C, 0x96, 0x2D, 0x06, 0x49 }, + }, + { + { 0x99, 0xE1, 0xFB, 0x3E, 0xEB, 0x89, 0x1E, 0xBA, 0x4F, 0x9B, 0xD4, 0x7F, 0x04, 0xBC, 0x9A, 0x62, + 0xBD, 0x3B, 0x61, 0x85, 0x45, 0x4B, 0xF5, 0x35, 0x9E, 0x39, 0x37, 0xE0, 0xB8, 0xA5, 0xFF, 0xB7 }, + }, + { + { 0x9A, 0x4B, 0x49, 0x93, 0xB4, 0xED, 0x8C, 0x27, 0xE7, 0x7F, 0x3C, 0x8A, 0xAF, 0xDB, 0xDC, 0x11, + 0x1A, 0x36, 0xB7, 0x3C, 0xCA, 0xDB, 0x87, 0x04, 0x98, 0x25, 0x00, 0xD1, 0xB0, 0xF1, 0x09, 0xF2 }, + }, + { + { 0x9A, 0x4C, 0xA1, 0x75, 0xC4, 0x6F, 0x5C, 0x17, 0x05, 0x5E, 0x28, 0x16, 0xC8, 0x37, 0x98, 0x54, + 0x89, 0x46, 0x76, 0xEE, 0xB3, 0x4C, 0xF7, 0x2A, 0x14, 0x83, 0x04, 0x97, 0xD8, 0x4A, 0x4F, 0x6C }, + }, + { + { 0x9A, 0x5D, 0x7A, 0xF0, 0xF3, 0xF4, 0x34, 0xBA, 0x6E, 0x67, 0x37, 0x65, 0x2C, 0x42, 0x87, 0x6A, + 0x8E, 0xC1, 0x9A, 0xCE, 0x0C, 0x7C, 0xBF, 0x3E, 0xCE, 0x5C, 0x32, 0x62, 0xAE, 0xEB, 0x77, 0xD4 }, + }, + { + { 0x9A, 0x5F, 0xAB, 0xE5, 0x8A, 0x1E, 0xAE, 0x4B, 0x20, 0xBA, 0xB3, 0xA7, 0xEB, 0x5E, 0x42, 0xA2, + 0xDA, 0x83, 0x11, 0x59, 0x25, 0x7D, 0xD4, 0xE3, 0x55, 0x2E, 0xC6, 0xF7, 0xD2, 0x67, 0xFA, 0xBA }, + }, + { + { 0x9A, 0x9F, 0x50, 0x16, 0x20, 0x70, 0x69, 0x62, 0xE5, 0x07, 0xF7, 0x57, 0xB2, 0xFE, 0x76, 0x44, + 0xA3, 0xF4, 0x96, 0x90, 0x57, 0x1A, 0x30, 0x34, 0xDB, 0xBC, 0x35, 0x96, 0xA4, 0xC1, 0x60, 0x2C }, + }, + { + { 0x9A, 0xA3, 0xBC, 0xD0, 0x80, 0x11, 0xE2, 0xF9, 0x0A, 0x59, 0x2A, 0xD7, 0xA4, 0x9D, 0xB2, 0x7F, + 0xAA, 0xD8, 0xA7, 0x3C, 0xEA, 0x24, 0x6C, 0x21, 0x65, 0x09, 0xBB, 0x36, 0x27, 0xE8, 0x2A, 0x22 }, + }, + { + { 0x9A, 0xAE, 0x9D, 0x45, 0xAA, 0x04, 0x03, 0x06, 0x4B, 0xC5, 0xA7, 0x4D, 0xD0, 0x32, 0x5D, 0xA4, + 0x1E, 0x12, 0xCF, 0x58, 0x6C, 0x46, 0x2E, 0xE0, 0x6C, 0x2B, 0xB4, 0x56, 0xF8, 0x44, 0x1C, 0x4F }, + }, + { + { 0x9A, 0xC0, 0xD1, 0x78, 0x82, 0x0B, 0xC5, 0x49, 0x96, 0x0A, 0xA1, 0x52, 0xBC, 0x17, 0x3D, 0x70, + 0xBA, 0x6B, 0x36, 0x24, 0x7E, 0x18, 0xA0, 0x42, 0xEB, 0x83, 0x05, 0x41, 0x96, 0x84, 0xA7, 0x2C }, + }, + { + { 0x9A, 0xC1, 0x48, 0xB3, 0x72, 0x12, 0xAD, 0x5D, 0xDE, 0xC4, 0x36, 0xB5, 0x65, 0x77, 0xF5, 0x4B, + 0x99, 0xEA, 0xFC, 0x69, 0x2C, 0x4E, 0x6F, 0xFD, 0x75, 0x85, 0x39, 0xCD, 0xAE, 0xFE, 0x30, 0x4D }, + }, + { + { 0x9A, 0xEE, 0x05, 0x8D, 0x61, 0x51, 0xE2, 0x65, 0xE2, 0x5F, 0x9A, 0x82, 0x34, 0x54, 0x38, 0xC5, + 0xA7, 0x42, 0x8C, 0xD6, 0xD8, 0xE2, 0xB4, 0xF3, 0x39, 0xC4, 0x7F, 0xB2, 0x38, 0xC0, 0x93, 0x3F }, + }, + { + { 0x9B, 0x4B, 0xBC, 0xEA, 0x3E, 0x22, 0xA4, 0x3B, 0xC5, 0xD6, 0x58, 0x7F, 0x58, 0x1D, 0x0A, 0x14, + 0x38, 0xD2, 0xEE, 0xA6, 0xDA, 0xD9, 0xF1, 0xAA, 0x23, 0xFC, 0x23, 0x09, 0x7A, 0xDF, 0x4D, 0x75 }, + }, + { + { 0x9B, 0x8F, 0x9F, 0xC4, 0xAF, 0xA7, 0x04, 0x0D, 0x4E, 0x59, 0x4D, 0x66, 0x7C, 0x44, 0x44, 0xB5, + 0x25, 0x88, 0x20, 0xC0, 0x8F, 0x89, 0x91, 0x0E, 0xD3, 0x42, 0x1C, 0xB4, 0xA9, 0x7B, 0xB7, 0x9E }, + }, + { + { 0x9B, 0xC8, 0xF4, 0xCD, 0x33, 0xB9, 0x19, 0xCF, 0xFC, 0x0B, 0x71, 0x72, 0x63, 0x1A, 0x87, 0xD3, + 0x5B, 0xAF, 0x27, 0xB8, 0xA4, 0x75, 0x28, 0xAE, 0x25, 0x29, 0x35, 0x8F, 0x42, 0x1A, 0xCC, 0xB1 }, + }, + { + { 0x9B, 0xD6, 0x5A, 0xC4, 0x0A, 0x62, 0x5A, 0x81, 0x90, 0x4F, 0xE7, 0x8F, 0x89, 0x35, 0x25, 0x1E, + 0x5C, 0x66, 0x91, 0xF0, 0xB3, 0xD7, 0x24, 0x54, 0xD3, 0x84, 0x12, 0x01, 0xF3, 0x9F, 0xCD, 0x1E }, + }, + { + { 0x9C, 0x70, 0x8D, 0x5B, 0xAB, 0x37, 0xF5, 0xB6, 0xBC, 0x8A, 0x77, 0x53, 0x12, 0x57, 0x2A, 0xB2, + 0x79, 0x21, 0x6D, 0x55, 0x6D, 0xA7, 0x4A, 0xC2, 0xA7, 0xC0, 0x41, 0xE8, 0xCE, 0xB0, 0xBE, 0x0A }, + }, + { + { 0x9C, 0x85, 0x31, 0xE7, 0xC8, 0xFB, 0xDA, 0xB8, 0x61, 0x4D, 0x56, 0x17, 0x79, 0x9E, 0x00, 0x6B, + 0x69, 0x42, 0xE4, 0x20, 0xC4, 0x07, 0x1D, 0x7D, 0xB8, 0x9C, 0xD7, 0x72, 0x81, 0x69, 0x16, 0x70 }, + }, + { + { 0x9C, 0xCA, 0x23, 0x7C, 0xDF, 0xCA, 0x2C, 0x72, 0xC6, 0x09, 0x25, 0x4A, 0x72, 0x57, 0xFE, 0xD5, + 0x3A, 0xF1, 0x44, 0xAB, 0xC2, 0x5E, 0xCD, 0x8E, 0xF7, 0x01, 0x30, 0x8C, 0xB1, 0x3C, 0xF7, 0x69 }, + }, + { + { 0x9C, 0xF9, 0x96, 0xC5, 0x3A, 0x2A, 0x7B, 0x1A, 0x99, 0xAE, 0x53, 0x0F, 0xC4, 0x36, 0x19, 0x62, + 0x28, 0xEA, 0xE4, 0x79, 0x72, 0xAE, 0x9C, 0xB0, 0x69, 0xB1, 0x8C, 0x29, 0xE3, 0x30, 0x40, 0x9C }, + }, + { + { 0x9D, 0x32, 0x0D, 0x7B, 0x3D, 0x46, 0x34, 0x5F, 0x0F, 0x2D, 0xEC, 0xB7, 0x62, 0xA4, 0x81, 0x7B, + 0x26, 0xA9, 0xA7, 0xCF, 0xE8, 0x71, 0xB1, 0x3E, 0x84, 0xE7, 0xEC, 0x81, 0x0A, 0xAE, 0xB6, 0x2C }, + }, + { + { 0x9D, 0x50, 0xB9, 0x1D, 0xB0, 0x1B, 0xD1, 0x89, 0x9A, 0xF8, 0x17, 0xAD, 0xBF, 0xDC, 0x24, 0x8F, + 0x75, 0xC8, 0x43, 0x53, 0xA9, 0xAE, 0x7A, 0x0B, 0xB4, 0xD1, 0x56, 0x32, 0x9B, 0xDB, 0x51, 0xE0 }, + }, + { + { 0x9D, 0x6B, 0xDF, 0xCF, 0x0C, 0xBF, 0xFE, 0xEA, 0x3B, 0x1A, 0xC7, 0xE9, 0x63, 0xCB, 0xB5, 0xF2, + 0x7F, 0xBD, 0xA8, 0x9D, 0x27, 0x77, 0xF6, 0x0E, 0x56, 0x5B, 0x27, 0x78, 0x54, 0xEF, 0xB0, 0x19 }, + }, + { + { 0x9D, 0xAC, 0x33, 0x14, 0xB2, 0x5B, 0xB7, 0x9A, 0x39, 0xCD, 0x01, 0xEC, 0x4B, 0x33, 0xA1, 0x2F, + 0x47, 0x51, 0x2F, 0x54, 0x09, 0xFF, 0x09, 0x5D, 0x40, 0xAA, 0xD6, 0x20, 0x84, 0xEF, 0x15, 0xBE }, + }, + { + { 0x9D, 0xAC, 0x9D, 0x66, 0xDE, 0xD0, 0xC1, 0x5D, 0x23, 0x24, 0x1A, 0x90, 0x78, 0xA9, 0x1E, 0xC1, + 0xE9, 0x40, 0x70, 0xA1, 0x5C, 0x70, 0x29, 0x45, 0x02, 0xFE, 0x73, 0x8D, 0x12, 0x1C, 0xCA, 0xAC }, + }, + { + { 0x9E, 0x0B, 0xF3, 0x1A, 0xC8, 0x33, 0xF8, 0xB1, 0x40, 0x4C, 0xCA, 0xB1, 0x23, 0x84, 0x63, 0x48, + 0xA0, 0x3C, 0x0F, 0xF5, 0x11, 0xC6, 0xEC, 0x05, 0xA8, 0x6D, 0xF0, 0xDB, 0x51, 0x92, 0xA5, 0x2B }, + }, + { + { 0x9E, 0x2E, 0xC8, 0xE6, 0x1C, 0x76, 0x0D, 0x8E, 0x1B, 0x94, 0x2C, 0xEA, 0x8C, 0x2D, 0x55, 0xA9, + 0xF1, 0x8D, 0x3C, 0xD8, 0x4C, 0x0B, 0x9B, 0x5B, 0x23, 0x4D, 0x15, 0xAC, 0x56, 0x8E, 0x0E, 0xCD }, + }, + { + { 0x9E, 0x80, 0xD0, 0x33, 0xE6, 0x10, 0x90, 0x7B, 0xFE, 0x1F, 0xD8, 0xDF, 0x2D, 0x36, 0xDD, 0xEF, + 0x00, 0xC8, 0xFC, 0x7B, 0xF7, 0xB7, 0xFD, 0x7E, 0x8D, 0x45, 0x92, 0xAB, 0xF3, 0xC4, 0x21, 0xDE }, + }, + { + { 0x9E, 0x85, 0xD4, 0xAC, 0x8B, 0x36, 0x0E, 0x4D, 0xB2, 0xED, 0x37, 0x34, 0x10, 0x16, 0xE3, 0x7B, + 0xD5, 0x5C, 0x2D, 0x59, 0x79, 0x5D, 0x0A, 0x7C, 0x26, 0xA4, 0x4E, 0x7E, 0x80, 0x98, 0x3E, 0x75 }, + }, + { + { 0x9E, 0x98, 0xF7, 0xDA, 0x04, 0x74, 0xD4, 0x86, 0x5A, 0xC7, 0x05, 0xD4, 0xD7, 0xAB, 0xBE, 0xB7, + 0x1A, 0xEF, 0xBA, 0x2C, 0xF2, 0xE0, 0x82, 0xF0, 0x5F, 0xED, 0x53, 0x62, 0x41, 0x4B, 0xD3, 0x93 }, + }, + { + { 0x9E, 0xEA, 0x28, 0xDF, 0x01, 0x4D, 0x91, 0x24, 0x4F, 0xF9, 0x31, 0x4F, 0x43, 0x4A, 0x84, 0x7B, + 0x65, 0x89, 0xC1, 0xF2, 0x03, 0x58, 0x33, 0x9D, 0x79, 0xFC, 0xA6, 0x76, 0x63, 0x2D, 0xFF, 0xFE }, + }, + { + { 0x9F, 0x24, 0x5C, 0x0A, 0x0E, 0xC6, 0x3A, 0xAA, 0xCB, 0xF9, 0x69, 0xC6, 0xFC, 0x24, 0xA1, 0x07, + 0x15, 0x83, 0xB7, 0x79, 0xA5, 0x8A, 0xB6, 0x23, 0xDD, 0x15, 0x31, 0xA2, 0xCA, 0x9F, 0x87, 0x51 }, + }, + { + { 0x9F, 0x41, 0xC4, 0x19, 0xDA, 0x0B, 0xE3, 0x20, 0x5E, 0xA3, 0x84, 0xF9, 0x08, 0xF0, 0x5F, 0x42, + 0x8E, 0xD9, 0x13, 0xB1, 0x49, 0x93, 0x3A, 0x67, 0x2F, 0x79, 0x67, 0x60, 0x0C, 0x02, 0x0F, 0x1E }, + }, + { + { 0x9F, 0xAF, 0x1C, 0x11, 0xA3, 0xC7, 0xE2, 0x41, 0xF8, 0x63, 0x71, 0x97, 0xE8, 0x99, 0x68, 0xDB, + 0x86, 0x6A, 0xD0, 0x1A, 0x5D, 0x4E, 0xD5, 0x34, 0x59, 0x48, 0x65, 0xB9, 0x70, 0x75, 0xF2, 0x60 }, + }, + { + { 0x9F, 0xC3, 0xA4, 0xDD, 0xD9, 0x8A, 0xDD, 0xB2, 0xCE, 0x89, 0x3B, 0xD6, 0x84, 0x2C, 0x48, 0x89, + 0xA3, 0x1F, 0x4B, 0x95, 0xE1, 0x69, 0xD2, 0x3D, 0xC5, 0x54, 0xE6, 0x02, 0x4D, 0xEC, 0x98, 0xA9 }, + }, + { + { 0x9F, 0xE0, 0x91, 0x58, 0x70, 0x38, 0x5D, 0xDB, 0xB6, 0x2F, 0xA6, 0xE3, 0x23, 0x95, 0xEB, 0xE8, + 0x33, 0x34, 0x46, 0x00, 0x43, 0x6D, 0xAC, 0xC9, 0xB5, 0x69, 0x21, 0x4E, 0xEB, 0x8C, 0x0A, 0xF0 }, + }, + { + { 0x9F, 0xF9, 0x38, 0x40, 0xB0, 0x1F, 0x96, 0xB6, 0xF3, 0xC3, 0x10, 0xA0, 0x21, 0x90, 0xAD, 0xC3, + 0x3A, 0x15, 0x69, 0x39, 0x5B, 0xBC, 0xEE, 0x11, 0x6A, 0x15, 0xE1, 0x58, 0xA6, 0x2B, 0xA5, 0x0B }, + }, + { + { 0x9F, 0xFA, 0x4E, 0xF4, 0xFC, 0xF2, 0xCF, 0xD1, 0xB2, 0x7C, 0x6A, 0x62, 0xE3, 0xC4, 0x23, 0x5B, + 0xD8, 0x3C, 0xC5, 0xE0, 0x06, 0xE9, 0x2A, 0x55, 0xE4, 0xA9, 0x86, 0xE6, 0x30, 0x53, 0x57, 0xE3 }, + }, + { + { 0xA0, 0x44, 0xF2, 0xC0, 0x41, 0xF4, 0x18, 0x5B, 0xC0, 0xFE, 0x1A, 0xD3, 0xE0, 0xA3, 0xE0, 0xC2, + 0x7E, 0x24, 0xF4, 0x58, 0xDC, 0xB7, 0xD9, 0x07, 0x39, 0xB6, 0x4A, 0x68, 0x94, 0x45, 0xD4, 0xB6 }, + }, + { + { 0xA0, 0x77, 0x42, 0xD5, 0xB2, 0x99, 0x96, 0x65, 0x06, 0x76, 0x2E, 0x02, 0xE4, 0x20, 0xF1, 0xA9, + 0xC4, 0xAB, 0x73, 0x29, 0xAE, 0x29, 0x5F, 0x01, 0x5F, 0x74, 0x7D, 0xA1, 0x82, 0xA9, 0xC3, 0x9C }, + }, + { + { 0xA0, 0xAB, 0x9F, 0x42, 0xD0, 0x9D, 0x06, 0x44, 0x23, 0x8C, 0x63, 0xF2, 0x19, 0x26, 0x52, 0x8F, + 0xA5, 0x3E, 0x56, 0x6D, 0x83, 0x3E, 0xF1, 0xB0, 0x8D, 0x9E, 0xE7, 0xF3, 0x4D, 0x2B, 0x6D, 0x8E }, + }, + { + { 0xA0, 0xC2, 0xD2, 0x07, 0xA4, 0x7E, 0x18, 0xD0, 0x37, 0x14, 0xD5, 0xB3, 0x44, 0x5D, 0x88, 0xBE, + 0x81, 0xFF, 0x5E, 0x1D, 0x16, 0x07, 0x3D, 0xC1, 0x16, 0x6B, 0xB5, 0x44, 0x8F, 0xF6, 0x52, 0xDF }, + }, + { + { 0xA0, 0xC8, 0xA5, 0x3F, 0xD7, 0x58, 0x3E, 0x43, 0x91, 0xBE, 0xB8, 0xD0, 0xFE, 0xD8, 0x43, 0x1F, + 0x61, 0xB8, 0x52, 0xC1, 0xBE, 0x43, 0xAB, 0x91, 0x61, 0x4B, 0xBB, 0xEB, 0x3B, 0x4F, 0x47, 0x4E }, + }, + { + { 0xA0, 0xFE, 0xF8, 0x2E, 0xAD, 0xF5, 0xFE, 0xEC, 0xF8, 0x99, 0x16, 0xDA, 0x89, 0x4B, 0x2F, 0xA5, + 0x18, 0x29, 0x25, 0x6E, 0xB9, 0x59, 0x01, 0x8D, 0x8B, 0xC5, 0x1C, 0x88, 0xB4, 0x50, 0xC9, 0xD3 }, + }, + { + { 0xA1, 0x14, 0xA3, 0x50, 0x0A, 0x66, 0x1C, 0x15, 0x5A, 0xB1, 0xA8, 0x99, 0x7E, 0xFC, 0xFD, 0xD7, + 0xA1, 0x38, 0x3E, 0xA0, 0x5E, 0x45, 0x2C, 0x55, 0x1B, 0xB0, 0xC8, 0xBD, 0x8E, 0x4A, 0xAA, 0xDA }, + }, + { + { 0xA1, 0x97, 0x7D, 0x0C, 0x92, 0x7C, 0x21, 0xEB, 0x47, 0x6F, 0x67, 0xBE, 0xFE, 0xD6, 0xCF, 0x2C, + 0x61, 0xB7, 0x45, 0xF0, 0xCE, 0x8D, 0x26, 0x58, 0x3D, 0x03, 0xB2, 0x70, 0x02, 0xD5, 0xCD, 0xAF }, + }, + { + { 0xA1, 0xA3, 0xF6, 0x88, 0xFF, 0x45, 0xF6, 0x56, 0x75, 0x7A, 0x24, 0x52, 0xD5, 0xDB, 0xCD, 0x15, + 0x39, 0x4A, 0xC1, 0x1A, 0xF3, 0x8C, 0x2F, 0xEA, 0x0C, 0x7C, 0x39, 0x07, 0xFE, 0xC4, 0xB7, 0x8C }, + }, + { + { 0xA1, 0xF7, 0xA0, 0x7A, 0x4A, 0x67, 0xF6, 0xFF, 0x96, 0xCB, 0x97, 0xB8, 0xAD, 0x2B, 0x59, 0xBE, + 0xF6, 0xB1, 0xF3, 0x03, 0x80, 0xAB, 0x38, 0x3F, 0xAD, 0xF1, 0x23, 0x95, 0xA4, 0xBB, 0x08, 0x14 }, + }, + { + { 0xA2, 0x39, 0x3F, 0x9C, 0x59, 0x6C, 0x5F, 0xE2, 0xC6, 0x49, 0x39, 0xC6, 0x00, 0x43, 0x70, 0x8D, + 0x5F, 0xC6, 0x5F, 0x0C, 0xE8, 0x3E, 0x00, 0x73, 0x9D, 0x75, 0xA3, 0x31, 0xCC, 0xEA, 0x84, 0x45 }, + }, + { + { 0xA2, 0x3E, 0xD1, 0xB5, 0x14, 0x44, 0x95, 0xF7, 0x29, 0xD1, 0x90, 0xAD, 0xE0, 0x7C, 0xA9, 0x38, + 0xBC, 0x7D, 0x9F, 0x6D, 0x26, 0xF7, 0xE4, 0xF6, 0x0B, 0x50, 0x52, 0xDE, 0x66, 0x64, 0xDD, 0x64 }, + }, + { + { 0xA2, 0x6B, 0xA6, 0x8B, 0xD5, 0x7F, 0x66, 0x70, 0x89, 0xB7, 0x52, 0x56, 0x1D, 0x87, 0x12, 0xF0, + 0x8C, 0x7D, 0x96, 0x3D, 0x0F, 0xCD, 0x36, 0xAC, 0x58, 0x99, 0x8E, 0x4C, 0x1F, 0xD3, 0xE2, 0xDA }, + }, + { + { 0xA2, 0x6C, 0x37, 0x5E, 0xB3, 0x19, 0x6E, 0x28, 0x3B, 0xEC, 0x60, 0x3D, 0xB6, 0xBB, 0xDA, 0xE2, + 0x49, 0x55, 0xE4, 0xBA, 0x91, 0x0C, 0xD4, 0x2D, 0x9E, 0xAC, 0x55, 0xCA, 0xC6, 0x10, 0x3A, 0xB9 }, + }, + { + { 0xA3, 0x36, 0x7E, 0xDD, 0x97, 0xBE, 0x14, 0x34, 0xBA, 0x2C, 0x9C, 0xD0, 0x05, 0xF0, 0x1F, 0x5C, + 0x91, 0xA9, 0x32, 0x78, 0xFA, 0x14, 0xAB, 0xEF, 0x73, 0x3C, 0x43, 0xA6, 0x9F, 0xCA, 0x09, 0x6E }, + }, + { + { 0xA3, 0x75, 0x46, 0x27, 0x03, 0x85, 0x5B, 0x0F, 0x31, 0x40, 0xFD, 0xA3, 0xB5, 0x3A, 0xC4, 0x2C, + 0x0E, 0x09, 0x0E, 0xA4, 0x91, 0x20, 0x21, 0xB0, 0x4B, 0x1E, 0xB4, 0xF2, 0xB2, 0xD5, 0xD9, 0xC6 }, + }, + { + { 0xA3, 0xA4, 0xFC, 0x03, 0xE1, 0x75, 0xF2, 0x68, 0x02, 0x57, 0x46, 0x34, 0xDE, 0x70, 0x7D, 0x2F, + 0x92, 0xF4, 0xD0, 0xCB, 0x90, 0xCD, 0xB6, 0x1D, 0xD1, 0x95, 0x8B, 0xCF, 0x0C, 0x55, 0x20, 0x86 }, + }, + { + { 0xA4, 0x46, 0x9F, 0x13, 0x11, 0x77, 0xD7, 0xFD, 0xAB, 0x22, 0x64, 0xB2, 0xC9, 0xFA, 0x76, 0xAC, + 0x05, 0x0F, 0x42, 0xC6, 0xD6, 0x80, 0x2B, 0xA4, 0x07, 0x22, 0xD6, 0x48, 0x51, 0x24, 0x25, 0x1C }, + }, + { + { 0xA4, 0x55, 0x6D, 0x49, 0x3B, 0x52, 0x03, 0xAD, 0xE9, 0xAC, 0x0A, 0xAB, 0x86, 0xE4, 0x21, 0xDB, + 0xCF, 0xB2, 0x61, 0x00, 0x84, 0x07, 0xF3, 0xC6, 0x7B, 0x10, 0xD7, 0xCF, 0x48, 0x9D, 0xB8, 0x83 }, + }, + { + { 0xA4, 0xB4, 0xE2, 0xA5, 0x14, 0x66, 0xB8, 0x81, 0x06, 0xD3, 0xA0, 0xCB, 0x4C, 0x75, 0x26, 0xF1, + 0x0D, 0x21, 0x80, 0x90, 0x30, 0x82, 0x80, 0x98, 0xF4, 0x87, 0x78, 0x5E, 0x98, 0x78, 0xE6, 0x9C }, + }, + { + { 0xA5, 0x22, 0xAD, 0x4E, 0x88, 0x20, 0xD2, 0x31, 0x0D, 0xF1, 0x36, 0x76, 0x2B, 0x25, 0x32, 0x41, + 0x2D, 0x00, 0xA5, 0x03, 0x1B, 0x70, 0x28, 0x9A, 0xE6, 0x06, 0xC9, 0xA5, 0x8B, 0xFB, 0xDB, 0xD7 }, + }, + { + { 0xA5, 0x58, 0xCC, 0x2E, 0x2F, 0xE1, 0x06, 0x81, 0x12, 0x0B, 0xD2, 0x57, 0x94, 0xF8, 0xCA, 0x20, + 0xB0, 0x94, 0x3F, 0xBD, 0x13, 0x6E, 0x4B, 0x36, 0x77, 0x30, 0xF0, 0x5E, 0x71, 0x21, 0xF8, 0x97 }, + }, + { + { 0xA5, 0x60, 0x81, 0x15, 0x27, 0xB1, 0xFC, 0x3E, 0x25, 0xAF, 0x12, 0xC6, 0x10, 0xD3, 0x58, 0x18, + 0x43, 0x32, 0x10, 0xD3, 0x15, 0x27, 0x56, 0x45, 0x67, 0xDB, 0x9F, 0xF1, 0xA2, 0xED, 0x66, 0x90 }, + }, + { + { 0xA5, 0x61, 0x59, 0x83, 0x9A, 0x9E, 0x88, 0xA6, 0x18, 0xED, 0xB3, 0xCE, 0x3B, 0x8F, 0x16, 0x52, + 0x35, 0x22, 0xAF, 0x8B, 0x0C, 0x53, 0xEE, 0x1E, 0xA0, 0x85, 0x38, 0xB8, 0x88, 0x29, 0xC9, 0x2D }, + }, + { + { 0xA5, 0x67, 0x98, 0x6C, 0xE0, 0xE3, 0x36, 0xF8, 0x4F, 0xDC, 0x08, 0x15, 0xB8, 0x6E, 0xA3, 0x03, + 0x34, 0x3C, 0xF8, 0xC1, 0x0F, 0x37, 0x27, 0x83, 0x27, 0x14, 0x86, 0xB9, 0xC9, 0x3B, 0x63, 0x67 }, + }, + { + { 0xA5, 0x6A, 0x64, 0x81, 0xFE, 0x83, 0xDA, 0xB2, 0xEB, 0xA7, 0x01, 0x1D, 0x91, 0x3D, 0xB1, 0xA5, + 0x65, 0x83, 0xB1, 0x3A, 0xA9, 0x69, 0xC8, 0x32, 0xE7, 0x7E, 0x22, 0xFE, 0xBC, 0xC9, 0xE1, 0x30 }, + }, + { + { 0xA5, 0x9C, 0xAE, 0xC7, 0x30, 0x06, 0xB3, 0x36, 0x8F, 0x19, 0x6D, 0x6E, 0x12, 0x17, 0x48, 0x2D, + 0xD6, 0x61, 0x0E, 0x39, 0x5F, 0x27, 0x1F, 0x91, 0x31, 0x51, 0x9C, 0x02, 0x2B, 0xE2, 0x1A, 0x02 }, + }, + { + { 0xA5, 0xDB, 0xAF, 0x01, 0xD3, 0xD5, 0x79, 0xEE, 0x8A, 0x48, 0x8E, 0xE8, 0xD7, 0x44, 0x09, 0x58, + 0xF7, 0xBF, 0x97, 0xA2, 0xBC, 0xA8, 0xD9, 0x71, 0xF6, 0xF8, 0x97, 0x10, 0xBC, 0x2D, 0x10, 0x6F }, + }, + { + { 0xA6, 0x13, 0x01, 0x30, 0x19, 0xBB, 0x3E, 0xEC, 0x44, 0xCC, 0xBA, 0x1B, 0x46, 0xBD, 0x14, 0x09, + 0x62, 0x5D, 0x25, 0x82, 0x4E, 0x88, 0x2A, 0x5F, 0xF8, 0x63, 0x5B, 0x4C, 0x41, 0x83, 0x2E, 0x3C }, + }, + { + { 0xA6, 0x21, 0xAE, 0x36, 0x54, 0xAC, 0xFD, 0x17, 0x23, 0x30, 0x70, 0xE9, 0xB1, 0x8D, 0xFD, 0x91, + 0x6A, 0x55, 0x2E, 0x6A, 0x8B, 0x82, 0x42, 0xBD, 0x57, 0xBB, 0xCD, 0xF4, 0xE6, 0x5E, 0x99, 0x76 }, + }, + { + { 0xA6, 0x26, 0x87, 0xDE, 0x88, 0x0C, 0xF3, 0x35, 0xAE, 0x42, 0x4D, 0x4A, 0xDE, 0x29, 0xC7, 0xEC, + 0x33, 0xBF, 0xB9, 0xF8, 0x6E, 0xC7, 0xFC, 0xAF, 0x61, 0x9D, 0x71, 0x7C, 0x86, 0xB8, 0xFB, 0xBC }, + }, + { + { 0xA6, 0x33, 0x5D, 0xF3, 0xAB, 0xA5, 0xEA, 0xDF, 0xBD, 0xC9, 0xC2, 0xDC, 0x9D, 0x6B, 0xE6, 0x0B, + 0xB6, 0x2D, 0xF2, 0xFE, 0x24, 0xEC, 0x7B, 0xA7, 0x67, 0xBE, 0x65, 0xD3, 0x7F, 0x3C, 0x90, 0xF8 }, + }, + { + { 0xA6, 0x5C, 0xAE, 0x6C, 0x12, 0xE4, 0x7F, 0x8F, 0x67, 0x0C, 0x69, 0x37, 0xB1, 0xF0, 0xE1, 0x5C, + 0xF3, 0xA4, 0x4C, 0x11, 0x9C, 0xAF, 0x5E, 0x32, 0x6D, 0x8D, 0xB0, 0x81, 0xBE, 0x4F, 0xC3, 0x0A }, + }, + { + { 0xA6, 0x62, 0xFC, 0x81, 0xC9, 0x09, 0x34, 0xB9, 0xB4, 0xD6, 0x30, 0xB5, 0xD8, 0x2E, 0x86, 0xF2, + 0x36, 0x3E, 0xC1, 0x5C, 0xCF, 0xCD, 0xAF, 0xA7, 0xA2, 0x0C, 0x9B, 0x4E, 0x3A, 0x90, 0x0D, 0xD1 }, + }, + { + { 0xA6, 0x90, 0xB4, 0x5E, 0x85, 0xD9, 0x97, 0xF3, 0x3C, 0xBE, 0x1B, 0xE7, 0x5B, 0xC3, 0xD8, 0xE7, + 0x66, 0x3A, 0xFC, 0x0B, 0x62, 0x00, 0xBF, 0x4D, 0x74, 0x79, 0x0C, 0x17, 0x9F, 0xF0, 0x6A, 0x10 }, + }, + { + { 0xA6, 0xA4, 0xA3, 0xF6, 0x1F, 0xA5, 0x8C, 0xE9, 0x70, 0xB4, 0x58, 0xB7, 0xC3, 0x7C, 0x05, 0x2E, + 0xAD, 0x1E, 0xB2, 0x0B, 0x85, 0x67, 0xE3, 0x51, 0xAD, 0x8E, 0x6F, 0xBA, 0x49, 0xC2, 0x69, 0x2C }, + }, + { + { 0xA6, 0xB6, 0xDA, 0xD4, 0x51, 0x5B, 0x1C, 0xFC, 0x70, 0x37, 0x1C, 0xFC, 0xFC, 0x32, 0x30, 0x71, + 0x0E, 0x30, 0xEF, 0xE4, 0x0F, 0x95, 0xD5, 0x20, 0xAF, 0xC8, 0x65, 0x31, 0xE8, 0xC8, 0xF8, 0x41 }, + }, + { + { 0xA6, 0xDE, 0x6C, 0x3B, 0x8C, 0x14, 0x05, 0xCB, 0xE1, 0x2D, 0xB4, 0x09, 0x97, 0x61, 0x71, 0xAC, + 0xB5, 0x1F, 0xB3, 0xDC, 0xFB, 0xB7, 0x6E, 0xE3, 0x84, 0x95, 0x39, 0xCD, 0x8A, 0xB0, 0x66, 0xDF }, + }, + { + { 0xA6, 0xF1, 0xFA, 0xC9, 0x75, 0x7D, 0xFC, 0xB0, 0x66, 0x9F, 0x1F, 0x54, 0x68, 0xAC, 0xF6, 0xEA, + 0x83, 0x84, 0xB7, 0xC2, 0xC3, 0x0E, 0x40, 0xAA, 0xA9, 0x39, 0x21, 0xF2, 0x38, 0x72, 0xCA, 0xED }, + }, + { + { 0xA7, 0x08, 0x0D, 0xEB, 0x9A, 0xFE, 0x85, 0xBA, 0x27, 0xFE, 0xB4, 0xA9, 0xC2, 0xF9, 0xA7, 0x54, + 0xF3, 0xD5, 0xFF, 0xE6, 0xC3, 0xC4, 0xEE, 0x95, 0x56, 0x63, 0x1C, 0xE7, 0xEA, 0x20, 0x22, 0x72 }, + }, + { + { 0xA7, 0x0F, 0x0C, 0xE2, 0xD4, 0xFB, 0xE6, 0x63, 0x6A, 0x7A, 0x48, 0x94, 0x3C, 0xBD, 0x2D, 0x99, + 0x0E, 0x40, 0xFA, 0xA6, 0xD8, 0x56, 0x87, 0x7F, 0x45, 0x5B, 0xF0, 0x15, 0xF5, 0x45, 0x11, 0x3C }, + }, + { + { 0xA7, 0x36, 0xB1, 0x97, 0xE6, 0xFB, 0x3B, 0x62, 0x32, 0xED, 0xB3, 0xC8, 0xD6, 0x8C, 0xE1, 0x35, + 0x1A, 0x48, 0xB5, 0x6F, 0x70, 0x11, 0xBB, 0x99, 0x20, 0xCF, 0xCA, 0x75, 0x7E, 0x57, 0xC6, 0xC4 }, + }, + { + { 0xA7, 0x5D, 0x18, 0x19, 0x6F, 0x2F, 0x30, 0xF0, 0x36, 0x12, 0x7C, 0x67, 0x58, 0x14, 0x9D, 0x1E, + 0xE3, 0xDC, 0x4F, 0x03, 0x02, 0x68, 0x74, 0x05, 0x9E, 0xA4, 0x58, 0x7C, 0x77, 0x5A, 0x65, 0x21 }, + }, + { + { 0xA7, 0x7C, 0x12, 0x1C, 0xCE, 0x27, 0x74, 0xBC, 0xDD, 0x8C, 0xD5, 0x64, 0x71, 0x8C, 0x83, 0x18, + 0xF8, 0x1A, 0xEC, 0x99, 0x97, 0x00, 0xD9, 0xB9, 0x85, 0x9C, 0x2D, 0xB7, 0x63, 0x8A, 0xAC, 0xC0 }, + }, + { + { 0xA7, 0x7E, 0x5C, 0x39, 0xEB, 0x66, 0xA9, 0x48, 0x74, 0x88, 0xC7, 0xD1, 0x44, 0xC6, 0x37, 0xB6, + 0xB4, 0xC5, 0xCD, 0xA2, 0x09, 0x02, 0xD8, 0x22, 0x95, 0xB7, 0x5B, 0xFF, 0xD5, 0xB9, 0x61, 0x98 }, + }, + { + { 0xA7, 0x86, 0x18, 0xD8, 0xA7, 0xF0, 0x08, 0xAF, 0xDC, 0x72, 0x44, 0x98, 0x2C, 0x11, 0x34, 0xC5, + 0xDC, 0x91, 0xEC, 0x94, 0x25, 0xBF, 0xEF, 0xC8, 0xCC, 0x0A, 0xF8, 0xF8, 0xC7, 0x59, 0x61, 0xC2 }, + }, + { + { 0xA8, 0x53, 0xAD, 0xC1, 0xC2, 0x18, 0x59, 0xAF, 0x7C, 0x46, 0x2B, 0x4A, 0xA0, 0xA5, 0x74, 0xCA, + 0x9F, 0xEE, 0xFB, 0x18, 0x5A, 0x1F, 0xDB, 0xB6, 0xC1, 0x0E, 0x17, 0xD6, 0x01, 0xB7, 0x09, 0x8F }, + }, + { + { 0xA8, 0x7F, 0x0D, 0xF3, 0xEB, 0x2C, 0x90, 0x1F, 0x11, 0x6F, 0x6A, 0x8B, 0x01, 0xE2, 0x95, 0xCD, + 0x60, 0x72, 0x69, 0x5A, 0xB1, 0x65, 0x4B, 0x7B, 0xF9, 0xC4, 0x7E, 0x06, 0x20, 0x25, 0x6F, 0x81 }, + }, + { + { 0xA8, 0xC6, 0xB0, 0x72, 0x2A, 0x0D, 0x13, 0xDC, 0x8B, 0x7F, 0xBB, 0x20, 0xBC, 0x66, 0xE6, 0x03, + 0x0E, 0x4B, 0xDE, 0x99, 0xEA, 0xCA, 0x9C, 0x96, 0x5D, 0x34, 0x65, 0xC9, 0xAB, 0xFF, 0x64, 0x11 }, + }, + { + { 0xA8, 0xDF, 0xF0, 0x6A, 0x17, 0x35, 0xB4, 0x6D, 0x17, 0xDA, 0xEB, 0xC3, 0x43, 0x43, 0x18, 0x31, + 0x3B, 0x2D, 0x9E, 0x7C, 0x3E, 0xF4, 0x8F, 0x28, 0x53, 0x75, 0x35, 0x13, 0xE1, 0xB2, 0x53, 0xA8 }, + }, + { + { 0xA8, 0xE3, 0x8C, 0x6E, 0xC0, 0x93, 0xF5, 0xAF, 0x53, 0x88, 0xF1, 0xE7, 0x66, 0xD7, 0x5F, 0xFB, + 0x57, 0xDD, 0xBE, 0x3E, 0x9D, 0xC2, 0xE0, 0xBE, 0x57, 0xBB, 0x88, 0x36, 0x46, 0xC5, 0xC0, 0x32 }, + }, + { + { 0xA9, 0x0B, 0x8D, 0xE1, 0x7F, 0x6B, 0x68, 0x37, 0x56, 0x21, 0x2D, 0xB3, 0xAB, 0x34, 0x89, 0x6E, + 0x91, 0x70, 0x93, 0x11, 0x3E, 0x47, 0xCA, 0x35, 0x96, 0x2E, 0xAC, 0xCA, 0x9C, 0xB3, 0x86, 0xF0 }, + }, + { + { 0xA9, 0x20, 0x6F, 0x6D, 0x45, 0x43, 0xED, 0x74, 0x4A, 0x5F, 0x15, 0x4A, 0xCB, 0x44, 0x50, 0x89, + 0x6B, 0x62, 0x5D, 0x7E, 0x32, 0x33, 0x85, 0xA9, 0xFD, 0x25, 0x63, 0x93, 0x2F, 0x9C, 0xCC, 0x1B }, + }, + { + { 0xA9, 0x4C, 0xC9, 0xDE, 0x55, 0x52, 0xA6, 0xD9, 0x6F, 0xE4, 0x10, 0xBE, 0x03, 0x97, 0x6F, 0x6B, + 0x0D, 0x4D, 0xA0, 0x5D, 0x73, 0x7A, 0xD2, 0xA3, 0x1E, 0x0B, 0xAD, 0x90, 0x82, 0xA5, 0x77, 0xB1 }, + }, + { + { 0xA9, 0x5C, 0x06, 0x3E, 0x9E, 0x35, 0x84, 0xE5, 0x99, 0x88, 0xF0, 0x73, 0x86, 0x4C, 0x18, 0x76, + 0xB5, 0xDF, 0x9B, 0x44, 0xC6, 0x1B, 0x4A, 0x8B, 0xE4, 0x83, 0xBE, 0x05, 0xCF, 0xD1, 0xA1, 0xA6 }, + }, + { + { 0xA9, 0x67, 0x07, 0x76, 0x47, 0x9A, 0xB3, 0xA1, 0x4F, 0xCD, 0x01, 0x56, 0x63, 0x86, 0xCC, 0x45, + 0xCF, 0xA0, 0x53, 0x5A, 0xE0, 0xE9, 0x54, 0x5F, 0x86, 0x3B, 0xCF, 0x7A, 0x7C, 0xD6, 0x1A, 0x2B }, + }, + { + { 0xA9, 0x71, 0x2F, 0x85, 0xED, 0x2E, 0x25, 0xAD, 0xA5, 0x7D, 0xC1, 0xF0, 0xF8, 0x6D, 0xE1, 0x07, + 0xB5, 0xE2, 0xF0, 0x36, 0x09, 0x53, 0xF1, 0xED, 0x12, 0x5E, 0x37, 0x07, 0x59, 0x47, 0x1D, 0x09 }, + }, + { + { 0xA9, 0x7C, 0x77, 0xCA, 0x22, 0xEB, 0x80, 0xCC, 0x7B, 0xA9, 0x62, 0xEB, 0x58, 0x03, 0xBF, 0xCE, + 0x89, 0x6D, 0x57, 0x43, 0xDB, 0x12, 0x84, 0xC8, 0xAD, 0xBA, 0x37, 0x91, 0x7D, 0xF8, 0x03, 0xB1 }, + }, + { + { 0xA9, 0x94, 0xC9, 0x09, 0x10, 0x60, 0x9A, 0xF5, 0x0A, 0x4C, 0x09, 0x22, 0x97, 0xC9, 0xB4, 0xC7, + 0xF1, 0x03, 0x96, 0xAF, 0x73, 0x95, 0xE9, 0xE1, 0xBF, 0xB8, 0x99, 0x53, 0xFA, 0x15, 0x25, 0x9B }, + }, + { + { 0xA9, 0xE2, 0x85, 0xD1, 0xC2, 0xE8, 0xCA, 0x53, 0xCE, 0x97, 0xBB, 0xA6, 0x54, 0x8C, 0xA2, 0xF8, + 0x59, 0xE4, 0xC1, 0xF5, 0xF3, 0x57, 0x6C, 0xA3, 0x2D, 0x03, 0x30, 0x6E, 0x42, 0x3E, 0xF2, 0x5E }, + }, + { + { 0xAA, 0x0E, 0x12, 0x52, 0x43, 0x6D, 0xEF, 0x79, 0x07, 0xFB, 0x99, 0xF7, 0x64, 0x15, 0x50, 0xD8, + 0x0F, 0xAF, 0xFB, 0xF3, 0x01, 0x71, 0x1C, 0x7B, 0x6B, 0xEF, 0x59, 0x6F, 0x94, 0x10, 0xEF, 0xD2 }, + }, + { + { 0xAA, 0xEB, 0xFE, 0x2D, 0x21, 0xB7, 0xE5, 0x35, 0x1B, 0xB9, 0x99, 0x69, 0x44, 0x44, 0x19, 0xEF, + 0x21, 0xC9, 0x68, 0x8C, 0xE0, 0x53, 0x24, 0x88, 0x84, 0xCA, 0xB0, 0xB8, 0x95, 0x10, 0x30, 0xFF }, + }, + { + { 0xAB, 0x41, 0x28, 0x10, 0x9C, 0xAB, 0x8A, 0x58, 0x7C, 0x8F, 0xF4, 0xC7, 0xF6, 0x87, 0x34, 0x49, + 0x98, 0x18, 0xD1, 0x3F, 0x52, 0x26, 0x76, 0xD0, 0x66, 0xB3, 0x52, 0x17, 0x6F, 0xD2, 0x35, 0x96 }, + }, + { + { 0xAB, 0x80, 0xD9, 0xBA, 0x0A, 0xEF, 0xAD, 0x7B, 0xEC, 0xCE, 0x7F, 0x5E, 0x61, 0x59, 0x9A, 0xF5, + 0x26, 0x69, 0xBF, 0x59, 0x50, 0x7F, 0x8E, 0xF1, 0x99, 0x13, 0xC4, 0x2E, 0xE1, 0x29, 0xDA, 0xF0 }, + }, + { + { 0xAB, 0xA1, 0x08, 0xA4, 0xB1, 0x89, 0x3D, 0x18, 0xA3, 0x88, 0xB7, 0x22, 0x54, 0x1C, 0xA2, 0xC0, + 0x05, 0xC2, 0x69, 0x9A, 0x61, 0xFE, 0xAB, 0xBF, 0x61, 0x7A, 0xAA, 0xDD, 0xD4, 0x9E, 0xA9, 0x4D }, + }, + { + { 0xAB, 0xA7, 0x8E, 0x90, 0xF3, 0x24, 0x17, 0xAE, 0xC2, 0x8E, 0xEA, 0x30, 0x22, 0xA2, 0xE2, 0xB7, + 0x66, 0x1A, 0xC7, 0x23, 0xC8, 0x7E, 0x0D, 0xBC, 0xE2, 0x33, 0xE2, 0x16, 0x8F, 0xCF, 0x91, 0xB3 }, + }, + { + { 0xAB, 0xDD, 0x1E, 0xA9, 0x43, 0xC2, 0x32, 0x71, 0x63, 0x8E, 0x8F, 0x96, 0xFC, 0xD0, 0xDD, 0x3D, + 0xF5, 0x45, 0x07, 0x9D, 0xB7, 0x08, 0xEA, 0x64, 0x92, 0x5B, 0x62, 0xAD, 0x92, 0x3C, 0x43, 0xD5 }, + }, + { + { 0xAB, 0xEB, 0x6A, 0xA0, 0xD1, 0xB0, 0xE0, 0x49, 0xD6, 0x9D, 0xF8, 0x3A, 0xDD, 0x19, 0xF7, 0x26, + 0x8A, 0x38, 0xDE, 0x6C, 0x00, 0x72, 0x60, 0x68, 0xC2, 0xEE, 0xE4, 0x55, 0x44, 0xF6, 0xD6, 0x7A }, + }, + { + { 0xAB, 0xED, 0xE5, 0xB0, 0xE2, 0xB1, 0x5F, 0xFE, 0xF1, 0x84, 0x71, 0xC4, 0x53, 0xF0, 0xC4, 0x85, + 0xD2, 0x78, 0xFD, 0xE6, 0x3F, 0x82, 0x74, 0x13, 0xCC, 0x10, 0xDE, 0x4B, 0x82, 0xDE, 0xF6, 0x8D }, + }, + { + { 0xAC, 0x1B, 0x4C, 0x64, 0x6C, 0xAE, 0xFB, 0x10, 0x8A, 0x54, 0xCA, 0xB5, 0x4A, 0x96, 0xE9, 0x66, + 0x6E, 0x72, 0xA8, 0x20, 0x22, 0x44, 0xEF, 0x3D, 0x7C, 0xA9, 0x34, 0xDF, 0xCC, 0x24, 0xFC, 0xA7 }, + }, + { + { 0xAC, 0x7C, 0x14, 0xB9, 0x56, 0x8F, 0x92, 0x07, 0x5A, 0xD4, 0xA3, 0xBA, 0x3D, 0x4B, 0x01, 0x84, + 0x91, 0xF3, 0x66, 0x1A, 0x37, 0x9B, 0x3D, 0xFE, 0xDD, 0x6F, 0xD3, 0xC3, 0x2E, 0xFA, 0x84, 0x7D }, + }, + { + { 0xAC, 0x8C, 0x6F, 0x03, 0xE4, 0xBA, 0xCF, 0x72, 0x20, 0x25, 0xDB, 0x54, 0xD0, 0xFA, 0xAE, 0x7D, + 0xBE, 0x51, 0x37, 0x97, 0x37, 0x39, 0x45, 0x05, 0xF0, 0x86, 0xAA, 0x89, 0xE2, 0xD4, 0xF7, 0x3B }, + }, + { + { 0xAC, 0x90, 0x98, 0xF6, 0x4F, 0xE1, 0x03, 0xC8, 0xC1, 0x40, 0x30, 0xDB, 0xCE, 0xDD, 0x63, 0xD1, + 0xD1, 0x7C, 0x33, 0x8E, 0xBD, 0x1D, 0x7D, 0xE5, 0x6C, 0x79, 0xD2, 0x1A, 0x6F, 0x2E, 0x47, 0xA7 }, + }, + { + { 0xAC, 0x91, 0x0B, 0x02, 0xB4, 0xAB, 0x08, 0x16, 0xF0, 0xD9, 0x52, 0x0C, 0x94, 0xD3, 0x6C, 0x28, + 0x93, 0x38, 0x8C, 0x6A, 0xE1, 0xCA, 0x37, 0xA2, 0x4D, 0x48, 0x92, 0x70, 0x2A, 0xC7, 0xCD, 0x0C }, + }, + { + { 0xAD, 0x4B, 0x2F, 0x8E, 0xF2, 0xDE, 0xFB, 0x01, 0x92, 0x3C, 0x9C, 0x0F, 0xE2, 0x5A, 0x9A, 0xCE, + 0x41, 0xFA, 0x9E, 0x69, 0x75, 0x85, 0xFC, 0x3D, 0xDF, 0x8D, 0x34, 0xE7, 0x45, 0xFF, 0x0F, 0x12 }, + }, + { + { 0xAD, 0x69, 0x54, 0x5F, 0x9F, 0x85, 0x25, 0x5F, 0xE4, 0x16, 0x51, 0x3D, 0x94, 0xDB, 0x31, 0x50, + 0x5F, 0x38, 0x4B, 0x52, 0x3C, 0x2C, 0xA2, 0x6E, 0xDC, 0x0A, 0x54, 0x9A, 0x8F, 0x16, 0x26, 0xF9 }, + }, + { + { 0xAD, 0xB7, 0xF8, 0xE5, 0x75, 0x00, 0x60, 0xD5, 0x87, 0xD6, 0x02, 0x54, 0x58, 0xFC, 0xB0, 0xB6, + 0xCE, 0x4F, 0x3D, 0x86, 0x79, 0x2B, 0xAF, 0xF0, 0xAA, 0xCC, 0x19, 0x0A, 0xB7, 0x0C, 0xB6, 0x2C }, + }, + { + { 0xAD, 0xF9, 0x1E, 0x85, 0x6E, 0xCA, 0xA9, 0xB5, 0x1C, 0x0A, 0x4A, 0x93, 0xA1, 0xAA, 0x53, 0xE5, + 0x2C, 0x31, 0x85, 0xB6, 0x7A, 0x72, 0xBD, 0x2F, 0x8F, 0x5B, 0x14, 0xB5, 0x84, 0x0E, 0x52, 0x9F }, + }, + { + { 0xAE, 0x03, 0x19, 0xFE, 0xA6, 0xA6, 0x5E, 0x84, 0xE8, 0x54, 0xB5, 0x15, 0x50, 0xEA, 0x44, 0x4F, + 0xA3, 0xB8, 0xBB, 0x50, 0xAE, 0x93, 0x74, 0x01, 0x3C, 0xFE, 0xF3, 0x88, 0x73, 0x5D, 0x0B, 0xD3 }, + }, + { + { 0xAE, 0x2F, 0x15, 0xEA, 0x4A, 0xA5, 0x39, 0x81, 0x41, 0x0F, 0x98, 0x93, 0x81, 0xA4, 0x41, 0x5A, + 0xF1, 0x84, 0x3D, 0x19, 0xE4, 0x39, 0x07, 0xAF, 0x53, 0xB2, 0x0F, 0x7F, 0xA7, 0x73, 0x2A, 0x93 }, + }, + { + { 0xAE, 0x4D, 0xF3, 0x97, 0x9B, 0x74, 0x27, 0x34, 0xA3, 0x39, 0xC4, 0x70, 0x1D, 0x5E, 0x13, 0x21, + 0x26, 0x3F, 0xF4, 0x4E, 0x67, 0x56, 0x49, 0x05, 0xF4, 0x9E, 0x25, 0x34, 0x62, 0xB8, 0x02, 0x25 }, + }, + { + { 0xAE, 0xE7, 0xD6, 0x4C, 0x89, 0x7A, 0x32, 0xDB, 0xCA, 0xF1, 0x15, 0x6F, 0xC7, 0xBF, 0xC8, 0x00, + 0x96, 0x73, 0x85, 0xD5, 0xB1, 0xE3, 0x25, 0xD8, 0xFA, 0x3B, 0x9C, 0x16, 0x25, 0xBC, 0x29, 0x92 }, + }, + { + { 0xAF, 0x0B, 0x21, 0x86, 0x24, 0x61, 0xD1, 0xF3, 0x9B, 0x07, 0x44, 0xFD, 0xC9, 0x28, 0x77, 0x99, + 0x62, 0x01, 0x1D, 0xFE, 0x0B, 0xD8, 0xD9, 0x56, 0xC2, 0x47, 0xB5, 0xF5, 0xB4, 0x43, 0x63, 0x1C }, + }, + { + { 0xAF, 0x1F, 0x37, 0x1F, 0x34, 0x84, 0x57, 0x51, 0x65, 0x2D, 0xC7, 0x48, 0x23, 0xF3, 0x01, 0x5C, + 0x5A, 0x11, 0xCA, 0x65, 0x3F, 0x28, 0x70, 0x1E, 0xDD, 0x4A, 0x7E, 0x0D, 0x23, 0x17, 0x1B, 0xBB }, + }, + { + { 0xAF, 0x6A, 0x9D, 0x88, 0xAD, 0xE1, 0x24, 0xDB, 0xF9, 0x50, 0xB2, 0xC4, 0x27, 0xBC, 0x40, 0x19, + 0x63, 0xB9, 0x61, 0x25, 0xC0, 0xA2, 0xAE, 0xBB, 0x7F, 0xB3, 0xF9, 0x8E, 0x48, 0x7A, 0x7F, 0xA6 }, + }, + { + { 0xAF, 0x6B, 0x80, 0x51, 0x47, 0x14, 0x0A, 0x0E, 0x41, 0x81, 0xD8, 0x6A, 0x7E, 0x8F, 0x07, 0x69, + 0xB6, 0x1D, 0x46, 0xD7, 0xB6, 0xFA, 0xC6, 0xE6, 0xF9, 0x59, 0x6D, 0xE9, 0x4A, 0xA8, 0xE2, 0xE8 }, + }, + { + { 0xAF, 0xB5, 0x7F, 0x89, 0x64, 0x9A, 0xB3, 0x0A, 0xF4, 0x88, 0x43, 0x05, 0xAF, 0x88, 0xEE, 0x56, + 0x5B, 0xA8, 0xD3, 0xC5, 0xC3, 0x57, 0x4A, 0xB8, 0x59, 0xFC, 0x07, 0x23, 0x2F, 0xC6, 0x73, 0xB9 }, + }, + { + { 0xAF, 0xBB, 0x40, 0x3C, 0xAD, 0x0D, 0x19, 0xCC, 0x26, 0xAE, 0x5B, 0x1E, 0x31, 0x0A, 0xC1, 0xAE, + 0x79, 0x47, 0x1B, 0xAD, 0x2B, 0xD7, 0x7B, 0xE4, 0x0F, 0x12, 0x50, 0x4C, 0x42, 0xE5, 0x22, 0x0B }, + }, + { + { 0xAF, 0xE7, 0xB8, 0xEE, 0xFD, 0xF5, 0x4E, 0x7F, 0x1C, 0x5A, 0x6B, 0xED, 0xF7, 0x54, 0xCE, 0x97, + 0x0F, 0xA1, 0x19, 0x59, 0xE7, 0x80, 0x38, 0xCC, 0x36, 0x8A, 0xC7, 0x78, 0xB7, 0x5C, 0x92, 0x4B }, + }, + { + { 0xAF, 0xE9, 0x28, 0xC5, 0x84, 0x8E, 0xCE, 0x02, 0xC2, 0xBD, 0xDC, 0xD9, 0x4B, 0x5A, 0x59, 0x30, + 0x31, 0x50, 0x9D, 0x78, 0x2B, 0xEB, 0x50, 0x20, 0xAC, 0xB3, 0x33, 0x71, 0x49, 0x18, 0xF0, 0x39 }, + }, + { + { 0xB0, 0x16, 0x77, 0xD9, 0xCA, 0x50, 0x46, 0x3F, 0x21, 0x8A, 0x5D, 0x33, 0x9E, 0x72, 0xF8, 0x59, + 0xF8, 0xB4, 0x1A, 0xE7, 0x9D, 0xCB, 0x8F, 0xA1, 0x65, 0x08, 0x45, 0xCE, 0xC4, 0xD8, 0xCB, 0x87 }, + }, + { + { 0xB0, 0x1E, 0xB1, 0x82, 0x68, 0x1A, 0xA9, 0x5D, 0x7B, 0xEA, 0xAF, 0x53, 0xBA, 0x75, 0x5B, 0x7F, + 0x3D, 0x0F, 0xB7, 0x97, 0x76, 0xD5, 0x62, 0xB9, 0x93, 0x8F, 0xFE, 0x98, 0x8D, 0x99, 0xB3, 0x13 }, + }, + { + { 0xB0, 0x5C, 0x14, 0x33, 0x61, 0x75, 0x9B, 0xE1, 0x52, 0xFD, 0x76, 0xA5, 0xFF, 0xA4, 0x87, 0x2D, + 0xD4, 0x2E, 0xA0, 0x60, 0xAE, 0x40, 0xA3, 0x83, 0x13, 0xB7, 0xB5, 0x4A, 0xEC, 0x06, 0x73, 0xC2 }, + }, + { + { 0xB0, 0x62, 0x43, 0x51, 0xFD, 0x68, 0x51, 0x23, 0x01, 0x38, 0x56, 0xEC, 0x40, 0x63, 0x25, 0xFC, + 0xCB, 0x16, 0x45, 0x76, 0x50, 0xA8, 0x71, 0xF5, 0xFB, 0x91, 0x5D, 0xDD, 0x75, 0x4A, 0x3B, 0xC9 }, + }, + { + { 0xB0, 0xB6, 0x32, 0x1C, 0x45, 0x9B, 0xDB, 0x78, 0x91, 0x8E, 0xC3, 0x16, 0xBD, 0x36, 0xEC, 0x5F, + 0x30, 0x55, 0x8E, 0xE0, 0x2E, 0xCC, 0x51, 0xE3, 0x77, 0xC5, 0xF8, 0xAB, 0xA4, 0x1D, 0xBA, 0x6D }, + }, + { + { 0xB0, 0xE0, 0xE1, 0x6C, 0x5F, 0x69, 0x1F, 0x66, 0xA9, 0x57, 0x3B, 0xD3, 0xCF, 0x43, 0xF9, 0xDF, + 0xD2, 0xAD, 0x3E, 0x56, 0x15, 0x54, 0x63, 0x7F, 0x1E, 0x7B, 0x71, 0x91, 0x4D, 0x62, 0x73, 0x38 }, + }, + { + { 0xB1, 0x61, 0xD6, 0x09, 0x5B, 0x6E, 0x9B, 0x1D, 0xB5, 0x16, 0xDA, 0x1C, 0x2D, 0xEF, 0x9C, 0xE9, + 0x11, 0xC7, 0xA5, 0xBB, 0x55, 0xEF, 0xF5, 0x05, 0x66, 0xD5, 0xD1, 0xE0, 0xDC, 0x4F, 0x45, 0xCD }, + }, + { + { 0xB1, 0x91, 0x9D, 0x6C, 0xFA, 0xC2, 0x0D, 0x03, 0x47, 0x76, 0x87, 0x1A, 0xB0, 0xA2, 0x57, 0x8A, + 0xC0, 0xB2, 0xDD, 0xB6, 0x8B, 0xE1, 0xDC, 0x75, 0x91, 0x80, 0x44, 0x1F, 0x05, 0x3A, 0x27, 0x2C }, + }, + { + { 0xB1, 0x92, 0x30, 0x7C, 0xFA, 0xEE, 0x42, 0x7B, 0x76, 0x7B, 0xC2, 0xF9, 0x9B, 0xC2, 0x26, 0x74, + 0x26, 0x0A, 0x4E, 0x8E, 0x1E, 0x6B, 0x36, 0x19, 0x8C, 0x2F, 0x4E, 0xEA, 0x67, 0xCA, 0x85, 0xEF }, + }, + { + { 0xB1, 0xA5, 0x89, 0x8E, 0x3B, 0x0D, 0x0A, 0x7A, 0x80, 0x76, 0x79, 0x3D, 0x6C, 0x63, 0xA3, 0x22, + 0xEA, 0xB7, 0x1F, 0x7E, 0x28, 0x74, 0x5D, 0xEF, 0xF5, 0xA0, 0xC3, 0x3A, 0x8E, 0xEC, 0xE4, 0xFA }, + }, + { + { 0xB2, 0xAF, 0x84, 0x2D, 0x01, 0x52, 0x07, 0x85, 0x37, 0x0E, 0x3E, 0xB5, 0x9C, 0xB8, 0x89, 0x29, + 0xDE, 0x38, 0xA7, 0x15, 0xBF, 0x4C, 0xEF, 0x45, 0xE5, 0x95, 0xCE, 0xED, 0x3F, 0xEA, 0x26, 0x79 }, + }, + { + { 0xB2, 0xBA, 0x3B, 0x49, 0xB8, 0xE5, 0x84, 0x51, 0x81, 0x6B, 0x10, 0x83, 0x6C, 0x4F, 0x1C, 0xA6, + 0xA3, 0x39, 0x37, 0xCE, 0xB8, 0xF0, 0xC0, 0x4B, 0x9F, 0x75, 0x8C, 0x5E, 0xB4, 0x78, 0x41, 0x1F }, + }, + { + { 0xB2, 0xC6, 0xF7, 0xC6, 0x2F, 0xA5, 0x6A, 0x4E, 0x57, 0xB7, 0x62, 0xA8, 0x9C, 0x3C, 0x55, 0xDD, + 0x81, 0xC1, 0x82, 0x7E, 0xDF, 0xB0, 0xD4, 0x41, 0x80, 0xE4, 0xFA, 0xDC, 0xEB, 0x23, 0x72, 0x73 }, + }, + { + { 0xB2, 0xDC, 0x86, 0x25, 0x6C, 0xCF, 0xF4, 0xBB, 0x14, 0xFD, 0x70, 0x27, 0x9F, 0xCC, 0x3C, 0xE9, + 0x25, 0xC5, 0x1F, 0xB7, 0x17, 0xE5, 0x87, 0x6F, 0x29, 0x1B, 0xA1, 0x70, 0x73, 0x43, 0x85, 0x68 }, + }, + { + { 0xB2, 0xE5, 0xFA, 0xF7, 0xEE, 0xBE, 0xD8, 0xC2, 0x9C, 0x7B, 0x83, 0x65, 0x3A, 0xF3, 0xFC, 0x9F, + 0x8D, 0xE4, 0x6E, 0xE5, 0x3B, 0x64, 0x9C, 0x94, 0x53, 0x87, 0xB0, 0xCF, 0xF8, 0xB7, 0x14, 0x93 }, + }, + { + { 0xB3, 0x07, 0x32, 0xE7, 0x56, 0x52, 0x9E, 0x38, 0x59, 0xC4, 0x31, 0x23, 0x86, 0x19, 0x53, 0x34, + 0x79, 0x8E, 0x43, 0xC4, 0xBE, 0xBC, 0xC4, 0xCF, 0xED, 0xFB, 0x2E, 0xBF, 0xA0, 0xDD, 0x80, 0x0E }, + }, + { + { 0xB3, 0x0D, 0x88, 0x44, 0x30, 0x43, 0xF5, 0xF3, 0x72, 0x32, 0xBB, 0x9B, 0xAC, 0xB9, 0x94, 0xC5, + 0xBA, 0xE9, 0x3A, 0x46, 0xFC, 0x87, 0xF1, 0x51, 0x29, 0xC9, 0x74, 0x69, 0xA5, 0x81, 0x4E, 0xCA }, + }, + { + { 0xB3, 0x19, 0xAF, 0x08, 0x28, 0x68, 0x1F, 0x97, 0x35, 0xA4, 0x8D, 0x11, 0x17, 0x39, 0xB8, 0x62, + 0x89, 0xAE, 0xF7, 0xFB, 0x81, 0x7C, 0x04, 0x7F, 0x12, 0x75, 0xA5, 0x87, 0xA7, 0x32, 0x2C, 0x0B }, + }, + { + { 0xB3, 0x1A, 0xF0, 0xC2, 0xE5, 0x1E, 0xA2, 0x1C, 0x91, 0x04, 0xF9, 0x4F, 0xAA, 0x66, 0xE0, 0xCC, + 0xC0, 0x41, 0x34, 0xD5, 0x80, 0x9A, 0x2A, 0x26, 0x70, 0xA3, 0xB7, 0xBC, 0x7D, 0xD9, 0x64, 0xF8 }, + }, + { + { 0xB3, 0x35, 0x93, 0x3F, 0xC9, 0x72, 0x3E, 0x9D, 0xAA, 0x0D, 0x0C, 0xE7, 0x1C, 0x66, 0x5A, 0xDD, + 0xA5, 0xAB, 0xDA, 0xF3, 0x5A, 0xDB, 0x10, 0xD7, 0x6E, 0xDC, 0x9C, 0x8E, 0x4E, 0xBA, 0x05, 0x6E }, + }, + { + { 0xB3, 0x95, 0x0E, 0x0B, 0xD2, 0x2C, 0x39, 0xFA, 0xB1, 0xDB, 0xD7, 0xBE, 0xB7, 0x42, 0x56, 0xAF, + 0xB1, 0x1D, 0xCB, 0x26, 0x35, 0x69, 0x70, 0x83, 0xD6, 0x8F, 0xDB, 0xEE, 0x80, 0xB0, 0x5F, 0x54 }, + }, + { + { 0xB3, 0xE6, 0x42, 0x06, 0x6E, 0x41, 0x78, 0x67, 0xD9, 0x0F, 0xB9, 0xB2, 0xBA, 0x15, 0x41, 0x98, + 0xA5, 0xC5, 0xF6, 0xCC, 0x82, 0x9B, 0x51, 0x39, 0xDF, 0xD6, 0x91, 0xE5, 0x1A, 0xD3, 0x74, 0xAD }, + }, + { + { 0xB3, 0xF4, 0xB1, 0x6F, 0x8E, 0xCE, 0xBB, 0x41, 0x47, 0x4F, 0x92, 0x4F, 0xEE, 0xF9, 0xB0, 0xBD, + 0x97, 0x9B, 0x36, 0x36, 0xC3, 0x4F, 0xF2, 0x72, 0x3F, 0x67, 0x3C, 0x8E, 0xEE, 0x2A, 0xF1, 0x52 }, + }, + { + { 0xB4, 0x02, 0x2C, 0x24, 0x25, 0xA5, 0xB7, 0x5A, 0x9B, 0x5E, 0x80, 0x08, 0x1C, 0x95, 0x3A, 0xD3, + 0xDB, 0x93, 0xB2, 0x52, 0xDA, 0x0E, 0x25, 0xEC, 0x8B, 0xAD, 0x0C, 0x36, 0xAA, 0x11, 0x09, 0x2E }, + }, + { + { 0xB4, 0x2A, 0x78, 0xB0, 0x6F, 0x28, 0x15, 0xD4, 0xA0, 0x49, 0xFE, 0x83, 0xF3, 0xD2, 0x9B, 0x38, + 0x5B, 0x90, 0xD3, 0xD0, 0x0B, 0xA8, 0x57, 0xD6, 0x2F, 0x19, 0x67, 0x81, 0xDD, 0xA3, 0xD1, 0x85 }, + }, + { + { 0xB4, 0x2C, 0x64, 0xF0, 0x25, 0xDF, 0x8F, 0x37, 0x0E, 0xB7, 0xA4, 0x69, 0x94, 0x2B, 0x97, 0xE2, + 0xF8, 0xB5, 0xF4, 0xBF, 0xAC, 0xC4, 0xCF, 0x17, 0xD2, 0xA0, 0x8F, 0xCA, 0x57, 0xBB, 0xC4, 0x9B }, + }, + { + { 0xB4, 0xAE, 0x2A, 0x6B, 0xFC, 0xA5, 0x31, 0xC9, 0x9C, 0x69, 0xB3, 0x5A, 0xFE, 0x67, 0x54, 0xFC, + 0x49, 0x27, 0x5B, 0x6C, 0xCA, 0xCD, 0xC8, 0x26, 0x9C, 0x27, 0x0C, 0xDB, 0x2B, 0x58, 0xC0, 0x8F }, + }, + { + { 0xB4, 0xD4, 0x67, 0xFC, 0x5E, 0x97, 0xDB, 0x25, 0xA1, 0xFD, 0xB0, 0x06, 0xD2, 0x77, 0x66, 0xB9, + 0x99, 0x5B, 0xB9, 0xC7, 0x7B, 0x66, 0x43, 0x97, 0x08, 0xA4, 0x59, 0xB0, 0x43, 0xD0, 0x33, 0x24 }, + }, + { + { 0xB4, 0xED, 0xCD, 0x6F, 0x8A, 0x01, 0x82, 0xB7, 0x17, 0xF0, 0x6F, 0xE1, 0xD7, 0xAC, 0x9C, 0x62, + 0x33, 0xD4, 0x38, 0x22, 0xE9, 0xFD, 0x14, 0xDB, 0x98, 0xF7, 0xF8, 0x4E, 0x32, 0x79, 0x6D, 0x08 }, + }, + { + { 0xB4, 0xF1, 0xEF, 0x4A, 0xA5, 0x1F, 0x02, 0x1E, 0xD2, 0x66, 0x26, 0x44, 0xCE, 0xDA, 0x31, 0x1D, + 0x86, 0xF5, 0x64, 0x0D, 0xAF, 0xE9, 0xA4, 0x39, 0x18, 0x89, 0x37, 0xD8, 0x09, 0x13, 0x90, 0x75 }, + }, + { + { 0xB5, 0x25, 0x36, 0x2F, 0x68, 0x54, 0x4A, 0xC1, 0x8C, 0x2F, 0x5C, 0x19, 0x51, 0x47, 0x94, 0x40, + 0x45, 0x8C, 0x59, 0xD7, 0xBB, 0x00, 0x5F, 0x19, 0x91, 0x17, 0x51, 0xB4, 0xD3, 0x97, 0x1D, 0x5C }, + }, + { + { 0xB5, 0x3B, 0x30, 0x01, 0x2D, 0xBC, 0xA0, 0x5E, 0x6A, 0xF7, 0xEB, 0x9C, 0xA2, 0xA7, 0xDD, 0xA7, + 0xDB, 0x0F, 0x61, 0x21, 0x6C, 0x9C, 0xA4, 0x7D, 0x48, 0x4F, 0xA0, 0x97, 0xCF, 0xBA, 0x2C, 0x46 }, + }, + { + { 0xB5, 0x53, 0x5E, 0x99, 0x84, 0x36, 0xBF, 0x17, 0x42, 0xCF, 0x3F, 0xB1, 0xC1, 0x9A, 0x66, 0x6B, + 0xDE, 0x55, 0x09, 0x4B, 0x3E, 0xD5, 0xCF, 0xB2, 0x09, 0x5D, 0xF0, 0x8E, 0xC6, 0xDD, 0xF6, 0x76 }, + }, + { + { 0xB5, 0xB8, 0xD0, 0x08, 0x69, 0xDD, 0x78, 0x64, 0x9D, 0xAB, 0xD4, 0x41, 0x14, 0x08, 0xA8, 0xFF, + 0x1A, 0xC5, 0x43, 0xEC, 0xA8, 0x80, 0xAE, 0xED, 0xB5, 0x83, 0x28, 0xED, 0xDA, 0x47, 0x1B, 0xFC }, + }, + { + { 0xB5, 0xE2, 0xAA, 0x4C, 0x7F, 0xA4, 0x65, 0xA9, 0x72, 0xAF, 0x17, 0x0E, 0x21, 0x76, 0xD1, 0x83, + 0x51, 0xE6, 0x8D, 0x94, 0x95, 0x0D, 0x87, 0x55, 0x9C, 0x65, 0x20, 0x43, 0xFE, 0xCB, 0x05, 0x2D }, + }, + { + { 0xB5, 0xE5, 0xDC, 0xDE, 0xCB, 0x8D, 0xEB, 0x27, 0x13, 0x4F, 0x02, 0xA5, 0x18, 0x79, 0x43, 0x16, + 0xF0, 0x8F, 0xAF, 0x9C, 0x2B, 0x1F, 0xDA, 0xD6, 0xD4, 0x86, 0x61, 0xF5, 0x7E, 0xA6, 0x45, 0xD9 }, + }, + { + { 0xB5, 0xEF, 0x42, 0xC4, 0xBC, 0xED, 0xF1, 0x7B, 0xEC, 0xC7, 0x5B, 0xF4, 0x63, 0x66, 0x49, 0xCE, + 0xBF, 0xF8, 0x71, 0x1B, 0xCE, 0xFF, 0xFA, 0x69, 0x5C, 0xC2, 0x52, 0xFA, 0x57, 0x4D, 0x42, 0x18 }, + }, + { + { 0xB6, 0x60, 0x21, 0xDE, 0x5D, 0xE8, 0x81, 0x36, 0xBB, 0x09, 0x49, 0x1A, 0x46, 0xE0, 0xFC, 0x6B, + 0x69, 0x33, 0x9B, 0xD9, 0xAC, 0xC9, 0xA4, 0xEA, 0x84, 0xCC, 0x76, 0x4C, 0x39, 0xF5, 0x70, 0xA3 }, + }, + { + { 0xB6, 0x66, 0x7D, 0x8E, 0xD2, 0x85, 0x85, 0x10, 0x8D, 0x3D, 0x97, 0x12, 0x72, 0xBC, 0xB5, 0x17, + 0x82, 0x84, 0x5B, 0xDD, 0xEB, 0x32, 0xFA, 0xBA, 0x96, 0x31, 0xE5, 0x0C, 0x0C, 0x04, 0x0B, 0x54 }, + }, + { + { 0xB6, 0x67, 0xDC, 0x46, 0x65, 0x60, 0x6A, 0xCA, 0xEE, 0xA4, 0xC1, 0x4D, 0xA9, 0x1D, 0xEC, 0x87, + 0x6C, 0x2E, 0xA3, 0x76, 0x0B, 0xCB, 0x1B, 0x1D, 0x50, 0xD7, 0x55, 0x98, 0xA2, 0x61, 0x8C, 0x56 }, + }, + { + { 0xB6, 0x82, 0x3C, 0x9D, 0xBC, 0x8E, 0x8C, 0x05, 0x4B, 0xCF, 0x60, 0xF2, 0x38, 0x21, 0xAC, 0x6C, + 0x58, 0x19, 0x73, 0x51, 0xEA, 0xCF, 0xA5, 0x57, 0x4C, 0xF0, 0x41, 0xB4, 0xCE, 0x6B, 0x84, 0x04 }, + }, + { + { 0xB6, 0x8D, 0x56, 0xB6, 0x8C, 0xC0, 0x99, 0xFF, 0xDE, 0xE7, 0xD5, 0x70, 0x1F, 0x1E, 0x1E, 0x97, + 0x26, 0xDC, 0x75, 0x7C, 0x22, 0x22, 0xB0, 0xA0, 0x1E, 0x4A, 0x32, 0x72, 0xF8, 0xB3, 0x84, 0xF2 }, + }, + { + { 0xB6, 0x90, 0x8F, 0xAB, 0x0C, 0xA2, 0xD7, 0xD6, 0x5D, 0xCA, 0x8B, 0x10, 0xD0, 0x1F, 0x08, 0x48, + 0x13, 0x1C, 0x1C, 0x32, 0x10, 0xA2, 0x5B, 0x47, 0xC7, 0x9E, 0x33, 0xC4, 0xAC, 0x09, 0x5F, 0x7E }, + }, + { + { 0xB6, 0xCD, 0x3F, 0x77, 0x3A, 0xE4, 0x02, 0xE5, 0x2D, 0xFE, 0x4F, 0x14, 0xBD, 0x11, 0x49, 0x5C, + 0x9C, 0xA8, 0x80, 0xF5, 0x3D, 0x4F, 0x5A, 0x7A, 0x24, 0x96, 0xE4, 0xA9, 0xAE, 0x29, 0x53, 0x80 }, + }, + { + { 0xB7, 0x02, 0x1A, 0x28, 0x5D, 0x89, 0xA7, 0xE9, 0xDE, 0x1A, 0xFC, 0xFA, 0x8F, 0x66, 0x6A, 0x55, + 0x92, 0xBB, 0xA6, 0xD2, 0xAC, 0x28, 0xDD, 0x62, 0x74, 0x7E, 0xC1, 0x86, 0x19, 0x1C, 0x57, 0xF7 }, + }, + { + { 0xB7, 0x06, 0xDE, 0x1B, 0xD1, 0xEE, 0x2F, 0x4C, 0xEC, 0x6C, 0xE0, 0x92, 0x02, 0x2B, 0x49, 0x32, + 0x81, 0xE2, 0x9A, 0x21, 0x73, 0x50, 0x8C, 0x9B, 0xD0, 0xFB, 0xC2, 0xC3, 0xD9, 0x68, 0xE3, 0xE7 }, + }, + { + { 0xB7, 0x1F, 0x29, 0x1E, 0x6E, 0xC6, 0xBD, 0x6C, 0x4F, 0x2B, 0x81, 0xF7, 0xF7, 0x21, 0x06, 0x73, + 0xE9, 0x73, 0x08, 0xAF, 0xF1, 0x24, 0x3F, 0x26, 0x99, 0x5A, 0x25, 0xFA, 0x23, 0x0C, 0xFE, 0x4C }, + }, + { + { 0xB7, 0x45, 0x85, 0x05, 0xC5, 0x17, 0x90, 0x14, 0x9C, 0x5E, 0x98, 0x00, 0xFD, 0x22, 0x74, 0x8A, + 0x1D, 0x44, 0x66, 0x5F, 0x68, 0x34, 0xBA, 0x84, 0x4E, 0x9A, 0x0C, 0x32, 0x31, 0x4A, 0x57, 0x21 }, + }, + { + { 0xB7, 0x4C, 0x89, 0x90, 0x0B, 0xBC, 0x4C, 0xE2, 0x8D, 0xCA, 0x03, 0x3F, 0x80, 0x08, 0x70, 0x03, + 0xD1, 0x89, 0xEC, 0xDD, 0x54, 0xC3, 0xFD, 0x23, 0x79, 0xDA, 0x5E, 0x22, 0x17, 0x57, 0xBC, 0x73 }, + }, + { + { 0xB7, 0x65, 0xC9, 0x6B, 0x69, 0x18, 0xAB, 0x88, 0xBF, 0xBE, 0xC4, 0x32, 0xA7, 0x5B, 0x79, 0x97, + 0xDF, 0xFA, 0x55, 0x96, 0xD1, 0x13, 0xD1, 0x6F, 0x13, 0x7E, 0xFE, 0x7D, 0x76, 0x2B, 0xE1, 0x52 }, + }, + { + { 0xB7, 0x9F, 0xCA, 0x4D, 0x47, 0x92, 0xEC, 0x5E, 0x5A, 0x74, 0x06, 0x59, 0x81, 0x3A, 0x0F, 0x46, + 0x08, 0xEA, 0xF9, 0xBA, 0x9C, 0xBB, 0xA8, 0xA0, 0xF8, 0xDA, 0xE1, 0xDD, 0xBB, 0xE6, 0x1E, 0x77 }, + }, + { + { 0xB8, 0x30, 0xC5, 0x8C, 0x49, 0x50, 0x7D, 0xD9, 0x85, 0x7C, 0xC0, 0xCE, 0x37, 0xFA, 0xC7, 0xFA, + 0x3C, 0xDE, 0xA0, 0x4E, 0x9B, 0x64, 0x3E, 0x38, 0xD5, 0x3B, 0x38, 0x1D, 0xB8, 0xFB, 0x89, 0x5D }, + }, + { + { 0xB8, 0x37, 0xC3, 0x7E, 0xE9, 0x9C, 0x18, 0x2B, 0x07, 0xAD, 0x6D, 0x79, 0x1F, 0x53, 0x9E, 0x22, + 0xE0, 0x4E, 0x0D, 0xDB, 0x16, 0xF9, 0xC1, 0x57, 0xA1, 0x35, 0x20, 0xAC, 0xAE, 0xD0, 0x7D, 0xCA }, + }, + { + { 0xB8, 0x74, 0x36, 0x95, 0x1C, 0xEC, 0x37, 0x7E, 0xEF, 0x73, 0xDE, 0x4B, 0x74, 0xF2, 0x83, 0xC4, + 0x2B, 0x2C, 0xCB, 0x1C, 0xA3, 0x7C, 0x5B, 0x30, 0xAA, 0xD6, 0x55, 0xA7, 0x40, 0x1A, 0x3D, 0x2F }, + }, + { + { 0xB8, 0x8C, 0xE8, 0x1A, 0x7B, 0x4B, 0x62, 0x65, 0x71, 0x0F, 0x38, 0xD0, 0xCA, 0x3E, 0x01, 0xFF, + 0xAB, 0xDE, 0x0F, 0xC2, 0x48, 0x3E, 0x21, 0xB8, 0xF1, 0xA5, 0xFF, 0x48, 0x3B, 0x2D, 0x60, 0xCE }, + }, + { + { 0xB9, 0x42, 0x94, 0x19, 0xF2, 0x9F, 0xE3, 0x5C, 0xD8, 0xCF, 0x94, 0x92, 0xD5, 0xA9, 0xB5, 0xD2, + 0x24, 0x1D, 0xDA, 0x4E, 0x12, 0x15, 0x6F, 0x37, 0x4C, 0xEC, 0x78, 0x4F, 0x44, 0x5B, 0x43, 0xF2 }, + }, + { + { 0xB9, 0x8D, 0x83, 0x38, 0x55, 0xC3, 0x67, 0x88, 0x62, 0xB6, 0x2F, 0x36, 0x50, 0xDB, 0x00, 0xA3, + 0x45, 0xF4, 0x6A, 0x0E, 0x8E, 0x01, 0x1A, 0x20, 0x01, 0x3F, 0xD8, 0xED, 0xCE, 0x25, 0x27, 0x0D }, + }, + { + { 0xB9, 0x9C, 0xDB, 0x82, 0xA9, 0x77, 0x31, 0x12, 0xC0, 0x67, 0x17, 0xD7, 0x74, 0x50, 0x51, 0xA7, + 0x01, 0xF3, 0x00, 0xD5, 0x25, 0xD0, 0x55, 0x6E, 0x67, 0x5A, 0x04, 0xCA, 0xEF, 0x26, 0x22, 0x89 }, + }, + { + { 0xB9, 0xCC, 0x92, 0xF7, 0x8C, 0x2C, 0x19, 0x57, 0xDB, 0xB6, 0xC4, 0xA5, 0xE4, 0x25, 0x44, 0x68, + 0xFB, 0xCD, 0x88, 0xB1, 0xFD, 0x9F, 0x98, 0xFA, 0x6D, 0x76, 0x08, 0x70, 0x9E, 0xBE, 0x92, 0x8D }, + }, + { + { 0xBA, 0x0A, 0x8C, 0xC1, 0xC2, 0xF6, 0x62, 0x9B, 0x78, 0xAF, 0xEF, 0x1D, 0x22, 0xD5, 0x57, 0x7A, + 0x13, 0x81, 0x13, 0xC4, 0xC6, 0x21, 0x89, 0x48, 0x47, 0x44, 0xC2, 0x92, 0x50, 0x24, 0x49, 0x7C }, + }, + { + { 0xBA, 0x18, 0x2C, 0x1B, 0x75, 0xD8, 0xDF, 0xD1, 0x18, 0x92, 0xE4, 0x77, 0x59, 0x59, 0xAD, 0x8A, + 0x8C, 0x78, 0x2C, 0xEF, 0x60, 0xEC, 0xEA, 0xBE, 0x56, 0x19, 0x72, 0x9B, 0xB8, 0x1B, 0x4A, 0x10 }, + }, + { + { 0xBA, 0x2F, 0xDE, 0x44, 0xDD, 0xAE, 0x01, 0x8A, 0x51, 0x06, 0xC5, 0x0C, 0x36, 0xA2, 0x33, 0x0D, + 0xF4, 0x30, 0x68, 0x9E, 0x0A, 0x6D, 0xCA, 0x6A, 0xBF, 0x85, 0x7F, 0xA2, 0xFD, 0xED, 0xE8, 0xD4 }, + }, + { + { 0xBA, 0x51, 0xAF, 0xF5, 0xD5, 0xD3, 0x10, 0x5F, 0x34, 0xA2, 0xB3, 0x3A, 0x83, 0xE3, 0xAD, 0xFD, + 0x12, 0xD7, 0x9C, 0xA6, 0x05, 0x90, 0x9D, 0x96, 0x03, 0x3E, 0x32, 0xA5, 0xCF, 0x2F, 0x71, 0xF6 }, + }, + { + { 0xBA, 0xCF, 0x5E, 0x99, 0xF5, 0x7F, 0x78, 0xCC, 0x32, 0xF2, 0xAF, 0x8D, 0x4E, 0x80, 0x6A, 0x0A, + 0x36, 0xCE, 0x9B, 0x42, 0xE9, 0xC7, 0x5C, 0x54, 0x8D, 0xED, 0x55, 0xD2, 0x48, 0x62, 0xCA, 0x17 }, + }, + { + { 0xBB, 0x0B, 0xD1, 0xE6, 0x9F, 0xF4, 0xA3, 0x89, 0x51, 0x61, 0x13, 0x55, 0x2C, 0x17, 0xAB, 0x77, + 0x82, 0xA7, 0xEB, 0xBA, 0xEA, 0x0B, 0xE3, 0x9F, 0x58, 0x92, 0x84, 0x1F, 0x1F, 0x74, 0xD2, 0x98 }, + }, + { + { 0xBB, 0x13, 0xDF, 0x73, 0xB6, 0xE8, 0x89, 0x77, 0x7C, 0x4D, 0x85, 0xEC, 0x93, 0xB8, 0x3E, 0xA8, + 0xBB, 0x95, 0x43, 0xF9, 0xFC, 0x08, 0xC2, 0xB3, 0x1C, 0x02, 0xAC, 0x72, 0xB3, 0x1A, 0x09, 0x0D }, + }, + { + { 0xBB, 0x48, 0x13, 0xED, 0xFC, 0xF7, 0x4A, 0x4F, 0x12, 0xD9, 0x8F, 0x99, 0x6B, 0xF7, 0x98, 0xD4, + 0xED, 0xE3, 0xCB, 0xB7, 0x00, 0x07, 0x31, 0x7A, 0x2C, 0x6B, 0x54, 0x9D, 0xBF, 0x92, 0xA8, 0x5E }, + }, + { + { 0xBB, 0x5C, 0xB3, 0x78, 0xB7, 0xB9, 0x48, 0x7F, 0xA6, 0x1B, 0xC0, 0x91, 0x3D, 0xA1, 0xDF, 0x26, + 0xA1, 0xCF, 0xEF, 0xF7, 0x45, 0x2D, 0x9B, 0xA3, 0x6C, 0xAC, 0x47, 0xA8, 0x5C, 0x7F, 0xF3, 0x48 }, + }, + { + { 0xBB, 0x77, 0x41, 0x99, 0x17, 0x89, 0x5C, 0x74, 0x0F, 0x39, 0x61, 0x60, 0x1B, 0x99, 0xB5, 0xC2, + 0x25, 0x67, 0x37, 0xAA, 0x6C, 0x6E, 0x88, 0x27, 0x48, 0x5E, 0x44, 0x8E, 0x69, 0x74, 0xB1, 0x6B }, + }, + { + { 0xBB, 0xAA, 0x32, 0x35, 0x0E, 0x2D, 0xC5, 0x06, 0x07, 0xAA, 0xC6, 0x5B, 0x29, 0x81, 0xD3, 0x97, + 0xC8, 0xB9, 0xAF, 0x51, 0x22, 0x38, 0xCA, 0xD4, 0xCB, 0xB3, 0x10, 0x07, 0x64, 0xE7, 0xA3, 0x94 }, + }, + { + { 0xBB, 0xAD, 0x8A, 0x81, 0x54, 0xD7, 0xAB, 0x8E, 0x3F, 0x3A, 0x67, 0x09, 0x7B, 0x4D, 0xB7, 0x44, + 0x8F, 0x4B, 0x07, 0xE4, 0x7C, 0xDA, 0xA6, 0xB8, 0x36, 0xED, 0xD2, 0x67, 0x68, 0xF9, 0x64, 0x92 }, + }, + { + { 0xBB, 0xE6, 0xB5, 0x24, 0x36, 0x69, 0x0A, 0x58, 0x57, 0x74, 0x91, 0x27, 0xCC, 0xB6, 0xAB, 0x5B, + 0x16, 0xD6, 0xB3, 0x06, 0x6C, 0x71, 0x27, 0x25, 0xA2, 0xC5, 0xFC, 0x4F, 0x61, 0xB8, 0xA9, 0x88 }, + }, + { + { 0xBC, 0x14, 0x2E, 0xBA, 0xC2, 0x78, 0xA8, 0xFE, 0x8C, 0xA8, 0xBC, 0x2C, 0x62, 0xFB, 0xCC, 0x40, + 0x17, 0xFF, 0x24, 0x96, 0x98, 0xBE, 0xED, 0xFB, 0x1E, 0xF3, 0x6F, 0x37, 0x5F, 0xB3, 0x9F, 0x72 }, + }, + { + { 0xBC, 0x1A, 0x3B, 0x83, 0x46, 0xA5, 0x18, 0x4E, 0x8F, 0xE2, 0xA9, 0x36, 0xD6, 0xD9, 0xCE, 0x2C, + 0xBE, 0x3A, 0x92, 0x05, 0x54, 0xE0, 0x60, 0xF9, 0x07, 0x97, 0xF9, 0x8F, 0xEE, 0x62, 0xA8, 0x52 }, + }, + { + { 0xBC, 0x3F, 0x40, 0xAE, 0xDC, 0x2D, 0xDF, 0x00, 0x3F, 0x3A, 0x5C, 0xCA, 0x77, 0xBF, 0x3B, 0x63, + 0x26, 0xC9, 0x3C, 0xCF, 0xA1, 0x6D, 0x1C, 0xC1, 0xBC, 0xF1, 0x3D, 0x5E, 0x46, 0xEA, 0x0D, 0xB6 }, + }, + { + { 0xBC, 0x98, 0x39, 0xC8, 0xB9, 0x22, 0xF6, 0x54, 0x57, 0x67, 0xA2, 0xBA, 0x46, 0x5A, 0x5B, 0xEA, + 0x9A, 0xA1, 0x84, 0x11, 0x52, 0x99, 0x4A, 0x6C, 0xF4, 0x67, 0x83, 0xAE, 0x49, 0x98, 0xAF, 0xCC }, + }, + { + { 0xBC, 0xE9, 0x07, 0x86, 0x57, 0x91, 0xAE, 0x71, 0x57, 0x9C, 0x64, 0xEE, 0x76, 0xB1, 0xAE, 0x09, + 0xF6, 0x55, 0x22, 0x2D, 0x38, 0x7B, 0xA7, 0xC1, 0x11, 0xF6, 0xA3, 0x0B, 0x7C, 0xD3, 0x98, 0x4D }, + }, + { + { 0xBD, 0x20, 0x20, 0x24, 0x96, 0x06, 0xC0, 0x1C, 0xE7, 0x70, 0xB2, 0x56, 0xE3, 0x8E, 0x82, 0x6B, + 0x87, 0x42, 0x04, 0xCD, 0x70, 0x44, 0x69, 0x6E, 0x6F, 0xBA, 0x53, 0x58, 0xBD, 0x44, 0xD6, 0x9A }, + }, + { + { 0xBD, 0x2E, 0x2F, 0x37, 0xC9, 0x66, 0xC3, 0x86, 0xD9, 0x70, 0x44, 0xFD, 0xE3, 0xE3, 0xF9, 0x00, + 0xFB, 0x1A, 0x0B, 0x04, 0x03, 0xB5, 0x81, 0x72, 0x5F, 0x34, 0xE3, 0xC1, 0x90, 0x05, 0x60, 0x56 }, + }, + { + { 0xBD, 0x4F, 0x30, 0xA1, 0x05, 0xD4, 0xC4, 0x5A, 0x36, 0x7F, 0x55, 0xDA, 0xE7, 0x33, 0x84, 0x75, + 0x5E, 0x01, 0x67, 0x8A, 0x32, 0x1F, 0xF0, 0x4C, 0x99, 0xD2, 0xD5, 0x2A, 0x2B, 0xFD, 0x7A, 0xCF }, + }, + { + { 0xBD, 0xD5, 0x42, 0x49, 0xDD, 0xD5, 0x4B, 0xC7, 0x2A, 0xA7, 0xA7, 0x5F, 0x77, 0x63, 0xA8, 0x38, + 0xCF, 0x4B, 0xA1, 0x7F, 0xB3, 0x64, 0x72, 0xBA, 0x12, 0x69, 0x8C, 0x45, 0xDF, 0x88, 0xE8, 0x46 }, + }, + { + { 0xBE, 0x2E, 0x88, 0xC5, 0xEE, 0x30, 0x7B, 0xA5, 0x41, 0x73, 0xA6, 0x00, 0x2B, 0x99, 0x16, 0x92, + 0xC8, 0xBD, 0x1D, 0x40, 0x8A, 0x59, 0x2F, 0x70, 0x7B, 0xB1, 0xAF, 0x56, 0xF5, 0xB9, 0xD7, 0x42 }, + }, + { + { 0xBE, 0x34, 0x75, 0x8B, 0x19, 0xD4, 0x31, 0x2D, 0x65, 0xB9, 0xE0, 0x78, 0xB6, 0xF8, 0xD9, 0x27, + 0x7C, 0x5E, 0x52, 0x1B, 0xA1, 0xF0, 0xD3, 0x15, 0x20, 0x9B, 0x2B, 0x56, 0x2D, 0x73, 0x91, 0x89 }, + }, + { + { 0xBE, 0x41, 0x0A, 0x51, 0xD3, 0x44, 0x17, 0x76, 0x91, 0xB3, 0x42, 0x64, 0x10, 0xA4, 0x41, 0xAF, + 0xD1, 0xC9, 0x40, 0xB1, 0xB2, 0x7C, 0xF5, 0x29, 0xEE, 0x87, 0xA1, 0x40, 0x3B, 0xB0, 0x16, 0xF4 }, + }, + { + { 0xBE, 0x5C, 0x3C, 0xD0, 0x6E, 0x3C, 0x58, 0x1A, 0x4E, 0x67, 0xAB, 0x8F, 0x77, 0x85, 0x51, 0xBB, + 0x0F, 0x41, 0x24, 0x4C, 0x6B, 0xBB, 0x41, 0x1D, 0x9B, 0xF1, 0x27, 0x19, 0x0F, 0x60, 0x99, 0x9D }, + }, + { + { 0xBE, 0x68, 0x35, 0x4F, 0x7C, 0x36, 0x24, 0x2D, 0xB6, 0x20, 0x4F, 0x20, 0x13, 0x1B, 0x01, 0xFF, + 0x28, 0xB7, 0xDD, 0xFF, 0x36, 0x2E, 0x42, 0x9B, 0xFD, 0xF8, 0x8F, 0x36, 0x37, 0x58, 0x24, 0x51 }, + }, + { + { 0xBE, 0xAC, 0x00, 0x60, 0x68, 0x7E, 0xB2, 0x5A, 0x9B, 0xED, 0x21, 0xA1, 0x99, 0x97, 0xAF, 0xFF, + 0x67, 0x7C, 0x89, 0x61, 0xDC, 0x00, 0xE2, 0x3B, 0x4C, 0x1E, 0x27, 0x7F, 0xF8, 0x58, 0xC0, 0x92 }, + }, + { + { 0xBE, 0xB7, 0x1D, 0xAF, 0x38, 0x97, 0x76, 0xCE, 0x8B, 0x4A, 0xC8, 0x18, 0x90, 0x1E, 0x02, 0xC0, + 0x6C, 0xFE, 0xF5, 0x22, 0x34, 0xFC, 0x49, 0x20, 0x3B, 0x4A, 0xA7, 0x73, 0x35, 0xB6, 0x63, 0x9B }, + }, + { + { 0xBE, 0xB9, 0x09, 0x0C, 0x92, 0xD1, 0x6B, 0xD0, 0x5A, 0xF3, 0x91, 0x5A, 0x39, 0xCC, 0x2A, 0xFA, + 0x9F, 0x6A, 0x8A, 0x6F, 0xBE, 0xD4, 0xFE, 0x54, 0xD9, 0xDE, 0x32, 0x49, 0x23, 0xB3, 0x93, 0x5A }, + }, + { + { 0xBE, 0xD5, 0xB6, 0xAD, 0xE6, 0xC9, 0xC2, 0x15, 0xE4, 0x14, 0x53, 0x21, 0x9A, 0xF2, 0x9A, 0x8B, + 0x8D, 0x76, 0x9D, 0x36, 0x43, 0x8C, 0x3F, 0x96, 0x61, 0x76, 0xE3, 0xBC, 0xC9, 0x1F, 0x2E, 0xE8 }, + }, + { + { 0xBE, 0xD6, 0xF8, 0x1A, 0xD8, 0x5E, 0x71, 0x6B, 0x60, 0xD3, 0xE9, 0x7D, 0x8B, 0x90, 0x81, 0xE9, + 0xC1, 0xB9, 0xEC, 0x3B, 0xE8, 0xF3, 0xFD, 0x5B, 0xAD, 0x55, 0x40, 0x2B, 0x79, 0x78, 0x5B, 0x37 }, + }, + { + { 0xBE, 0xE1, 0xD6, 0x40, 0x7D, 0x2F, 0xE3, 0xDB, 0x76, 0x64, 0x4C, 0x58, 0xA4, 0xF2, 0xB6, 0x4E, + 0x62, 0xF8, 0x93, 0xF8, 0x04, 0xFB, 0x9A, 0x87, 0xFE, 0xA3, 0x2C, 0x4C, 0x76, 0x45, 0x7F, 0x3B }, + }, + { + { 0xBE, 0xE5, 0x93, 0x20, 0xCE, 0x39, 0xB6, 0xBB, 0x7A, 0xC7, 0x72, 0xCD, 0xF3, 0xD3, 0x0D, 0xFE, + 0x57, 0xE0, 0x60, 0xCC, 0xA9, 0xE5, 0x4A, 0x62, 0x99, 0x96, 0xAA, 0x4F, 0xCB, 0xD4, 0xAF, 0x0E }, + }, + { + { 0xBE, 0xE9, 0x05, 0xD6, 0xA4, 0x20, 0x55, 0x47, 0x66, 0x90, 0xD3, 0x89, 0xD4, 0x80, 0x66, 0x5D, + 0x10, 0x29, 0xD0, 0xA0, 0x24, 0x75, 0x35, 0xE0, 0xA1, 0x4A, 0x79, 0x8E, 0xE3, 0xF5, 0xA3, 0x3D }, + }, + { + { 0xBF, 0x38, 0xE6, 0xAE, 0x32, 0x0F, 0x69, 0x16, 0x16, 0x0D, 0xA6, 0x06, 0x86, 0x83, 0xBF, 0x49, + 0xF2, 0xB2, 0x2B, 0x25, 0x24, 0x84, 0x63, 0x68, 0xF5, 0x04, 0x51, 0x81, 0x52, 0x40, 0x25, 0x9A }, + }, + { + { 0xBF, 0x60, 0xAE, 0xB3, 0x91, 0xC0, 0xFB, 0xD0, 0x49, 0x53, 0x52, 0x6D, 0xA9, 0xFD, 0x59, 0x96, + 0x9A, 0x82, 0xF1, 0xEE, 0x81, 0xA7, 0x97, 0x98, 0xA4, 0x17, 0x1E, 0x14, 0x59, 0x39, 0x19, 0x67 }, + }, + { + { 0xBF, 0xC6, 0x2C, 0x0A, 0x05, 0x85, 0xBC, 0x32, 0xD4, 0x0C, 0xBC, 0x2E, 0x24, 0xA4, 0x8E, 0x26, + 0x43, 0x4A, 0xE3, 0x33, 0x27, 0xD7, 0xE9, 0x8D, 0x1C, 0x57, 0xB6, 0xC5, 0x28, 0x4B, 0x95, 0x7A }, + }, + { + { 0xBF, 0xF4, 0x3A, 0x97, 0x20, 0x48, 0x2D, 0x13, 0x4C, 0xD5, 0xEE, 0x8A, 0x88, 0x99, 0xE1, 0xA7, + 0x36, 0xBF, 0x54, 0xA2, 0xB7, 0x86, 0x26, 0x9C, 0x0D, 0xCB, 0x8B, 0xA1, 0x92, 0xA8, 0x1F, 0xA4 }, + }, + { + { 0xC0, 0x09, 0xA1, 0xBE, 0x5B, 0xE8, 0xAF, 0xB5, 0x25, 0x8E, 0x12, 0x85, 0x5C, 0x64, 0xD0, 0x4D, + 0x13, 0xE8, 0xCC, 0xC4, 0x7B, 0x02, 0xBF, 0x3B, 0x51, 0xC6, 0xE1, 0x18, 0x05, 0xAE, 0xEC, 0xEB }, + }, + { + { 0xC0, 0x52, 0xE0, 0x98, 0xDD, 0x04, 0x2B, 0x3D, 0x44, 0x0F, 0x8F, 0xFB, 0xEE, 0x31, 0x91, 0x67, + 0x1F, 0x5F, 0x78, 0x4B, 0x94, 0x9C, 0x2D, 0x23, 0x3D, 0x60, 0xDA, 0x66, 0xC5, 0xC3, 0x6C, 0xFD }, + }, + { + { 0xC0, 0x9F, 0xFA, 0x0E, 0xDD, 0x16, 0xBA, 0x55, 0xF2, 0x3C, 0xEA, 0xF7, 0x2B, 0x11, 0x34, 0xE9, + 0x28, 0xDB, 0xA1, 0xC2, 0x34, 0x5A, 0x5A, 0xB5, 0x63, 0x1E, 0x25, 0x41, 0x24, 0x05, 0x4A, 0xDB }, + }, + { + { 0xC0, 0xAB, 0xD1, 0xC3, 0x56, 0x2F, 0xBC, 0x7F, 0xF7, 0xBD, 0x38, 0x95, 0x54, 0x60, 0xC3, 0xFC, + 0x43, 0x55, 0x0D, 0x97, 0x7F, 0x25, 0xE3, 0x43, 0xD4, 0x9C, 0xD4, 0xAF, 0xAD, 0xF2, 0x09, 0x3C }, + }, + { + { 0xC0, 0xD3, 0xDC, 0x9A, 0x2D, 0x13, 0x9D, 0x38, 0xCE, 0x02, 0xC0, 0x78, 0xF3, 0xC2, 0x92, 0x5D, + 0x89, 0x1D, 0x24, 0xE4, 0x36, 0x13, 0xCB, 0xEE, 0x3F, 0x18, 0xA2, 0xC8, 0x60, 0x98, 0x84, 0xB2 }, + }, + { + { 0xC0, 0xFE, 0xB7, 0x2A, 0x5F, 0x33, 0x16, 0x5C, 0x0D, 0xC7, 0xC4, 0x24, 0x7E, 0x23, 0xF3, 0x8C, + 0xC6, 0x1F, 0x25, 0x24, 0x42, 0xB2, 0xF6, 0x13, 0x40, 0x92, 0xDE, 0x3B, 0xAD, 0x7E, 0x45, 0x0D }, + }, + { + { 0xC1, 0x36, 0x56, 0xB8, 0xB3, 0xDD, 0x77, 0xCB, 0x97, 0x0D, 0xB1, 0x38, 0x81, 0x10, 0x6F, 0xB0, + 0x99, 0x8E, 0xC5, 0x4E, 0x94, 0xF8, 0x2E, 0xE4, 0x4D, 0xEA, 0x1B, 0x1A, 0x65, 0x90, 0xFC, 0xE7 }, + }, + { + { 0xC1, 0x53, 0xE6, 0x04, 0xED, 0xD6, 0x55, 0x50, 0x5D, 0xFF, 0x3F, 0x04, 0xB4, 0xAA, 0x95, 0xA4, + 0x73, 0xCD, 0x3F, 0xAB, 0x0A, 0x4D, 0xBC, 0xB9, 0x85, 0x84, 0xCD, 0x4B, 0x66, 0x46, 0x32, 0xF9 }, + }, + { + { 0xC1, 0x63, 0x98, 0xBA, 0xC4, 0xEA, 0x08, 0x39, 0xDF, 0x12, 0xEB, 0x3D, 0x6B, 0xF3, 0x98, 0x6D, + 0x4C, 0x69, 0x78, 0x04, 0xE0, 0x2A, 0xB9, 0x78, 0x8D, 0x3C, 0xF3, 0xB0, 0x38, 0x6E, 0x64, 0x10 }, + }, + { + { 0xC1, 0x73, 0xB2, 0x9F, 0x14, 0x85, 0xEE, 0x0F, 0x3F, 0xE6, 0x24, 0xDA, 0xAE, 0xBF, 0x21, 0x45, + 0x14, 0x1F, 0x7C, 0xD0, 0xE4, 0xC5, 0xEA, 0x2F, 0x46, 0xB7, 0xAF, 0xE3, 0x74, 0x8C, 0xC5, 0x03 }, + }, + { + { 0xC1, 0x77, 0x12, 0x97, 0xA4, 0xE8, 0xDC, 0x53, 0x75, 0x19, 0x5E, 0x1B, 0x63, 0x04, 0x2B, 0x59, + 0x19, 0x09, 0xF1, 0xD7, 0xEB, 0x5D, 0x25, 0xF2, 0x97, 0xAE, 0x7A, 0x61, 0xC1, 0x53, 0x8F, 0x9E }, + }, + { + { 0xC1, 0x7C, 0xE3, 0xBE, 0xF9, 0xCC, 0x61, 0x0B, 0x71, 0x3C, 0xFF, 0x47, 0xCC, 0xBE, 0x95, 0x8A, + 0xA7, 0x78, 0x35, 0x8D, 0xCC, 0x7C, 0x52, 0x63, 0xC1, 0xAA, 0x7F, 0xE4, 0x22, 0xF3, 0x9B, 0xC6 }, + }, + { + { 0xC1, 0x86, 0xBE, 0x26, 0xE4, 0x47, 0x89, 0x7C, 0x48, 0x3C, 0x43, 0xFD, 0xC0, 0x86, 0xE2, 0x60, + 0x74, 0x17, 0xEB, 0x3E, 0xA7, 0x88, 0xEC, 0x03, 0x10, 0xA7, 0x9D, 0xA9, 0x24, 0x1D, 0x16, 0xDE }, + }, + { + { 0xC1, 0xC3, 0x03, 0x06, 0x23, 0x16, 0x38, 0xEA, 0x57, 0x60, 0xAF, 0xBE, 0xF1, 0x44, 0x50, 0x68, + 0x22, 0x6C, 0xA0, 0x25, 0xF5, 0xE0, 0x86, 0xE2, 0x21, 0x21, 0x54, 0xDA, 0xC2, 0xE5, 0x48, 0x49 }, + }, + { + { 0xC1, 0xDE, 0x5F, 0xA3, 0x92, 0x13, 0x68, 0x58, 0x11, 0xA5, 0xBA, 0x93, 0x12, 0x1D, 0xE7, 0xA3, + 0x95, 0x98, 0x4E, 0x84, 0x44, 0x4E, 0x58, 0xF1, 0x63, 0xB7, 0xA6, 0x20, 0xAE, 0x3B, 0xBF, 0xA8 }, + }, + { + { 0xC1, 0xE8, 0x95, 0xA8, 0x27, 0x96, 0x4B, 0x9C, 0x04, 0x91, 0x69, 0xAD, 0xFF, 0x9A, 0x30, 0x32, + 0xD8, 0x70, 0x6A, 0x71, 0x7A, 0xCD, 0xB6, 0xF3, 0x39, 0x44, 0xFF, 0xA9, 0x62, 0xC6, 0x0D, 0x44 }, + }, + { + { 0xC2, 0x17, 0x03, 0x01, 0xD2, 0x2F, 0x8D, 0xC0, 0x42, 0xDC, 0xED, 0xD8, 0x3A, 0x92, 0x05, 0xC6, + 0x95, 0x25, 0x6F, 0x18, 0x4E, 0xD4, 0xBD, 0x5B, 0x52, 0x98, 0x28, 0x0A, 0xA6, 0x73, 0xB3, 0x7F }, + }, + { + { 0xC2, 0x29, 0xEE, 0xBB, 0x9E, 0x1A, 0x91, 0x38, 0x80, 0x87, 0xA3, 0xE0, 0x5F, 0x0C, 0x8A, 0x6B, + 0xB6, 0x84, 0x25, 0x6E, 0x34, 0x06, 0x68, 0xEE, 0xA2, 0x14, 0x01, 0x1D, 0x75, 0x2E, 0xF6, 0xB2 }, + }, + { + { 0xC2, 0xAD, 0xDF, 0x99, 0xCF, 0xC4, 0x2C, 0xE0, 0xE5, 0xA0, 0x93, 0xBC, 0xBF, 0x87, 0x40, 0x7C, + 0x61, 0x1F, 0x9D, 0x0A, 0xBF, 0x2A, 0x35, 0xD6, 0xE8, 0x03, 0xA3, 0x8E, 0xCB, 0x92, 0xC7, 0xB3 }, + }, + { + { 0xC2, 0xE7, 0x92, 0x11, 0x6A, 0x05, 0x00, 0x00, 0xBD, 0x47, 0x59, 0x1D, 0x93, 0x04, 0x71, 0xE6, + 0x17, 0x4C, 0x93, 0x85, 0xF5, 0xDC, 0x32, 0xB7, 0x62, 0x31, 0x65, 0x5F, 0xC8, 0x5E, 0x22, 0xE2 }, + }, + { + { 0xC2, 0xE8, 0x7A, 0xF9, 0xFE, 0x26, 0x55, 0x64, 0xE1, 0x09, 0xA3, 0x9D, 0x73, 0xBC, 0xD4, 0x7A, + 0x4E, 0x98, 0x75, 0x6F, 0x76, 0xEB, 0xDF, 0xB7, 0xA6, 0x57, 0x0A, 0xDA, 0xB9, 0xDD, 0xDD, 0xFB }, + }, + { + { 0xC3, 0x3A, 0x14, 0x69, 0x59, 0xF3, 0x02, 0x8B, 0x97, 0x1A, 0x8D, 0x3B, 0xF0, 0x30, 0x38, 0x7E, + 0x33, 0xBC, 0xC5, 0xB5, 0x2B, 0xA9, 0xA6, 0x8A, 0x7F, 0x76, 0x34, 0x39, 0x23, 0x6D, 0x61, 0x1A }, + }, + { + { 0xC3, 0x79, 0x03, 0xC5, 0x3A, 0xE6, 0x02, 0xEC, 0x96, 0x9E, 0xC3, 0x3F, 0x63, 0xFE, 0x9A, 0xB2, + 0x0C, 0x39, 0x5F, 0x83, 0x0D, 0x30, 0xE4, 0xEE, 0x9D, 0x8D, 0xD9, 0x05, 0x92, 0x1E, 0xC1, 0xA0 }, + }, + { + { 0xC3, 0xCF, 0x54, 0x16, 0xA5, 0x31, 0xAF, 0x4B, 0xFA, 0xE8, 0x9C, 0x45, 0x14, 0x3F, 0x20, 0xCC, + 0x1B, 0x3E, 0x18, 0x1D, 0x29, 0xC2, 0xD0, 0xE8, 0xFF, 0x7D, 0x3F, 0x2A, 0x66, 0xB1, 0x82, 0xFE }, + }, + { + { 0xC3, 0xDE, 0xF4, 0xB0, 0xD7, 0xF0, 0x81, 0xC7, 0xFB, 0x88, 0x91, 0x0D, 0xBD, 0xA3, 0x14, 0xDE, + 0x57, 0xA9, 0xCF, 0xDB, 0x40, 0xF8, 0x64, 0x7E, 0xF2, 0x88, 0xCE, 0xC9, 0x67, 0x3E, 0x00, 0x0C }, + }, + { + { 0xC4, 0x21, 0x98, 0x61, 0x93, 0xF8, 0x62, 0xFF, 0x25, 0x8C, 0x1C, 0xCC, 0x94, 0x9D, 0x1B, 0x3A, + 0xCB, 0x67, 0xB4, 0xF6, 0x38, 0x31, 0xC6, 0x32, 0xE6, 0x9B, 0xD0, 0xFB, 0x08, 0xA2, 0x69, 0x67 }, + }, + { + { 0xC4, 0x85, 0x0E, 0x1C, 0x62, 0xB1, 0x7C, 0xEF, 0xD0, 0xDC, 0x64, 0xD4, 0xA8, 0x66, 0x95, 0x3E, + 0x11, 0x54, 0xDC, 0x88, 0xD9, 0xBD, 0x96, 0x16, 0x47, 0xB6, 0xB2, 0x34, 0x1D, 0x85, 0xD9, 0xBA }, + }, + { + { 0xC4, 0x87, 0xA2, 0x59, 0x81, 0x9B, 0x56, 0xD3, 0x15, 0x9D, 0xD1, 0x73, 0x15, 0x7E, 0x86, 0x45, + 0xB7, 0x0B, 0xCA, 0x29, 0x08, 0xCB, 0x2C, 0x5B, 0xAE, 0x34, 0x48, 0x6E, 0xA4, 0xF6, 0x14, 0xFF }, + }, + { + { 0xC4, 0x98, 0xA1, 0xB6, 0x9F, 0x54, 0x40, 0x86, 0x17, 0x47, 0x47, 0x71, 0x5A, 0x27, 0x4D, 0x3F, + 0xB5, 0x90, 0x19, 0xBE, 0x09, 0x21, 0x31, 0xBC, 0xFA, 0xA8, 0x3A, 0x39, 0x5F, 0x7E, 0x57, 0x3C }, + }, + { + { 0xC4, 0xE2, 0x8D, 0xD8, 0x3F, 0xE3, 0x0C, 0x96, 0x33, 0x8C, 0xEF, 0x77, 0x73, 0xC6, 0xDF, 0xCA, + 0x6C, 0xE4, 0xFA, 0x96, 0x41, 0xBE, 0xAB, 0x38, 0x05, 0xA8, 0xEF, 0xB6, 0xCD, 0xC3, 0xCF, 0x0A }, + }, + { + { 0xC4, 0xF4, 0x79, 0x81, 0xF4, 0x5D, 0x90, 0x3B, 0x56, 0x2F, 0x39, 0xF6, 0x17, 0x45, 0xF4, 0xE1, + 0x90, 0x48, 0x1C, 0x4B, 0x56, 0xA4, 0xBD, 0xF5, 0xA0, 0xE1, 0x61, 0xE3, 0xE9, 0x42, 0x83, 0x89 }, + }, + { + { 0xC5, 0x00, 0xB8, 0x3F, 0x3E, 0x06, 0x6C, 0xD1, 0xDD, 0x0E, 0xBC, 0xD7, 0x3D, 0xD4, 0x01, 0x61, + 0xB9, 0x25, 0x9A, 0xA7, 0x7A, 0xB8, 0xA6, 0x47, 0xE8, 0x57, 0x1F, 0xF3, 0x37, 0xCF, 0x94, 0x6D }, + }, + { + { 0xC5, 0x1E, 0x9B, 0x95, 0x9A, 0xCF, 0x0D, 0xDA, 0xFF, 0x54, 0x64, 0x9C, 0xB5, 0xFC, 0x68, 0xFC, + 0xDC, 0xB2, 0x70, 0xB2, 0x7A, 0x53, 0xD4, 0x0A, 0xDA, 0xBE, 0xD0, 0x8B, 0x79, 0x7B, 0x14, 0xB6 }, + }, + { + { 0xC5, 0x29, 0x5B, 0xA6, 0xE2, 0x7E, 0x72, 0x10, 0x22, 0xFE, 0xB2, 0x1E, 0x78, 0xEB, 0x7B, 0x03, + 0x57, 0xC9, 0xCD, 0x56, 0x5B, 0xD0, 0xE5, 0x96, 0x72, 0xF6, 0x66, 0x34, 0x2B, 0x79, 0x94, 0x9D }, + }, + { + { 0xC5, 0x82, 0x1F, 0xA0, 0x9B, 0x7A, 0x3F, 0x59, 0x65, 0xF3, 0xC6, 0x37, 0xC6, 0xDC, 0x91, 0x40, + 0xF4, 0xC4, 0x29, 0x00, 0x10, 0x78, 0xA5, 0xEE, 0x2B, 0x10, 0x6F, 0x87, 0xBF, 0xA2, 0xC3, 0x1A }, + }, + { + { 0xC5, 0x9F, 0x27, 0xDF, 0x84, 0x0B, 0xC2, 0x18, 0x71, 0x35, 0xCD, 0x17, 0xB6, 0xF4, 0x75, 0x23, + 0xB4, 0xD5, 0x5C, 0x47, 0xBD, 0x4D, 0x8C, 0x2C, 0x4B, 0x15, 0x4C, 0x14, 0x65, 0xC8, 0x06, 0xFE }, + }, + { + { 0xC6, 0x12, 0x75, 0x6B, 0xA5, 0x42, 0x34, 0x4A, 0xDC, 0x1B, 0x80, 0xE9, 0x38, 0x84, 0x5A, 0x1E, + 0xD6, 0xE9, 0x38, 0xFE, 0xF4, 0x0D, 0x04, 0xEC, 0x86, 0x55, 0x8F, 0x4B, 0x21, 0x05, 0x2F, 0xD2 }, + }, + { + { 0xC6, 0x17, 0xE0, 0x85, 0x5B, 0xF1, 0x4F, 0xBF, 0x21, 0xAF, 0x00, 0x82, 0x25, 0xCA, 0xBE, 0x40, + 0x4F, 0x73, 0x8C, 0x27, 0x8A, 0x4A, 0x42, 0x87, 0xF1, 0xEE, 0x38, 0x01, 0x27, 0xC5, 0x61, 0xFA }, + }, + { + { 0xC6, 0x41, 0x82, 0xD6, 0x05, 0xC1, 0xCB, 0xE1, 0x9B, 0xD3, 0xB7, 0xFE, 0x55, 0x7F, 0x58, 0xCD, + 0x52, 0x10, 0x30, 0x97, 0xA3, 0x3B, 0xF8, 0x4A, 0xF2, 0x22, 0xC8, 0xCE, 0x72, 0x52, 0x61, 0x15 }, + }, + { + { 0xC6, 0x48, 0x76, 0x70, 0x78, 0x83, 0x67, 0x74, 0x64, 0x11, 0xC9, 0x38, 0xBD, 0xDB, 0x5C, 0xFC, + 0x0D, 0x20, 0xAC, 0xF8, 0x29, 0xD2, 0xA1, 0x39, 0x12, 0x7A, 0x22, 0x7B, 0xC0, 0x06, 0x03, 0xDC }, + }, + { + { 0xC6, 0x67, 0x05, 0xFC, 0xA8, 0x55, 0x10, 0xFD, 0x14, 0x58, 0xE2, 0xF4, 0x51, 0xD4, 0x54, 0x43, + 0x55, 0xD0, 0xB1, 0x03, 0xFE, 0x6D, 0xB4, 0x73, 0x78, 0xE7, 0x28, 0x37, 0xED, 0x9A, 0x2E, 0x6F }, + }, + { + { 0xC6, 0x81, 0x77, 0x4B, 0x31, 0x13, 0x72, 0x97, 0x0C, 0x4E, 0xCA, 0xED, 0x00, 0x22, 0xEB, 0x5E, + 0xF9, 0xC2, 0x32, 0x80, 0x35, 0xC2, 0x5B, 0x00, 0xD8, 0xFA, 0xF0, 0x1E, 0xCF, 0x2C, 0x03, 0x9C }, + }, + { + { 0xC6, 0x89, 0xB9, 0x95, 0x6C, 0x73, 0x11, 0xD7, 0x34, 0x6A, 0x7F, 0xA3, 0x8B, 0x2C, 0xCD, 0xE3, + 0xEF, 0xEE, 0x85, 0x3D, 0x7C, 0x2C, 0x41, 0x4F, 0x81, 0xF3, 0xB0, 0x64, 0xE6, 0xAF, 0x1F, 0x49 }, + }, + { + { 0xC6, 0xA4, 0x24, 0xBF, 0x7C, 0xFE, 0x31, 0x72, 0x74, 0x7A, 0x47, 0x14, 0xA0, 0xEF, 0xB9, 0x17, + 0x93, 0x8C, 0x5E, 0xBD, 0x59, 0x12, 0x9D, 0xED, 0x7A, 0x81, 0x18, 0xC7, 0xF6, 0x59, 0xD1, 0x33 }, + }, + { + { 0xC6, 0xAD, 0x1D, 0x7A, 0x14, 0x1A, 0x91, 0x75, 0x2D, 0x31, 0xFB, 0xC1, 0x06, 0x16, 0xBF, 0x1C, + 0xA2, 0xFB, 0x5B, 0x02, 0xE8, 0x46, 0xB5, 0x9E, 0x63, 0x34, 0x6B, 0x31, 0x92, 0xA7, 0x52, 0x92 }, + }, + { + { 0xC6, 0xC6, 0xB0, 0x9A, 0xFA, 0x64, 0x6E, 0x4E, 0x1D, 0x75, 0xC9, 0x23, 0xAE, 0xB0, 0x2B, 0x39, + 0xF8, 0xF0, 0x7A, 0x74, 0x33, 0x59, 0xDD, 0x22, 0xB4, 0xB5, 0x32, 0x41, 0xB7, 0xB0, 0x3D, 0x63 }, + }, + { + { 0xC7, 0x01, 0x83, 0x64, 0x38, 0xF3, 0x7B, 0xEA, 0x8A, 0x88, 0x16, 0x10, 0x63, 0x70, 0x86, 0xF8, + 0x8D, 0x9A, 0x11, 0x5E, 0x00, 0x92, 0x46, 0xD2, 0x7F, 0x48, 0x9F, 0xA7, 0x18, 0x51, 0x88, 0xA8 }, + }, + { + { 0xC7, 0xA6, 0xF4, 0xE6, 0xAC, 0xFA, 0x70, 0x88, 0x7A, 0xEF, 0xEC, 0x5C, 0x75, 0x66, 0x9E, 0x04, + 0x43, 0xDB, 0x00, 0x2D, 0xBD, 0xB5, 0xED, 0x95, 0xFB, 0xBE, 0x52, 0xC5, 0xC9, 0xB8, 0xF2, 0x01 }, + }, + { + { 0xC7, 0xF8, 0x85, 0xE4, 0x1A, 0xA5, 0x3B, 0x8C, 0xB8, 0xE4, 0xE5, 0x59, 0xC4, 0x04, 0x3A, 0x87, + 0xDA, 0xFB, 0x78, 0x7A, 0x0D, 0x2B, 0x2E, 0xF1, 0xBC, 0xC0, 0x55, 0x71, 0xB7, 0x5D, 0x4E, 0x29 }, + }, + { + { 0xC7, 0xFF, 0x8E, 0xFD, 0xEC, 0xDF, 0x00, 0xD1, 0xFC, 0x8D, 0x55, 0x2D, 0x2A, 0x70, 0x70, 0xE5, + 0xE3, 0x3D, 0x42, 0xE5, 0x90, 0xF5, 0x86, 0xC6, 0xAE, 0xDE, 0x03, 0x2B, 0x2D, 0x86, 0x7B, 0xD5 }, + }, + { + { 0xC7, 0xFF, 0xB4, 0x9F, 0xBC, 0x94, 0x72, 0x24, 0x5C, 0x8E, 0x95, 0xDE, 0x62, 0x9A, 0xF5, 0xC1, + 0xBF, 0xEA, 0xC5, 0x50, 0x04, 0xC1, 0x54, 0x82, 0x3A, 0x58, 0xBA, 0xE8, 0x05, 0x6E, 0x3C, 0x64 }, + }, + { + { 0xC8, 0x26, 0xBE, 0xDD, 0x88, 0x6A, 0x87, 0x1D, 0xD5, 0xCF, 0x3A, 0x2A, 0xE0, 0xA5, 0x1C, 0x93, + 0xBC, 0x2C, 0xFF, 0x31, 0x90, 0xD1, 0xCB, 0x2C, 0x13, 0x13, 0x97, 0x29, 0x5A, 0x81, 0x76, 0xB5 }, + }, + { + { 0xC8, 0x37, 0xD6, 0xF2, 0xAB, 0x14, 0x79, 0x91, 0x42, 0xED, 0x3C, 0x79, 0xBE, 0xD9, 0x44, 0x1E, + 0x92, 0x50, 0xBD, 0x05, 0x20, 0x25, 0xAD, 0x8A, 0xF4, 0x40, 0x41, 0xAC, 0x19, 0xEF, 0xBB, 0x4C }, + }, + { + { 0xC8, 0xC6, 0x92, 0x81, 0xBE, 0x05, 0xC4, 0x14, 0xEA, 0xA3, 0x1C, 0x61, 0xB6, 0x52, 0x93, 0xBE, + 0x72, 0xB5, 0x89, 0xD1, 0xD5, 0xE4, 0xB7, 0x59, 0xD5, 0xED, 0xAF, 0x54, 0x63, 0x99, 0xA2, 0xEF }, + }, + { + { 0xC8, 0xF2, 0x99, 0x18, 0xD3, 0x41, 0xEE, 0x02, 0x20, 0xA4, 0x4D, 0xB0, 0xF0, 0xC2, 0xD9, 0xC4, + 0x16, 0x6E, 0x02, 0x3A, 0x66, 0xCA, 0x6D, 0x1D, 0x3F, 0x78, 0xF1, 0x58, 0x93, 0x61, 0x90, 0x8E }, + }, + { + { 0xC9, 0x43, 0x10, 0x03, 0xBB, 0xEA, 0xB5, 0x8E, 0x35, 0x2F, 0xDE, 0xB4, 0x5B, 0x7F, 0xCF, 0x15, + 0xC7, 0x3F, 0x07, 0x34, 0xA0, 0x7D, 0x6C, 0xBD, 0xF6, 0x32, 0x92, 0x92, 0xEB, 0x81, 0x2C, 0x93 }, + }, + { + { 0xC9, 0x72, 0xF4, 0xF9, 0x6E, 0x71, 0x33, 0xE1, 0x6E, 0x55, 0x57, 0xA0, 0x57, 0xB1, 0xD4, 0x2B, + 0xA9, 0x2D, 0x98, 0x5C, 0xAE, 0xE7, 0x3C, 0xAF, 0xDA, 0xEB, 0x55, 0xEC, 0xA2, 0xE4, 0xAB, 0xB0 }, + }, + { + { 0xC9, 0x78, 0x37, 0x2C, 0x9E, 0x11, 0x60, 0x71, 0xB6, 0x1B, 0x90, 0x92, 0xA9, 0xAA, 0x96, 0x81, + 0x62, 0x36, 0x55, 0xA6, 0x6F, 0x4F, 0xCB, 0xC4, 0xD3, 0xA6, 0x7E, 0xFD, 0x56, 0x72, 0x48, 0x30 }, + }, + { + { 0xC9, 0x7E, 0x4D, 0x81, 0xE7, 0x4E, 0x3D, 0x0A, 0x5E, 0xE0, 0x9C, 0x6F, 0x76, 0x9B, 0x95, 0x7E, + 0x70, 0x04, 0xAD, 0x2C, 0x9F, 0xC6, 0x66, 0x8A, 0x69, 0xD6, 0xCA, 0x29, 0xE0, 0x66, 0xE7, 0xFE }, + }, + { + { 0xC9, 0x84, 0x0B, 0xFB, 0x2C, 0x2D, 0x46, 0x82, 0x7C, 0xC7, 0x55, 0xC7, 0x5B, 0x12, 0x8A, 0x4F, + 0x0B, 0x7E, 0x06, 0xE5, 0xAC, 0x44, 0xEE, 0x8F, 0xFB, 0x92, 0x9A, 0xAC, 0xD9, 0x58, 0x3F, 0x39 }, + }, + { + { 0xC9, 0xE5, 0x7C, 0x8F, 0xE0, 0x00, 0x40, 0x58, 0x58, 0xBA, 0x46, 0xBE, 0xCB, 0x84, 0x78, 0xAA, + 0x8A, 0xD8, 0x24, 0x90, 0x8B, 0x90, 0xC4, 0xB5, 0xF4, 0x73, 0x8F, 0xEB, 0xD3, 0x11, 0x3B, 0xE0 }, + }, + { + { 0xCA, 0x18, 0x88, 0xDC, 0x1C, 0xEE, 0xC3, 0x5F, 0x92, 0x31, 0xD4, 0x1D, 0x23, 0x07, 0x77, 0x82, + 0x91, 0xDF, 0x33, 0x81, 0xAE, 0x6F, 0x3B, 0xC4, 0x17, 0xA9, 0xD9, 0x94, 0x4D, 0xE3, 0x06, 0x48 }, + }, + { + { 0xCA, 0x21, 0x0B, 0x73, 0x5D, 0xC0, 0x7F, 0xFB, 0xD2, 0x3C, 0x5B, 0x61, 0x30, 0x76, 0xE3, 0xD5, + 0x1B, 0xB3, 0xCE, 0x53, 0x52, 0x6A, 0x1A, 0xDF, 0xC7, 0x32, 0x54, 0x25, 0x49, 0xD8, 0xF9, 0xDA }, + }, + { + { 0xCA, 0x55, 0x6F, 0x82, 0xC9, 0x68, 0x4C, 0x9A, 0xF3, 0x55, 0x7D, 0x3E, 0x2D, 0x88, 0xAF, 0x92, + 0xED, 0x25, 0x9C, 0x20, 0xFF, 0xD1, 0xDD, 0xE9, 0xF7, 0x9D, 0x6B, 0x92, 0xC6, 0x1E, 0xE1, 0xB9 }, + }, + { + { 0xCA, 0x5A, 0x11, 0x99, 0xC9, 0xA7, 0xA3, 0x7F, 0xAD, 0xCF, 0x8D, 0xE9, 0x88, 0xDC, 0xFE, 0x55, + 0xBF, 0x80, 0x39, 0x38, 0x6D, 0x60, 0x34, 0xC1, 0xBD, 0xD8, 0x69, 0x2D, 0x49, 0x2F, 0x4C, 0x6C }, + }, + { + { 0xCA, 0x5F, 0x30, 0x7A, 0x0A, 0xA2, 0x8F, 0xF4, 0x33, 0x29, 0xCC, 0xFD, 0xC0, 0x0D, 0xE3, 0x5E, + 0xED, 0x83, 0xDA, 0x0E, 0x4B, 0x15, 0x1A, 0x76, 0xEC, 0x9E, 0x1E, 0x93, 0x5A, 0x5E, 0x36, 0xB0 }, + }, + { + { 0xCA, 0x5F, 0x8F, 0x8A, 0xF0, 0xD9, 0xFA, 0x3F, 0x80, 0x03, 0x88, 0x49, 0x54, 0xE8, 0xAA, 0x1B, + 0x8A, 0xAD, 0x4E, 0xE8, 0xD1, 0x4E, 0x82, 0xF3, 0x3F, 0xBA, 0xE3, 0xB4, 0x59, 0x8B, 0x5F, 0x90 }, + }, + { + { 0xCA, 0x6C, 0xC4, 0xBA, 0x92, 0x04, 0x14, 0x20, 0x7A, 0xA0, 0xE0, 0xF3, 0x3F, 0x27, 0x44, 0xC3, + 0x1A, 0x37, 0x78, 0x27, 0x50, 0x89, 0x24, 0x6E, 0x9E, 0x98, 0x4C, 0xB7, 0x2C, 0x58, 0x72, 0xFC }, + }, + { + { 0xCA, 0x91, 0x6E, 0xA3, 0xFA, 0x04, 0xFA, 0x3D, 0xA0, 0xC0, 0xB9, 0x27, 0xE8, 0x1D, 0xBD, 0x77, + 0xC0, 0xE4, 0x1C, 0xB8, 0xFF, 0x04, 0xAD, 0x95, 0x33, 0xB8, 0x5D, 0x87, 0xBD, 0x63, 0x30, 0x92 }, + }, + { + { 0xCA, 0xBE, 0x25, 0x56, 0xF1, 0xBB, 0x56, 0x57, 0x0C, 0xEF, 0x3A, 0x87, 0x03, 0x32, 0x71, 0xA1, + 0xF2, 0x1D, 0x09, 0xB7, 0xFD, 0x04, 0x12, 0x83, 0x18, 0xE5, 0xE7, 0xBC, 0xE3, 0xA2, 0x01, 0xE2 }, + }, + { + { 0xCA, 0xC4, 0xBB, 0x2C, 0x3D, 0x5F, 0xC7, 0xCB, 0x19, 0xC5, 0x41, 0x06, 0x79, 0x59, 0xD7, 0x20, + 0xEF, 0x4C, 0xBF, 0x52, 0x98, 0x01, 0xBE, 0xE1, 0xC8, 0xDE, 0xBF, 0x42, 0x75, 0xFC, 0x08, 0x3B }, + }, + { + { 0xCA, 0xDC, 0xD5, 0xAE, 0x1B, 0x75, 0x6A, 0xB7, 0x41, 0xB3, 0x56, 0x9C, 0x42, 0xA5, 0x41, 0x1F, + 0x09, 0x3E, 0x4E, 0x1F, 0x01, 0x2E, 0xC5, 0x79, 0x91, 0xCB, 0xD6, 0xDB, 0xE0, 0x8F, 0xAA, 0xC1 }, + }, + { + { 0xCB, 0x51, 0x19, 0xD5, 0x1A, 0x4E, 0xE8, 0x5D, 0x7D, 0x4B, 0xD0, 0xD7, 0xEC, 0xBA, 0xAD, 0x4E, + 0xC4, 0x43, 0x65, 0x4D, 0xA8, 0x5D, 0xD2, 0x46, 0xBB, 0x5E, 0x03, 0x7F, 0xE7, 0x70, 0x79, 0xB6 }, + }, + { + { 0xCB, 0x7A, 0x43, 0x8D, 0x16, 0xE4, 0xA5, 0xF3, 0xC5, 0x6F, 0xDF, 0x19, 0x1E, 0x1D, 0xAF, 0x9F, + 0x32, 0x5C, 0x65, 0x0B, 0xD6, 0x2F, 0x07, 0xC4, 0x67, 0x71, 0x72, 0x07, 0x35, 0x1A, 0xE3, 0x29 }, + }, + { + { 0xCB, 0x9C, 0x10, 0xF2, 0xCB, 0x7F, 0x7C, 0xDB, 0xFD, 0xB1, 0xF8, 0xED, 0x6A, 0x42, 0x32, 0xB4, + 0x4D, 0x6F, 0x7C, 0x32, 0x57, 0xA5, 0x94, 0x99, 0xE2, 0x37, 0xEC, 0x11, 0x3A, 0x2D, 0xDC, 0x1D }, + }, + { + { 0xCC, 0x2A, 0x70, 0x6F, 0xE6, 0x8F, 0x5D, 0x17, 0xF4, 0xAB, 0xAF, 0x60, 0x86, 0xE5, 0xBD, 0x97, + 0xAE, 0x35, 0xEB, 0x35, 0x9F, 0x75, 0xC0, 0x92, 0xBB, 0xA4, 0x93, 0xFE, 0x11, 0xF2, 0x69, 0xFD }, + }, + { + { 0xCC, 0x30, 0xD8, 0x19, 0xDE, 0x54, 0x05, 0xF6, 0x49, 0xC8, 0xB7, 0xA8, 0x14, 0x8F, 0x26, 0xD7, + 0x71, 0x08, 0x3E, 0xC5, 0x18, 0xF9, 0xB6, 0x6F, 0xF5, 0x47, 0xF2, 0x82, 0x2D, 0x11, 0x93, 0x6D }, + }, + { + { 0xCC, 0x4E, 0x09, 0x63, 0x13, 0xDF, 0xA0, 0xCC, 0x24, 0x77, 0xA3, 0xA5, 0xB7, 0x9A, 0xEF, 0x0A, + 0x45, 0x54, 0x58, 0x69, 0xA7, 0xF8, 0x8A, 0x29, 0x14, 0x96, 0x06, 0x4B, 0x69, 0x76, 0xE1, 0x4D }, + }, + { + { 0xCC, 0x5C, 0xBD, 0xDB, 0x14, 0x85, 0x91, 0x00, 0xF8, 0x46, 0x23, 0xAF, 0xBB, 0x00, 0x6D, 0x90, + 0x6B, 0x71, 0xBC, 0xC3, 0xAA, 0x84, 0x07, 0x44, 0x0C, 0x7F, 0x10, 0x47, 0x0C, 0xA9, 0x29, 0x21 }, + }, + { + { 0xCC, 0x65, 0xCD, 0xC5, 0x33, 0x62, 0xD4, 0x21, 0x62, 0x7E, 0xAE, 0xF5, 0xD0, 0xC8, 0xE4, 0xC4, + 0xE2, 0x40, 0xAD, 0xE0, 0xC9, 0xD4, 0x20, 0xBE, 0x67, 0x1E, 0x70, 0xF0, 0xFB, 0xAC, 0x8D, 0x0A }, + }, + { + { 0xCC, 0xA9, 0x7F, 0x5E, 0x4E, 0x65, 0xB6, 0x11, 0x97, 0x5F, 0xC4, 0x4A, 0xAC, 0xD4, 0x3F, 0x49, + 0x0E, 0xB9, 0x47, 0x4D, 0x15, 0xFF, 0x07, 0x40, 0x55, 0xB5, 0x93, 0x28, 0x81, 0xF1, 0x1F, 0x3F }, + }, + { + { 0xCC, 0xCB, 0x6F, 0xA7, 0xEF, 0x62, 0x78, 0x99, 0xFA, 0x6F, 0xCC, 0x96, 0x50, 0x9B, 0x22, 0x55, + 0x77, 0x4E, 0xD9, 0x94, 0xA0, 0xB7, 0xA5, 0x74, 0xB8, 0x4E, 0xBD, 0xC1, 0xAE, 0x59, 0xA4, 0xA8 }, + }, + { + { 0xCD, 0x12, 0x53, 0xFF, 0xC5, 0x8D, 0xC6, 0x3D, 0x0B, 0xAF, 0xBD, 0xDE, 0x1B, 0xBF, 0xF0, 0x33, + 0xAE, 0xAB, 0x63, 0x30, 0x9B, 0x4D, 0x72, 0xE7, 0x59, 0xC4, 0x79, 0xC2, 0xE5, 0x5D, 0x39, 0xBD }, + }, + { + { 0xCD, 0x51, 0xED, 0x79, 0xB6, 0x39, 0x06, 0x32, 0x75, 0x7F, 0x8A, 0xAD, 0x39, 0xD3, 0xBE, 0xBD, + 0xDC, 0x79, 0xBB, 0x90, 0xD0, 0x46, 0xFD, 0xF1, 0x46, 0xDA, 0x62, 0xF6, 0x9D, 0x28, 0x41, 0x34 }, + }, + { + { 0xCD, 0x8E, 0xA1, 0x1F, 0xF5, 0x9F, 0x00, 0x9F, 0xD3, 0x02, 0xD7, 0x90, 0xA2, 0x89, 0xB7, 0x04, + 0x76, 0x1E, 0x01, 0xCF, 0x27, 0x3F, 0xD9, 0x70, 0xD9, 0xC7, 0xC1, 0xEC, 0xA4, 0x9D, 0x48, 0x51 }, + }, + { + { 0xCD, 0xB1, 0x62, 0x53, 0xD2, 0x2E, 0xD5, 0xD4, 0x26, 0xCF, 0xA1, 0xB0, 0x5C, 0xEC, 0xD8, 0x6E, + 0xF1, 0xB7, 0xDE, 0xAA, 0x07, 0xC5, 0x70, 0x5E, 0xBB, 0xAF, 0x7D, 0x9A, 0x80, 0x7D, 0x56, 0x16 }, + }, + { + { 0xCD, 0xC0, 0x39, 0xF3, 0xA2, 0xD1, 0xBB, 0xA5, 0xE8, 0x09, 0x4E, 0x55, 0x23, 0xCF, 0x60, 0x47, + 0x09, 0x7D, 0x4B, 0x3C, 0xD4, 0xEC, 0x4E, 0xD6, 0xAA, 0x8E, 0xB7, 0xB4, 0xD8, 0xB5, 0x77, 0x7D }, + }, + { + { 0xCD, 0xC4, 0xEA, 0x92, 0x02, 0xE3, 0x3E, 0xDD, 0x0F, 0x2D, 0x3A, 0xE8, 0x6A, 0xCA, 0xC7, 0xFB, + 0x25, 0x35, 0x4B, 0x02, 0x23, 0x5B, 0x09, 0x33, 0xAA, 0x81, 0xA3, 0x13, 0xB5, 0xFD, 0xFE, 0xEC }, + }, + { + { 0xCE, 0x2C, 0xF2, 0x55, 0x72, 0x57, 0x21, 0x30, 0x71, 0x73, 0x68, 0x19, 0xB7, 0xD2, 0x88, 0xA9, + 0x30, 0x77, 0x2B, 0x9B, 0x78, 0x2E, 0x61, 0x60, 0x03, 0x8F, 0xC6, 0x7A, 0x76, 0x0D, 0x7C, 0xDC }, + }, + { + { 0xCE, 0x47, 0xD5, 0x29, 0x14, 0xEF, 0xAA, 0xBE, 0x41, 0x80, 0xD4, 0xA0, 0xF7, 0xE1, 0xBC, 0xA4, + 0x72, 0x0B, 0x35, 0xA4, 0x43, 0x11, 0x93, 0x61, 0x26, 0x57, 0x99, 0x71, 0xBF, 0x16, 0x8C, 0x71 }, + }, + { + { 0xCE, 0x4C, 0x2F, 0x8F, 0x16, 0x46, 0x8A, 0x58, 0x88, 0xE9, 0x0F, 0x73, 0x4E, 0x4D, 0x22, 0x02, + 0xDF, 0xAD, 0xBF, 0xA6, 0x6F, 0x5B, 0x35, 0x75, 0x2B, 0xAA, 0x76, 0x21, 0xA7, 0x60, 0xB0, 0x88 }, + }, + { + { 0xCE, 0x52, 0x40, 0xCB, 0xAC, 0x28, 0x6B, 0x4E, 0x87, 0x69, 0xCE, 0xDC, 0x3F, 0x79, 0xD0, 0x6D, + 0x9C, 0x8D, 0x15, 0xD3, 0xD6, 0xC6, 0x84, 0x50, 0xF7, 0xC2, 0x9D, 0x44, 0x1D, 0x02, 0xFA, 0x50 }, + }, + { + { 0xCE, 0x81, 0x44, 0x58, 0x54, 0x03, 0x1F, 0x3D, 0x0F, 0x5C, 0x88, 0x75, 0x46, 0x4D, 0xCD, 0x5B, + 0xA6, 0xC8, 0x90, 0xF4, 0x49, 0xB3, 0x20, 0x7B, 0xCA, 0x2B, 0xC9, 0x61, 0x82, 0x2D, 0x27, 0xC4 }, + }, + { + { 0xCE, 0x83, 0x25, 0x83, 0x1D, 0xA3, 0xAF, 0x4D, 0x77, 0xAC, 0x41, 0xCE, 0xD9, 0x2A, 0xED, 0x17, + 0x95, 0x8A, 0x2B, 0x27, 0xAA, 0xFD, 0xEF, 0x64, 0xDB, 0x3E, 0xA2, 0x26, 0x03, 0x2C, 0x0F, 0x87 }, + }, + { + { 0xCE, 0x84, 0x19, 0xA7, 0xC8, 0x87, 0xFD, 0x59, 0x48, 0xB1, 0x0D, 0xC2, 0x64, 0x5C, 0x05, 0xCF, + 0xA1, 0xE1, 0x69, 0x06, 0xAC, 0x83, 0x35, 0x02, 0xA3, 0x0C, 0x42, 0xAD, 0x3F, 0x00, 0x7F, 0x17 }, + }, + { + { 0xCE, 0x9D, 0xE7, 0xAC, 0x2E, 0x0B, 0x8A, 0x4F, 0x85, 0xF5, 0xB6, 0x4E, 0x65, 0x22, 0x8D, 0x03, + 0xFC, 0x77, 0x93, 0xD9, 0x49, 0x42, 0xF8, 0x8A, 0x1C, 0x72, 0xBB, 0x7B, 0x61, 0x14, 0x51, 0xD5 }, + }, + { + { 0xCF, 0x03, 0x40, 0x17, 0x5B, 0x25, 0x03, 0xC8, 0xFA, 0x5D, 0x52, 0xED, 0x42, 0x5B, 0xF3, 0x7E, + 0x69, 0xC1, 0x80, 0xE5, 0x75, 0xAD, 0xC1, 0xA2, 0x6A, 0x47, 0x81, 0x97, 0x71, 0xB6, 0x8F, 0x7D }, + }, + { + { 0xCF, 0x10, 0xFA, 0xC3, 0x54, 0x4D, 0xCE, 0xE1, 0xBB, 0x98, 0x7E, 0x92, 0xE7, 0x35, 0x48, 0xB1, + 0xC6, 0xA8, 0x65, 0xE6, 0x9C, 0xD2, 0x91, 0x8A, 0xD0, 0x1D, 0xAF, 0x89, 0xB1, 0x04, 0x6A, 0x51 }, + }, + { + { 0xCF, 0x3C, 0x62, 0x0B, 0x39, 0xA4, 0x91, 0xB1, 0xBD, 0xC0, 0x33, 0x5F, 0xA1, 0x15, 0xB4, 0xF5, + 0xAE, 0xD7, 0xD8, 0xCD, 0x8E, 0xBB, 0xF2, 0xCA, 0x73, 0x7E, 0x7C, 0x6A, 0xC2, 0x00, 0x68, 0x0E }, + }, + { + { 0xCF, 0x3E, 0xCB, 0x41, 0xA4, 0xE8, 0x1B, 0x3A, 0xC8, 0x27, 0xDC, 0xBE, 0x4E, 0xB6, 0xD1, 0xCD, + 0x4C, 0x53, 0x4A, 0xDF, 0x8C, 0x87, 0xE4, 0xAA, 0x0C, 0xB2, 0x97, 0x15, 0x74, 0x6F, 0x04, 0x0B }, + }, + { + { 0xCF, 0x55, 0x5E, 0x56, 0x05, 0xDF, 0xA7, 0x42, 0x35, 0x33, 0xDD, 0xDA, 0xF7, 0x48, 0x72, 0xD1, + 0x68, 0x46, 0xE2, 0xCB, 0xF0, 0x30, 0x7D, 0x33, 0xA1, 0x0D, 0xF5, 0x72, 0x40, 0x67, 0x2F, 0x42 }, + }, + { + { 0xCF, 0x92, 0x77, 0xCE, 0xEA, 0x50, 0x1A, 0x49, 0x66, 0x04, 0x3E, 0xF2, 0xB0, 0xF8, 0x86, 0x2A, + 0xC9, 0x00, 0x93, 0x89, 0x78, 0x08, 0x26, 0x22, 0xC5, 0x7A, 0x50, 0x07, 0xC9, 0xC6, 0x53, 0x9D }, + }, + { + { 0xCF, 0xA0, 0xC0, 0x0C, 0xB2, 0xFB, 0x4B, 0x85, 0x7A, 0xAD, 0x22, 0xB1, 0x3A, 0x90, 0xE3, 0x46, + 0xA0, 0x3E, 0x6B, 0x79, 0xAB, 0xD5, 0xD2, 0x75, 0xB5, 0x43, 0x24, 0x68, 0x17, 0x92, 0xD6, 0xD1 }, + }, + { + { 0xCF, 0xFC, 0x37, 0x2D, 0xB5, 0xDA, 0x47, 0xAC, 0xDD, 0xF3, 0x1A, 0x84, 0x9B, 0xD2, 0xE2, 0xBD, + 0x25, 0xB6, 0x58, 0xEE, 0xB8, 0xDA, 0x82, 0x51, 0x59, 0x9A, 0x97, 0x51, 0x89, 0xB5, 0xF8, 0x24 }, + }, + { + { 0xD0, 0x71, 0x14, 0xB2, 0x97, 0xB2, 0x9F, 0xA2, 0xE0, 0xEC, 0xCD, 0xF1, 0x58, 0x7C, 0x0F, 0x03, + 0xF8, 0x81, 0x63, 0x95, 0x46, 0x1D, 0x01, 0x1C, 0x47, 0x7B, 0xD7, 0xFE, 0x83, 0x8A, 0x3D, 0x0B }, + }, + { + { 0xD0, 0xC4, 0x74, 0xE4, 0x47, 0xE3, 0x38, 0xA5, 0x4D, 0x31, 0xB3, 0xA0, 0xF4, 0x47, 0x43, 0x75, + 0x1E, 0x45, 0xCB, 0x92, 0x87, 0xA0, 0x1F, 0x2B, 0x0A, 0x51, 0xE6, 0x4F, 0x16, 0xC9, 0xA7, 0x5C }, + }, + { + { 0xD0, 0xEA, 0x0E, 0x9F, 0xD1, 0x80, 0x10, 0x0D, 0xCA, 0xC8, 0xB1, 0xB3, 0xFB, 0x95, 0xCE, 0xCB, + 0x9E, 0xCB, 0x1D, 0xFD, 0xCD, 0x6D, 0xF6, 0x16, 0xD8, 0xE1, 0x17, 0x50, 0x8A, 0x5C, 0xEE, 0xFD }, + }, + { + { 0xD0, 0xF5, 0x93, 0xC1, 0xA8, 0x1B, 0x1E, 0xF8, 0x51, 0x69, 0x81, 0xEE, 0x56, 0xF1, 0xD5, 0x98, + 0xA2, 0xA6, 0x03, 0x48, 0x8C, 0x67, 0x8C, 0x1B, 0x7B, 0xBE, 0xA6, 0x44, 0x6B, 0x00, 0x83, 0xAD }, + }, + { + { 0xD1, 0x07, 0x9A, 0x99, 0xF7, 0x3A, 0x01, 0xC9, 0x6E, 0xA6, 0x78, 0x84, 0x16, 0x62, 0xDA, 0x5E, + 0x74, 0xCA, 0xB2, 0xC4, 0x1D, 0x1F, 0x83, 0x45, 0x47, 0xFE, 0x65, 0x0F, 0x28, 0x50, 0xCD, 0x27 }, + }, + { + { 0xD1, 0x24, 0xFC, 0x30, 0x54, 0x79, 0x1F, 0x76, 0xBB, 0x8B, 0xAF, 0x57, 0xF5, 0xC4, 0x5B, 0x69, + 0x16, 0x8C, 0x3A, 0x6E, 0xE3, 0xFB, 0xCD, 0xF3, 0xEC, 0x2A, 0x77, 0xE8, 0x7C, 0x7C, 0x50, 0x09 }, + }, + { + { 0xD1, 0xBA, 0x62, 0xAC, 0x65, 0x17, 0x92, 0x3B, 0x96, 0x74, 0xF6, 0xA9, 0x73, 0xA1, 0x13, 0x17, + 0xC3, 0x0C, 0x20, 0x4F, 0x63, 0x65, 0xD1, 0x03, 0x00, 0x21, 0xB6, 0xF1, 0xF7, 0xFF, 0xBA, 0xA5 }, + }, + { + { 0xD1, 0xFA, 0xD9, 0xA8, 0xE6, 0x2E, 0x06, 0xCF, 0x9B, 0x40, 0x3A, 0xDF, 0x51, 0xED, 0x60, 0x75, + 0xEC, 0xE7, 0x61, 0xA1, 0x0D, 0xD6, 0xA4, 0xD8, 0xDE, 0x08, 0x82, 0x2F, 0xBB, 0x08, 0x22, 0xFD }, + }, + { + { 0xD2, 0x29, 0x2E, 0x6F, 0x6C, 0x3A, 0xF8, 0xAE, 0xEE, 0x62, 0xA8, 0x14, 0xB3, 0x17, 0x1D, 0xE4, + 0xA6, 0xD6, 0x60, 0xED, 0x25, 0xA2, 0x01, 0xB9, 0xBA, 0x7D, 0xE8, 0x3F, 0xDB, 0xE3, 0x95, 0x5E }, + }, + { + { 0xD2, 0x3F, 0xEB, 0x93, 0x47, 0x60, 0xB8, 0xDF, 0x4E, 0xE6, 0xB0, 0xE8, 0xBB, 0x4F, 0x5D, 0x31, + 0x5D, 0x40, 0x5B, 0xF0, 0x56, 0x18, 0x2E, 0x5D, 0x5F, 0x70, 0x20, 0x31, 0x94, 0x61, 0x8A, 0x05 }, + }, + { + { 0xD2, 0x56, 0x79, 0xCB, 0x58, 0x3B, 0xA0, 0x10, 0x8F, 0x74, 0x97, 0xE3, 0x21, 0xC6, 0x5C, 0x4D, + 0xC2, 0xCA, 0x0F, 0x28, 0x20, 0xC7, 0xFC, 0xDB, 0x11, 0x3F, 0x05, 0x72, 0xDF, 0x44, 0x79, 0x34 }, + }, + { + { 0xD2, 0x90, 0x3C, 0xA2, 0x55, 0x17, 0x27, 0xED, 0x01, 0x71, 0xCC, 0x4A, 0x43, 0xB3, 0xCA, 0xE0, + 0x09, 0xB7, 0x47, 0xB9, 0xF4, 0xF8, 0x48, 0x72, 0x92, 0x27, 0xBF, 0x59, 0x02, 0xF2, 0x3E, 0x47 }, + }, + { + { 0xD2, 0xB9, 0x70, 0xF3, 0x30, 0x65, 0x03, 0xE7, 0xD4, 0xBC, 0x63, 0x04, 0x64, 0xB2, 0xAF, 0x39, + 0x20, 0x66, 0x06, 0xD3, 0x6F, 0xF0, 0x51, 0xD9, 0x7D, 0x40, 0xD5, 0x8A, 0xB5, 0x37, 0x72, 0x83 }, + }, + { + { 0xD2, 0xC7, 0x0A, 0x4C, 0x52, 0xFB, 0xFC, 0x7B, 0x4C, 0x2D, 0xFE, 0x94, 0xCB, 0x44, 0x50, 0x37, + 0x1E, 0x72, 0x36, 0xBD, 0xBD, 0x1C, 0x81, 0x13, 0xFF, 0x36, 0x0F, 0xA4, 0xA1, 0x58, 0x1E, 0xFC }, + }, + { + { 0xD2, 0xD1, 0x84, 0xCA, 0x5B, 0x97, 0xAC, 0x7B, 0xD3, 0x4E, 0x78, 0x42, 0x4C, 0xA0, 0xC2, 0xB3, + 0x9C, 0x35, 0x08, 0x52, 0xCC, 0xB1, 0x33, 0xE5, 0xA1, 0x87, 0xF7, 0x61, 0x7D, 0x00, 0xB0, 0x2C }, + }, + { + { 0xD2, 0xE8, 0xA1, 0x23, 0x7A, 0x93, 0xF5, 0x78, 0xD1, 0xBA, 0x8F, 0x09, 0xE4, 0xFF, 0x10, 0x7B, + 0x62, 0x35, 0x78, 0x85, 0x42, 0xAA, 0x61, 0x83, 0xD1, 0x76, 0xDB, 0xF1, 0xC8, 0x8D, 0xCF, 0xB6 }, + }, + { + { 0xD3, 0x10, 0x0B, 0xC8, 0x42, 0x8B, 0xA2, 0x3A, 0xE1, 0x3B, 0x41, 0xEA, 0xA2, 0x95, 0xBF, 0xBF, + 0xD6, 0x97, 0xF5, 0x0B, 0x81, 0xCA, 0xEF, 0x6A, 0x30, 0xA4, 0xD1, 0x99, 0x47, 0x1B, 0x9F, 0x32 }, + }, + { + { 0xD3, 0x22, 0xE0, 0xC4, 0x4E, 0xA7, 0x92, 0xC0, 0x00, 0x13, 0x01, 0xA6, 0x32, 0xA1, 0x1D, 0x50, + 0x6E, 0xA9, 0x17, 0xDE, 0xED, 0xCA, 0x8E, 0xD0, 0x5F, 0x9E, 0x7A, 0xF0, 0xB6, 0x08, 0x55, 0x8B }, + }, + { + { 0xD3, 0x8E, 0x25, 0x54, 0xA9, 0xEE, 0x9B, 0x6D, 0xBC, 0xC4, 0x89, 0x2D, 0x71, 0x44, 0x7E, 0xF1, + 0x78, 0x92, 0xF3, 0xBC, 0xA3, 0x33, 0x95, 0x2D, 0xAA, 0x12, 0x16, 0xC9, 0xE9, 0x56, 0x22, 0x27 }, + }, + { + { 0xD3, 0xFF, 0x14, 0xAD, 0xD8, 0x86, 0x5F, 0xAA, 0x9C, 0x30, 0x3A, 0xED, 0xF9, 0x34, 0x53, 0x85, + 0x49, 0x8D, 0x44, 0xE1, 0xCD, 0xE0, 0x45, 0x6F, 0x1F, 0x33, 0xB4, 0x54, 0xC3, 0x95, 0x04, 0x58 }, + }, + { + { 0xD4, 0xA8, 0x3C, 0x51, 0x04, 0x29, 0x4F, 0x6A, 0xEC, 0x2A, 0xA0, 0x9F, 0xA6, 0xEF, 0x5F, 0xA0, + 0xF1, 0x72, 0xFD, 0xE6, 0xC4, 0xAC, 0xD9, 0x97, 0x2F, 0x39, 0xFE, 0xE2, 0x92, 0x4B, 0xE2, 0x74 }, + }, + { + { 0xD4, 0xC3, 0xFD, 0x99, 0x41, 0x39, 0x82, 0x2A, 0xF3, 0x4D, 0xED, 0xF2, 0xC0, 0xE6, 0x2A, 0xE5, + 0xEC, 0x67, 0x28, 0xAA, 0x6E, 0xAE, 0x4B, 0x65, 0x8D, 0x93, 0xBD, 0xAF, 0x3E, 0x4A, 0x7C, 0x0C }, + }, + { + { 0xD5, 0x04, 0x88, 0x96, 0x86, 0x07, 0x29, 0xA8, 0xFA, 0x5D, 0x23, 0x57, 0x81, 0x2B, 0xA5, 0x6C, + 0xBE, 0x84, 0xC9, 0xAB, 0x7D, 0x14, 0xDF, 0x47, 0x64, 0xE0, 0xB6, 0x62, 0x0F, 0xA3, 0x20, 0x10 }, + }, + { + { 0xD5, 0x07, 0x55, 0x61, 0x65, 0x49, 0x1E, 0xB1, 0x24, 0x3D, 0x9A, 0x61, 0xE2, 0x5D, 0x20, 0x84, + 0x7C, 0x57, 0xBC, 0xB2, 0x98, 0xE6, 0xD8, 0x5B, 0x7C, 0x45, 0xBE, 0xFB, 0x3D, 0x9C, 0x7B, 0x35 }, + }, + { + { 0xD5, 0x41, 0xA7, 0x7E, 0x13, 0x6E, 0x9E, 0x70, 0x3B, 0xB9, 0x9F, 0x80, 0x68, 0xCF, 0xEE, 0x86, + 0xA4, 0xB9, 0xF0, 0x89, 0xE0, 0x2D, 0x0C, 0x6C, 0xB6, 0xD4, 0xA3, 0x94, 0x6C, 0x6B, 0x16, 0x7A }, + }, + { + { 0xD5, 0x50, 0xB9, 0xA6, 0xD5, 0xC3, 0xF5, 0x25, 0x7C, 0x99, 0xB9, 0x94, 0x43, 0x69, 0x88, 0x3D, + 0xA1, 0x1D, 0xBE, 0x23, 0xB9, 0x6E, 0x19, 0x34, 0xED, 0xED, 0x52, 0x1B, 0x73, 0x55, 0xE4, 0x44 }, + }, + { + { 0xD5, 0x83, 0x7F, 0x79, 0xAD, 0xB8, 0x27, 0x89, 0x70, 0xDF, 0x46, 0x7E, 0xDF, 0x42, 0x5B, 0x8A, + 0x31, 0xB7, 0x50, 0xBC, 0x3B, 0x9C, 0x07, 0x57, 0xD4, 0xDA, 0x14, 0xC5, 0x0F, 0xCF, 0x76, 0x88 }, + }, + { + { 0xD5, 0x83, 0x94, 0x96, 0xCD, 0xC8, 0x5B, 0xE3, 0xD1, 0xF1, 0xAC, 0x65, 0x2E, 0xFA, 0x92, 0xBE, + 0xA3, 0xB0, 0x61, 0xC1, 0x3D, 0xAD, 0x5A, 0x82, 0x11, 0x22, 0xCF, 0xE9, 0xC7, 0x1A, 0x5A, 0x32 }, + }, + { + { 0xD5, 0xA4, 0xEE, 0x46, 0x95, 0xB5, 0x65, 0xA6, 0x7E, 0x50, 0x48, 0x66, 0xFE, 0x5B, 0xA3, 0xC0, + 0xED, 0xCA, 0xEE, 0xD5, 0x2A, 0xD0, 0xAF, 0x07, 0xE6, 0x79, 0x17, 0x73, 0x85, 0x12, 0xC8, 0xF5 }, + }, + { + { 0xD5, 0xCB, 0xAB, 0xC2, 0x61, 0x1A, 0x6C, 0x55, 0xAF, 0xB0, 0x43, 0x27, 0xE2, 0x60, 0x8C, 0xEC, + 0xF3, 0x45, 0x6C, 0x9F, 0xD8, 0xC7, 0x66, 0x58, 0x18, 0xA5, 0x4D, 0x5D, 0x93, 0x24, 0x97, 0xAB }, + }, + { + { 0xD6, 0x25, 0xC0, 0x59, 0x2B, 0x25, 0xDC, 0x03, 0xAA, 0x7E, 0x87, 0x8E, 0x6A, 0x85, 0x09, 0x1B, + 0xAA, 0x07, 0x8D, 0x26, 0x8B, 0xBD, 0xB4, 0x9F, 0x09, 0x67, 0x94, 0x08, 0x61, 0x2D, 0x1E, 0xFE }, + }, + { + { 0xD6, 0x46, 0x08, 0xB1, 0x5F, 0x71, 0xFC, 0x3B, 0x91, 0x90, 0xA2, 0x00, 0xEE, 0x3C, 0xB5, 0xBC, + 0xD9, 0xFC, 0x5B, 0x99, 0xFB, 0x67, 0x74, 0x9D, 0x18, 0x87, 0xD9, 0x17, 0xD8, 0x50, 0x01, 0x0B }, + }, + { + { 0xD6, 0x83, 0xD0, 0x6E, 0xB9, 0x28, 0x74, 0x43, 0xE5, 0x01, 0xEC, 0xF7, 0x1D, 0xAD, 0xA6, 0x80, + 0x35, 0x88, 0x71, 0xD1, 0x2A, 0x53, 0xFB, 0xCC, 0x44, 0x09, 0x2E, 0x76, 0x4E, 0xE5, 0xBA, 0x08 }, + }, + { + { 0xD6, 0xD1, 0xB3, 0x5C, 0xBC, 0x12, 0xFB, 0x1C, 0x70, 0xA0, 0xB4, 0x3B, 0xA5, 0x9A, 0xB3, 0xD3, + 0x22, 0x5F, 0x37, 0x32, 0x64, 0xDD, 0x87, 0xFB, 0xCA, 0x00, 0x61, 0xEC, 0x1C, 0x4D, 0xA1, 0x1A }, + }, + { + { 0xD7, 0x0E, 0xB9, 0xB3, 0xFE, 0xAD, 0xD3, 0x05, 0x3F, 0x5B, 0xBC, 0xD5, 0xBB, 0xDE, 0x27, 0x48, + 0xCC, 0xCF, 0xB3, 0xE4, 0x41, 0x36, 0x7C, 0xE9, 0x3B, 0x76, 0xCC, 0x46, 0xCC, 0xE3, 0x76, 0xC8 }, + }, + { + { 0xD7, 0x2C, 0x0E, 0x02, 0xA8, 0x71, 0xA9, 0xC2, 0x86, 0x7D, 0xB5, 0x13, 0x63, 0x62, 0x56, 0x98, + 0x32, 0xDC, 0x3B, 0x85, 0xAA, 0x05, 0x4A, 0x6C, 0x9E, 0xCC, 0x19, 0x01, 0x0E, 0xBA, 0x39, 0x3A }, + }, + { + { 0xD7, 0x32, 0x49, 0x74, 0xB5, 0x60, 0x09, 0x62, 0x17, 0x61, 0xF7, 0xC0, 0xFF, 0x68, 0x9D, 0xDE, + 0x47, 0x74, 0x99, 0x85, 0xE1, 0xEE, 0x8B, 0x5C, 0x89, 0x61, 0xDD, 0x8F, 0x6A, 0x78, 0xBB, 0xF5 }, + }, + { + { 0xD8, 0x0D, 0x49, 0xD7, 0xC6, 0x7A, 0x19, 0x3D, 0xE4, 0x4C, 0x4A, 0xD0, 0xA2, 0xF1, 0x0D, 0x04, + 0x33, 0xBD, 0x28, 0xFF, 0x57, 0x46, 0xB4, 0x2D, 0x8D, 0x27, 0x7F, 0x60, 0x8D, 0xAB, 0x7E, 0xFD }, + }, + { + { 0xD8, 0x18, 0xA4, 0x72, 0x70, 0xFD, 0xCD, 0x56, 0x4C, 0x8C, 0xEF, 0xBC, 0x28, 0xF7, 0x6D, 0x93, + 0x0B, 0x6C, 0x0D, 0xAE, 0x09, 0xD9, 0x3D, 0x24, 0x20, 0xEB, 0x7C, 0xDE, 0x20, 0x59, 0xAD, 0xBA }, + }, + { + { 0xD8, 0x29, 0xD3, 0x8A, 0xF1, 0xC4, 0x45, 0x73, 0x8B, 0xD8, 0x12, 0xE2, 0x8E, 0x38, 0x26, 0xB3, + 0x32, 0x27, 0x32, 0xAB, 0xE0, 0x02, 0x32, 0x89, 0xFE, 0x5A, 0x9E, 0xA6, 0x15, 0xF4, 0xF8, 0x97 }, + }, + { + { 0xD8, 0x32, 0x8D, 0x2F, 0xF8, 0x7E, 0xC3, 0xE9, 0x0B, 0x84, 0xD9, 0xA1, 0x7B, 0x1E, 0x90, 0x24, + 0xF6, 0x27, 0xC1, 0xEC, 0xC3, 0x5E, 0xC7, 0xE6, 0x71, 0xC1, 0x42, 0x92, 0xA7, 0xB8, 0x8B, 0x43 }, + }, + { + { 0xD8, 0x55, 0x49, 0xFC, 0xD2, 0x4D, 0x36, 0xCB, 0x3F, 0x7C, 0x18, 0x06, 0x3F, 0x97, 0x5A, 0x16, + 0x9F, 0xE3, 0xA1, 0xFB, 0x8D, 0x0A, 0x35, 0x9F, 0xD3, 0x5C, 0x28, 0x7B, 0xB2, 0xAF, 0x50, 0xCA }, + }, + { + { 0xD8, 0x7A, 0x9D, 0xF7, 0x19, 0x1E, 0x29, 0xC8, 0x04, 0x1E, 0x4C, 0x19, 0x3C, 0x03, 0xA8, 0xA7, + 0x12, 0x5F, 0x16, 0x6E, 0xA6, 0xCB, 0x21, 0x1F, 0xFF, 0x4B, 0xEE, 0x45, 0x0D, 0x72, 0x58, 0x09 }, + }, + { + { 0xD8, 0x83, 0xDD, 0x00, 0x1C, 0x4E, 0x5C, 0x22, 0x6E, 0xE2, 0xC1, 0xF1, 0x0A, 0x66, 0x6F, 0xA1, + 0x6E, 0x5A, 0xA9, 0x12, 0x30, 0x58, 0x38, 0xED, 0x9C, 0xDD, 0xC1, 0x56, 0x4D, 0xC6, 0x49, 0x64 }, + }, + { + { 0xD8, 0xF0, 0xE4, 0x50, 0x14, 0xD7, 0x09, 0x7D, 0xB4, 0xD6, 0xF7, 0x65, 0xEF, 0xE8, 0xB2, 0xB1, + 0x3A, 0x18, 0xDD, 0xE7, 0x39, 0xDF, 0x2A, 0xF7, 0x72, 0x73, 0x50, 0x26, 0x47, 0x04, 0xF7, 0x90 }, + }, + { + { 0xD8, 0xFF, 0x73, 0x93, 0x1F, 0x89, 0x1D, 0x94, 0x70, 0xBD, 0x60, 0xF4, 0xC7, 0x4A, 0x0E, 0x28, + 0x88, 0xC8, 0x0D, 0xCB, 0x1E, 0xCF, 0xB1, 0x18, 0xC3, 0xDC, 0x81, 0x90, 0xDA, 0x99, 0x1A, 0x70 }, + }, + { + { 0xD9, 0x2E, 0x3E, 0xE3, 0x82, 0xC8, 0xDC, 0xAF, 0xA0, 0x39, 0x3D, 0x9F, 0x9A, 0x00, 0xBF, 0x4C, + 0xD9, 0xD5, 0x64, 0x26, 0x2B, 0x18, 0x0F, 0x68, 0x16, 0x0B, 0x20, 0x34, 0xC5, 0x44, 0xD1, 0x0A }, + }, + { + { 0xD9, 0x41, 0x01, 0xB0, 0xDF, 0x02, 0xCD, 0xFE, 0xEA, 0xD5, 0x21, 0xD0, 0xE2, 0xCF, 0x3A, 0x69, + 0x46, 0x1F, 0x82, 0x6B, 0xB7, 0xA4, 0xAB, 0x50, 0xBA, 0x36, 0xA3, 0xC1, 0xF8, 0x3A, 0x52, 0xC4 }, + }, + { + { 0xD9, 0x65, 0xF7, 0x41, 0x62, 0x04, 0xDA, 0x83, 0x1A, 0xF6, 0x6B, 0xFA, 0x8F, 0x90, 0xD1, 0x41, + 0xE9, 0x93, 0xF0, 0x00, 0x21, 0x33, 0xF2, 0x8D, 0xE9, 0x7F, 0x56, 0x4A, 0x1D, 0x60, 0x4E, 0xCC }, + }, + { + { 0xD9, 0x7F, 0x55, 0xB9, 0x57, 0x9B, 0x05, 0xAE, 0x4A, 0x3E, 0xD7, 0xFC, 0x55, 0x8C, 0x58, 0x45, + 0x64, 0x51, 0x60, 0xDA, 0xB3, 0x53, 0x85, 0xC1, 0x38, 0xBC, 0x89, 0x9C, 0x4D, 0xAD, 0x8B, 0x36 }, + }, + { + { 0xD9, 0x81, 0x67, 0x9E, 0x4E, 0xCD, 0xE9, 0xC5, 0xAB, 0x5B, 0xEF, 0x9D, 0x5F, 0x97, 0x7B, 0x0F, + 0x32, 0xF9, 0x25, 0x56, 0xE2, 0x06, 0xB1, 0x51, 0x09, 0xA9, 0xBB, 0xEC, 0x59, 0x16, 0xE2, 0xD7 }, + }, + { + { 0xD9, 0x89, 0x73, 0x8D, 0x2D, 0xE5, 0x06, 0x5B, 0x8E, 0x7A, 0x8C, 0x07, 0x44, 0x88, 0xBE, 0x8E, + 0x7D, 0x93, 0xAA, 0x82, 0xA8, 0x35, 0x96, 0x49, 0x24, 0xC5, 0x8F, 0x32, 0x09, 0xFB, 0x56, 0x9E }, + }, + { + { 0xD9, 0xD0, 0xD9, 0x6E, 0xB3, 0x28, 0xE0, 0xC1, 0x77, 0x8B, 0x56, 0xA9, 0x2F, 0x71, 0x24, 0x3B, + 0x6C, 0x0D, 0xB4, 0x5C, 0x62, 0x51, 0x32, 0xDD, 0x82, 0xCA, 0x11, 0xA0, 0x97, 0xE7, 0x91, 0xC6 }, + }, + { + { 0xD9, 0xE8, 0xCC, 0xDA, 0x78, 0xFB, 0x8D, 0x5D, 0xBC, 0xE6, 0x94, 0x15, 0x57, 0x61, 0xF4, 0xD0, + 0x2C, 0x30, 0xCC, 0x8D, 0x7A, 0xEA, 0x0E, 0x11, 0x88, 0x2D, 0x79, 0x37, 0x6C, 0x72, 0x90, 0xFF }, + }, + { + { 0xDA, 0x1D, 0x8C, 0x2F, 0xE5, 0x25, 0xA6, 0xAD, 0xD6, 0xCD, 0x0F, 0xB4, 0x0F, 0xCD, 0xBF, 0xCE, + 0x0D, 0x19, 0x72, 0xED, 0x61, 0xAC, 0xDD, 0x5A, 0x0F, 0xE0, 0x19, 0x7F, 0x01, 0x07, 0x8D, 0x7F }, + }, + { + { 0xDA, 0xA3, 0x09, 0xDA, 0xEF, 0xCB, 0x5C, 0xD3, 0xBD, 0xF6, 0xE1, 0x4B, 0xA6, 0x89, 0x0B, 0x4F, + 0x73, 0xF2, 0xEC, 0x1C, 0xEF, 0xC1, 0xD5, 0x1F, 0x45, 0xCD, 0x9F, 0xC2, 0x2B, 0x01, 0x9A, 0x1E }, + }, + { + { 0xDA, 0xB2, 0xF9, 0xE8, 0xB5, 0xF8, 0x56, 0x47, 0x90, 0x93, 0x2D, 0x6B, 0xDB, 0x34, 0x29, 0x16, + 0x2D, 0x5E, 0x2C, 0xB5, 0xD0, 0x10, 0x2D, 0x79, 0xD8, 0x89, 0xAD, 0x5A, 0xB6, 0xEE, 0xC4, 0x77 }, + }, + { + { 0xDA, 0xDF, 0x97, 0x13, 0x34, 0x14, 0xAD, 0x51, 0x3F, 0xC7, 0x50, 0x14, 0xE9, 0x56, 0x65, 0xDA, + 0xD7, 0x76, 0xB1, 0x50, 0x4B, 0x15, 0x67, 0x43, 0x4F, 0xD8, 0x2A, 0x79, 0xA2, 0x20, 0xE9, 0xA1 }, + }, + { + { 0xDB, 0x1B, 0x33, 0x54, 0x93, 0xBE, 0x68, 0xD2, 0x8E, 0x3C, 0x4D, 0x3D, 0x11, 0x84, 0x99, 0x42, + 0x26, 0x17, 0x93, 0x49, 0xDA, 0xF1, 0x79, 0x5B, 0x77, 0x39, 0x3E, 0x2D, 0xD9, 0x87, 0xBB, 0x43 }, + }, + { + { 0xDB, 0x1D, 0x05, 0x4E, 0xEF, 0x12, 0xBD, 0x34, 0xA5, 0xBD, 0x99, 0xCD, 0xC5, 0xB8, 0x64, 0x8D, + 0x8E, 0x10, 0xDE, 0xF9, 0xC7, 0x8A, 0xFD, 0x90, 0xA4, 0xB4, 0xAD, 0x1E, 0xD1, 0xD9, 0x09, 0x06 }, + }, + { + { 0xDB, 0x2D, 0xB8, 0x4B, 0x17, 0x3C, 0xE2, 0x83, 0xBA, 0x18, 0x0F, 0xA2, 0x2F, 0x15, 0xC5, 0x5F, + 0x6A, 0x2A, 0x27, 0x66, 0x9C, 0xA8, 0x14, 0xA0, 0x3B, 0x9E, 0xD0, 0x31, 0x90, 0xCF, 0x92, 0xF6 }, + }, + { + { 0xDB, 0x57, 0x78, 0x2A, 0x14, 0xE1, 0x3C, 0x3B, 0xE5, 0x38, 0x9A, 0x26, 0x08, 0x1C, 0x99, 0x8B, + 0x5F, 0xFA, 0x67, 0xDD, 0x45, 0x97, 0xF8, 0xCA, 0x67, 0xEF, 0x10, 0x6A, 0xD7, 0x5F, 0x34, 0x9F }, + }, + { + { 0xDB, 0xA1, 0x23, 0x67, 0x1F, 0xED, 0x4B, 0x28, 0x70, 0x33, 0xA4, 0xB0, 0x06, 0x8F, 0xC7, 0x14, + 0xA5, 0xFC, 0x9C, 0x02, 0x6E, 0xF5, 0x65, 0x0B, 0x42, 0xDE, 0x25, 0x85, 0x9A, 0x12, 0x6A, 0xD1 }, + }, + { + { 0xDB, 0xA2, 0x21, 0xC2, 0xAB, 0x44, 0xB5, 0x2C, 0x0B, 0x83, 0x36, 0xC4, 0x69, 0xFA, 0xA8, 0x56, + 0xD6, 0xC3, 0xEC, 0xDC, 0x6C, 0x24, 0x6B, 0xE3, 0xCA, 0xC7, 0xE0, 0xF6, 0x28, 0x4B, 0x5B, 0xDA }, + }, + { + { 0xDC, 0x30, 0x45, 0x1C, 0xFB, 0x1A, 0x68, 0x3F, 0xC5, 0xB2, 0xF3, 0x16, 0x56, 0x02, 0x49, 0x6A, + 0x8F, 0xC1, 0xED, 0xA7, 0xCD, 0x1E, 0x61, 0xB3, 0xE1, 0x67, 0x47, 0x71, 0xD1, 0x4F, 0x7A, 0x0E }, + }, + { + { 0xDC, 0x3D, 0x81, 0xC3, 0x01, 0xBC, 0xDE, 0xC5, 0x38, 0xEF, 0xC7, 0xFA, 0x6A, 0x4E, 0x5A, 0x13, + 0xE5, 0x17, 0xD2, 0xA4, 0x61, 0x22, 0x2D, 0xED, 0x98, 0x3E, 0x75, 0x56, 0x4D, 0x0E, 0x68, 0x84 }, + }, + { + { 0xDC, 0x42, 0x4A, 0x70, 0x87, 0x80, 0x95, 0x98, 0x7A, 0x5B, 0xCD, 0x17, 0x1A, 0xA5, 0x13, 0x67, + 0x7B, 0xDA, 0x56, 0xDF, 0x35, 0xB6, 0x81, 0xC7, 0x07, 0x84, 0x0F, 0xDC, 0xEA, 0xC5, 0xE4, 0x0F }, + }, + { + { 0xDC, 0x69, 0x58, 0x6C, 0xCD, 0x6D, 0x51, 0x0D, 0xD1, 0xCF, 0x79, 0x56, 0xA6, 0x71, 0xD0, 0x84, + 0xEE, 0x14, 0x99, 0xDA, 0x54, 0xB8, 0xBC, 0x79, 0xEB, 0x07, 0x28, 0x71, 0xA9, 0x18, 0xC4, 0x06 }, + }, + { + { 0xDC, 0x90, 0x90, 0x55, 0x0C, 0x93, 0x42, 0xE2, 0xFA, 0xE2, 0x42, 0x26, 0xA4, 0xF9, 0xB3, 0xF6, + 0x93, 0xF4, 0xD1, 0x46, 0x52, 0x79, 0xC3, 0x7B, 0x46, 0x14, 0x38, 0xF4, 0xF5, 0x3C, 0x0E, 0x0B }, + }, + { + { 0xDC, 0xB2, 0x1D, 0xEF, 0x3C, 0x26, 0x0B, 0x20, 0x50, 0xF3, 0x4C, 0x5F, 0x51, 0xBE, 0x30, 0x9C, + 0x3C, 0x76, 0x36, 0x30, 0x6D, 0x51, 0xB9, 0xBE, 0x43, 0xD8, 0x9D, 0xE0, 0x8F, 0x60, 0xD9, 0x4A }, + }, + { + { 0xDD, 0x30, 0xCB, 0x75, 0xC9, 0x3E, 0x01, 0xFC, 0xC6, 0xE8, 0x44, 0x63, 0xFD, 0x47, 0x78, 0x15, + 0x8F, 0x3A, 0x18, 0xCE, 0x89, 0x67, 0x7B, 0x01, 0xE6, 0xFF, 0x5B, 0xA7, 0x2F, 0xA4, 0xD0, 0xF6 }, + }, + { + { 0xDD, 0x9D, 0xD7, 0xC1, 0x80, 0xB2, 0x73, 0x50, 0x83, 0xF5, 0xC7, 0x29, 0x3E, 0xC8, 0x64, 0x07, + 0x4B, 0x42, 0x27, 0xFE, 0x0E, 0xAE, 0x8D, 0x4D, 0xAF, 0x66, 0x54, 0x0D, 0x82, 0x2F, 0x81, 0xA1 }, + }, + { + { 0xDE, 0x01, 0xA7, 0x27, 0x1A, 0x95, 0x3D, 0xA2, 0xF0, 0xFD, 0xDB, 0x6B, 0x37, 0xFE, 0x00, 0x28, + 0xDE, 0x8B, 0x7D, 0x3C, 0xE5, 0x79, 0x1B, 0x45, 0x0D, 0xD2, 0x83, 0xB2, 0x0A, 0xDB, 0x05, 0xD2 }, + }, + { + { 0xDE, 0x45, 0x46, 0xC0, 0x24, 0x51, 0xA5, 0xB5, 0xAD, 0x85, 0xEA, 0x53, 0x2F, 0x09, 0x6F, 0xDF, + 0x1E, 0x2B, 0x41, 0x71, 0xD9, 0x6A, 0x1D, 0xC3, 0x93, 0x6A, 0x19, 0x74, 0xF0, 0x58, 0xF0, 0xB2 }, + }, + { + { 0xDE, 0x5C, 0x3D, 0x09, 0x58, 0xA6, 0x12, 0xBD, 0x6D, 0x48, 0x09, 0x15, 0x03, 0x3D, 0x97, 0x15, + 0x58, 0xDF, 0x35, 0xCE, 0xB1, 0xC9, 0x18, 0xE6, 0x9A, 0x01, 0x34, 0x51, 0xE4, 0x50, 0x95, 0xB8 }, + }, + { + { 0xDE, 0x77, 0xEA, 0xDB, 0xCB, 0xC2, 0x05, 0xDD, 0x55, 0xA0, 0xE1, 0x18, 0xCA, 0x67, 0x74, 0xF9, + 0x58, 0x09, 0xA8, 0x2C, 0xA0, 0x1B, 0x2D, 0x5E, 0x85, 0x72, 0xE6, 0x17, 0xB6, 0xAB, 0xF4, 0x72 }, + }, + { + { 0xDE, 0xCD, 0xB9, 0xFC, 0x1D, 0xDE, 0xC9, 0x7E, 0x09, 0xC3, 0x02, 0x6A, 0xCE, 0xB7, 0x6B, 0xDA, + 0xE9, 0xDE, 0xB6, 0x62, 0x75, 0x1D, 0xDA, 0x34, 0x9D, 0x2F, 0xA6, 0xBD, 0x75, 0xCA, 0x59, 0x14 }, + }, + { + { 0xDE, 0xD1, 0x9A, 0xD5, 0xDE, 0x99, 0x65, 0xD9, 0x22, 0x5C, 0x1B, 0xBA, 0x5F, 0xB4, 0xD8, 0x90, + 0xC8, 0xE5, 0xC0, 0x35, 0xE4, 0x85, 0x27, 0x52, 0xB6, 0x69, 0xB0, 0x40, 0x0F, 0x24, 0xF1, 0x74 }, + }, + { + { 0xDF, 0x12, 0x39, 0x4E, 0x73, 0xCB, 0x8C, 0x95, 0xC5, 0x7E, 0x49, 0x8B, 0x96, 0xFF, 0x65, 0x2C, + 0x06, 0xAC, 0x62, 0xA9, 0xA8, 0xED, 0x83, 0x85, 0x39, 0x93, 0xDC, 0xBD, 0xEB, 0xC0, 0x16, 0xAA }, + }, + { + { 0xDF, 0x30, 0xBF, 0x8D, 0x1B, 0xF9, 0x37, 0x8E, 0x43, 0x3E, 0xF9, 0xE1, 0xB3, 0xA2, 0x28, 0xA0, + 0x7E, 0x36, 0x58, 0xA5, 0xBC, 0x43, 0x88, 0x23, 0x45, 0x4D, 0xB0, 0x6A, 0x67, 0x94, 0x4C, 0x6E }, + }, + { + { 0xDF, 0x51, 0x6D, 0xA3, 0xC8, 0x2D, 0x2D, 0x71, 0x17, 0x77, 0x76, 0x59, 0xCC, 0x9D, 0xBE, 0x7C, + 0xEC, 0x22, 0x70, 0x8F, 0x22, 0x59, 0x47, 0x6F, 0xFC, 0x48, 0x60, 0x34, 0x94, 0xFC, 0x87, 0xD3 }, + }, + { + { 0xDF, 0x69, 0xF9, 0x6A, 0x85, 0x67, 0x8F, 0x6C, 0xAF, 0x3F, 0xDE, 0x25, 0xEC, 0xFB, 0x5D, 0xF4, + 0x74, 0x70, 0x87, 0xC2, 0xAF, 0x3B, 0x00, 0x65, 0xFB, 0x15, 0x10, 0x55, 0xCB, 0xCB, 0xA8, 0xC1 }, + }, + { + { 0xDF, 0xE5, 0xE5, 0x4F, 0x77, 0x04, 0xBE, 0xA9, 0xCE, 0xC9, 0xC3, 0x36, 0x85, 0xE8, 0x93, 0x37, + 0x6F, 0xE0, 0x65, 0xD3, 0x3B, 0xBC, 0x23, 0x5D, 0x16, 0xA4, 0x35, 0x3D, 0x3C, 0x28, 0x41, 0xED }, + }, + { + { 0xDF, 0xFB, 0x15, 0x21, 0xAA, 0x2D, 0x83, 0x65, 0x9A, 0x85, 0x8E, 0x14, 0x62, 0x82, 0x43, 0xD7, + 0x23, 0x14, 0x5E, 0xA8, 0x13, 0x77, 0xDE, 0xD7, 0x99, 0x1A, 0x3C, 0x00, 0xA3, 0x88, 0x9B, 0xF5 }, + }, + { + { 0xE0, 0x0B, 0xD7, 0x86, 0xD1, 0xF2, 0xF4, 0x46, 0xC4, 0xBA, 0x83, 0x99, 0xD4, 0xD8, 0xD5, 0xA0, + 0xD1, 0x98, 0x57, 0x8F, 0x42, 0x99, 0xFD, 0xFD, 0xAF, 0xF7, 0x8C, 0x3F, 0x67, 0x71, 0xF3, 0x94 }, + }, + { + { 0xE0, 0x65, 0x19, 0x10, 0x41, 0x74, 0x08, 0xBE, 0x2B, 0x0C, 0xFD, 0x3D, 0x9E, 0xAA, 0xEB, 0xCA, + 0x32, 0x1F, 0x61, 0x6D, 0xDA, 0x48, 0xCB, 0x4F, 0x09, 0x10, 0x9D, 0x67, 0x19, 0x45, 0xA1, 0x1C }, + }, + { + { 0xE0, 0x8B, 0x2C, 0xC2, 0x7A, 0xE8, 0xE2, 0xEF, 0x1A, 0x33, 0x01, 0x7A, 0x9A, 0xC2, 0x5D, 0xDA, + 0xFB, 0x5E, 0xA1, 0x12, 0xC9, 0x56, 0xB0, 0x02, 0xFE, 0x6C, 0x79, 0x80, 0x14, 0xAA, 0x90, 0x65 }, + }, + { + { 0xE0, 0xA0, 0x7B, 0x39, 0x6D, 0x25, 0x7F, 0xAB, 0xB4, 0xE3, 0x22, 0xD8, 0x79, 0x94, 0x88, 0x37, + 0x28, 0x7A, 0xAA, 0x99, 0xAD, 0x14, 0xD7, 0x8D, 0x3A, 0x2F, 0x9D, 0xFE, 0x5C, 0x97, 0x28, 0xBF }, + }, + { + { 0xE0, 0xA9, 0xD9, 0x63, 0x6E, 0xFA, 0x36, 0xA7, 0x72, 0xAC, 0xB5, 0xD0, 0x22, 0xFC, 0xA9, 0x73, + 0x71, 0xB4, 0x4F, 0x7B, 0x80, 0x4B, 0x03, 0x97, 0xFB, 0x6C, 0x37, 0x1A, 0x22, 0x5B, 0xDA, 0x78 }, + }, + { + { 0xE0, 0xBB, 0xEF, 0x7E, 0xE4, 0x37, 0xB0, 0x59, 0xE0, 0x3B, 0x52, 0x9B, 0xE6, 0xB4, 0x09, 0x6D, + 0x56, 0xC7, 0x4E, 0x90, 0x67, 0xB0, 0x5F, 0x87, 0xAA, 0x6A, 0x5A, 0x61, 0x93, 0x40, 0xA7, 0xC3 }, + }, + { + { 0xE0, 0xDD, 0xE1, 0x29, 0xD2, 0x60, 0xC3, 0xDA, 0xB6, 0x91, 0xD8, 0x1D, 0xAB, 0xAD, 0x73, 0x4C, + 0x9A, 0xDC, 0x61, 0xD2, 0x0C, 0x1A, 0xE1, 0xB6, 0x72, 0x4E, 0x7B, 0x27, 0x92, 0x75, 0xDA, 0x35 }, + }, + { + { 0xE1, 0xB2, 0xE8, 0x6B, 0x0D, 0xA8, 0x69, 0xE9, 0x25, 0x26, 0x6C, 0x1B, 0x56, 0x88, 0x34, 0x5A, + 0x17, 0xB0, 0xF6, 0xE2, 0xA2, 0x14, 0x94, 0x54, 0x7E, 0xAC, 0x09, 0x7C, 0x8B, 0xF5, 0x3C, 0x5A }, + }, + { + { 0xE1, 0xD4, 0xBB, 0x78, 0x58, 0x58, 0x9E, 0x08, 0x7E, 0x01, 0xAE, 0x85, 0x99, 0x5A, 0x5C, 0x2F, + 0xD0, 0xAC, 0xED, 0xF4, 0x40, 0x55, 0xFF, 0x96, 0x73, 0x8F, 0x2B, 0x32, 0xB3, 0x31, 0x6E, 0xB0 }, + }, + { + { 0xE1, 0xD6, 0x44, 0xA0, 0x96, 0xBD, 0x8A, 0x6C, 0xAC, 0xBB, 0xDA, 0x3E, 0x7F, 0xC3, 0x38, 0xEA, + 0xDD, 0xC1, 0x2F, 0x23, 0x6C, 0x72, 0x61, 0xE4, 0x5F, 0x8A, 0xD2, 0xD8, 0x42, 0x42, 0x4F, 0x72 }, + }, + { + { 0xE2, 0x24, 0x10, 0xB5, 0xA6, 0x7F, 0xED, 0xC2, 0x64, 0x69, 0x4C, 0x44, 0x9D, 0x84, 0xFA, 0x1A, + 0x02, 0xBC, 0x8B, 0x21, 0x28, 0xC1, 0x25, 0x60, 0x71, 0x58, 0xC9, 0x1B, 0x05, 0x38, 0x6C, 0x6A }, + }, + { + { 0xE2, 0xA8, 0x47, 0xC3, 0xF0, 0x9B, 0xEB, 0x6F, 0x05, 0x68, 0x6F, 0x17, 0x79, 0x1B, 0x05, 0xF1, + 0xFE, 0x25, 0xF7, 0x71, 0x86, 0x9C, 0x42, 0x63, 0xA5, 0x5B, 0x94, 0x18, 0x77, 0xE4, 0x79, 0x04 }, + }, + { + { 0xE2, 0xB4, 0x03, 0x32, 0x0B, 0x01, 0xF6, 0x03, 0xD7, 0xB0, 0xCA, 0x1F, 0x89, 0xF0, 0x8E, 0x25, + 0xA7, 0x95, 0xE8, 0xB6, 0x04, 0x36, 0x8B, 0xA0, 0x78, 0x69, 0x68, 0x46, 0x8C, 0x18, 0xC3, 0xF0 }, + }, + { + { 0xE2, 0xDE, 0x18, 0x3E, 0xAE, 0x35, 0x4C, 0xCF, 0x68, 0xF2, 0x52, 0x56, 0x76, 0xD7, 0x26, 0x46, + 0x06, 0x01, 0x38, 0x43, 0xAC, 0xB1, 0xFB, 0xFF, 0xA0, 0x22, 0x99, 0xA7, 0x4E, 0xA0, 0xDF, 0x62 }, + }, + { + { 0xE2, 0xF3, 0x9A, 0x9D, 0x48, 0xA3, 0x22, 0x10, 0x55, 0xB3, 0xC8, 0xA3, 0xEB, 0x14, 0x39, 0xD6, + 0xB8, 0x73, 0x01, 0x3E, 0xE4, 0xD0, 0x97, 0x12, 0x20, 0x64, 0xF2, 0x7E, 0xC0, 0x3D, 0xD4, 0xDA }, + }, + { + { 0xE2, 0xF5, 0xDE, 0x57, 0xCD, 0x67, 0x24, 0x9A, 0x7E, 0x1F, 0x45, 0x5B, 0x85, 0xC0, 0x6F, 0x0D, + 0x80, 0x9E, 0x75, 0xA5, 0x5C, 0x6B, 0x05, 0x48, 0x16, 0xE0, 0x19, 0x89, 0x9A, 0x3A, 0x02, 0xFF }, + }, + { + { 0xE3, 0x1F, 0xA0, 0xBD, 0xE8, 0x58, 0x9E, 0xDD, 0xDA, 0x1C, 0x5D, 0x1A, 0xA9, 0xC5, 0x81, 0x86, + 0xC3, 0x14, 0x36, 0x85, 0x67, 0xBD, 0xF9, 0xDC, 0xD5, 0x37, 0xAA, 0xE3, 0xCF, 0xF8, 0x77, 0x52 }, + }, + { + { 0xE3, 0xC8, 0xFC, 0x63, 0x7B, 0x7B, 0xB0, 0xCC, 0x67, 0x4A, 0x5A, 0x4C, 0x3B, 0x4D, 0x35, 0x62, + 0xEB, 0x8A, 0xA0, 0x0D, 0x7A, 0xD2, 0xC8, 0xA9, 0xC6, 0x37, 0x09, 0xE4, 0x51, 0x06, 0x52, 0xD5 }, + }, + { + { 0xE4, 0x6C, 0x8D, 0x7E, 0x4D, 0x59, 0x76, 0x83, 0x0B, 0xE3, 0x7A, 0x22, 0x25, 0x75, 0x55, 0x42, + 0x20, 0x81, 0xE1, 0xA8, 0x4B, 0x72, 0x6B, 0xCF, 0x17, 0xB0, 0x43, 0x54, 0x1E, 0x7C, 0xA7, 0x15 }, + }, + { + { 0xE5, 0x3C, 0x7E, 0xA6, 0xB1, 0x2D, 0x3E, 0xCA, 0xBF, 0xB0, 0x2F, 0xE4, 0x88, 0x56, 0xE6, 0x38, + 0xBD, 0x0C, 0x6F, 0xEB, 0x35, 0x75, 0x7C, 0x19, 0xAE, 0xFA, 0x3D, 0x51, 0x92, 0x17, 0xE2, 0x9E }, + }, + { + { 0xE5, 0x6B, 0xF9, 0xFA, 0xF8, 0xEE, 0x91, 0xD8, 0x2F, 0xAF, 0xDF, 0x9B, 0x51, 0x20, 0x64, 0x7F, + 0x0D, 0x67, 0xF7, 0x18, 0xD7, 0x55, 0x49, 0x87, 0xFA, 0x06, 0x4B, 0xB2, 0x38, 0xCB, 0xE3, 0x9A }, + }, + { + { 0xE5, 0x70, 0x93, 0x54, 0xAF, 0x05, 0x47, 0x26, 0x95, 0x3F, 0xC5, 0xC3, 0xBB, 0x13, 0x3E, 0x16, + 0xC7, 0xBB, 0xB7, 0xC3, 0x5A, 0xFC, 0xC3, 0x21, 0xCD, 0xA0, 0x35, 0x0B, 0xEB, 0x57, 0x17, 0x77 }, + }, + { + { 0xE5, 0x9A, 0x43, 0xB8, 0x41, 0x20, 0x26, 0x84, 0x36, 0xC3, 0x5E, 0xD8, 0x6D, 0x73, 0x21, 0x38, + 0x5F, 0xB9, 0x1F, 0x89, 0x82, 0x83, 0x3E, 0x5F, 0x54, 0xD2, 0xAE, 0xE2, 0x09, 0x56, 0x2F, 0x2F }, + }, + { + { 0xE5, 0xAF, 0x76, 0xA5, 0xA0, 0xCC, 0x06, 0x75, 0x0E, 0x8C, 0x17, 0x76, 0x9A, 0xF3, 0x4D, 0x72, + 0x43, 0x76, 0x7F, 0xBE, 0x2A, 0x9F, 0x4A, 0xBC, 0x17, 0x08, 0xEA, 0x1C, 0x86, 0x2A, 0x38, 0xEB }, + }, + { + { 0xE5, 0xF1, 0x20, 0xB8, 0x78, 0x63, 0x43, 0x1A, 0xD8, 0x34, 0xD8, 0x47, 0x94, 0x86, 0x4A, 0x90, + 0x0E, 0x39, 0x30, 0xE0, 0xCE, 0xCE, 0xA1, 0x4B, 0x0D, 0x31, 0x33, 0xA9, 0x87, 0x74, 0x48, 0x89 }, + }, + { + { 0xE6, 0x17, 0x7C, 0x86, 0xB8, 0x35, 0x58, 0x0A, 0x7A, 0x09, 0x50, 0x34, 0x78, 0x98, 0xAB, 0x63, + 0xAF, 0x11, 0xEC, 0x99, 0x60, 0x64, 0x45, 0x4C, 0x04, 0x62, 0xBE, 0x5D, 0x4E, 0xD5, 0x22, 0x48 }, + }, + { + { 0xE6, 0x44, 0xD1, 0x1C, 0x37, 0x07, 0x0F, 0x89, 0x69, 0x33, 0x08, 0x17, 0x8D, 0x6B, 0xE4, 0x95, + 0x94, 0x96, 0x92, 0xC1, 0xFB, 0xEB, 0x30, 0xED, 0x32, 0x9B, 0x74, 0x02, 0x7F, 0xCF, 0xFD, 0x48 }, + }, + { + { 0xE6, 0x7E, 0x9D, 0xC8, 0x17, 0x8E, 0x8D, 0xAD, 0x62, 0x91, 0x40, 0x22, 0xAE, 0x76, 0xD4, 0x75, + 0x1E, 0x9E, 0x26, 0xC6, 0x32, 0x68, 0xD3, 0xB9, 0xDF, 0xC8, 0x86, 0xE6, 0x7A, 0xAA, 0x9E, 0xEB }, + }, + { + { 0xE6, 0xA7, 0x10, 0x85, 0x6E, 0x43, 0x3D, 0x4F, 0x5F, 0xAA, 0xD2, 0xAE, 0xF4, 0x38, 0x6F, 0x17, + 0x46, 0x02, 0xC8, 0xFA, 0xE4, 0x50, 0x0F, 0x34, 0x40, 0xDD, 0x3C, 0x78, 0xF6, 0xE8, 0xDA, 0x6C }, + }, + { + { 0xE6, 0xB0, 0xF2, 0xE2, 0x5B, 0xD5, 0x16, 0xE4, 0xBB, 0xA3, 0x7A, 0x2B, 0xF2, 0xE2, 0xC7, 0x2A, + 0x1E, 0x53, 0x9C, 0x60, 0x30, 0xF3, 0xCF, 0x9B, 0xBE, 0x5E, 0x79, 0x72, 0x8D, 0x68, 0x64, 0x78 }, + }, + { + { 0xE6, 0xC9, 0x32, 0x43, 0x98, 0x7B, 0x3B, 0xB2, 0x8A, 0xB8, 0x6F, 0xDD, 0x6B, 0xF4, 0xD9, 0xA5, + 0x94, 0xF8, 0xD5, 0xBC, 0xE3, 0xB2, 0xF6, 0xAF, 0x51, 0x97, 0x15, 0x53, 0x08, 0xC6, 0x03, 0x2D }, + }, + { + { 0xE6, 0xE5, 0x4D, 0xE7, 0xB4, 0x97, 0x54, 0xD3, 0x57, 0xB0, 0xA8, 0xD9, 0x4A, 0x4D, 0x4F, 0x80, + 0xAC, 0xD1, 0x99, 0x4C, 0xCC, 0x1C, 0x99, 0x08, 0xE9, 0xF0, 0xD9, 0x21, 0xE4, 0x28, 0xB8, 0x38 }, + }, + { + { 0xE7, 0x0C, 0xBB, 0x7A, 0xF7, 0xAA, 0x20, 0xB9, 0x89, 0x0B, 0xC1, 0xF9, 0xFA, 0x00, 0xD8, 0x09, + 0x0B, 0x5A, 0xC9, 0x82, 0x5E, 0xA9, 0xD2, 0xFD, 0xF7, 0x7C, 0xA4, 0xDA, 0xE9, 0x44, 0x51, 0xB2 }, + }, + { + { 0xE7, 0x5D, 0x32, 0x90, 0xA6, 0x9A, 0xB5, 0x96, 0xEE, 0x17, 0x9D, 0xC1, 0x34, 0xAA, 0x07, 0x1E, + 0x69, 0xFD, 0x98, 0x25, 0xFC, 0x06, 0x2E, 0x33, 0x8B, 0xA2, 0x23, 0x5E, 0xE3, 0x25, 0x56, 0xD2 }, + }, + { + { 0xE7, 0xD5, 0x73, 0x8A, 0xCD, 0x7F, 0x56, 0x3D, 0xD6, 0x8E, 0x86, 0x75, 0xC8, 0x78, 0xC6, 0xC6, + 0x80, 0x02, 0xD6, 0x40, 0x60, 0x46, 0xAF, 0x40, 0x56, 0x01, 0x3A, 0xA4, 0x6E, 0xA0, 0x37, 0x54 }, + }, + { + { 0xE7, 0xFD, 0x58, 0x39, 0x86, 0x80, 0xFA, 0xBD, 0x43, 0x21, 0xCD, 0xBE, 0x23, 0x33, 0xCB, 0xC2, + 0xC5, 0x4A, 0x32, 0xFF, 0x76, 0x6C, 0x4A, 0x94, 0x43, 0xC3, 0x6E, 0x2C, 0xEB, 0x46, 0xC5, 0xF0 }, + }, + { + { 0xE8, 0x02, 0xCB, 0x32, 0x13, 0x85, 0x51, 0xE5, 0x57, 0x44, 0xD4, 0x11, 0xC4, 0x8C, 0x7D, 0x5F, + 0x47, 0xB8, 0x15, 0x47, 0xB1, 0x23, 0x47, 0x90, 0xDA, 0x5D, 0xA4, 0x33, 0x97, 0x2E, 0x57, 0x27 }, + }, + { + { 0xE8, 0x16, 0xF9, 0x92, 0x94, 0xA1, 0x3A, 0xC2, 0xFA, 0x2B, 0xFB, 0x76, 0xC2, 0x2D, 0xFA, 0x71, + 0xBC, 0x3D, 0xA4, 0x8F, 0x67, 0x1E, 0xF7, 0x7C, 0x00, 0xAA, 0x8E, 0x45, 0x9B, 0x7C, 0xC8, 0x2A }, + }, + { + { 0xE8, 0x1A, 0x87, 0x45, 0xAD, 0x86, 0xF6, 0x5F, 0xA0, 0xD8, 0x51, 0xFC, 0xB7, 0x2E, 0x3E, 0xF5, + 0x4D, 0x51, 0xBC, 0x60, 0xB9, 0x68, 0x0C, 0xB2, 0x5E, 0xB2, 0xF3, 0xAC, 0x44, 0xEA, 0xA7, 0xA4 }, + }, + { + { 0xE8, 0x21, 0x3C, 0x45, 0x51, 0x81, 0x61, 0xBC, 0x36, 0x37, 0x3D, 0xCD, 0x2D, 0x4B, 0x21, 0xB7, + 0x6A, 0x7C, 0x06, 0x6D, 0xF5, 0x52, 0x6E, 0x88, 0x8B, 0x6E, 0xED, 0x09, 0xA9, 0xEE, 0xD0, 0x62 }, + }, + { + { 0xE8, 0x68, 0xE4, 0xE2, 0x52, 0xDC, 0x95, 0x87, 0x75, 0x75, 0x6E, 0xC0, 0x10, 0xFA, 0xCF, 0xB8, + 0x79, 0x63, 0x6A, 0x35, 0x27, 0xB3, 0xB8, 0xDB, 0x9B, 0xF9, 0x26, 0x03, 0x6A, 0xD4, 0x0E, 0x92 }, + }, + { + { 0xE8, 0x6E, 0xE6, 0x9D, 0x51, 0xBE, 0x64, 0xF8, 0x28, 0xFC, 0x22, 0xCC, 0xE5, 0xBC, 0xC1, 0x1D, + 0x24, 0xA5, 0xF1, 0x77, 0xF9, 0xBA, 0x99, 0x51, 0x92, 0x71, 0xA4, 0xF3, 0x9F, 0x0C, 0x51, 0x7C }, + }, + { + { 0xE8, 0xA6, 0x09, 0xEC, 0x44, 0xF9, 0x3C, 0x12, 0xE0, 0x81, 0xE5, 0x94, 0x3B, 0x5E, 0xA0, 0x48, + 0x68, 0x14, 0x48, 0x33, 0x32, 0x5D, 0xAA, 0x64, 0x4F, 0x3F, 0x9F, 0xB7, 0x6A, 0xA2, 0x77, 0xC8 }, + }, + { + { 0xE9, 0x52, 0x76, 0x76, 0x30, 0x2F, 0xFB, 0x14, 0x91, 0x15, 0x65, 0x19, 0x28, 0xF0, 0x4D, 0x9C, + 0x96, 0xAF, 0xEF, 0x18, 0xB5, 0x72, 0x12, 0x37, 0x52, 0x75, 0x4B, 0x38, 0xA9, 0x7C, 0x8E, 0xF0 }, + }, + { + { 0xE9, 0x65, 0xDB, 0x91, 0x44, 0x8E, 0xFF, 0xC5, 0x3D, 0xEF, 0x1B, 0x72, 0x68, 0xA2, 0xF5, 0xAB, + 0x95, 0xB1, 0x4A, 0x2A, 0x90, 0x2C, 0x6A, 0xC9, 0xB2, 0x54, 0xEC, 0xAF, 0xC7, 0x9F, 0x08, 0xD8 }, + }, + { + { 0xE9, 0xC2, 0x8F, 0x7A, 0x33, 0xFB, 0xC5, 0xB4, 0x49, 0xC9, 0x5A, 0x88, 0x47, 0x1D, 0x3F, 0x71, + 0xFB, 0x34, 0x7A, 0x02, 0xCE, 0xB0, 0x5E, 0xB0, 0xE7, 0x1C, 0x7B, 0xB7, 0x46, 0x45, 0xC8, 0x92 }, + }, + { + { 0xE9, 0xF5, 0x71, 0xC7, 0x71, 0x64, 0xAB, 0xEA, 0xE1, 0x85, 0x28, 0x37, 0x5C, 0xFD, 0xC7, 0x21, + 0x9A, 0x6B, 0xDE, 0x46, 0x1B, 0x19, 0x73, 0xBE, 0x2B, 0xB8, 0xBD, 0xF0, 0xDA, 0x78, 0xB2, 0xB4 }, + }, + { + { 0xEA, 0x2E, 0x8C, 0x23, 0xAA, 0x7C, 0xC3, 0x7D, 0x64, 0xCF, 0xC3, 0x03, 0xDD, 0x9F, 0x3F, 0x92, + 0x1B, 0xAE, 0x11, 0x8C, 0xA3, 0xDF, 0x81, 0xE5, 0x92, 0xE3, 0x0B, 0xBB, 0x03, 0x71, 0x4D, 0x96 }, + }, + { + { 0xEA, 0x51, 0x8B, 0x42, 0x91, 0x89, 0x39, 0xA6, 0x22, 0x63, 0xA7, 0xCC, 0xD2, 0xA9, 0xB5, 0x44, + 0x9C, 0x58, 0x1C, 0x2E, 0xA9, 0x9C, 0x2B, 0x74, 0x3F, 0x6F, 0x18, 0x3D, 0xFC, 0x19, 0xED, 0xFF }, + }, + { + { 0xEA, 0x5A, 0xB6, 0x6C, 0xAF, 0xDE, 0x63, 0x38, 0xC0, 0x67, 0x8D, 0x74, 0x54, 0xD0, 0x79, 0x6D, + 0xDE, 0xA0, 0xD2, 0x84, 0xDD, 0xAA, 0x79, 0x4D, 0x04, 0x42, 0x0E, 0xDA, 0x97, 0x71, 0xC5, 0x1A }, + }, + { + { 0xEA, 0x76, 0x8A, 0xF7, 0x9B, 0x07, 0xCE, 0x21, 0xC2, 0x64, 0x90, 0xE9, 0x4B, 0xC0, 0x7A, 0x2A, + 0xAE, 0x96, 0xBD, 0x60, 0xA4, 0x19, 0xE9, 0x8B, 0x03, 0x63, 0x87, 0xF2, 0x10, 0x2D, 0x28, 0xF6 }, + }, + { + { 0xEA, 0x81, 0xEE, 0xEB, 0x60, 0x6B, 0xC9, 0x1C, 0x0E, 0x07, 0xDA, 0x1F, 0x86, 0x04, 0x89, 0x3C, + 0x1D, 0x17, 0x84, 0x60, 0xDE, 0xE8, 0x7E, 0xD5, 0x37, 0xFF, 0x8D, 0x85, 0xE4, 0x00, 0x02, 0xF5 }, + }, + { + { 0xEA, 0xC1, 0x29, 0xDC, 0x3A, 0xE7, 0xF5, 0xCC, 0x0F, 0x13, 0x46, 0x57, 0x0D, 0x06, 0x92, 0x6A, + 0x85, 0x01, 0xB0, 0xD2, 0x06, 0x9B, 0xF7, 0x17, 0xAF, 0x69, 0xD1, 0xBE, 0x0E, 0x3E, 0x30, 0xDE }, + }, + { + { 0xEB, 0x11, 0x63, 0xAA, 0xEF, 0xE8, 0xFD, 0x88, 0xE1, 0x32, 0x7B, 0x48, 0xA9, 0xC0, 0x06, 0x2E, + 0x06, 0xF0, 0xA6, 0xEA, 0xA0, 0xA0, 0x18, 0x24, 0x7F, 0x9F, 0xA4, 0xE3, 0x4E, 0x3A, 0x47, 0x4C }, + }, + { + { 0xEB, 0x43, 0x76, 0xB1, 0xD2, 0x38, 0x2A, 0xC1, 0xC3, 0xEE, 0x27, 0xBE, 0x86, 0x67, 0xEC, 0xF5, + 0xAB, 0x36, 0x25, 0x5A, 0x3C, 0x36, 0xC7, 0x22, 0x74, 0x33, 0x8A, 0xD7, 0x17, 0x56, 0x25, 0x11 }, + }, + { + { 0xEB, 0x5B, 0x21, 0x0F, 0x76, 0xA3, 0xC4, 0x5E, 0x5A, 0x76, 0x07, 0x64, 0x3E, 0x15, 0x26, 0x0D, + 0x1C, 0x93, 0xFD, 0x9B, 0xE0, 0xFA, 0xB1, 0x0B, 0x76, 0xDC, 0x96, 0x86, 0xF6, 0x54, 0xC6, 0xE5 }, + }, + { + { 0xEB, 0x89, 0x84, 0xD1, 0xA9, 0xFE, 0x26, 0x7C, 0x07, 0x9A, 0xE2, 0xF2, 0xF1, 0x6F, 0x01, 0xE6, + 0x0C, 0x4C, 0xEA, 0x94, 0x34, 0xC5, 0x29, 0x7A, 0x71, 0x88, 0xAA, 0x09, 0x25, 0x1D, 0x03, 0xE0 }, + }, + { + { 0xEB, 0xB7, 0xC4, 0x12, 0x58, 0x17, 0x82, 0x26, 0xAD, 0x37, 0xCC, 0xAF, 0x01, 0x1F, 0xCF, 0xF0, + 0x54, 0xB7, 0x7A, 0xC4, 0x9F, 0xCE, 0x28, 0x13, 0x5F, 0x5A, 0xFC, 0x51, 0x63, 0x15, 0xEA, 0x4D }, + }, + { + { 0xEC, 0x01, 0x78, 0xD1, 0xCA, 0x3B, 0x94, 0x52, 0xAA, 0x5C, 0xD5, 0xD3, 0x75, 0x45, 0x6B, 0xAB, + 0xF0, 0xDC, 0x0E, 0xD2, 0x29, 0x91, 0x5D, 0x1A, 0x8F, 0x49, 0x6D, 0xF2, 0xA2, 0xA0, 0x98, 0x71 }, + }, + { + { 0xEC, 0x27, 0x05, 0x63, 0xB0, 0x5A, 0x06, 0xE5, 0xAA, 0xA5, 0xE6, 0xD5, 0xBB, 0xCC, 0x17, 0xCD, + 0x1C, 0xB5, 0xB2, 0xA9, 0x4D, 0x93, 0x84, 0x75, 0xF1, 0x58, 0x17, 0x6F, 0x4D, 0x84, 0xF4, 0x53 }, + }, + { + { 0xEC, 0x4B, 0xBD, 0xEB, 0x15, 0x12, 0x1D, 0x96, 0x76, 0x4D, 0x6C, 0x01, 0xB2, 0x7E, 0xD5, 0xAE, + 0x86, 0x46, 0x5C, 0x46, 0xD5, 0xA4, 0x0E, 0x34, 0xAE, 0xFC, 0x09, 0x2D, 0x3E, 0x8B, 0xB1, 0x76 }, + }, + { + { 0xEC, 0x5F, 0xA4, 0x73, 0x12, 0x1E, 0x3F, 0x49, 0xF0, 0x95, 0x3A, 0x2A, 0x91, 0x83, 0x39, 0xE3, + 0x6F, 0x3C, 0xB6, 0xB8, 0xD8, 0xB8, 0x9E, 0x91, 0x74, 0x23, 0xDA, 0xCE, 0xAC, 0xE6, 0xD5, 0x8A }, + }, + { + { 0xEC, 0x79, 0x76, 0xC2, 0xB8, 0x10, 0x31, 0xF5, 0x88, 0x49, 0x5B, 0xC1, 0x9F, 0x51, 0xB0, 0x36, + 0xF8, 0x4F, 0x48, 0x1D, 0x9B, 0x15, 0x73, 0xD9, 0x8A, 0x7C, 0x32, 0x67, 0xC0, 0x63, 0x1E, 0x00 }, + }, + { + { 0xEC, 0xCE, 0x4E, 0x52, 0x82, 0xFD, 0x2E, 0xE0, 0x03, 0xA4, 0x03, 0x2C, 0x80, 0xD3, 0x32, 0x1A, + 0x69, 0x47, 0x25, 0x98, 0x94, 0x59, 0x09, 0xCB, 0x25, 0x55, 0x7A, 0xA8, 0x47, 0x74, 0x2D, 0xDF }, + }, + { + { 0xED, 0x2B, 0x81, 0xA0, 0xF8, 0xF1, 0x46, 0x5E, 0xA2, 0xF4, 0x17, 0xA4, 0xE8, 0x34, 0xC2, 0x2A, + 0x22, 0xEE, 0x7A, 0x9D, 0xDF, 0x59, 0xA8, 0x3B, 0x89, 0x82, 0xB0, 0xE1, 0x07, 0x19, 0x64, 0x42 }, + }, + { + { 0xED, 0x50, 0xC1, 0x22, 0xAA, 0x2A, 0x49, 0x53, 0xF0, 0x51, 0xB7, 0x81, 0x41, 0x33, 0xAB, 0xBC, + 0x37, 0xA0, 0xC2, 0x21, 0x1B, 0xF7, 0x44, 0x0D, 0x75, 0xB3, 0x5E, 0xE5, 0x4E, 0x5A, 0x98, 0x86 }, + }, + { + { 0xED, 0x57, 0xFB, 0x37, 0xD8, 0x73, 0xD5, 0x26, 0xB1, 0xB6, 0xFD, 0xC3, 0x38, 0x0F, 0xA9, 0x30, + 0x0D, 0xA6, 0x25, 0x81, 0x4C, 0x35, 0xF1, 0x0A, 0x04, 0x93, 0xEE, 0x19, 0xFF, 0x09, 0x60, 0x29 }, + }, + { + { 0xED, 0x5B, 0xB8, 0x6A, 0x95, 0xA5, 0xFE, 0x2B, 0x17, 0x08, 0xF2, 0x56, 0x75, 0x4A, 0x89, 0xC4, + 0x29, 0x67, 0x9B, 0x30, 0x75, 0x8E, 0xE0, 0x12, 0x2B, 0x9E, 0x50, 0x85, 0x8D, 0xE2, 0x10, 0x4B }, + }, + { + { 0xED, 0x6D, 0xDA, 0xE4, 0xF4, 0xAF, 0xCE, 0x6B, 0xAF, 0x3A, 0x63, 0x7D, 0x89, 0x0A, 0x0D, 0x65, + 0x75, 0x3E, 0x45, 0x97, 0x14, 0x5A, 0xF8, 0x97, 0x53, 0x9B, 0xF9, 0xF7, 0xD3, 0x42, 0xA1, 0xD1 }, + }, + { + { 0xED, 0xC1, 0xBF, 0x3E, 0xFB, 0xF7, 0xE1, 0xD9, 0x5E, 0x19, 0xC5, 0x5E, 0xCA, 0xE7, 0x7E, 0x83, + 0x69, 0x46, 0xAB, 0x0A, 0x26, 0xA7, 0x8E, 0x32, 0xA4, 0x72, 0xC9, 0xD3, 0x6C, 0x69, 0xCE, 0xCD }, + }, + { + { 0xED, 0xF4, 0xDF, 0x97, 0x2C, 0xAD, 0x6C, 0x47, 0x0B, 0xAB, 0x5D, 0x66, 0x42, 0xF6, 0x60, 0xB8, + 0x42, 0xD6, 0xC9, 0x73, 0x07, 0x44, 0x93, 0xE4, 0xEF, 0x1B, 0xBF, 0x31, 0x1A, 0x92, 0x79, 0x95 }, + }, + { + { 0xEE, 0x0C, 0xF6, 0x2B, 0x9D, 0x8E, 0x42, 0xA2, 0x23, 0xB9, 0xA9, 0x60, 0xB5, 0xE9, 0x67, 0x0C, + 0xCC, 0x34, 0x6D, 0x89, 0x93, 0x8F, 0xFA, 0x5D, 0xF7, 0x98, 0x65, 0xE4, 0x13, 0xD6, 0x31, 0x54 }, + }, + { + { 0xEE, 0x1A, 0x2F, 0xA9, 0x58, 0x37, 0x5E, 0x11, 0x06, 0xE2, 0xC9, 0x05, 0xED, 0x8A, 0x26, 0x4F, + 0x28, 0x19, 0xCB, 0xB5, 0x26, 0x11, 0x8D, 0x30, 0x68, 0x9D, 0x17, 0x90, 0x42, 0x9A, 0x46, 0xA1 }, + }, + { + { 0xEE, 0x34, 0xE1, 0xA1, 0x9B, 0xC8, 0x89, 0xF8, 0x5F, 0x7F, 0x0F, 0x5B, 0xF8, 0x72, 0xB1, 0xAC, + 0x56, 0x5E, 0xC6, 0xF1, 0x9D, 0xB5, 0x17, 0xBA, 0x4E, 0xD7, 0x55, 0xC4, 0x18, 0x5F, 0x69, 0xE8 }, + }, + { + { 0xEE, 0x35, 0x71, 0x37, 0x61, 0x52, 0x7A, 0xE4, 0x8E, 0x7E, 0x40, 0x94, 0xB2, 0xB9, 0x1D, 0x3D, + 0xD2, 0x64, 0x3F, 0x38, 0xE2, 0x6D, 0x34, 0x36, 0x36, 0x52, 0xFE, 0x5C, 0x2B, 0xBC, 0x41, 0x6B }, + }, + { + { 0xEE, 0x3D, 0x0B, 0xC5, 0xA6, 0x5A, 0xF5, 0x8D, 0x43, 0x2D, 0x08, 0x63, 0x7B, 0xE0, 0xB7, 0xBA, + 0x49, 0xC2, 0x32, 0x61, 0x8D, 0xA9, 0xC8, 0x97, 0x3F, 0x88, 0x56, 0x8C, 0x88, 0x89, 0xD1, 0xAD }, + }, + { + { 0xEE, 0xE4, 0x9F, 0xCF, 0x29, 0x63, 0x9E, 0xD8, 0x82, 0xE0, 0x1A, 0xD1, 0xF0, 0xF5, 0xA1, 0xC5, + 0x55, 0x09, 0x26, 0xAF, 0xD4, 0x23, 0x4E, 0xF1, 0x46, 0xBC, 0x47, 0x09, 0xFE, 0x5D, 0x90, 0xE8 }, + }, + { + { 0xEF, 0x36, 0xA2, 0x29, 0x89, 0x65, 0xE4, 0x98, 0x84, 0x59, 0xB9, 0x21, 0x6A, 0xB3, 0x3C, 0x3C, + 0xA8, 0x42, 0xD2, 0x16, 0x83, 0xB6, 0x2A, 0x2B, 0xF1, 0x53, 0x0D, 0x30, 0xB0, 0xAE, 0x78, 0x25 }, + }, + { + { 0xEF, 0x6D, 0xE0, 0xC4, 0x85, 0x70, 0xBD, 0x71, 0x51, 0x6B, 0xF6, 0x39, 0x5D, 0xBD, 0x29, 0x33, + 0x7C, 0xFC, 0xB7, 0xD4, 0x26, 0x64, 0x10, 0xA1, 0xF5, 0xDA, 0x08, 0x08, 0xE0, 0x96, 0xF4, 0x55 }, + }, + { + { 0xEF, 0x7E, 0x8C, 0xCD, 0x7B, 0xCF, 0xB7, 0x1D, 0x2A, 0xA7, 0xBC, 0xDD, 0x8F, 0xD2, 0xD2, 0xD1, + 0x55, 0x77, 0x9D, 0xE8, 0x68, 0x43, 0x20, 0x44, 0x35, 0x1E, 0x98, 0x02, 0xCC, 0xA2, 0x90, 0xAF }, + }, + { + { 0xEF, 0xAF, 0xCA, 0x84, 0x90, 0x30, 0x7B, 0x0F, 0x62, 0x2B, 0xF4, 0x3A, 0x0E, 0xB3, 0xC5, 0x1A, + 0xCB, 0xDD, 0xDE, 0xDC, 0x23, 0x92, 0xF1, 0x61, 0xAC, 0xED, 0x16, 0x71, 0xA6, 0x53, 0x60, 0x7E }, + }, + { + { 0xEF, 0xB5, 0xBE, 0x9F, 0xA2, 0xC6, 0xEE, 0x48, 0x9F, 0x9E, 0xB3, 0xDD, 0x55, 0x42, 0xA7, 0x0C, + 0x22, 0x57, 0xB5, 0x6B, 0x24, 0x0B, 0x3B, 0x4B, 0x29, 0xF3, 0xB4, 0xE6, 0xBA, 0x8A, 0xED, 0xE3 }, + }, + { + { 0xEF, 0xC1, 0x72, 0xEE, 0xAB, 0xE2, 0xAE, 0x26, 0xBC, 0xBF, 0x0E, 0xDD, 0x22, 0x19, 0xE6, 0x62, + 0xE4, 0x63, 0xF9, 0x58, 0x03, 0x40, 0xF3, 0x47, 0x3D, 0xAD, 0x35, 0xE7, 0x50, 0xB0, 0x70, 0x68 }, + }, + { + { 0xEF, 0xCE, 0x18, 0x13, 0x67, 0x41, 0x03, 0xC4, 0x43, 0xAF, 0x12, 0x8F, 0x84, 0x81, 0x8E, 0x33, + 0x85, 0x3E, 0x3B, 0x69, 0x03, 0x55, 0x35, 0x36, 0x57, 0x98, 0xEA, 0xF7, 0x5F, 0x7E, 0xAF, 0x79 }, + }, + { + { 0xEF, 0xD1, 0xE0, 0xE7, 0x3F, 0xA8, 0x71, 0x00, 0xB7, 0x6A, 0x93, 0x23, 0x49, 0xC4, 0x5D, 0x09, + 0xB2, 0x8B, 0x2D, 0x8A, 0x00, 0x17, 0x19, 0xA5, 0x8D, 0xFA, 0xCC, 0x74, 0x84, 0xC7, 0xCF, 0x42 }, + }, + { + { 0xF0, 0x11, 0xAD, 0x9E, 0xDD, 0x4F, 0xE7, 0x18, 0x8D, 0x77, 0x2E, 0xBA, 0xFA, 0x5B, 0xF5, 0x32, + 0x92, 0x47, 0x77, 0x88, 0xDC, 0x12, 0x80, 0x32, 0x76, 0xB0, 0x00, 0xC4, 0x41, 0x91, 0x03, 0xF0 }, + }, + { + { 0xF0, 0x15, 0x95, 0xF5, 0xA4, 0x66, 0x88, 0x78, 0xF6, 0xC7, 0x98, 0xA5, 0xD2, 0xF1, 0x35, 0x23, + 0xF3, 0xAF, 0xB2, 0x0E, 0xF7, 0x6F, 0xE5, 0x77, 0x6F, 0xCE, 0x47, 0xD3, 0x40, 0x9D, 0xF3, 0xC2 }, + }, + { + { 0xF0, 0x2F, 0x9D, 0xA4, 0x5D, 0x9E, 0xB9, 0x86, 0x19, 0x4E, 0x06, 0xF5, 0xE6, 0x18, 0x95, 0x45, + 0x12, 0xC9, 0x02, 0x6E, 0x7C, 0xA7, 0xB5, 0x1E, 0x66, 0x5D, 0xB6, 0xAD, 0xBA, 0xC1, 0xF6, 0x00 }, + }, + { + { 0xF0, 0x6B, 0x35, 0x95, 0x36, 0xD1, 0x34, 0x32, 0x8B, 0x36, 0x00, 0x4D, 0xA9, 0xA9, 0x19, 0x0C, + 0x3A, 0x76, 0x69, 0xE8, 0x27, 0x8D, 0xB9, 0xF7, 0x58, 0x57, 0xC4, 0x8D, 0x64, 0x4B, 0xE2, 0x03 }, + }, + { + { 0xF0, 0xCF, 0xC7, 0x79, 0x13, 0x39, 0x7D, 0xE2, 0x38, 0xED, 0xB5, 0x9F, 0x0F, 0x99, 0x23, 0xC6, + 0xD4, 0x11, 0x0A, 0x4B, 0x3A, 0xC8, 0xAC, 0x76, 0x55, 0x6A, 0x0C, 0x92, 0x44, 0xF0, 0x3F, 0xC1 }, + }, + { + { 0xF1, 0x13, 0x93, 0xAF, 0xAA, 0xCB, 0x50, 0x3A, 0xE4, 0xAC, 0xCC, 0x3E, 0xDF, 0xC5, 0x8F, 0x9A, + 0xD8, 0xA9, 0x6A, 0x01, 0x2E, 0x3A, 0xC3, 0x8E, 0xCB, 0xAA, 0x28, 0x62, 0xB8, 0x05, 0x69, 0x8B }, + }, + { + { 0xF1, 0x46, 0x85, 0xC4, 0xC1, 0x0C, 0x79, 0xFC, 0x97, 0xE1, 0x84, 0xEA, 0x7D, 0x22, 0xF8, 0xEE, + 0x4A, 0x81, 0xD0, 0x56, 0x95, 0xAB, 0x08, 0xD2, 0x5D, 0x4A, 0x73, 0x3B, 0x60, 0xB4, 0x70, 0xDF }, + }, + { + { 0xF1, 0x4B, 0xF7, 0x41, 0x19, 0x15, 0xEF, 0x83, 0x96, 0xCC, 0x04, 0x0A, 0x6F, 0x30, 0x12, 0xBD, + 0x81, 0x8C, 0x11, 0x9D, 0x03, 0x98, 0xCE, 0xD6, 0x1D, 0x80, 0x9E, 0xF9, 0x4B, 0xD8, 0x62, 0xD8 }, + }, + { + { 0xF1, 0x9A, 0xE4, 0x7D, 0x93, 0x67, 0x16, 0x52, 0x78, 0xE1, 0x66, 0xED, 0x44, 0xFF, 0xC3, 0x7E, + 0x5B, 0x28, 0x19, 0x6C, 0x01, 0x4B, 0xF1, 0x18, 0xCF, 0xC6, 0x4E, 0xD5, 0xFA, 0x18, 0x19, 0x4D }, + }, + { + { 0xF1, 0xB5, 0xF4, 0xB2, 0x1E, 0xA3, 0x2D, 0x06, 0x26, 0xAA, 0x5A, 0x6B, 0xF5, 0xC4, 0xDE, 0x59, + 0x1C, 0xF1, 0x65, 0x0F, 0xA8, 0x22, 0xF1, 0x34, 0xD9, 0x2D, 0x54, 0x8F, 0x15, 0x77, 0x73, 0xD6 }, + }, + { + { 0xF2, 0x06, 0x59, 0x72, 0x49, 0x8D, 0x5E, 0x12, 0x79, 0x8E, 0x1E, 0x1F, 0xF3, 0xE1, 0x1D, 0xE4, + 0x23, 0x3A, 0xBB, 0xBD, 0x30, 0x8A, 0x58, 0x07, 0x60, 0x58, 0x48, 0x18, 0x6E, 0x44, 0x11, 0x7F }, + }, + { + { 0xF2, 0x54, 0x76, 0xF3, 0xAB, 0x8E, 0x5E, 0x0B, 0x9B, 0xB6, 0x1D, 0x4C, 0xE4, 0x50, 0x7F, 0xA3, + 0x52, 0x93, 0xC6, 0x64, 0x15, 0xD7, 0xD1, 0x91, 0x9B, 0x29, 0xBB, 0x8C, 0xBF, 0xFD, 0xA5, 0x00 }, + }, + { + { 0xF2, 0x6F, 0x08, 0x73, 0x87, 0xBC, 0x9B, 0x62, 0xF5, 0x38, 0xB0, 0x76, 0xD6, 0xBD, 0xFD, 0x15, + 0x87, 0x36, 0xDE, 0x71, 0x61, 0xC6, 0xBC, 0xA3, 0x86, 0xF5, 0x7D, 0xD2, 0xB0, 0x0B, 0x8F, 0xE0 }, + }, + { + { 0xF2, 0xB1, 0x95, 0x84, 0x6E, 0xE2, 0xB9, 0xAB, 0x5F, 0x18, 0xE6, 0x80, 0x21, 0xF8, 0xDF, 0x7C, + 0x0B, 0x60, 0x58, 0xDE, 0xDE, 0x86, 0xC5, 0xD5, 0x90, 0xF2, 0xE8, 0x64, 0x3A, 0xFE, 0x04, 0x52 }, + }, + { + { 0xF2, 0xE3, 0x0F, 0xB6, 0xCD, 0x91, 0x67, 0x54, 0x84, 0x72, 0xCC, 0xDF, 0x58, 0x9F, 0x3D, 0x00, + 0x43, 0x0C, 0x22, 0xB8, 0x33, 0x44, 0xA1, 0x16, 0x5B, 0x64, 0xE6, 0x87, 0x4D, 0xF3, 0x5E, 0xDC }, + }, + { + { 0xF2, 0xE5, 0x30, 0x0C, 0x39, 0xF2, 0x86, 0xC6, 0x78, 0x99, 0x90, 0x9C, 0x7C, 0xE7, 0x35, 0x9B, + 0x09, 0x45, 0xD2, 0xAF, 0xD3, 0x4A, 0x6D, 0xD6, 0x9E, 0x08, 0xCD, 0xA5, 0x44, 0xC8, 0x7B, 0x3A }, + }, + { + { 0xF3, 0x0C, 0x0A, 0xED, 0x70, 0x6D, 0x22, 0x55, 0x5F, 0x07, 0x09, 0x6A, 0xF4, 0xB8, 0xBE, 0xDC, + 0x16, 0x3C, 0x0F, 0x6E, 0xD5, 0x34, 0x6E, 0xFC, 0x28, 0xE8, 0xCF, 0xAF, 0x84, 0x2F, 0xA5, 0xD9 }, + }, + { + { 0xF3, 0x25, 0x58, 0x52, 0x53, 0xD2, 0x8E, 0x72, 0x02, 0x3F, 0x04, 0xDA, 0x0A, 0x2C, 0xB5, 0x0F, + 0xBD, 0x4B, 0x75, 0xC2, 0x5A, 0x3A, 0x80, 0x25, 0x3F, 0x70, 0x36, 0xCE, 0x71, 0x74, 0x1B, 0x9B }, + }, + { + { 0xF3, 0x48, 0x7E, 0x13, 0xEA, 0xB9, 0x5D, 0xA9, 0xAF, 0xED, 0xE0, 0x74, 0x84, 0x4B, 0xDE, 0x4C, + 0xA0, 0x31, 0x48, 0x26, 0xCC, 0xBD, 0x06, 0x96, 0x29, 0x8C, 0x35, 0x32, 0x4A, 0x91, 0xCB, 0xEB }, + }, + { + { 0xF3, 0x5F, 0xE6, 0x61, 0xD1, 0x88, 0x65, 0x29, 0x35, 0xE2, 0xC0, 0xE5, 0x19, 0x11, 0x8F, 0x7C, + 0x4E, 0x45, 0x7B, 0x0C, 0x65, 0xC8, 0xE1, 0x4B, 0xCE, 0xDC, 0x7D, 0x4C, 0xC5, 0x1E, 0x81, 0xD0 }, + }, + { + { 0xF3, 0xCB, 0x8E, 0xA4, 0xE8, 0xF2, 0xA7, 0x00, 0x9C, 0x23, 0x3A, 0x64, 0x88, 0x71, 0xDB, 0x46, + 0x04, 0xD5, 0x45, 0x4B, 0xC5, 0x55, 0x9E, 0x9B, 0xF1, 0xBB, 0x2E, 0xB0, 0x00, 0x99, 0x3B, 0xDF }, + }, + { + { 0xF4, 0x0C, 0x5A, 0x4F, 0xE5, 0xA7, 0x08, 0x81, 0x08, 0x7E, 0x61, 0x6A, 0xAD, 0x68, 0x23, 0x09, + 0x21, 0xDA, 0xF0, 0x31, 0x01, 0xEB, 0x91, 0x2F, 0x13, 0x3A, 0x8B, 0xD1, 0xC5, 0xCF, 0x0A, 0xD0 }, + }, + { + { 0xF4, 0x2A, 0x12, 0xA1, 0x43, 0x57, 0xC0, 0xCF, 0x12, 0x2B, 0xBD, 0x82, 0x77, 0x69, 0xFB, 0x56, + 0xDB, 0xF5, 0xB6, 0xEE, 0x89, 0x4F, 0x02, 0x5B, 0x9A, 0xDE, 0x25, 0x88, 0xA9, 0xB5, 0x5D, 0x9B }, + }, + { + { 0xF4, 0x83, 0x3E, 0x73, 0x82, 0x42, 0x02, 0x18, 0xFF, 0xA7, 0x8D, 0xFA, 0x23, 0x50, 0x0E, 0x7D, + 0x34, 0x8F, 0x80, 0xFB, 0x87, 0xE9, 0x82, 0x48, 0x61, 0x3B, 0x59, 0x24, 0x2D, 0x99, 0x1A, 0x78 }, + }, + { + { 0xF4, 0x91, 0x32, 0x07, 0xAD, 0xC7, 0x68, 0xEC, 0x7C, 0xA6, 0xB1, 0xFE, 0x03, 0xEF, 0x9C, 0xF1, + 0x0B, 0x7D, 0xB6, 0x01, 0xD7, 0xF6, 0x6C, 0x10, 0x2C, 0x84, 0xE4, 0x70, 0x92, 0x9E, 0xE4, 0xA1 }, + }, + { + { 0xF4, 0xCC, 0xA7, 0x7F, 0x70, 0x42, 0xD6, 0x78, 0x8A, 0x04, 0x5E, 0xAD, 0x54, 0x95, 0x1A, 0x25, + 0x4A, 0x26, 0x9E, 0xD9, 0x85, 0x4A, 0x62, 0x06, 0xB4, 0xAA, 0x5B, 0xE9, 0x9F, 0xC7, 0xD9, 0xAC }, + }, + { + { 0xF4, 0xD1, 0xD1, 0x3C, 0xFD, 0x04, 0x31, 0x16, 0x09, 0x38, 0xE8, 0xE9, 0xB2, 0xE3, 0x80, 0x61, + 0x97, 0xCA, 0x7F, 0xFD, 0xEC, 0x7A, 0xAD, 0xFE, 0xAF, 0xFB, 0x4D, 0xA4, 0x72, 0x92, 0x4E, 0xDF }, + }, + { + { 0xF5, 0x12, 0x02, 0xF2, 0xDD, 0x4C, 0x4A, 0xD1, 0x04, 0x3A, 0xF5, 0xA3, 0x75, 0xAD, 0xD0, 0x69, + 0xE7, 0x4B, 0x4C, 0x3E, 0xFA, 0xB5, 0xE0, 0xF6, 0xDD, 0xA9, 0x20, 0xD2, 0x3D, 0xB7, 0xCC, 0x73 }, + }, + { + { 0xF5, 0x82, 0xF1, 0x66, 0xB8, 0x2B, 0xED, 0x47, 0xEF, 0xE3, 0x66, 0x1A, 0xA8, 0x02, 0x32, 0xFA, + 0x81, 0x67, 0xD2, 0xE8, 0x97, 0x96, 0xA3, 0x66, 0xEA, 0x35, 0xAD, 0x40, 0xA1, 0xBA, 0x2F, 0x66 }, + }, + { + { 0xF5, 0x98, 0x77, 0xC3, 0xC9, 0x03, 0xF2, 0x02, 0xDD, 0xB7, 0x2C, 0xE9, 0x9B, 0x18, 0x02, 0x63, + 0x9A, 0xA6, 0x53, 0x9B, 0x08, 0x6E, 0xAA, 0x74, 0xCA, 0xAB, 0x16, 0xAB, 0x9B, 0xF3, 0x0D, 0x95 }, + }, + { + { 0xF5, 0xCA, 0x51, 0xE5, 0xB2, 0x72, 0xD3, 0x77, 0x52, 0x4A, 0x38, 0xD1, 0xA0, 0x3B, 0x51, 0x23, + 0x7C, 0xA0, 0x89, 0x47, 0x24, 0x19, 0xE5, 0x61, 0x9F, 0xFD, 0x71, 0x7A, 0x09, 0x8B, 0x5B, 0x42 }, + }, + { + { 0xF5, 0xE1, 0xF7, 0xDA, 0x24, 0x9D, 0xB8, 0x7D, 0x6B, 0xB8, 0xF9, 0x6E, 0xE7, 0x3D, 0xD1, 0x31, + 0xBD, 0xDF, 0xAF, 0x62, 0xCC, 0x0B, 0x46, 0x5F, 0x3A, 0x47, 0x4F, 0x91, 0xD3, 0xE3, 0xB5, 0xEC }, + }, + { + { 0xF6, 0x13, 0xD5, 0x90, 0x46, 0xD1, 0x66, 0x71, 0xD3, 0xC5, 0x60, 0x17, 0x6F, 0x3D, 0x77, 0xFD, + 0xC5, 0x1E, 0x5F, 0x57, 0xB5, 0xE4, 0x8A, 0xE7, 0xA4, 0xB9, 0x70, 0x0A, 0x11, 0xD4, 0x69, 0x3A }, + }, + { + { 0xF6, 0x1E, 0x88, 0xE4, 0x31, 0x76, 0x13, 0x50, 0x00, 0x62, 0x99, 0x19, 0xD9, 0x39, 0x82, 0xDB, + 0x67, 0xE9, 0xD1, 0x77, 0x4E, 0x7E, 0xD0, 0xB4, 0xFA, 0x03, 0x8E, 0x1B, 0x24, 0xEC, 0x0A, 0xCF }, + }, + { + { 0xF6, 0x41, 0xE7, 0xE0, 0x1B, 0xF4, 0xF2, 0xB0, 0xD0, 0xC4, 0x8B, 0xA6, 0x38, 0xA0, 0x2E, 0x26, + 0xBD, 0xDB, 0xD7, 0x7B, 0xC5, 0xE9, 0x72, 0x61, 0x94, 0xDB, 0x1A, 0xEA, 0x4F, 0x2F, 0xD7, 0x71 }, + }, + { + { 0xF6, 0x54, 0x6B, 0x2F, 0xFE, 0x2B, 0xAE, 0xF7, 0x35, 0xE8, 0x25, 0x67, 0xA6, 0xE2, 0x36, 0x75, + 0x03, 0x94, 0xC1, 0x19, 0x14, 0x09, 0x87, 0x0C, 0x6F, 0xBE, 0x95, 0x2D, 0x08, 0xA3, 0x3A, 0xBA }, + }, + { + { 0xF6, 0x6E, 0xDF, 0xF6, 0xA3, 0x94, 0xC6, 0x6D, 0xF5, 0xBF, 0x9F, 0xE7, 0x84, 0xE6, 0x31, 0xF7, + 0x9A, 0xF3, 0x9C, 0xB1, 0x4F, 0x3A, 0xC5, 0x16, 0x11, 0xF6, 0xFE, 0x1D, 0x9D, 0x1E, 0x1C, 0xE9 }, + }, + { + { 0xF6, 0x93, 0x79, 0x9B, 0xBD, 0xF1, 0xFF, 0x89, 0xBA, 0x48, 0xF2, 0xBF, 0xE2, 0x8F, 0x89, 0x36, + 0x6A, 0xC3, 0xB4, 0x13, 0x54, 0x7D, 0xB8, 0x06, 0x0D, 0xB5, 0x07, 0xAB, 0xC9, 0x42, 0x0B, 0xA8 }, + }, + { + { 0xF6, 0x9D, 0x95, 0x42, 0xDB, 0x97, 0xEC, 0x65, 0xBF, 0xF8, 0x45, 0x23, 0x0A, 0xDC, 0x76, 0xB0, + 0x3C, 0x15, 0x91, 0x2F, 0x6F, 0x09, 0x97, 0x32, 0x9D, 0x5C, 0x2D, 0x14, 0xF6, 0xB2, 0x5E, 0xDF }, + }, + { + { 0xF6, 0xA8, 0x1F, 0x59, 0xB1, 0x13, 0xBA, 0xB9, 0x52, 0xD6, 0x2B, 0xDA, 0xB9, 0x70, 0xC8, 0xEE, + 0xD9, 0xF7, 0x26, 0x22, 0xFA, 0x8A, 0xC6, 0xD8, 0x48, 0xC3, 0xE2, 0xC6, 0x14, 0x62, 0xEF, 0x95 }, + }, + { + { 0xF6, 0xAA, 0xEF, 0x12, 0xFC, 0x25, 0x2D, 0xD9, 0xE7, 0xF7, 0x75, 0x2C, 0x2F, 0x74, 0x5D, 0x59, + 0xD6, 0x37, 0x57, 0xC6, 0xCC, 0x14, 0xD2, 0x25, 0x3A, 0x64, 0x7C, 0xD1, 0x81, 0x49, 0x39, 0x93 }, + }, + { + { 0xF6, 0xE3, 0x03, 0x5A, 0xEC, 0xC9, 0xC9, 0x6B, 0x03, 0xE9, 0x73, 0x71, 0xF3, 0x60, 0xF5, 0xBA, + 0x02, 0x14, 0x13, 0x81, 0x27, 0x5D, 0x71, 0xC1, 0x41, 0xEA, 0xF6, 0x3A, 0x06, 0x55, 0x23, 0x07 }, + }, + { + { 0xF6, 0xFE, 0xB3, 0x88, 0x25, 0xE6, 0xEE, 0x7B, 0xA5, 0xBF, 0xD9, 0x4B, 0xB5, 0x77, 0x12, 0xA4, + 0x14, 0x1E, 0xB8, 0xD0, 0x92, 0xBB, 0x2D, 0x5D, 0xD1, 0x64, 0xF6, 0x74, 0xA2, 0xE5, 0xB0, 0x64 }, + }, + { + { 0xF7, 0x22, 0xE3, 0x21, 0x67, 0xF0, 0x0D, 0x96, 0xEB, 0x35, 0xF9, 0xB9, 0x43, 0xD2, 0x56, 0x26, + 0x5B, 0xA5, 0x5E, 0x70, 0x34, 0x6D, 0x8C, 0xEE, 0x54, 0x48, 0x29, 0xC2, 0xB0, 0x9B, 0x95, 0x90 }, + }, + { + { 0xF7, 0x76, 0x3B, 0xE8, 0x7E, 0x67, 0x8B, 0x31, 0x18, 0x66, 0x11, 0x9A, 0xD5, 0xAC, 0xDF, 0x8F, + 0xDB, 0x3B, 0xBB, 0x46, 0x5B, 0x83, 0x40, 0x61, 0x64, 0xAC, 0x21, 0x30, 0x34, 0xE8, 0xAD, 0x0E }, + }, + { + { 0xF7, 0x77, 0x35, 0xCE, 0xE3, 0x38, 0x5C, 0xEC, 0xBC, 0x88, 0x4A, 0x54, 0xCE, 0x7F, 0xB1, 0x78, + 0xA0, 0x40, 0x3C, 0x3E, 0x2B, 0x16, 0x9E, 0x49, 0xF9, 0x38, 0xA8, 0x1D, 0xAD, 0x15, 0xDC, 0x1C }, + }, + { + { 0xF7, 0xB5, 0x97, 0x11, 0xCA, 0xE9, 0x11, 0xEF, 0x56, 0xC8, 0x1B, 0x54, 0x03, 0x6F, 0x21, 0x32, + 0xEC, 0xFA, 0x0F, 0x09, 0x08, 0x90, 0xAF, 0xCA, 0x7E, 0x16, 0x39, 0x4E, 0xD4, 0x99, 0xE8, 0x0C }, + }, + { + { 0xF7, 0xD9, 0x10, 0xBC, 0xE2, 0xAB, 0x1A, 0xCA, 0xA6, 0x7B, 0x66, 0x3A, 0x8A, 0xDD, 0xBD, 0xA2, + 0x93, 0xB5, 0x1C, 0xED, 0xE7, 0x86, 0x8B, 0x69, 0xA3, 0xCE, 0xA7, 0xFF, 0xD0, 0x10, 0xB3, 0xA8 }, + }, + { + { 0xF8, 0x0C, 0x71, 0x5B, 0x84, 0x49, 0x5D, 0xBE, 0xDA, 0xBF, 0xEB, 0x1B, 0x05, 0x7F, 0xA0, 0x80, + 0x93, 0x10, 0x5D, 0x74, 0x6F, 0x8D, 0x4F, 0x10, 0x35, 0xD4, 0xE1, 0xD8, 0x6B, 0xE2, 0xB4, 0x80 }, + }, + { + { 0xF8, 0x24, 0x21, 0x09, 0xF2, 0x80, 0xE3, 0x51, 0xBF, 0xD6, 0x11, 0x95, 0xF8, 0x84, 0x52, 0x5D, + 0xC8, 0xE0, 0x64, 0xD6, 0x85, 0x07, 0x57, 0x49, 0x52, 0x08, 0x3F, 0xAD, 0xCD, 0xCB, 0x91, 0x4B }, + }, + { + { 0xF8, 0x2C, 0xC3, 0xC4, 0x5E, 0x9F, 0x62, 0x42, 0x7D, 0xFF, 0xE7, 0x8F, 0x48, 0x8D, 0x5B, 0x5F, + 0x79, 0x2A, 0xF0, 0xBE, 0x06, 0x5D, 0xDD, 0x59, 0xCA, 0x2C, 0x28, 0x61, 0xFB, 0x32, 0xC3, 0x2A }, + }, + { + { 0xF8, 0x64, 0x44, 0x3E, 0x2F, 0x63, 0x9E, 0x7C, 0xFF, 0xD2, 0x42, 0x21, 0xF6, 0x1B, 0xBF, 0xF0, + 0x7C, 0xCE, 0x5C, 0x61, 0xDD, 0xB1, 0x68, 0xB3, 0xB4, 0x04, 0xD7, 0xC8, 0xCD, 0xCA, 0x18, 0xB2 }, + }, + { + { 0xF8, 0x76, 0xC7, 0x3F, 0xAE, 0x72, 0x52, 0x5D, 0x4A, 0xD5, 0x26, 0x69, 0xBC, 0x5A, 0x34, 0xDC, + 0x8D, 0x46, 0x14, 0xE9, 0x3B, 0xFD, 0xEE, 0xEC, 0xA3, 0xD9, 0xBE, 0xCA, 0x97, 0x2E, 0xC6, 0xB8 }, + }, + { + { 0xF8, 0x81, 0x51, 0xC3, 0xD8, 0x91, 0x6B, 0x1D, 0x03, 0xA0, 0x5F, 0x55, 0x85, 0xEC, 0x38, 0xAD, + 0x1C, 0xC0, 0x3A, 0x36, 0x2E, 0x68, 0x60, 0x8E, 0x39, 0x13, 0xED, 0xDF, 0xB1, 0xFD, 0xF1, 0x27 }, + }, + { + { 0xF8, 0x94, 0xF9, 0x67, 0x36, 0x9C, 0xE7, 0xCF, 0xA3, 0x1A, 0xC1, 0x9A, 0x66, 0x65, 0xB0, 0xC4, + 0x24, 0xBA, 0x40, 0x8A, 0xD5, 0xD3, 0x65, 0xF1, 0x68, 0xD8, 0xBE, 0xEB, 0x79, 0xF4, 0x89, 0xF3 }, + }, + { + { 0xF8, 0xCF, 0x1E, 0x08, 0x6A, 0x6A, 0x06, 0x3F, 0xAD, 0x25, 0x74, 0x25, 0xAA, 0xE7, 0x20, 0x01, + 0x40, 0x05, 0xB4, 0x15, 0x91, 0x2D, 0xBB, 0x8C, 0x0B, 0xC9, 0x99, 0xAF, 0x48, 0x48, 0xCF, 0xE5 }, + }, + { + { 0xF9, 0x0E, 0x7C, 0x21, 0x81, 0xBA, 0x53, 0x4D, 0xCF, 0x5B, 0xB6, 0xDB, 0xF7, 0xF9, 0xAD, 0xA3, + 0xFF, 0x98, 0xDE, 0x50, 0x0C, 0xBD, 0x42, 0x12, 0xC0, 0xD1, 0xFA, 0x05, 0x82, 0x80, 0xFD, 0x57 }, + }, + { + { 0xF9, 0x29, 0xC1, 0x0E, 0x66, 0x15, 0xB3, 0xE7, 0x1F, 0xDA, 0x31, 0xF1, 0xB7, 0x1A, 0x44, 0x47, + 0x00, 0x7E, 0xE3, 0x7A, 0x39, 0x3C, 0x32, 0xE0, 0xFB, 0x34, 0xFC, 0xF1, 0x05, 0x5D, 0x51, 0x8F }, + }, + { + { 0xF9, 0x8B, 0x43, 0x93, 0xF7, 0xC3, 0x1D, 0x37, 0x03, 0x49, 0x81, 0x63, 0xE7, 0x77, 0x9F, 0x75, + 0xDE, 0xF6, 0xAF, 0x44, 0x10, 0x44, 0x6A, 0x03, 0x4D, 0x52, 0x8C, 0xB7, 0x14, 0x3A, 0xA0, 0x13 }, + }, + { + { 0xF9, 0xA7, 0xDD, 0xD3, 0xFF, 0x51, 0xAF, 0x30, 0x7F, 0x95, 0x4F, 0x7B, 0x44, 0xDB, 0xD2, 0x42, + 0x83, 0xCF, 0x97, 0xB6, 0x25, 0xBE, 0x76, 0x6B, 0x43, 0x5E, 0x6C, 0x26, 0xD9, 0xCC, 0xAC, 0xC3 }, + }, + { + { 0xF9, 0xAF, 0xE7, 0x1B, 0xF1, 0xF4, 0x1B, 0xCD, 0xE6, 0x4F, 0x3F, 0x35, 0x82, 0x60, 0xE7, 0x74, + 0x18, 0x76, 0x18, 0x8D, 0xE6, 0x99, 0x04, 0xA6, 0xD0, 0xB6, 0x3A, 0x32, 0x93, 0x02, 0xFA, 0x3D }, + }, + { + { 0xF9, 0xF5, 0xFD, 0xAE, 0x79, 0x59, 0x07, 0x40, 0xB3, 0x85, 0xA8, 0x33, 0x12, 0x7A, 0x28, 0x21, + 0xFB, 0x9D, 0x03, 0xC0, 0xC6, 0xA1, 0xBE, 0x42, 0xEB, 0x2A, 0xBF, 0xD2, 0x0D, 0xF6, 0xB7, 0xB9 }, + }, + { + { 0xF9, 0xFB, 0xFD, 0xD0, 0x91, 0x50, 0x4F, 0x93, 0x08, 0xBC, 0xA0, 0xE3, 0x03, 0x1B, 0xDE, 0x76, + 0x36, 0x62, 0x6B, 0x1E, 0x53, 0x6E, 0xCF, 0xAE, 0x7B, 0xB7, 0x34, 0xC2, 0xE6, 0xD0, 0xE9, 0xDE }, + }, + { + { 0xFA, 0x2A, 0x2F, 0x77, 0x8C, 0xBE, 0xF9, 0xF1, 0xB4, 0xA8, 0xFC, 0x57, 0xBF, 0x79, 0x5F, 0x1F, + 0x8C, 0xF6, 0x23, 0xDB, 0x15, 0xBE, 0x65, 0x81, 0xEB, 0xA3, 0x6B, 0x2A, 0x86, 0x49, 0xD2, 0x1E }, + }, + { + { 0xFA, 0x50, 0x6B, 0xD0, 0x69, 0x4B, 0x92, 0x94, 0xB9, 0x9F, 0x7B, 0x5C, 0x90, 0x07, 0xCE, 0x13, + 0xA6, 0x03, 0x07, 0xF4, 0xC5, 0x94, 0xEB, 0xFB, 0xE7, 0xB3, 0x4A, 0x05, 0x50, 0xAE, 0x3D, 0x4F }, + }, + { + { 0xFA, 0x83, 0xFB, 0xD3, 0x29, 0x80, 0xB9, 0x55, 0x23, 0xDA, 0xFA, 0xED, 0xFE, 0x15, 0x0E, 0x91, + 0xFF, 0x80, 0xEB, 0xDC, 0xB2, 0xB7, 0x8D, 0x9E, 0x9C, 0x3A, 0x70, 0xFD, 0x79, 0x85, 0x1B, 0x69 }, + }, + { + { 0xFA, 0x95, 0xB3, 0xF9, 0x6F, 0xC9, 0xC2, 0xD3, 0xA7, 0x9B, 0x05, 0x48, 0x67, 0x6C, 0x18, 0x48, + 0x5A, 0xF1, 0x10, 0x4C, 0xCA, 0x9B, 0xB6, 0xB8, 0xDD, 0x9B, 0x5A, 0x54, 0x3C, 0xB6, 0xC6, 0x2E }, + }, + { + { 0xFA, 0xE4, 0x72, 0x1E, 0x39, 0x47, 0xA5, 0x0D, 0xD0, 0x4D, 0x16, 0xAC, 0xEF, 0xF3, 0x55, 0xC0, + 0x87, 0xB7, 0xE2, 0x24, 0x6B, 0xE6, 0x0F, 0xBC, 0x26, 0x2A, 0x53, 0x52, 0xAD, 0xAC, 0x18, 0x01 }, + }, + { + { 0xFB, 0x44, 0x15, 0x70, 0x4C, 0x1D, 0x61, 0x55, 0x10, 0x6D, 0x88, 0xF3, 0xB2, 0x0F, 0xEC, 0x9F, + 0x6E, 0x82, 0x0C, 0x82, 0x24, 0xFE, 0xE3, 0x5E, 0x45, 0x22, 0x85, 0x19, 0x05, 0xF3, 0x28, 0xD7 }, + }, + { + { 0xFB, 0x9A, 0xF7, 0x9D, 0xEA, 0x18, 0xAF, 0x62, 0x99, 0x85, 0x0E, 0x25, 0x15, 0x9B, 0x4F, 0xB2, + 0x24, 0xCB, 0xB0, 0xF1, 0x4E, 0xAD, 0x7E, 0x85, 0xF6, 0x0C, 0x2A, 0xB2, 0x09, 0xEA, 0x45, 0x0D }, + }, + { + { 0xFB, 0xC4, 0xC9, 0xBA, 0xCF, 0xE3, 0xDA, 0x64, 0x13, 0x18, 0x26, 0x6B, 0x72, 0x58, 0x56, 0x00, + 0x35, 0xBC, 0x64, 0x60, 0x8E, 0x34, 0xB9, 0x90, 0xCA, 0x92, 0xA5, 0x52, 0xF3, 0x14, 0x21, 0x61 }, + }, + { + { 0xFB, 0xDD, 0x65, 0xD5, 0x6E, 0x48, 0x0C, 0xD2, 0x53, 0x1B, 0xAB, 0xFB, 0x98, 0xAD, 0x6E, 0x35, + 0x22, 0x1E, 0xB9, 0x8A, 0xE4, 0x63, 0x2C, 0x43, 0x12, 0xDB, 0x75, 0x17, 0xB1, 0x36, 0x54, 0x72 }, + }, + { + { 0xFB, 0xED, 0xD3, 0x88, 0x89, 0xF0, 0xB4, 0x1F, 0x73, 0x4D, 0xE2, 0xF4, 0xC9, 0xD6, 0xF2, 0x7C, + 0x8D, 0x4A, 0xA9, 0xAB, 0x73, 0x64, 0x91, 0xE1, 0x64, 0xE1, 0x21, 0xB7, 0xBC, 0xAF, 0x44, 0xE8 }, + }, + { + { 0xFC, 0x01, 0xA5, 0x5A, 0x36, 0xCC, 0x8B, 0x7B, 0x7C, 0xA2, 0xEA, 0xB0, 0x84, 0x60, 0xC2, 0x8D, + 0x1D, 0x6C, 0xD8, 0x9C, 0x57, 0x59, 0x94, 0x05, 0xD5, 0x37, 0x4B, 0x91, 0xAA, 0xEB, 0xC8, 0x79 }, + }, + { + { 0xFC, 0x11, 0xD0, 0x51, 0xC2, 0x7A, 0x33, 0xA2, 0xE8, 0x1C, 0xB7, 0x20, 0xA9, 0xE6, 0xD8, 0xA7, + 0xFE, 0x3C, 0x5D, 0x94, 0x13, 0x9C, 0xBA, 0x0F, 0x5E, 0xAA, 0x61, 0xBA, 0xBE, 0x34, 0x1A, 0x8B }, + }, + { + { 0xFC, 0x2F, 0x1E, 0x84, 0x29, 0x82, 0xC9, 0x3B, 0x85, 0xD2, 0x79, 0xA8, 0x3D, 0xF2, 0x13, 0xC1, + 0xA3, 0x33, 0x29, 0x7D, 0x42, 0xA3, 0x1A, 0x8C, 0xC7, 0x8A, 0x3F, 0x73, 0xCD, 0xF8, 0xAF, 0x9A }, + }, + { + { 0xFC, 0x4D, 0x9A, 0x37, 0xE5, 0xF7, 0x32, 0x72, 0xD0, 0xA9, 0xDF, 0xCC, 0xE9, 0x03, 0x12, 0xC7, + 0x52, 0xE1, 0xB5, 0x2E, 0xB6, 0x54, 0xC4, 0x2C, 0x36, 0x94, 0x4B, 0x90, 0x2A, 0x30, 0x41, 0x07 }, + }, + { + { 0xFC, 0x53, 0x0D, 0x33, 0x87, 0x60, 0xB5, 0x92, 0x47, 0x55, 0xE1, 0x55, 0x62, 0x34, 0xF0, 0x2D, + 0x84, 0x04, 0x71, 0x11, 0x08, 0xF1, 0xB7, 0xC8, 0xE4, 0x8C, 0x05, 0xDB, 0x84, 0xF8, 0xBA, 0x7F }, + }, + { + { 0xFC, 0x55, 0x86, 0x91, 0xDA, 0xFF, 0xE1, 0xE3, 0x53, 0x8D, 0x38, 0xA6, 0xD3, 0xA9, 0xE6, 0xE7, + 0xC9, 0x9D, 0x24, 0x0C, 0x86, 0x89, 0x66, 0x73, 0x56, 0x27, 0x99, 0x72, 0xFB, 0x4F, 0x30, 0x85 }, + }, + { + { 0xFC, 0x56, 0xDB, 0xA1, 0xE7, 0xAF, 0xBD, 0xAA, 0x07, 0x33, 0xC6, 0x91, 0x1C, 0x5F, 0x1F, 0x18, + 0x28, 0xCB, 0x12, 0x98, 0x31, 0x40, 0x1A, 0x3C, 0xFD, 0xEA, 0xA7, 0x24, 0x62, 0x95, 0x35, 0x94 }, + }, + { + { 0xFC, 0x83, 0xC2, 0x89, 0x89, 0x5A, 0x92, 0x08, 0xC9, 0xB1, 0x7A, 0x16, 0xBC, 0xE5, 0xCE, 0x80, + 0xE8, 0xF4, 0xA0, 0x77, 0x21, 0x25, 0x29, 0xCE, 0x0B, 0xC7, 0xF5, 0x42, 0xC6, 0xCB, 0xDE, 0x1A }, + }, + { + { 0xFC, 0xA6, 0x23, 0x5D, 0x2A, 0xA4, 0xB1, 0xB2, 0x51, 0x50, 0x78, 0x57, 0xB4, 0xF0, 0x08, 0xDF, + 0xD5, 0x27, 0x04, 0x2C, 0xE0, 0x45, 0x01, 0xAA, 0xE2, 0x9D, 0xD2, 0x05, 0xBB, 0xEF, 0xCE, 0x0D }, + }, + { + { 0xFC, 0xB7, 0xFE, 0x6D, 0x32, 0x2D, 0x87, 0xC7, 0x51, 0x59, 0x47, 0x79, 0x50, 0x88, 0x95, 0x8A, + 0x5F, 0x75, 0xBF, 0xF1, 0x18, 0x40, 0x21, 0xEF, 0x05, 0xD6, 0xF4, 0xD3, 0xC4, 0x3B, 0x85, 0xC5 }, + }, + { + { 0xFC, 0xE5, 0x47, 0xE1, 0x43, 0x54, 0x87, 0x7F, 0xED, 0x93, 0x0B, 0x19, 0xFD, 0xE7, 0xC6, 0xF9, + 0xCB, 0xF5, 0xD4, 0xB5, 0x7B, 0xA5, 0x34, 0x4A, 0x0D, 0x40, 0x10, 0xFF, 0x70, 0x5A, 0x03, 0xDE }, + }, + { + { 0xFC, 0xE7, 0x34, 0xE1, 0x2B, 0x8E, 0xFB, 0x43, 0x12, 0x71, 0xBF, 0xF6, 0x7A, 0x7A, 0x0A, 0x93, + 0xB2, 0x19, 0xDD, 0x5E, 0x5D, 0xCC, 0x12, 0x58, 0x59, 0x4D, 0x96, 0xFC, 0xE1, 0x93, 0xB8, 0x60 }, + }, + { + { 0xFC, 0xF6, 0x81, 0x39, 0x64, 0x2F, 0x8D, 0x79, 0xA4, 0x86, 0x15, 0xE4, 0x44, 0xCE, 0xD6, 0x90, + 0xFA, 0x60, 0xEB, 0xFD, 0x0A, 0x06, 0x0A, 0x49, 0x93, 0x89, 0x98, 0x8A, 0x2C, 0x2C, 0x05, 0xCE }, + }, + { + { 0xFD, 0x44, 0x89, 0xF0, 0x27, 0x27, 0xDB, 0x36, 0xC1, 0x84, 0x35, 0xE5, 0xC4, 0xA9, 0xF8, 0x63, + 0xAC, 0xD8, 0x04, 0xAE, 0x1B, 0x39, 0x7F, 0xBB, 0x83, 0xD4, 0x27, 0x5A, 0xF5, 0x6D, 0xF8, 0x9F }, + }, + { + { 0xFD, 0x85, 0xCC, 0x72, 0x1B, 0x77, 0xC4, 0x41, 0xC8, 0xB1, 0xF1, 0x4A, 0xDE, 0x34, 0x8A, 0x3E, + 0xC9, 0xFA, 0xA6, 0x26, 0x4A, 0x91, 0x3F, 0xB8, 0xD3, 0x4C, 0x98, 0x3B, 0x43, 0x60, 0xE9, 0x7B }, + }, + { + { 0xFD, 0x9C, 0xFE, 0x14, 0xDA, 0xD8, 0x97, 0x8C, 0x5B, 0xC8, 0x88, 0x93, 0x8F, 0x16, 0xF3, 0xB3, + 0x98, 0xF7, 0x63, 0xA3, 0xAD, 0xAF, 0xAA, 0x4A, 0xD9, 0x41, 0xB7, 0xE3, 0x87, 0xEB, 0x4F, 0x4A }, + }, + { + { 0xFD, 0xED, 0x92, 0xCB, 0x40, 0x91, 0x66, 0x82, 0x3A, 0x35, 0xE2, 0x17, 0xF3, 0x0B, 0x38, 0xC4, + 0x86, 0xF8, 0x3E, 0xF2, 0xD4, 0xF2, 0x7B, 0x05, 0xF1, 0x8C, 0x74, 0x49, 0x81, 0x33, 0x9A, 0x1C }, + }, + { + { 0xFE, 0x0F, 0x6A, 0xDC, 0x4C, 0xB9, 0xA1, 0x3F, 0xCB, 0xAF, 0xD8, 0x98, 0xC1, 0xBB, 0x53, 0xB3, + 0xD9, 0x33, 0x74, 0x49, 0x9D, 0xF3, 0x47, 0xB7, 0x1F, 0x13, 0x4C, 0x94, 0x3C, 0x4F, 0xF1, 0x20 }, + }, + { + { 0xFE, 0x26, 0xB2, 0xA6, 0x45, 0xA3, 0x1A, 0x91, 0x11, 0x00, 0x09, 0x9A, 0xA9, 0xA2, 0x93, 0x9F, + 0x49, 0xE9, 0xFB, 0xEA, 0x64, 0x48, 0x7B, 0xDF, 0x68, 0xA5, 0x23, 0x70, 0x32, 0x92, 0xD6, 0xA0 }, + }, + { + { 0xFE, 0x42, 0x1B, 0x24, 0x4E, 0x0E, 0x81, 0x6D, 0x9F, 0x26, 0xB3, 0x52, 0xC8, 0x31, 0xD9, 0x30, + 0xE1, 0xC1, 0xC5, 0xD2, 0xFA, 0x4E, 0x0A, 0x1C, 0x77, 0x96, 0xA1, 0xF2, 0x02, 0x0E, 0xF1, 0x67 }, + }, + { + { 0xFE, 0x4F, 0x35, 0x6C, 0x7F, 0x9B, 0xFC, 0x17, 0xFF, 0xCB, 0x68, 0xD0, 0x76, 0x4E, 0xCB, 0x2A, + 0x87, 0xCA, 0xA0, 0xAE, 0x4C, 0xB5, 0x66, 0x62, 0x21, 0x04, 0xD3, 0x6F, 0xFB, 0x52, 0xCB, 0x29 }, + }, + { + { 0xFE, 0xAA, 0xBD, 0xD7, 0x92, 0xA4, 0x31, 0x68, 0x99, 0x98, 0x3E, 0xF5, 0x7B, 0xEA, 0x99, 0xBE, + 0x81, 0x15, 0x6D, 0x47, 0x9C, 0xDF, 0x7B, 0x81, 0xF5, 0x58, 0x49, 0x60, 0x92, 0xD3, 0x17, 0x16 }, + }, + { + { 0xFE, 0xB8, 0xF0, 0x0C, 0x83, 0xEA, 0x05, 0xBD, 0xA2, 0x85, 0x0E, 0xC5, 0xBB, 0x77, 0x43, 0xE4, + 0x42, 0xEB, 0xF4, 0x31, 0xE3, 0xBA, 0x75, 0x4A, 0xA2, 0xD9, 0x47, 0x5E, 0x98, 0x0B, 0x6E, 0x3A }, + }, + { + { 0xFE, 0xC5, 0xFF, 0x1D, 0x4E, 0x56, 0x49, 0xB0, 0x1F, 0xBA, 0xAB, 0xD9, 0x02, 0x2D, 0xBF, 0x86, + 0xA7, 0x60, 0x2D, 0x89, 0x04, 0x45, 0x1B, 0xF4, 0x93, 0xC4, 0xAF, 0xE1, 0x1C, 0x99, 0xAE, 0x07 }, + }, + { + { 0xFE, 0xFF, 0x60, 0xF2, 0xDA, 0x22, 0xC9, 0xDB, 0xBC, 0x3D, 0x10, 0x13, 0x1E, 0xE4, 0x39, 0xBA, + 0xE3, 0xE0, 0x0E, 0x58, 0xCC, 0xE0, 0xBD, 0x07, 0x4F, 0x55, 0xF7, 0x7C, 0x3B, 0x00, 0xF9, 0x35 }, + }, + { + { 0xFF, 0x0E, 0x31, 0x58, 0x55, 0x2A, 0x28, 0x10, 0xA9, 0x71, 0x3D, 0xE8, 0x3B, 0x03, 0x25, 0xA1, + 0x16, 0x4A, 0xA6, 0x0E, 0x9C, 0xE5, 0x74, 0x20, 0x1D, 0x6B, 0x9B, 0x8B, 0xEA, 0xBA, 0x1F, 0x47 }, + }, + { + { 0xFF, 0x4C, 0x40, 0xA0, 0x13, 0xA4, 0x1E, 0x5A, 0xDB, 0x23, 0x1A, 0x14, 0xA9, 0x77, 0xB5, 0x8C, + 0x4F, 0xE7, 0x8D, 0x0C, 0xA3, 0x5C, 0x59, 0x35, 0xE2, 0x22, 0x07, 0x21, 0xCC, 0x54, 0x14, 0xF3 }, + }, + { + { 0xFF, 0x82, 0x6E, 0x2D, 0x0C, 0xB7, 0x71, 0x68, 0x68, 0x67, 0x5A, 0xE4, 0xB4, 0x31, 0xB6, 0x37, + 0x1E, 0x9F, 0x0C, 0xDF, 0xCC, 0xB4, 0x9D, 0x43, 0xBA, 0x30, 0x49, 0xBF, 0xDD, 0x2C, 0x41, 0xB1 }, + }, + { + { 0xFF, 0xC9, 0x74, 0x1A, 0x5E, 0x6A, 0x5A, 0x7C, 0xC3, 0xBB, 0x10, 0xCA, 0x31, 0x3F, 0x97, 0x7A, + 0xA9, 0xCC, 0xC1, 0x92, 0x28, 0xDB, 0xE1, 0x39, 0xB0, 0xC2, 0xD9, 0xF1, 0xF4, 0x1D, 0x83, 0x1B }, + }, + { + { 0xFF, 0xD5, 0x3F, 0x73, 0x6D, 0x4E, 0x0D, 0xC3, 0xBE, 0x8E, 0x43, 0xD9, 0x15, 0x09, 0xE0, 0x44, + 0x79, 0x1D, 0x36, 0xD4, 0x49, 0x12, 0xA6, 0xFA, 0xBA, 0x52, 0x28, 0x25, 0x10, 0x0E, 0x0A, 0x7C }, + }, + { + { 0xFF, 0xDC, 0x6B, 0x85, 0xFE, 0x7B, 0x10, 0x83, 0xB5, 0x41, 0x6F, 0x80, 0x6F, 0xC2, 0x44, 0xB9, + 0xE4, 0xDF, 0x42, 0x99, 0xFB, 0xE3, 0xF6, 0x81, 0xAF, 0x3F, 0x5C, 0xF4, 0x22, 0x5A, 0x8E, 0xAF }, + }, +}; diff --git a/security/certverifier/CertVerifier.cpp b/security/certverifier/CertVerifier.cpp index e02c0a3969..408bc124d8 100644 --- a/security/certverifier/CertVerifier.cpp +++ b/security/certverifier/CertVerifier.cpp @@ -11,7 +11,6 @@ #include "ExtendedValidation.h" #include "NSSCertDBTrustDomain.h" #include "NSSErrorsService.h" -#include "PublicKeyPinningService.h" #include "cert.h" #include "pk11pub.h" #include "pkix/pkix.h" @@ -77,55 +76,6 @@ IsCertBuiltInRoot(CERTCertificate* cert, bool& result) { return SECSuccess; } -Result -CertListContainsExpectedKeys(const CERTCertList* certList, - const char* hostname, Time time, - CertVerifier::PinningMode pinningMode) -{ - if (pinningMode == CertVerifier::pinningDisabled) { - MOZ_LOG(gCertVerifierLog, LogLevel::Debug, - ("Pinning is disabled; not checking keys.")); - return Success; - } - - if (!certList) { - return Result::FATAL_ERROR_INVALID_ARGS; - } - - CERTCertListNode* rootNode = CERT_LIST_TAIL(certList); - if (CERT_LIST_END(rootNode, certList)) { - return Result::FATAL_ERROR_INVALID_ARGS; - } - - bool isBuiltInRoot = false; - SECStatus srv = IsCertBuiltInRoot(rootNode->cert, isBuiltInRoot); - if (srv != SECSuccess) { - return MapPRErrorCodeToResult(PR_GetError()); - } - // If desired, the user can enable "allow user CA MITM mode", in which - // case key pinning is not enforced for certificates that chain to trust - // anchors that are not in Mozilla's root program - if (!isBuiltInRoot && pinningMode == CertVerifier::pinningAllowUserCAMITM) { - return Success; - } - - bool enforceTestMode = (pinningMode == CertVerifier::pinningEnforceTestMode); - bool chainHasValidPins; - nsresult rv = PublicKeyPinningService::ChainHasValidPins(certList, - hostname, - time, - enforceTestMode, - chainHasValidPins); - if (NS_FAILED(rv)) { - return Result::FATAL_ERROR_LIBRARY_FAILURE; - } - if (!chainHasValidPins) { - return Result::ERROR_KEY_PINNING_FAILURE; - } - - return Success; -} - static Result BuildCertChainForOneKeyUsage(NSSCertDBTrustDomain& trustDomain, Input certDER, Time time, KeyUsage ku1, KeyUsage ku2, diff --git a/security/certverifier/NSSCertDBTrustDomain.cpp b/security/certverifier/NSSCertDBTrustDomain.cpp index 1be390d6c0..7abd3285b6 100644 --- a/security/certverifier/NSSCertDBTrustDomain.cpp +++ b/security/certverifier/NSSCertDBTrustDomain.cpp @@ -22,9 +22,12 @@ #include "prerror.h" #include "prmem.h" #include "prprf.h" +#include "PublicKeyPinningService.h" #include "ScopedNSSTypes.h" #include "secerr.h" +#include "CNNICHashWhitelist.inc" + using namespace mozilla; using namespace mozilla::pkix; @@ -685,6 +688,40 @@ NSSCertDBTrustDomain::VerifyAndMaybeCacheEncodedOCSPResponse( return rv; } +static const uint8_t CNNIC_ROOT_CA_SUBJECT_DATA[] = + "\x30\x32\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E\x31\x0E\x30" + "\x0C\x06\x03\x55\x04\x0A\x13\x05\x43\x4E\x4E\x49\x43\x31\x13\x30\x11\x06" + "\x03\x55\x04\x03\x13\x0A\x43\x4E\x4E\x49\x43\x20\x52\x4F\x4F\x54"; + +static const uint8_t CNNIC_EV_ROOT_CA_SUBJECT_DATA[] = + "\x30\x81\x8A\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E\x31\x32" + "\x30\x30\x06\x03\x55\x04\x0A\x0C\x29\x43\x68\x69\x6E\x61\x20\x49\x6E\x74" + "\x65\x72\x6E\x65\x74\x20\x4E\x65\x74\x77\x6F\x72\x6B\x20\x49\x6E\x66\x6F" + "\x72\x6D\x61\x74\x69\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x31\x47\x30\x45" + "\x06\x03\x55\x04\x03\x0C\x3E\x43\x68\x69\x6E\x61\x20\x49\x6E\x74\x65\x72" + "\x6E\x65\x74\x20\x4E\x65\x74\x77\x6F\x72\x6B\x20\x49\x6E\x66\x6F\x72\x6D" + "\x61\x74\x69\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x45\x56\x20\x43\x65" + "\x72\x74\x69\x66\x69\x63\x61\x74\x65\x73\x20\x52\x6F\x6F\x74"; + +class WhitelistedCNNICHashBinarySearchComparator +{ +public: + explicit WhitelistedCNNICHashBinarySearchComparator(const uint8_t* aTarget, + size_t aTargetLength) + : mTarget(aTarget) + { + MOZ_ASSERT(aTargetLength == CNNIC_WHITELIST_HASH_LEN, + "Hashes should be of the same length."); + } + + int operator()(const WhitelistedCNNICHash val) const { + return memcmp(mTarget, val.hash, CNNIC_WHITELIST_HASH_LEN); + } + +private: + const uint8_t* mTarget; +}; + Result NSSCertDBTrustDomain::IsChainValid(const DERArray& certArray, Time time) { @@ -697,11 +734,75 @@ NSSCertDBTrustDomain::IsChainValid(const DERArray& certArray, Time time) if (srv != SECSuccess) { return MapPRErrorCodeToResult(PR_GetError()); } + if (CERT_LIST_EMPTY(certList)) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } - Result result = CertListContainsExpectedKeys(certList, mHostname, time, - mPinningMode); - if (result != Success) { - return result; + // If the certificate appears to have been issued by a CNNIC root, only allow + // it if it is on the whitelist. + CERTCertListNode* rootNode = CERT_LIST_TAIL(certList); + if (!rootNode) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + CERTCertificate* root = rootNode->cert; + if (!root) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + if ((root->derSubject.len == sizeof(CNNIC_ROOT_CA_SUBJECT_DATA) - 1 && + memcmp(root->derSubject.data, CNNIC_ROOT_CA_SUBJECT_DATA, + root->derSubject.len) == 0) || + (root->derSubject.len == sizeof(CNNIC_EV_ROOT_CA_SUBJECT_DATA) - 1 && + memcmp(root->derSubject.data, CNNIC_EV_ROOT_CA_SUBJECT_DATA, + root->derSubject.len) == 0)) { + CERTCertListNode* certNode = CERT_LIST_HEAD(certList); + if (!certNode) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + CERTCertificate* cert = certNode->cert; + if (!cert) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + Digest digest; + nsresult nsrv = digest.DigestBuf(SEC_OID_SHA256, cert->derCert.data, + cert->derCert.len); + if (NS_FAILED(nsrv)) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + const uint8_t* certHash( + reinterpret_cast(digest.get().data)); + size_t certHashLen = digest.get().len; + size_t unused; + if (!mozilla::BinarySearchIf(WhitelistedCNNICHashes, 0, + ArrayLength(WhitelistedCNNICHashes), + WhitelistedCNNICHashBinarySearchComparator( + certHash, certHashLen), + &unused)) { + return Result::ERROR_REVOKED_CERTIFICATE; + } + } + + bool isBuiltInRoot = false; + srv = IsCertBuiltInRoot(root, isBuiltInRoot); + if (srv != SECSuccess) { + return MapPRErrorCodeToResult(PR_GetError()); + } + bool skipPinningChecksBecauseOfMITMMode = + (!isBuiltInRoot && mPinningMode == CertVerifier::pinningAllowUserCAMITM); + // If mHostname isn't set, we're not verifying in the context of a TLS + // handshake, so don't verify HPKP in those cases. + if (mHostname && (mPinningMode != CertVerifier::pinningDisabled) && + !skipPinningChecksBecauseOfMITMMode) { + bool enforceTestMode = + (mPinningMode == CertVerifier::pinningEnforceTestMode); + bool chainHasValidPins; + nsresult nsrv = PublicKeyPinningService::ChainHasValidPins( + certList, mHostname, time, enforceTestMode, chainHasValidPins); + if (NS_FAILED(nsrv)) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + if (!chainHasValidPins) { + return Result::ERROR_KEY_PINNING_FAILURE; + } } if (mBuiltChain) { diff --git a/security/manager/ssl/PublicKeyPinningService.cpp b/security/manager/ssl/PublicKeyPinningService.cpp index ba40448c32..c245bae048 100644 --- a/security/manager/ssl/PublicKeyPinningService.cpp +++ b/security/manager/ssl/PublicKeyPinningService.cpp @@ -4,15 +4,12 @@ #include "PublicKeyPinningService.h" -#include "cert.h" #include "mozilla/Base64.h" #include "mozilla/Telemetry.h" #include "nsISiteSecurityService.h" -#include "nssb64.h" #include "nsServiceManagerUtils.h" #include "nsSiteSecurityService.h" -#include "nsString.h" -#include "nsTArray.h" +#include "nssb64.h" #include "pkix/pkixtypes.h" #include "mozilla/Logging.h" #include "RootCertificateTelemetryUtils.h" @@ -20,6 +17,8 @@ #include "seccomon.h" #include "sechash.h" +#include "StaticHPKPins.h" // autogenerated by genHPKPStaticpins.js + using namespace mozilla; using namespace mozilla::pkix; using namespace mozilla::psm; @@ -208,77 +207,6 @@ CheckPinsForHostname(const CERTCertList* certList, const char* hostname, &dynamicFingerprints, chainHasValidPins); } -/** - * Extract all the DNS names for a host (including CN) and evaluate the - * certifiate pins against all of them (Currently is an OR so we stop - * evaluating at the first OK pin). - */ -static nsresult -CheckChainAgainstAllNames(const CERTCertList* certList, bool enforceTestMode, - mozilla::pkix::Time time, - /*out*/ bool& chainHasValidPins) -{ - chainHasValidPins = false; - MOZ_LOG(gPublicKeyPinningLog, LogLevel::Debug, - ("pkpin: top of checkChainAgainstAllNames")); - CERTCertListNode* node = CERT_LIST_HEAD(certList); - if (!node) { - return NS_ERROR_INVALID_ARG; - } - CERTCertificate* cert = node->cert; - if (!cert) { - return NS_ERROR_INVALID_ARG; - } - - ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); - if (!arena) { - return NS_ERROR_FAILURE; - } - - CERTGeneralName* nameList; - CERTGeneralName* currentName; - nameList = CERT_GetConstrainedCertificateNames(cert, arena.get(), PR_TRUE); - if (!nameList) { - return NS_ERROR_FAILURE; - } - - currentName = nameList; - do { - if (currentName->type == certDNSName - && currentName->name.other.data[0] != 0) { - // no need to cleaup, as the arena cleanup will do - char *hostName = (char *)PORT_ArenaAlloc(arena.get(), - currentName->name.other.len + 1); - if (!hostName) { - break; - } - // We use a temporary buffer as the hostname as returned might not be - // null terminated. - hostName[currentName->name.other.len] = 0; - memcpy(hostName, currentName->name.other.data, - currentName->name.other.len); - if (!hostName[0]) { - // cannot call CheckPinsForHostname on empty or null hostname - break; - } - nsAutoCString canonicalizedHostname( - PublicKeyPinningService::CanonicalizeHostname(hostName)); - nsresult rv = CheckPinsForHostname(certList, canonicalizedHostname.get(), - enforceTestMode, time, - chainHasValidPins); - if (NS_FAILED(rv)) { - return rv; - } - if (chainHasValidPins) { - return NS_OK; - } - } - currentName = CERT_GetNextGeneralName(currentName); - } while (currentName != nameList); - - return NS_OK; -} - nsresult PublicKeyPinningService::ChainHasValidPins(const CERTCertList* certList, const char* hostname, @@ -291,8 +219,7 @@ PublicKeyPinningService::ChainHasValidPins(const CERTCertList* certList, return NS_ERROR_INVALID_ARG; } if (!hostname || hostname[0] == 0) { - return CheckChainAgainstAllNames(certList, enforceTestMode, time, - chainHasValidPins); + return NS_ERROR_INVALID_ARG; } nsAutoCString canonicalizedHostname(CanonicalizeHostname(hostname)); return CheckPinsForHostname(certList, canonicalizedHostname.get(), diff --git a/security/manager/ssl/StaticHPKPins.h b/security/manager/ssl/StaticHPKPins.h new file mode 100644 index 0000000000..a7c1225f89 --- /dev/null +++ b/security/manager/ssl/StaticHPKPins.h @@ -0,0 +1,1152 @@ +/* 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/. */ + +/*****************************************************************************/ +/* This is an automatically generated file. If you're not */ +/* PublicKeyPinningService.cpp, you shouldn't be #including it. */ +/*****************************************************************************/ +#include +/* AffirmTrust Commercial */ +static const char kAffirmTrust_CommercialFingerprint[] = + "bEZLmlsjOl6HTadlwm8EUBDS3c/0V5TwtMfkqvpQFJU="; + +/* AffirmTrust Networking */ +static const char kAffirmTrust_NetworkingFingerprint[] = + "lAcq0/WPcPkwmOWl9sBMlscQvYSdgxhJGa6Q64kK5AA="; + +/* AffirmTrust Premium */ +static const char kAffirmTrust_PremiumFingerprint[] = + "x/Q7TPW3FWgpT4IrU3YmBfbd0Vyt7Oc56eLDy6YenWc="; + +/* AffirmTrust Premium ECC */ +static const char kAffirmTrust_Premium_ECCFingerprint[] = + "MhmwkRT/SVo+tusAwu/qs0ACrl8KVsdnnqCHo/oDfk8="; + +/* Baltimore CyberTrust Root */ +static const char kBaltimore_CyberTrust_RootFingerprint[] = + "Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o="; + +/* COMODO Certification Authority */ +static const char kCOMODO_Certification_AuthorityFingerprint[] = + "AG1751Vd2CAmRCxPGieoDomhmJy4ezREjtIZTBgZbV4="; + +/* COMODO ECC Certification Authority */ +static const char kCOMODO_ECC_Certification_AuthorityFingerprint[] = + "58qRu/uxh4gFezqAcERupSkRYBlBAvfcw7mEjGPLnNU="; + +/* COMODO RSA Certification Authority */ +static const char kCOMODO_RSA_Certification_AuthorityFingerprint[] = + "grX4Ta9HpZx6tSHkmCrvpApTQGo67CYDnvprLg5yRME="; + +/* Comodo AAA Services root */ +static const char kComodo_AAA_Services_rootFingerprint[] = + "vRU+17BDT2iGsXvOi76E7TQMcTLXAqj0+jGPdW7L1vM="; + +/* Cybertrust Global Root */ +static const char kCybertrust_Global_RootFingerprint[] = + "foeCwVDOOVL4AuY2AjpdPpW7XWjjPoWtsroXgSXOvxU="; + +/* DST Root CA X3 */ +static const char kDST_Root_CA_X3Fingerprint[] = + "Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="; + +/* DigiCert Assured ID Root CA */ +static const char kDigiCert_Assured_ID_Root_CAFingerprint[] = + "I/Lt/z7ekCWanjD0Cvj5EqXls2lOaThEA0H2Bg4BT/o="; + +/* DigiCert Assured ID Root G2 */ +static const char kDigiCert_Assured_ID_Root_G2Fingerprint[] = + "8ca6Zwz8iOTfUpc8rkIPCgid1HQUT+WAbEIAZOFZEik="; + +/* DigiCert Assured ID Root G3 */ +static const char kDigiCert_Assured_ID_Root_G3Fingerprint[] = + "Fe7TOVlLME+M+Ee0dzcdjW/sYfTbKwGvWJ58U7Ncrkw="; + +/* DigiCert Global Root CA */ +static const char kDigiCert_Global_Root_CAFingerprint[] = + "r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E="; + +/* DigiCert Global Root G2 */ +static const char kDigiCert_Global_Root_G2Fingerprint[] = + "i7WTqTvh0OioIruIfFR4kMPnBqrS2rdiVPl/s2uC/CY="; + +/* DigiCert Global Root G3 */ +static const char kDigiCert_Global_Root_G3Fingerprint[] = + "uUwZgwDOxcBXrQcntwu+kYFpkiVkOaezL0WYEZ3anJc="; + +/* DigiCert High Assurance EV Root CA */ +static const char kDigiCert_High_Assurance_EV_Root_CAFingerprint[] = + "WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; + +/* DigiCert Trusted Root G4 */ +static const char kDigiCert_Trusted_Root_G4Fingerprint[] = + "Wd8xe/qfTwq3ylFNd3IpaqLHZbh2ZNCLluVzmeNkcpw="; + +/* End Entity Test Cert */ +static const char kEnd_Entity_Test_CertFingerprint[] = + "VCIlmPM9NkgFQtrs4Oa5TeFcDu6MWRTKSNdePEhOgD8="; + +/* Entrust Root Certification Authority */ +static const char kEntrust_Root_Certification_AuthorityFingerprint[] = + "bb+uANN7nNc/j7R95lkXrwDg3d9C286sIMF8AnXuIJU="; + +/* Entrust Root Certification Authority - EC1 */ +static const char kEntrust_Root_Certification_Authority___EC1Fingerprint[] = + "/qK31kX7pz11PB7Jp4cMQOH3sMVh6Se5hb9xGGbjbyI="; + +/* Entrust Root Certification Authority - G2 */ +static const char kEntrust_Root_Certification_Authority___G2Fingerprint[] = + "du6FkDdMcVQ3u8prumAo6t3i3G27uMP2EOhR8R0at/U="; + +/* Entrust.net Premium 2048 Secure Server CA */ +static const char kEntrust_net_Premium_2048_Secure_Server_CAFingerprint[] = + "HqPF5D7WbC2imDpCpKebHpBnhs6fG1hiFBmgBGOofTg="; + +/* FacebookBackup */ +static const char kFacebookBackupFingerprint[] = + "q4PO2G2cbkZhZ82+JgmRUyGMoAeozA+BSXVXQWB8XWQ="; + +/* GOOGLE_PIN_AddTrustClass1CARoot */ +static const char kGOOGLE_PIN_AddTrustClass1CARootFingerprint[] = + "BStocQfshOhzA4JFLsKidFF0XXSFpX1vRk4Np6G2ryo="; + +/* GOOGLE_PIN_AddTrustExternalCARoot */ +static const char kGOOGLE_PIN_AddTrustExternalCARootFingerprint[] = + "lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU="; + +/* GOOGLE_PIN_AddTrustPublicCARoot */ +static const char kGOOGLE_PIN_AddTrustPublicCARootFingerprint[] = + "OGHXtpYfzbISBFb/b8LrdwSxp0G0vZM6g3b14ZFcppg="; + +/* GOOGLE_PIN_AddTrustQualifiedCARoot */ +static const char kGOOGLE_PIN_AddTrustQualifiedCARootFingerprint[] = + "xzr8Lrp3DQy8HuQfJStS6Kk9ErctzOwDHY2DnL+Bink="; + +/* GOOGLE_PIN_COMODORSADomainValidationSecureServerCA */ +static const char kGOOGLE_PIN_COMODORSADomainValidationSecureServerCAFingerprint[] = + "klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; + +/* GOOGLE_PIN_DigiCertECCSecureServerCA */ +static const char kGOOGLE_PIN_DigiCertECCSecureServerCAFingerprint[] = + "PZXN3lRAy+8tBKk2Ox6F7jIlnzr2Yzmwqc3JnyfXoCw="; + +/* GOOGLE_PIN_Entrust_SSL */ +static const char kGOOGLE_PIN_Entrust_SSLFingerprint[] = + "nsxRNo6G40YPZsKV5JQt1TCA8nseQQr/LRqp1Oa8fnw="; + +/* GOOGLE_PIN_GTECyberTrustGlobalRoot */ +static const char kGOOGLE_PIN_GTECyberTrustGlobalRootFingerprint[] = + "EGn6R6CqT4z3ERscrqNl7q7RC//zJmDe9uBhS/rnCHU="; + +/* GOOGLE_PIN_GTSCA1O1 */ +static const char kGOOGLE_PIN_GTSCA1O1Fingerprint[] = + "YZPgTZ+woNCCCIW3LH2CxQeLzB/1m42QcCTBSdgayjs="; + +/* GOOGLE_PIN_GeoTrustGlobal */ +static const char kGOOGLE_PIN_GeoTrustGlobalFingerprint[] = + "h6801m+z8v3zbgkRHpq6L29Esgfzhj89C1SyUCOQmqU="; + +/* GOOGLE_PIN_GeoTrustGlobal2 */ +static const char kGOOGLE_PIN_GeoTrustGlobal2Fingerprint[] = + "F3VaXClfPS1y5vAxofB/QAxYi55YKyLxfq4xoVkNEYU="; + +/* GOOGLE_PIN_GeoTrustPrimary */ +static const char kGOOGLE_PIN_GeoTrustPrimaryFingerprint[] = + "SQVGZiOrQXi+kqxcvWWE96HhfydlLVqFr4lQTqI5qqo="; + +/* GOOGLE_PIN_GeoTrustPrimary_G2 */ +static const char kGOOGLE_PIN_GeoTrustPrimary_G2Fingerprint[] = + "vPtEqrmtAhAVcGtBIep2HIHJ6IlnWQ9vlK50TciLePs="; + +/* GOOGLE_PIN_GeoTrustPrimary_G3 */ +static const char kGOOGLE_PIN_GeoTrustPrimary_G3Fingerprint[] = + "q5hJUnat8eyv8o81xTBIeB5cFxjaucjmelBPT2pRMo8="; + +/* GOOGLE_PIN_GeoTrustUniversal */ +static const char kGOOGLE_PIN_GeoTrustUniversalFingerprint[] = + "lpkiXF3lLlbN0y3y6W0c/qWqPKC7Us2JM8I7XCdEOCA="; + +/* GOOGLE_PIN_GeoTrustUniversal2 */ +static const char kGOOGLE_PIN_GeoTrustUniversal2Fingerprint[] = + "fKoDRlEkWQxgHlZ+UhSOlSwM/+iQAFMP4NlbbVDqrkE="; + +/* GOOGLE_PIN_GoDaddySecure */ +static const char kGOOGLE_PIN_GoDaddySecureFingerprint[] = + "MrZLZnJ6IGPkBm87lYywqu5Xal7O/ZUzmbuIdHMdlYc="; + +/* GOOGLE_PIN_R3LetsEncrypt */ +static const char kGOOGLE_PIN_R3LetsEncryptFingerprint[] = + "jQJTbIh0grw0/1TkHSumWb+Fs0Ggogr621gT3PvPKG0="; + +/* GOOGLE_PIN_R4LetsEncrypt */ +static const char kGOOGLE_PIN_R4LetsEncryptFingerprint[] = + "5VReIRNHJBiRxVSgOTTN6bdJZkpZ0m1hX+WPd5kPLQM="; + +/* GOOGLE_PIN_RapidSSL */ +static const char kGOOGLE_PIN_RapidSSLFingerprint[] = + "lT09gPUeQfbYrlxRtpsHrjDblj9Rpz+u7ajfCrg4qDM="; + +/* GOOGLE_PIN_SecureCertificateServices */ +static const char kGOOGLE_PIN_SecureCertificateServicesFingerprint[] = + "RpHL/ehKa2BS3b4VK7DCFq4lqG5XR4E9vA8UfzOFcL4="; + +/* GOOGLE_PIN_SymantecClass3EVG3 */ +static const char kGOOGLE_PIN_SymantecClass3EVG3Fingerprint[] = + "gMxWOrX4PMQesK9qFNbYBxjBfjUvlkn/vN1n+L9lE5E="; + +/* GOOGLE_PIN_TrustedCertificateServices */ +static const char kGOOGLE_PIN_TrustedCertificateServicesFingerprint[] = + "4tiR77c4ZpEF1TDeXtcuKyrD9KZweLU0mz/ayklvXrg="; + +/* GOOGLE_PIN_UTNDATACorpSGC */ +static const char kGOOGLE_PIN_UTNDATACorpSGCFingerprint[] = + "QAL80xHQczFWfnG82XHkYEjI3OjRZZcRdTs9qiommvo="; + +/* GOOGLE_PIN_UTNUSERFirstClientAuthenticationandEmail */ +static const char kGOOGLE_PIN_UTNUSERFirstClientAuthenticationandEmailFingerprint[] = + "Laj56jRU0hFGRko/nQKNxMf7tXscUsc8KwVyovWZotM="; + +/* GOOGLE_PIN_UTNUSERFirstHardware */ +static const char kGOOGLE_PIN_UTNUSERFirstHardwareFingerprint[] = + "TUDnr0MEoJ3of7+YliBMBVFB4/gJsv5zO7IxD9+YoWI="; + +/* GOOGLE_PIN_UTNUSERFirstObject */ +static const char kGOOGLE_PIN_UTNUSERFirstObjectFingerprint[] = + "D+FMJksXu28NZT56cOs2Pb9UvhWAOe3a5cJXEd9IwQM="; + +/* GOOGLE_PIN_VeriSignClass1 */ +static const char kGOOGLE_PIN_VeriSignClass1Fingerprint[] = + "LclHC+Y+9KzxvYKGCUArt7h72ZY4pkOTTohoLRvowwg="; + +/* GOOGLE_PIN_VeriSignClass2_G2 */ +static const char kGOOGLE_PIN_VeriSignClass2_G2Fingerprint[] = + "2oALgLKofTmeZvoZ1y/fSZg7R9jPMix8eVA6DH4o/q8="; + +/* GOOGLE_PIN_VeriSignClass3_G2 */ +static const char kGOOGLE_PIN_VeriSignClass3_G2Fingerprint[] = + "AjyBzOjnxk+pQtPBUEhwfTXZu1uH9PVExb8bxWQ68vo="; + +/* GOOGLE_PIN_VeriSignClass3_G3 */ +static const char kGOOGLE_PIN_VeriSignClass3_G3Fingerprint[] = + "SVqWumuteCQHvVIaALrOZXuzVVVeS7f4FGxxu6V+es4="; + +/* GOOGLE_PIN_VeriSignClass3_G4 */ +static const char kGOOGLE_PIN_VeriSignClass3_G4Fingerprint[] = + "UZJDjsNp1+4M5x9cbbdflB779y5YRBcV6Z6rBMLIrO4="; + +/* GOOGLE_PIN_VeriSignClass3_G5 */ +static const char kGOOGLE_PIN_VeriSignClass3_G5Fingerprint[] = + "JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg="; + +/* GOOGLE_PIN_VeriSignClass4_G3 */ +static const char kGOOGLE_PIN_VeriSignClass4_G3Fingerprint[] = + "VnuCEf0g09KD7gzXzgZyy52ZvFtIeljJ1U7Gf3fUqPU="; + +/* GOOGLE_PIN_VeriSignUniversal */ +static const char kGOOGLE_PIN_VeriSignUniversalFingerprint[] = + "lnsM2T/O9/J84sJFdnrpsFp3awZJ+ZZbYpCWhGloaHI="; + +/* GTS Root R1 */ +static const char kGTS_Root_R1Fingerprint[] = + "hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc="; + +/* GTS Root R2 */ +static const char kGTS_Root_R2Fingerprint[] = + "Vfd95BwDeSQo+NUYxVEEIlvkOlWY2SalKK1lPhzOx78="; + +/* GTS Root R3 */ +static const char kGTS_Root_R3Fingerprint[] = + "QXnt2YHvdHR3tJYmQIr0Paosp6t/nggsEGD4QJZ3Q0g="; + +/* GTS Root R4 */ +static const char kGTS_Root_R4Fingerprint[] = + "mEflZT5enoR1FuXLgYYGqnVEoZvmf9c2bVBpiOjYQ0c="; + +/* GlobalSign ECC Root CA - R4 */ +static const char kGlobalSign_ECC_Root_CA___R4Fingerprint[] = + "CLOmM1/OXvSPjw5UOYbAf9GKOxImEp9hhku9W90fHMk="; + +/* GlobalSign ECC Root CA - R5 */ +static const char kGlobalSign_ECC_Root_CA___R5Fingerprint[] = + "fg6tdrtoGdwvVFEahDVPboswe53YIFjqbABPAdndpd8="; + +/* GlobalSign Root CA */ +static const char kGlobalSign_Root_CAFingerprint[] = + "K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; + +/* GlobalSign Root CA - R2 */ +static const char kGlobalSign_Root_CA___R2Fingerprint[] = + "iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; + +/* GlobalSign Root CA - R3 */ +static const char kGlobalSign_Root_CA___R3Fingerprint[] = + "cGuxAXyFXFkWm61cF4HPWX8S0srS9j0aSqN0k4AP+4A="; + +/* GlobalSign Root CA - R6 */ +static const char kGlobalSign_Root_CA___R6Fingerprint[] = + "aCdH+LpiG4fN07wpXtXKvOciocDANj0daLOJKNJ4fx4="; + +/* Go Daddy Class 2 CA */ +static const char kGo_Daddy_Class_2_CAFingerprint[] = + "VjLZe/p3W/PJnd6lL8JVNBCGQBZynFLdZSTIqcO0SJ8="; + +/* Go Daddy Root Certificate Authority - G2 */ +static const char kGo_Daddy_Root_Certificate_Authority___G2Fingerprint[] = + "Ko8tivDrEjiY90yGasP6ZpBU4jwXvHqVvQI0GS3GNdA="; + +/* GoogleBackup2048 */ +static const char kGoogleBackup2048Fingerprint[] = + "IPMbDAjLVSGntGO3WP53X/zilCVndez5YJ2+vJvhJsA="; + +/* ISRG Root X1 */ +static const char kISRG_Root_X1Fingerprint[] = + "C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M="; + +/* Let's Encrypt Authority X3 */ +static const char kLet_s_Encrypt_Authority_X3Fingerprint[] = + "YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; + +/* Let's Encrypt Authority X4 */ +static const char kLet_s_Encrypt_Authority_X4Fingerprint[] = + "sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis="; + +/* SpiderOak2 */ +static const char kSpiderOak2Fingerprint[] = + "7Y3UnxbffL8aFPXsOJBpGasgpDmngpIhAxGKdQRklQQ="; + +/* SpiderOak3 */ +static const char kSpiderOak3Fingerprint[] = + "LkER54vOdlygpTsbYvlpMq1CE/lDAG1AP9xmdtwvV2A="; + +/* Starfield Class 2 CA */ +static const char kStarfield_Class_2_CAFingerprint[] = + "FfFKxFycfaIz00eRZOgTf+Ne4POK6FgYPwhBDqgqxLQ="; + +/* Starfield Root Certificate Authority - G2 */ +static const char kStarfield_Root_Certificate_Authority___G2Fingerprint[] = + "gI1os/q0iEpflxrOfRBVDXqVoWN3Tz7Dav/7IT++THQ="; + +/* Swehack */ +static const char kSwehackFingerprint[] = + "FdaffE799rVb3oyAuhJ2mBW/XJwD07Uajb2G6YwSAEw="; + +/* SwehackBackup */ +static const char kSwehackBackupFingerprint[] = + "z6cuswA6E1vgFkCjUsbEYo0Lf3aP8M8YOvwkoiGzDCo="; + +/* TestSPKI */ +static const char kTestSPKIFingerprint[] = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; + +/* Tor1 */ +static const char kTor1Fingerprint[] = + "bYz9JTDk89X3qu3fgswG+lBQso5vI0N1f0Rx4go4nLo="; + +/* Tor2 */ +static const char kTor2Fingerprint[] = + "xXCxhTdn7uxXneJSbQCqoAvuW3ZtQl2pDVTf2sewS8w="; + +/* Tor3 */ +static const char kTor3Fingerprint[] = + "CleC1qwUR8JPgH1nXvSe2VHxDe5/KfNs96EusbfSOfo="; + +/* Twitter1 */ +static const char kTwitter1Fingerprint[] = + "vU9M48LzD/CF34wE5PPf4nBwRyosy06X21J0ap8yS5s="; + +/* USERTrust ECC Certification Authority */ +static const char kUSERTrust_ECC_Certification_AuthorityFingerprint[] = + "ICGRfpgmOUXIWcQ/HXPLQTkFPEFPoDyjvH7ohhQpjzs="; + +/* USERTrust RSA Certification Authority */ +static const char kUSERTrust_RSA_Certification_AuthorityFingerprint[] = + "x4QzPSC810K5/cMjb05Qm4k3Bw5zBn4lTdO/nEW/Td4="; + +/* Verisign Class 1 Public Primary Certification Authority - G3 */ +static const char kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint[] = + "IgduWu9Eu5pBaii30cRDItcFn2D+/6XK9sW+hEeJEwM="; + +/* Verisign Class 2 Public Primary Certification Authority - G3 */ +static const char kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint[] = + "cAajgxHlj7GTSEIzIYIQxmEloOSoJq7VOaxWHfv72QM="; + +/* YahooBackup1 */ +static const char kYahooBackup1Fingerprint[] = + "2fRAUXyxl4A1/XHrKNBmc8bTkzA7y4FB/GLJuNAzCqY="; + +/* YahooBackup2 */ +static const char kYahooBackup2Fingerprint[] = + "dolnbtzEBnELx/9lOEQ22e6OZO/QNb6VSSX2XHA3E7A="; + +/* Pinsets are each an ordered list by the actual value of the fingerprint */ +struct StaticFingerprints { + // See bug 1338873 about making these fields const. + size_t size; + const char* const* data; +}; + +/* PreloadedHPKPins.json pinsets */ +static const char* const kPinset_google_root_pems_Data[] = { + kEntrust_Root_Certification_Authority___EC1Fingerprint, + kCOMODO_ECC_Certification_AuthorityFingerprint, + kDigiCert_Assured_ID_Root_G2Fingerprint, + kCOMODO_Certification_AuthorityFingerprint, + kGlobalSign_ECC_Root_CA___R4Fingerprint, + kDigiCert_Assured_ID_Root_G3Fingerprint, + kStarfield_Class_2_CAFingerprint, + kEntrust_net_Premium_2048_Secure_Server_CAFingerprint, + kDigiCert_Assured_ID_Root_CAFingerprint, + kUSERTrust_ECC_Certification_AuthorityFingerprint, + kGlobalSign_Root_CAFingerprint, + kGo_Daddy_Root_Certificate_Authority___G2Fingerprint, + kAffirmTrust_Premium_ECCFingerprint, + kGTS_Root_R3Fingerprint, + kGTS_Root_R2Fingerprint, + kGo_Daddy_Class_2_CAFingerprint, + kDigiCert_Trusted_Root_G4Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kBaltimore_CyberTrust_RootFingerprint, + kGlobalSign_Root_CA___R6Fingerprint, + kAffirmTrust_CommercialFingerprint, + kEntrust_Root_Certification_AuthorityFingerprint, + kGlobalSign_Root_CA___R3Fingerprint, + kEntrust_Root_Certification_Authority___G2Fingerprint, + kGlobalSign_ECC_Root_CA___R5Fingerprint, + kCybertrust_Global_RootFingerprint, + kStarfield_Root_Certificate_Authority___G2Fingerprint, + kCOMODO_RSA_Certification_AuthorityFingerprint, + kGTS_Root_R1Fingerprint, + kDigiCert_Global_Root_G2Fingerprint, + kGlobalSign_Root_CA___R2Fingerprint, + kAffirmTrust_NetworkingFingerprint, + kGTS_Root_R4Fingerprint, + kDigiCert_Global_Root_CAFingerprint, + kDigiCert_Global_Root_G3Fingerprint, + kComodo_AAA_Services_rootFingerprint, + kAffirmTrust_PremiumFingerprint, + kUSERTrust_RSA_Certification_AuthorityFingerprint, +}; +static const StaticFingerprints kPinset_google_root_pems = { + sizeof(kPinset_google_root_pems_Data) / sizeof(const char*), + kPinset_google_root_pems_Data +}; + +static const char* const kPinset_mozilla_services_Data[] = { + kISRG_Root_X1Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kDigiCert_Global_Root_CAFingerprint, +}; +static const StaticFingerprints kPinset_mozilla_services = { + sizeof(kPinset_mozilla_services_Data) / sizeof(const char*), + kPinset_mozilla_services_Data +}; + +static const char* const kPinset_mozilla_test_Data[] = { + kEnd_Entity_Test_CertFingerprint, +}; +static const StaticFingerprints kPinset_mozilla_test = { + sizeof(kPinset_mozilla_test_Data) / sizeof(const char*), + kPinset_mozilla_test_Data +}; + +/* Chrome static pinsets */ +static const char* const kPinset_test_Data[] = { + kTestSPKIFingerprint, +}; +static const StaticFingerprints kPinset_test = { + sizeof(kPinset_test_Data) / sizeof(const char*), + kPinset_test_Data +}; + +static const char* const kPinset_google_Data[] = { + kGoogleBackup2048Fingerprint, + kGTS_Root_R3Fingerprint, + kGTS_Root_R2Fingerprint, + kGOOGLE_PIN_GTSCA1O1Fingerprint, + kGTS_Root_R1Fingerprint, + kGlobalSign_Root_CA___R2Fingerprint, + kGTS_Root_R4Fingerprint, +}; +static const StaticFingerprints kPinset_google = { + sizeof(kPinset_google_Data) / sizeof(const char*), + kPinset_google_Data +}; + +static const char* const kPinset_tor_Data[] = { + kGOOGLE_PIN_R4LetsEncryptFingerprint, + kTor3Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kLet_s_Encrypt_Authority_X3Fingerprint, + kTor1Fingerprint, + kGOOGLE_PIN_R3LetsEncryptFingerprint, + kGOOGLE_PIN_RapidSSLFingerprint, + kLet_s_Encrypt_Authority_X4Fingerprint, + kTor2Fingerprint, +}; +static const StaticFingerprints kPinset_tor = { + sizeof(kPinset_tor_Data) / sizeof(const char*), + kPinset_tor_Data +}; + +static const char* const kPinset_twitterCom_Data[] = { + kGOOGLE_PIN_VeriSignClass2_G2Fingerprint, + kGOOGLE_PIN_VeriSignClass3_G2Fingerprint, + kGOOGLE_PIN_GeoTrustGlobal2Fingerprint, + kDigiCert_Assured_ID_Root_CAFingerprint, + kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint, + kGOOGLE_PIN_VeriSignClass3_G5Fingerprint, + kGOOGLE_PIN_VeriSignClass1Fingerprint, + kGOOGLE_PIN_GeoTrustPrimaryFingerprint, + kGOOGLE_PIN_VeriSignClass3_G3Fingerprint, + kGOOGLE_PIN_VeriSignClass3_G4Fingerprint, + kGOOGLE_PIN_VeriSignClass4_G3Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint, + kGOOGLE_PIN_GeoTrustUniversal2Fingerprint, + kGOOGLE_PIN_GeoTrustGlobalFingerprint, + kGOOGLE_PIN_VeriSignUniversalFingerprint, + kGOOGLE_PIN_GeoTrustUniversalFingerprint, + kGOOGLE_PIN_GeoTrustPrimary_G3Fingerprint, + kDigiCert_Global_Root_CAFingerprint, + kGOOGLE_PIN_GeoTrustPrimary_G2Fingerprint, + kTwitter1Fingerprint, +}; +static const StaticFingerprints kPinset_twitterCom = { + sizeof(kPinset_twitterCom_Data) / sizeof(const char*), + kPinset_twitterCom_Data +}; + +static const char* const kPinset_twitterCDN_Data[] = { + kGOOGLE_PIN_VeriSignClass2_G2Fingerprint, + kGOOGLE_PIN_TrustedCertificateServicesFingerprint, + kCOMODO_Certification_AuthorityFingerprint, + kGOOGLE_PIN_VeriSignClass3_G2Fingerprint, + kGOOGLE_PIN_AddTrustClass1CARootFingerprint, + kGOOGLE_PIN_UTNUSERFirstObjectFingerprint, + kGOOGLE_PIN_GTECyberTrustGlobalRootFingerprint, + kGOOGLE_PIN_GeoTrustGlobal2Fingerprint, + kEntrust_net_Premium_2048_Secure_Server_CAFingerprint, + kDigiCert_Assured_ID_Root_CAFingerprint, + kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint, + kGOOGLE_PIN_VeriSignClass3_G5Fingerprint, + kGlobalSign_Root_CAFingerprint, + kGOOGLE_PIN_UTNUSERFirstClientAuthenticationandEmailFingerprint, + kGOOGLE_PIN_VeriSignClass1Fingerprint, + kGOOGLE_PIN_AddTrustPublicCARootFingerprint, + kGOOGLE_PIN_UTNDATACorpSGCFingerprint, + kGOOGLE_PIN_SecureCertificateServicesFingerprint, + kGOOGLE_PIN_GeoTrustPrimaryFingerprint, + kGOOGLE_PIN_VeriSignClass3_G3Fingerprint, + kGOOGLE_PIN_UTNUSERFirstHardwareFingerprint, + kGOOGLE_PIN_VeriSignClass3_G4Fingerprint, + kGOOGLE_PIN_VeriSignClass4_G3Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kBaltimore_CyberTrust_RootFingerprint, + kEntrust_Root_Certification_AuthorityFingerprint, + kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint, + kGlobalSign_Root_CA___R3Fingerprint, + kEntrust_Root_Certification_Authority___G2Fingerprint, + kGOOGLE_PIN_GeoTrustUniversal2Fingerprint, + kGOOGLE_PIN_GeoTrustGlobalFingerprint, + kGlobalSign_Root_CA___R2Fingerprint, + kGOOGLE_PIN_AddTrustExternalCARootFingerprint, + kGOOGLE_PIN_VeriSignUniversalFingerprint, + kGOOGLE_PIN_GeoTrustUniversalFingerprint, + kGOOGLE_PIN_Entrust_SSLFingerprint, + kGOOGLE_PIN_GeoTrustPrimary_G3Fingerprint, + kDigiCert_Global_Root_CAFingerprint, + kGOOGLE_PIN_GeoTrustPrimary_G2Fingerprint, + kComodo_AAA_Services_rootFingerprint, + kTwitter1Fingerprint, + kGOOGLE_PIN_AddTrustQualifiedCARootFingerprint, +}; +static const StaticFingerprints kPinset_twitterCDN = { + sizeof(kPinset_twitterCDN_Data) / sizeof(const char*), + kPinset_twitterCDN_Data +}; + +static const char* const kPinset_dropbox_Data[] = { + kEntrust_Root_Certification_Authority___EC1Fingerprint, + kEntrust_net_Premium_2048_Secure_Server_CAFingerprint, + kDigiCert_Assured_ID_Root_CAFingerprint, + kGo_Daddy_Root_Certificate_Authority___G2Fingerprint, + kGOOGLE_PIN_GoDaddySecureFingerprint, + kGo_Daddy_Class_2_CAFingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kEntrust_Root_Certification_AuthorityFingerprint, + kEntrust_Root_Certification_Authority___G2Fingerprint, + kDigiCert_Global_Root_CAFingerprint, +}; +static const StaticFingerprints kPinset_dropbox = { + sizeof(kPinset_dropbox_Data) / sizeof(const char*), + kPinset_dropbox_Data +}; + +static const char* const kPinset_facebook_Data[] = { + kGOOGLE_PIN_DigiCertECCSecureServerCAFingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kGOOGLE_PIN_SymantecClass3EVG3Fingerprint, + kFacebookBackupFingerprint, +}; +static const StaticFingerprints kPinset_facebook = { + sizeof(kPinset_facebook_Data) / sizeof(const char*), + kPinset_facebook_Data +}; + +static const char* const kPinset_spideroak_Data[] = { + kSpiderOak2Fingerprint, + kSpiderOak3Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kGOOGLE_PIN_GeoTrustGlobalFingerprint, +}; +static const StaticFingerprints kPinset_spideroak = { + sizeof(kPinset_spideroak_Data) / sizeof(const char*), + kPinset_spideroak_Data +}; + +static const char* const kPinset_yahoo_Data[] = { + kYahooBackup1Fingerprint, + kDigiCert_Assured_ID_Root_CAFingerprint, + kGlobalSign_Root_CAFingerprint, + kDigiCert_Trusted_Root_G4Fingerprint, + kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kGlobalSign_Root_CA___R3Fingerprint, + kYahooBackup2Fingerprint, + kDigiCert_Global_Root_G2Fingerprint, + kDigiCert_Global_Root_CAFingerprint, + kDigiCert_Global_Root_G3Fingerprint, +}; +static const StaticFingerprints kPinset_yahoo = { + sizeof(kPinset_yahoo_Data) / sizeof(const char*), + kPinset_yahoo_Data +}; + +static const char* const kPinset_swehackCom_Data[] = { + kSwehackFingerprint, + kDST_Root_CA_X3Fingerprint, + kLet_s_Encrypt_Authority_X3Fingerprint, + kGOOGLE_PIN_COMODORSADomainValidationSecureServerCAFingerprint, + kLet_s_Encrypt_Authority_X4Fingerprint, + kSwehackBackupFingerprint, +}; +static const StaticFingerprints kPinset_swehackCom = { + sizeof(kPinset_swehackCom_Data) / sizeof(const char*), + kPinset_swehackCom_Data +}; + +/* Domainlist */ +struct TransportSecurityPreload { + // See bug 1338873 about making these fields const. + const char* mHost; + bool mIncludeSubdomains; + bool mTestMode; + bool mIsMoz; + int32_t mId; + const StaticFingerprints* pinset; +}; + +/* Sort hostnames for binary search. */ +static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { + { "2mdn.net", true, false, false, -1, &kPinset_google_root_pems }, + { "accounts.firefox.com", true, false, true, 4, &kPinset_mozilla_services }, + { "accounts.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "addons.mozilla.net", true, false, true, 2, &kPinset_mozilla_services }, + { "addons.mozilla.org", true, false, true, 1, &kPinset_mozilla_services }, + { "admin.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "android.com", true, false, false, -1, &kPinset_google_root_pems }, + { "api.accounts.firefox.com", true, false, true, 5, &kPinset_mozilla_services }, + { "api.twitter.com", true, false, false, -1, &kPinset_twitterCDN }, + { "apis.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "appengine.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "apps.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "at.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "au.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "aus4.mozilla.org", true, true, true, 3, &kPinset_mozilla_services }, + { "aus5.mozilla.org", true, true, true, 7, &kPinset_mozilla_services }, + { "az.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "be.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "bi.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "blog.torproject.org", true, false, false, -1, &kPinset_tor }, + { "blogger.com", true, false, false, -1, &kPinset_google_root_pems }, + { "blogspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "br.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "bugs.chromium.org", true, false, false, -1, &kPinset_google_root_pems }, + { "build.chromium.org", true, false, false, -1, &kPinset_google_root_pems }, + { "business.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "business.twitter.com", true, false, false, -1, &kPinset_twitterCom }, + { "ca.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "calendar.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "cd.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "cdn.ampproject.org", true, false, false, -1, &kPinset_google_root_pems }, + { "cdn.mozilla.net", true, false, true, 16, &kPinset_mozilla_services }, + { "cdn.mozilla.org", true, false, true, 17, &kPinset_mozilla_services }, + { "cg.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "ch.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "check.torproject.org", true, false, false, -1, &kPinset_tor }, + { "checkout.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "chfr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "chit.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "chrome-devtools-frontend.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "chrome.com", true, false, false, -1, &kPinset_google_root_pems }, + { "chrome.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "chromereporting-pa.googleapis.com", true, false, false, -1, &kPinset_google_root_pems }, + { "chromiumbugs.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "chromiumcodereview.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "cl.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "classroom.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "cloud.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "cn.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "co.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "code.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "code.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "codereview.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "codereview.chromium.org", true, false, false, -1, &kPinset_google_root_pems }, + { "contributor.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "corp.goog", true, false, false, -1, &kPinset_google_root_pems }, + { "cr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "crash-reports-xpsp2.mozilla.com", false, false, true, 11, &kPinset_mozilla_services }, + { "crash-reports.mozilla.com", false, false, true, 10, &kPinset_mozilla_services }, + { "crash-stats.mozilla.org", false, false, true, 12, &kPinset_mozilla_services }, + { "crbug.com", true, false, false, -1, &kPinset_google_root_pems }, + { "crosbug.com", true, false, false, -1, &kPinset_google_root_pems }, + { "crrev.com", true, false, false, -1, &kPinset_google_root_pems }, + { "ct.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "datastudio.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "de.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "dev.twitter.com", true, false, false, -1, &kPinset_twitterCom }, + { "developer.android.com", true, false, false, -1, &kPinset_google_root_pems }, + { "developers.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "dist.torproject.org", true, false, false, -1, &kPinset_tor }, + { "dk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "dl.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "dns.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "do.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "docs.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "domains.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "doubleclick.net", true, false, false, -1, &kPinset_google_root_pems }, + { "download.mozilla.org", false, false, true, 14, &kPinset_mozilla_services }, + { "drive.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "dropbox.com", true, false, false, -1, &kPinset_dropbox }, + { "dropboxstatic.com", false, true, false, -1, &kPinset_dropbox }, + { "dropboxusercontent.com", false, true, false, -1, &kPinset_dropbox }, + { "edit.yahoo.com", true, true, false, -1, &kPinset_yahoo }, + { "en-maktoob.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "encrypted.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "es.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "espanol.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "example.test", true, true, false, -1, &kPinset_test }, + { "exclude-subdomains.pinning.example.com", false, false, false, -1, &kPinset_mozilla_test }, + { "facebook.com", false, false, false, -1, &kPinset_facebook }, + { "fi.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "fi.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "firebaseio.com", true, false, false, -1, &kPinset_google_root_pems }, + { "firefox.com", true, true, true, 15, &kPinset_mozilla_services }, + { "fj.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "fr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "g.co", false, false, false, -1, &kPinset_google_root_pems }, + { "g4w.co", true, false, false, -1, &kPinset_google_root_pems }, + { "ggpht.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gl.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "glass.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gm.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "gmail.com", false, false, false, -1, &kPinset_google_root_pems }, + { "goo.gl", true, false, false, -1, &kPinset_google_root_pems }, + { "google", true, false, false, -1, &kPinset_google_root_pems }, + { "google-analytics.com", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ac", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ad", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ae", true, false, false, -1, &kPinset_google_root_pems }, + { "google.af", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ag", true, false, false, -1, &kPinset_google_root_pems }, + { "google.am", true, false, false, -1, &kPinset_google_root_pems }, + { "google.as", true, false, false, -1, &kPinset_google_root_pems }, + { "google.at", true, false, false, -1, &kPinset_google_root_pems }, + { "google.az", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ba", true, false, false, -1, &kPinset_google_root_pems }, + { "google.be", true, false, false, -1, &kPinset_google_root_pems }, + { "google.bf", true, false, false, -1, &kPinset_google_root_pems }, + { "google.bg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.bi", true, false, false, -1, &kPinset_google_root_pems }, + { "google.bj", true, false, false, -1, &kPinset_google_root_pems }, + { "google.bs", true, false, false, -1, &kPinset_google_root_pems }, + { "google.by", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ca", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cat", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cc", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cd", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cf", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ch", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ci", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ao", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.bw", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ck", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.cr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.hu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.id", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.il", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.im", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.in", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.je", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.jp", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ke", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.kr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ls", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ma", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.mz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.nz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.th", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.tz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ug", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.uk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.uz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.ve", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.vi", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.za", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.zm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.co.zw", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.af", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ag", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ai", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ar", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.au", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.bd", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.bh", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.bn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.bo", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.br", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.by", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.bz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.cn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.co", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.cu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.cy", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.do", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ec", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.eg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.et", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.fj", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ge", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.gh", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.gi", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.gr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.gt", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.hk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.iq", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.jm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.jo", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.kh", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.kw", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.lb", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ly", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.mt", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.mx", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.my", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.na", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.nf", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ng", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ni", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.np", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.nr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.om", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.pa", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.pe", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ph", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.pk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.pl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.pr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.py", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.qa", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ru", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.sa", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.sb", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.sg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.sl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.sv", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.tj", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.tn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.tr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.tw", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ua", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.uy", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.vc", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.ve", true, false, false, -1, &kPinset_google_root_pems }, + { "google.com.vn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cv", true, false, false, -1, &kPinset_google_root_pems }, + { "google.cz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.de", true, false, false, -1, &kPinset_google_root_pems }, + { "google.dj", true, false, false, -1, &kPinset_google_root_pems }, + { "google.dk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.dm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.dz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ee", true, false, false, -1, &kPinset_google_root_pems }, + { "google.es", true, false, false, -1, &kPinset_google_root_pems }, + { "google.fi", true, false, false, -1, &kPinset_google_root_pems }, + { "google.fm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.fr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ga", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ge", true, false, false, -1, &kPinset_google_root_pems }, + { "google.gg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.gl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.gm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.gp", true, false, false, -1, &kPinset_google_root_pems }, + { "google.gr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.gy", true, false, false, -1, &kPinset_google_root_pems }, + { "google.hk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.hn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.hr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ht", true, false, false, -1, &kPinset_google_root_pems }, + { "google.hu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ie", true, false, false, -1, &kPinset_google_root_pems }, + { "google.im", true, false, false, -1, &kPinset_google_root_pems }, + { "google.info", true, false, false, -1, &kPinset_google_root_pems }, + { "google.iq", true, false, false, -1, &kPinset_google_root_pems }, + { "google.is", true, false, false, -1, &kPinset_google_root_pems }, + { "google.it", true, false, false, -1, &kPinset_google_root_pems }, + { "google.it.ao", true, false, false, -1, &kPinset_google_root_pems }, + { "google.je", true, false, false, -1, &kPinset_google_root_pems }, + { "google.jo", true, false, false, -1, &kPinset_google_root_pems }, + { "google.jobs", true, false, false, -1, &kPinset_google_root_pems }, + { "google.jp", true, false, false, -1, &kPinset_google_root_pems }, + { "google.kg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ki", true, false, false, -1, &kPinset_google_root_pems }, + { "google.kz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.la", true, false, false, -1, &kPinset_google_root_pems }, + { "google.li", true, false, false, -1, &kPinset_google_root_pems }, + { "google.lk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.lt", true, false, false, -1, &kPinset_google_root_pems }, + { "google.lu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.lv", true, false, false, -1, &kPinset_google_root_pems }, + { "google.md", true, false, false, -1, &kPinset_google_root_pems }, + { "google.me", true, false, false, -1, &kPinset_google_root_pems }, + { "google.mg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.mk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ml", true, false, false, -1, &kPinset_google_root_pems }, + { "google.mn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ms", true, false, false, -1, &kPinset_google_root_pems }, + { "google.mu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.mv", true, false, false, -1, &kPinset_google_root_pems }, + { "google.mw", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ne", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ne.jp", true, false, false, -1, &kPinset_google_root_pems }, + { "google.net", true, false, false, -1, &kPinset_google_root_pems }, + { "google.nl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.no", true, false, false, -1, &kPinset_google_root_pems }, + { "google.nr", true, false, false, -1, &kPinset_google_root_pems }, + { "google.nu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.off.ai", true, false, false, -1, &kPinset_google_root_pems }, + { "google.pk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.pl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.pn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ps", true, false, false, -1, &kPinset_google_root_pems }, + { "google.pt", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ro", true, false, false, -1, &kPinset_google_root_pems }, + { "google.rs", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ru", true, false, false, -1, &kPinset_google_root_pems }, + { "google.rw", true, false, false, -1, &kPinset_google_root_pems }, + { "google.sc", true, false, false, -1, &kPinset_google_root_pems }, + { "google.se", true, false, false, -1, &kPinset_google_root_pems }, + { "google.sh", true, false, false, -1, &kPinset_google_root_pems }, + { "google.si", true, false, false, -1, &kPinset_google_root_pems }, + { "google.sk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.sm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.sn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.so", true, false, false, -1, &kPinset_google_root_pems }, + { "google.st", true, false, false, -1, &kPinset_google_root_pems }, + { "google.td", true, false, false, -1, &kPinset_google_root_pems }, + { "google.tg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.tk", true, false, false, -1, &kPinset_google_root_pems }, + { "google.tl", true, false, false, -1, &kPinset_google_root_pems }, + { "google.tm", true, false, false, -1, &kPinset_google_root_pems }, + { "google.tn", true, false, false, -1, &kPinset_google_root_pems }, + { "google.to", true, false, false, -1, &kPinset_google_root_pems }, + { "google.tt", true, false, false, -1, &kPinset_google_root_pems }, + { "google.us", true, false, false, -1, &kPinset_google_root_pems }, + { "google.uz", true, false, false, -1, &kPinset_google_root_pems }, + { "google.vg", true, false, false, -1, &kPinset_google_root_pems }, + { "google.vu", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ws", true, false, false, -1, &kPinset_google_root_pems }, + { "googleadservices.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googleapis.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlecode.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlecommerce.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlegroups.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlemail.com", false, false, false, -1, &kPinset_google_root_pems }, + { "googleplex.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlesource.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlesyndication.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googletagmanager.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googletagservices.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googleusercontent.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googlevideo.com", true, false, false, -1, &kPinset_google_root_pems }, + { "googleweblight.com", true, false, false, -1, &kPinset_google_root_pems }, + { "goto.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "groups.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gstatic.cn", true, false, false, -1, &kPinset_google_root_pems }, + { "gstatic.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gvt1.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gvt2.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gvt3.com", true, false, false, -1, &kPinset_google_root_pems }, + { "hangout", true, false, false, -1, &kPinset_google_root_pems }, + { "hangouts.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "history.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "hk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "hn.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "hostedtalkgadget.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "hu.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "id.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "ie.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "in.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "inbox.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "include-subdomains.pinning.example.com", true, false, false, -1, &kPinset_mozilla_test }, + { "it.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "kr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "kz.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "lens.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "li.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "login.corp.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "login.yahoo.com", true, true, false, -1, &kPinset_yahoo }, + { "lt.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "lu.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "lv.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "m.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "mail-settings.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "mail.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "mail.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "maktoob.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "malaysia.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "market.android.com", true, false, false, -1, &kPinset_google_root_pems }, + { "mbasic.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "meet.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "messenger.com", false, false, false, -1, &kPinset_facebook }, + { "mobile.twitter.com", true, false, false, -1, &kPinset_twitterCom }, + { "mt.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "mtouch.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "mu.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "mw.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "mx.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "myaccount.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "myactivity.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "ni.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "nl.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "no.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "np.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "nz.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "oauth.twitter.com", true, false, false, -1, &kPinset_twitterCom }, + { "oauthaccountmanager.googleapis.com", true, false, false, -1, &kPinset_google_root_pems }, + { "pa.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "passwords.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "passwordsleakcheck-pa.googleapis.com", true, false, false, -1, &kPinset_google_root_pems }, + { "payments.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "pe.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "ph.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "pinning-test.badssl.com", true, false, false, -1, &kPinset_test }, + { "pinningtest.appspot.com", true, false, false, -1, &kPinset_test }, + { "pixel.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "pixel.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "pk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "pl.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "platform.twitter.com", true, false, false, -1, &kPinset_twitterCDN }, + { "play.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "plus.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "plus.sandbox.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "pr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "profiles.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "py.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "qc.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "remotedesktop.corp.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "research.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "ro.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "ru.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "rw.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "script.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "se.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "secure.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "security.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "services.mozilla.com", true, false, true, 6, &kPinset_mozilla_services }, + { "sg.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "sites.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "spideroak.com", true, false, false, -1, &kPinset_spideroak }, + { "spreadsheets.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "static.googleadsserving.cn", true, false, false, -1, &kPinset_google_root_pems }, + { "stats.g.doubleclick.net", true, false, false, -1, &kPinset_google_root_pems }, + { "sv.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "swehack.org", true, true, false, -1, &kPinset_swehackCom }, + { "sync.services.mozilla.com", true, false, true, 13, &kPinset_mozilla_services }, + { "t.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "tablet.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "talk.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "talkgadget.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "telemetry.mozilla.org", true, true, true, 8, &kPinset_mozilla_services }, + { "test-mode.pinning.example.com", true, true, false, -1, &kPinset_mozilla_test }, + { "testpilot.firefox.com", false, false, true, 9, &kPinset_mozilla_services }, + { "th.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "torproject.org", false, false, false, -1, &kPinset_tor }, + { "touch.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "tr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "translate.googleapis.com", true, false, false, -1, &kPinset_google_root_pems }, + { "tunnel-staging.googlezip.net", true, false, false, -1, &kPinset_google_root_pems }, + { "tunnel.googlezip.net", true, false, false, -1, &kPinset_google_root_pems }, + { "tv.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "tw.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "twimg.com", true, false, false, -1, &kPinset_twitterCDN }, + { "twitter.com", true, false, false, -1, &kPinset_twitterCDN }, + { "ua.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "ua5v.com", true, false, false, -1, &kPinset_google_root_pems }, + { "uk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "upload.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "urchin.com", true, false, false, -1, &kPinset_google_root_pems }, + { "uy.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "uz.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "ve.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "vn.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "w-spotlight.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wallet.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "webfilings-eu-mirror.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "webfilings-eu.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "webfilings-mirror-hrd.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "webfilings.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-bigsky-master.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-demo-eu.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-demo-hrd.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-dogfood-hrd.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-pentest.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-staging-hr.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-training-hrd.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-training-master.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "wf-trial-hrd.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "withgoogle.com", true, false, false, -1, &kPinset_google_root_pems }, + { "withyoutube.com", true, false, false, -1, &kPinset_google_root_pems }, + { "www.dropbox.com", true, false, false, -1, &kPinset_dropbox }, + { "www.facebook.com", true, false, false, -1, &kPinset_facebook }, + { "www.g.co", false, false, false, -1, &kPinset_google_root_pems }, + { "www.gmail.com", false, false, false, -1, &kPinset_google_root_pems }, + { "www.googlegroups.com", true, false, false, -1, &kPinset_google_root_pems }, + { "www.googlemail.com", false, false, false, -1, &kPinset_google_root_pems }, + { "www.messenger.com", true, false, false, -1, &kPinset_facebook }, + { "www.torproject.org", true, false, false, -1, &kPinset_tor }, + { "www.twitter.com", true, false, false, -1, &kPinset_twitterCom }, + { "xa.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "xbrlsuccess.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, + { "xn--7xa.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "youtu.be", true, false, false, -1, &kPinset_google_root_pems }, + { "youtube-nocookie.com", true, false, false, -1, &kPinset_google_root_pems }, + { "youtube.com", true, false, false, -1, &kPinset_google_root_pems }, + { "ytimg.com", true, false, false, -1, &kPinset_google_root_pems }, + { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, + { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, +}; + +// Pinning Preload List Length = 495; + +static const int32_t kUnknownId = -1; + +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1643626214621000); diff --git a/security/manager/ssl/nsIX509CertDB.idl b/security/manager/ssl/nsIX509CertDB.idl index e7382b675d..fe3fdbdafd 100644 --- a/security/manager/ssl/nsIX509CertDB.idl +++ b/security/manager/ssl/nsIX509CertDB.idl @@ -46,7 +46,7 @@ interface nsIVerifySignedManifestCallback : nsISupports * This represents a service to access and manipulate * X.509 certificates stored in a database. */ -[scriptable, uuid(8b01c2af-3a44-44d3-8ea5-51c2455e6c4b)] +[scriptable, uuid(fbe2a0c8-ec51-4ea4-80b3-e16793141967)] interface nsIX509CertDB : nsISupports { /** @@ -384,7 +384,8 @@ interface nsIX509CertDB : nsISupports { * @param aCert Obtain the stored trust of this certificate * @param aUsage a integer representing the usage from NSS * @param aFlags flags as described above - * @param verifedChain chain of verification up to the root if success + * @param aHostname the (optional) hostname to verify for + * @param aVerifiedChain chain of verification up to the root if success * @param aHasEVPolicy bool that signified that the cert was an EV cert * @return 0 if success or the value or the error code for the verification * failure @@ -393,7 +394,8 @@ interface nsIX509CertDB : nsISupports { verifyCertNow(in nsIX509Cert aCert, in int64_t /*SECCertificateUsage*/ aUsage, in uint32_t aFlags, - out nsIX509CertList verifiedChain, + in string aHostname, + out nsIX509CertList aVerifiedChain, out bool aHasEVPolicy); // Clears the OCSP cache for the current certificate verification diff --git a/security/manager/ssl/nsNSSCertificateDB.cpp b/security/manager/ssl/nsNSSCertificateDB.cpp index 19d4e41c1f..4e5675a7b9 100644 --- a/security/manager/ssl/nsNSSCertificateDB.cpp +++ b/security/manager/ssl/nsNSSCertificateDB.cpp @@ -1702,16 +1702,17 @@ NS_IMETHODIMP nsNSSCertificateDB::VerifyCertNow(nsIX509Cert* aCert, int64_t /*SECCertificateUsage*/ aUsage, uint32_t aFlags, - nsIX509CertList** verifiedChain, + const char* aHostname, + nsIX509CertList** aVerifiedChain, bool* aHasEVPolicy, int32_t* /*PRErrorCode*/ _retval ) { NS_ENSURE_ARG_POINTER(aCert); NS_ENSURE_ARG_POINTER(aHasEVPolicy); - NS_ENSURE_ARG_POINTER(verifiedChain); + NS_ENSURE_ARG_POINTER(aVerifiedChain); NS_ENSURE_ARG_POINTER(_retval); - *verifiedChain = nullptr; + *aVerifiedChain = nullptr; *aHasEVPolicy = false; *_retval = PR_UNKNOWN_ERROR; @@ -1736,13 +1737,25 @@ nsNSSCertificateDB::VerifyCertNow(nsIX509Cert* aCert, SECOidTag evOidPolicy; SECStatus srv; - srv = certVerifier->VerifyCert(nssCert, aUsage, mozilla::pkix::Now(), - nullptr, // Assume no context - nullptr, // hostname - aFlags, - nullptr, // stapledOCSPResponse - &resultChain, - &evOidPolicy); + if (aHostname && aUsage == certificateUsageSSLServer) { + srv = certVerifier->VerifySSLServerCert(nssCert, + nullptr, // stapledOCSPResponse + mozilla::pkix::Now(), + nullptr, // Assume no context + aHostname, + false, // don't save intermediates + aFlags, + &resultChain, + &evOidPolicy); + } else { + srv = certVerifier->VerifyCert(nssCert, aUsage, mozilla::pkix::Now(), + nullptr, // Assume no context + aHostname, + aFlags, + nullptr, // stapledOCSPResponse + &resultChain, + &evOidPolicy); + } PRErrorCode error = PR_GetError(); @@ -1761,7 +1774,7 @@ nsNSSCertificateDB::VerifyCertNow(nsIX509Cert* aCert, NS_ENSURE_TRUE(error != 0, NS_ERROR_FAILURE); *_retval = error; } - nssCertList.forget(verifiedChain); + nssCertList.forget(aVerifiedChain); return NS_OK; } diff --git a/security/manager/ssl/tests/unit/head_psm.js b/security/manager/ssl/tests/unit/head_psm.js index 6c2f7f1e80..1ee9d4fada 100644 --- a/security/manager/ssl/tests/unit/head_psm.js +++ b/security/manager/ssl/tests/unit/head_psm.js @@ -30,21 +30,20 @@ const SEC_ERROR_BASE = Ci.nsINSSErrorsService.NSS_SEC_ERROR_BASE; const SSL_ERROR_BASE = Ci.nsINSSErrorsService.NSS_SSL_ERROR_BASE; const MOZILLA_PKIX_ERROR_BASE = Ci.nsINSSErrorsService.MOZILLA_PKIX_ERROR_BASE; +// This isn't really a valid PRErrorCode, but is useful for signalling that +// a test is expected to succeed. +const PRErrorCodeSuccess = 0; + // Sort in numerical order -const SEC_ERROR_INVALID_ARGS = SEC_ERROR_BASE + 5; // -8187 const SEC_ERROR_INVALID_TIME = SEC_ERROR_BASE + 8; const SEC_ERROR_BAD_DER = SEC_ERROR_BASE + 9; const SEC_ERROR_EXPIRED_CERTIFICATE = SEC_ERROR_BASE + 11; const SEC_ERROR_REVOKED_CERTIFICATE = SEC_ERROR_BASE + 12; // -8180 const SEC_ERROR_UNKNOWN_ISSUER = SEC_ERROR_BASE + 13; -const SEC_ERROR_BAD_DATABASE = SEC_ERROR_BASE + 18; const SEC_ERROR_UNTRUSTED_ISSUER = SEC_ERROR_BASE + 20; // -8172 const SEC_ERROR_UNTRUSTED_CERT = SEC_ERROR_BASE + 21; // -8171 const SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE = SEC_ERROR_BASE + 30; // -8162 -const SEC_ERROR_EXTENSION_VALUE_INVALID = SEC_ERROR_BASE + 34; // -8158 -const SEC_ERROR_EXTENSION_NOT_FOUND = SEC_ERROR_BASE + 35; // -8157 const SEC_ERROR_CA_CERT_INVALID = SEC_ERROR_BASE + 36; -const SEC_ERROR_INVALID_KEY = SEC_ERROR_BASE + 40; // -8152 const SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION = SEC_ERROR_BASE + 41; const SEC_ERROR_INADEQUATE_KEY_USAGE = SEC_ERROR_BASE + 90; // -8102 const SEC_ERROR_INADEQUATE_CERT_TYPE = SEC_ERROR_BASE + 91; // -8101 @@ -64,7 +63,6 @@ const SEC_ERROR_OCSP_INVALID_SIGNING_CERT = SEC_ERROR_BASE + 144; const SEC_ERROR_POLICY_VALIDATION_FAILED = SEC_ERROR_BASE + 160; // -8032 const SEC_ERROR_OCSP_BAD_SIGNATURE = SEC_ERROR_BASE + 157; const SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED = SEC_ERROR_BASE + 176; -const SEC_ERROR_APPLICATION_CALLBACK_ERROR = SEC_ERROR_BASE + 178; const SSL_ERROR_BAD_CERT_DOMAIN = SSL_ERROR_BASE + 12; const SSL_ERROR_BAD_CERT_ALERT = SSL_ERROR_BASE + 17; @@ -89,6 +87,23 @@ const certificateUsageStatusResponder = 0x0400; const NO_FLAGS = 0; +// Commonly certificates are represented as PEM. The format is roughly as +// follows: +// +// -----BEGIN CERTIFICATE----- +// [some lines of base64, each typically 64 characters long] +// -----END CERTIFICATE----- +// +// However, nsIX509CertDB.constructX509FromBase64 and related functions do not +// handle input of this form. Instead, they require a single string of base64 +// with no newlines or BEGIN/END headers. This is a helper function to convert +// PEM to the format that nsIX509CertDB requires. +function pemToBase64(pem) { + return pem.replace(/-----BEGIN CERTIFICATE-----/, "") + .replace(/-----END CERTIFICATE-----/, "") + .replace(/[\r\n]/g, ""); +} + function readFile(file) { let fstream = Cc["@mozilla.org/network/file-input-stream;1"] .createInstance(Ci.nsIFileInputStream); @@ -100,8 +115,16 @@ function readFile(file) { function addCertFromFile(certdb, filename, trustString) { let certFile = do_get_file(filename, false); - let der = readFile(certFile); - certdb.addCert(der, trustString, null); + let certBytes = readFile(certFile); + let successful = false; + try { + certdb.addCert(certBytes, trustString, null); + successful = true; + } catch (e) {} + if (!successful) { + // It might be PEM instead of DER. + certdb.addCertFromBase64(pemToBase64(certBytes), trustString, null); + } } function constructCertFromFile(filename) { @@ -124,17 +147,27 @@ function getXPCOMStatusFromNSS(statusNSS) { return nssErrorsService.getXPCOMFromNSSError(statusNSS); } -function checkCertErrorGeneric(certdb, cert, expectedError, usage) { - let hasEVPolicy = {}; +// certdb implements nsIX509CertDB. See nsIX509CertDB.idl for documentation. +// In particular, hostname is optional. +function checkCertErrorGeneric(certdb, cert, expectedError, usage, + /*optional*/ hasEVPolicy, + /*optional*/ hostname) { + do_print(`cert cn=${cert.commonName}`); + do_print(`cert issuer cn=${cert.issuerCommonName}`); let verifiedChain = {}; - let error = certdb.verifyCertNow(cert, usage, NO_FLAGS, verifiedChain, - hasEVPolicy); - // expected error == -1 is a special marker for any error is OK - if (expectedError != -1 ) { - do_check_eq(error, expectedError); - } else { - do_check_neq (error, 0); - } + let error = certdb.verifyCertNow(cert, usage, NO_FLAGS, hostname, + verifiedChain, hasEVPolicy || {}); + Assert.equal(error, expectedError, + "Actual and expected error should match"); +} + +function checkEVStatus(certDB, cert, usage, isEVExpected) { + do_print(`cert o=${cert.organization}`); + do_print(`cert issuer o=${cert.issuerOrganization}`); + let hasEVPolicy = {}; + checkCertErrorGeneric(certDB, cert, PRErrorCodeSuccess, usage, hasEVPolicy); + Assert.equal(hasEVPolicy.value, isEVExpected, + "Actual and expected EV status should match"); } function _getLibraryFunctionWithNoArguments(functionName, libraryName) { @@ -217,12 +250,12 @@ function run_test() { add_tls_server_setup(""); add_connection_test(".example.com", - getXPCOMStatusFromNSS(SEC_ERROR_xxx), + SEC_ERROR_xxx, function() { ... }, function(aTransportSecurityInfo) { ... }, function(aTransport) { ... }); [...] - add_connection_test(".example.com", Cr.NS_OK); + add_connection_test(".example.com", PRErrorCodeSuccess); run_next_test(); } @@ -234,15 +267,25 @@ function add_tls_server_setup(serverBinName) { }); } -// Add a TLS connection test case. aHost is the hostname to pass in the SNI TLS -// extension; this should unambiguously identifiy which test is being run. -// aExpectedResult is the expected nsresult of the connection. -// aBeforeConnect is a callback function that takes no arguments that will be -// called before the connection is attempted. -// aWithSecurityInfo is a callback function that takes an -// nsITransportSecurityInfo, which is called after the TLS handshake succeeds. -// aAfterStreamOpen is a callback function that is called with the -// nsISocketTransport once the output stream is ready. +/** + * Add a TLS connection test case. + * + * @param {String} aHost + * The hostname to pass in the SNI TLS extension; this should unambiguously + * identify which test is being run. + * @param {PRErrorCode} aExpectedResult + * The expected result of the connection. If an error is not expected, pass + * in PRErrorCodeSuccess. + * @param {Function} aBeforeConnect + * A callback function that takes no arguments that will be called before the + * connection is attempted. + * @param {Function} aWithSecurityInfo + * A callback function that takes an nsITransportSecurityInfo, which is called + * after the TLS handshake succeeds. + * @param {Function} aAfterStreamOpen + * A callback function that is called with the nsISocketTransport once the + * output stream is ready. + */ function add_connection_test(aHost, aExpectedResult, aBeforeConnect, aWithSecurityInfo, aAfterStreamOpen) { @@ -280,7 +323,8 @@ function add_connection_test(aHost, aExpectedResult, try { // this will throw if the stream has been closed by an error let str = NetUtil.readInputStreamToString(aStream, aStream.available()); - do_check_eq(str, "0"); + Assert.equal(str, "0", + "Should have received ASCII '0' from server"); this.inputStream.close(); this.outputStream.close(); this.result = Cr.NS_OK; @@ -326,7 +370,11 @@ function add_connection_test(aHost, aExpectedResult, } connectTo(aHost).then(function(conn) { do_print("handling " + aHost); - do_check_eq(conn.result, aExpectedResult); + let expectedNSResult = aExpectedResult == PRErrorCodeSuccess + ? Cr.NS_OK + : getXPCOMStatusFromNSS(aExpectedResult); + Assert.equal(conn.result, expectedNSResult, + "Actual and expected connection result should match"); if (aWithSecurityInfo) { aWithSecurityInfo(conn.transport.securityInfo .QueryInterface(Ci.nsITransportSecurityInfo)); @@ -357,7 +405,7 @@ function _getBinaryUtil(binaryUtilName) { utilBin.initWithPath("/data/local/xpcb/"); utilBin.append(binaryUtilName); } - do_check_true(utilBin.exists()); + Assert.ok(utilBin.exists(), `Binary util ${binaryUtilName} should exist`); return utilBin; } @@ -377,8 +425,8 @@ function _setupTLSServerTest(serverBinName) .getService(Ci.nsIEnvironment); let greBinDir = directoryService.get("GreBinD", Ci.nsIFile); envSvc.set("DYLD_LIBRARY_PATH", greBinDir.path); - // Android libraries are in /data/local/xpcb, but "GreBinD" does not return - // this path on Android, so hard code it here. + // TODO(bug 1107794): Android libraries are in /data/local/xpcb, but "GreBinD" + // does not return this path on Android, so hard code it here. envSvc.set("LD_LIBRARY_PATH", greBinDir.path + ":/data/local/xpcb"); envSvc.set("MOZ_TLS_SERVER_DEBUG_LEVEL", "3"); envSvc.set("MOZ_TLS_SERVER_CALLBACK_PORT", CALLBACK_PORT); @@ -401,7 +449,7 @@ function _setupTLSServerTest(serverBinName) process.init(serverBin); let certDir = directoryService.get("CurWorkD", Ci.nsILocalFile); certDir.append("tlsserver"); - do_check_true(certDir.exists()); + Assert.ok(certDir.exists(), "tlsserver folder should exist"); // Using "sql:" causes the SQL DB to be used so we can run tests on Android. process.run(false, [ "sql:" + certDir.path ], 1); @@ -436,7 +484,7 @@ function generateOCSPResponses(ocspRespArray, nssDBlocation) .createInstance(Ci.nsIProcess); process.init(ocspGenBin); process.run(true, argArray, 5); - do_check_eq(0, process.exitValue); + Assert.equal(0, process.exitValue, "Process exit value should be 0"); let ocspFile = do_get_file(i.toString() + ".ocsp", false); retArray.push(readFile(ocspFile)); ocspFile.remove(false); @@ -450,7 +498,7 @@ function generateOCSPResponses(ocspRespArray, nssDBlocation) function getFailingHttpServer(serverPort, serverIdentities) { let httpServer = new HttpServer(); httpServer.registerPrefixHandler("/", function(request, response) { - do_check_true(false); + Assert.ok(false, "HTTP responder should not have been queried"); }); httpServer.identity.setPrimary("http", serverIdentities.shift(), serverPort); serverIdentities.forEach(function(identity) { @@ -474,7 +522,7 @@ function getFailingHttpServer(serverPort, serverIdentities) { // identity is the http hostname that will answer the OCSP requests // invalidIdentities is an array of identities that if used an // will cause a test failure -// nssDBlocaion is the location of the NSS database from where the OCSP +// nssDBLocation is the location of the NSS database from where the OCSP // responses will be generated (assumes appropiate keys are present) // expectedCertNames is an array of nicks of the certs to be responsed // expectedBasePaths is an optional array that is used to indicate @@ -498,16 +546,20 @@ function startOCSPResponder(serverPort, identity, invalidIdentities, httpServer.registerPrefixHandler("/", function handleServerCallback(aRequest, aResponse) { invalidIdentities.forEach(function(identity) { - do_check_neq(aRequest.host, identity) + Assert.notEqual(aRequest.host, identity, + "Request host and invalid identity should not match") }); do_print("got request for: " + aRequest.path); let basePath = aRequest.path.slice(1).split("/")[0]; if (expectedBasePaths.length >= 1) { - do_check_eq(basePath, expectedBasePaths.shift()); + Assert.equal(basePath, expectedBasePaths.shift(), + "Actual and expected base path should match"); } - do_check_true(expectedCertNames.length >= 1); + Assert.ok(expectedCertNames.length >= 1, + "expectedCertNames should contain >= 1 entries"); if (expectedMethods && expectedMethods.length >= 1) { - do_check_eq(aRequest.method, expectedMethods.shift()); + Assert.equal(aRequest.method, expectedMethods.shift(), + "Actual and expected fetch method should match"); } aResponse.setStatusLine(aRequest.httpVersion, 200, "OK"); aResponse.setHeader("Content-Type", "application/ocsp-response"); @@ -521,15 +573,19 @@ function startOCSPResponder(serverPort, identity, invalidIdentities, return { stop: function(callback) { // make sure we consumed each expected response - do_check_eq(ocspResponses.length, 0); + Assert.equal(ocspResponses.length, 0, + "Should have 0 remaining expected OCSP responses"); if (expectedMethods) { - do_check_eq(expectedMethods.length, 0); + Assert.equal(expectedMethods.length, 0, + "Should have 0 remaining expected fetch methods"); } if (expectedBasePaths) { - do_check_eq(expectedBasePaths.length, 0); + Assert.equal(expectedBasePaths.length, 0, + "Should have 0 remaining expected base paths"); } if (expectedResponseTypes) { - do_check_eq(expectedResponseTypes.length, 0); + Assert.equal(expectedResponseTypes.length, 0, + "Should have 0 remaining expected response types"); } httpServer.stop(callback); } diff --git a/security/manager/ssl/tests/unit/moz.build b/security/manager/ssl/tests/unit/moz.build index 2ffee37ee6..8ec456f94c 100644 --- a/security/manager/ssl/tests/unit/moz.build +++ b/security/manager/ssl/tests/unit/moz.build @@ -5,6 +5,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. DIRS += ['tlsserver'] +TEST_DIRS += ['test_intermediate_basic_usage_constraints'] if not CONFIG['MOZ_NO_SMART_CARDS']: DIRS += ['pkcs11testmodule'] diff --git a/security/manager/ssl/tests/unit/psm_common_py/CertUtils.py b/security/manager/ssl/tests/unit/psm_common_py/CertUtils.py index 65088d5724..eb5bd3004d 100644 --- a/security/manager/ssl/tests/unit/psm_common_py/CertUtils.py +++ b/security/manager/ssl/tests/unit/psm_common_py/CertUtils.py @@ -10,6 +10,15 @@ import pexpect import time import sys +aia_prefix = 'authorityInfoAccess = OCSP;URI:http://www.example.com:8888/' +aia_suffix = '/\n' + +mozilla_testing_ev_policy = ('certificatePolicies = @v3_ca_ev_cp\n\n' + + '[ v3_ca_ev_cp ]\n' + + 'policyIdentifier = ' + + '1.3.6.1.4.1.13769.666.666.666.1.500.9.1\n\n' + + 'CPS.1 = "http://mytestdomain.local/cps"') + def generate_cert_generic(db_dir, dest_dir, serial_num, key_type, name, ext_text, signer_key_filename = "", signer_cert_filename = "", diff --git a/security/manager/ssl/tests/unit/pycert.py b/security/manager/ssl/tests/unit/pycert.py new file mode 100644 index 0000000000..f758f08394 --- /dev/null +++ b/security/manager/ssl/tests/unit/pycert.py @@ -0,0 +1,394 @@ +#!/usr/bin/env python +# +# 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/. + +""" +Reads a certificate specification from stdin or a file and outputs a +signed x509 certificate with the desired properties. + +The input format is as follows: + +issuer: +subject: +[extension:>] +[...] + +Known extensions are: +basicConstraints:[cA],[pathLenConstraint] +keyUsage:[digitalSignature,nonRepudiation,keyEncipherment, + dataEncipherment,keyAgreement,keyCertSign,cRLSign] +extKeyUsage:[serverAuth,clientAuth] + +In the future it will be possible to specify other properties of the +generated certificate (for example, its validity period, signature +algorithm, etc.). For now, those fields have reasonable default values. +Currently one shared RSA key is used for all signatures. +""" + +from pyasn1.codec.der import decoder +from pyasn1.codec.der import encoder +from pyasn1.type import constraint, namedtype, tag, univ, useful +from pyasn1_modules import rfc2459 +import base64 +import binascii +import datetime +import hashlib +import sys +import rsa + +class UnknownBaseError(Exception): + """Base class for handling unexpected input in this module.""" + def __init__(self, value): + self.value = value + self.category = 'input' + + def __str__(self): + return 'Unknown %s type "%s"' % (self.category, repr(self.value)) + + +class UnknownAlgorithmTypeError(UnknownBaseError): + """Helper exception type to handle unknown algorithm types.""" + + def __init__(self, value): + UnknownBaseError.__init__(self, value) + self.category = 'algorithm' + + +class UnknownParameterTypeError(UnknownBaseError): + """Helper exception type to handle unknown input parameters.""" + + def __init__(self, value): + UnknownBaseError.__init__(self, value) + self.category = 'parameter' + + +class UnknownExtensionTypeError(UnknownBaseError): + """Helper exception type to handle unknown input extensions.""" + + def __init__(self, value): + UnknownBaseError.__init__(self, value) + self.category = 'extension' + + +class UnknownKeyPurposeTypeError(UnknownBaseError): + """Helper exception type to handle unknown key purposes.""" + + def __init__(self, value): + UnknownBaseError.__init__(self, value) + self.category = 'keyPurpose' + + +def getASN1Tag(asn1Type): + """Helper function for returning the base tag value of a given + type from the pyasn1 package""" + return asn1Type.baseTagSet.getBaseTag().asTuple()[2] + +def stringToAlgorithmIdentifier(string): + """Helper function that converts a description of an algorithm + to a representation usable by the pyasn1 package""" + algorithmIdentifier = rfc2459.AlgorithmIdentifier() + algorithm = None + if string == 'sha256WithRSAEncryption': + algorithm = univ.ObjectIdentifier('1.2.840.113549.1.1.11') + # In the future, more algorithms will be supported. + if algorithm == None: + raise UnknownAlgorithmTypeError(string) + algorithmIdentifier.setComponentByName('algorithm', algorithm) + return algorithmIdentifier + +def stringToCommonName(string): + """Helper function for taking a string and building an x520 name + representation usable by the pyasn1 package. Currently returns one + RDN with one AVA consisting of a Common Name encoded as a + UTF8String.""" + commonName = rfc2459.X520CommonName() + commonName.setComponentByName('utf8String', string) + ava = rfc2459.AttributeTypeAndValue() + ava.setComponentByName('type', rfc2459.id_at_commonName) + ava.setComponentByName('value', commonName) + rdn = rfc2459.RelativeDistinguishedName() + rdn.setComponentByPosition(0, ava) + rdns = rfc2459.RDNSequence() + rdns.setComponentByPosition(0, rdn) + name = rfc2459.Name() + name.setComponentByPosition(0, rdns) + return name + +def datetimeToTime(dt): + """Takes a datetime object and returns an rfc2459.Time object with + that time as its value as a GeneralizedTime""" + time = rfc2459.Time() + time.setComponentByName('generalTime', useful.GeneralizedTime(dt.strftime('%Y%m%d%H%M%SZ'))) + return time + +def byteStringToHexifiedBitString(string): + """Takes a string of bytes and returns a hex string representing + those bytes for use with pyasn1.type.univ.BitString. It must be of + the form "''H", where the trailing 'H' indicates to + pyasn1 that the input is a hex string.""" + return "'%s'H" % binascii.hexlify(string) + +class RSAPublicKey(univ.Sequence): + """Helper type for encoding an RSA public key""" + componentType = namedtype.NamedTypes( + namedtype.NamedType('N', univ.Integer()), + namedtype.NamedType('E', univ.Integer())) + + +class Certificate: + """Utility class for reading a certificate specification and + generating a signed x509 certificate""" + + sharedRSA_N = long( + '00ba8851a8448e16d641fd6eb6880636103d3c13d9eae4354ab4ecf56857' + '6c247bc1c725a8e0d81fbdb19c069b6e1a86f26be2af5a756b6a6471087a' + 'a55aa74587f71cd5249c027ecd43fc1e69d038202993ab20c349e4dbb94c' + 'c26b6c0eed15820ff17ead691ab1d3023a8b2a41eea770e00f0d8dfd660b' + '2bb02492a47db988617990b157903dd23bc5e0b8481fa837d38843ef2716' + 'd855b7665aaa7e02902f3a7b10800624cc1c6c97ad96615bb7e29612c075' + '31a30c91ddb4caf7fcad1d25d309efb9170ea768e1b37b2f226f69e3b48a' + '95611dee26d6259dab91084e36cb1c24042cbf168b2fe5f18f991731b8b3' + 'fe4923fa7251c431d503acda180a35ed8d', 16) + sharedRSA_E = 65537L + sharedRSA_D = long( + '009ecbce3861a454ecb1e0fe8f85dd43c92f5825ce2e997884d0e1a949da' + 'a2c5ac559b240450e5ac9fe0c3e31c0eefa6525a65f0c22194004ee1ab46' + '3dde9ee82287cc93e746a91929c5e6ac3d88753f6c25ba5979e73e5d8fb2' + '39111a3cdab8a4b0cdf5f9cab05f1233a38335c64b5560525e7e3b92ad7c' + '7504cf1dc7cb005788afcbe1e8f95df7402a151530d5808346864eb370aa' + '79956a587862cb533791307f70d91c96d22d001a69009b923c683388c9f3' + '6cb9b5ebe64302041c78d908206b87009cb8cabacad3dbdb2792fb911b2c' + 'f4db6603585be9ae0ca3b8e6417aa04b06e470ea1a3b581ca03a6781c931' + '5b62b30e6011f224725946eec57c6d9441', 16) + sharedRSA_P = long( + '00dd6e1d4fffebf68d889c4d114cdaaa9caa63a59374286c8a5c29a717bb' + 'a60375644d5caa674c4b8bc7326358646220e4550d7608ac27d55b6db74f' + '8d8127ef8fa09098b69147de065573447e183d22fe7d885aceb513d9581d' + 'd5e07c1a90f5ce0879de131371ecefc9ce72e9c43dc127d238190de81177' + '3ca5d19301f48c742b', 16) + sharedRSA_Q = long( + '00d7a773d9ebc380a767d2fec0934ad4e8b5667240771acdebb5ad796f47' + '8fec4d45985efbc9532968289c8d89102fadf21f34e2dd4940eba8c09d6d' + '1f16dcc29729774c43275e9251ddbe4909e1fd3bf1e4bedf46a39b8b3833' + '28ef4ae3b95b92f2070af26c9e7c5c9b587fedde05e8e7d86ca57886fb16' + '5810a77b9845bc3127', 16) + + def __init__(self, paramStream, now=datetime.datetime.utcnow()): + self.version = 'v3' + self.signature = 'sha256WithRSAEncryption' + self.issuer = 'Default Issuer' + oneYear = datetime.timedelta(days=365) + self.notBefore = now - oneYear + self.notAfter = now + oneYear + self.subject = 'Default Subject' + self.signatureAlgorithm = 'sha256WithRSAEncryption' + self.extensions = None + self.decodeParams(paramStream) + self.serialNumber = self.generateSerialNumber() + + def generateSerialNumber(self): + """Generates a serial number for this certificate based on its + contents. Intended to be reproducible for compatibility with + the build system on OS X (see the comment above main, later in + this file).""" + hasher = hashlib.sha256() + hasher.update(self.version) + hasher.update(self.signature) + hasher.update(self.issuer) + hasher.update(str(self.notBefore)) + hasher.update(str(self.notAfter)) + hasher.update(self.subject) + hasher.update(self.signatureAlgorithm) + if self.extensions: + for extension in self.extensions: + hasher.update(str(extension)) + serialBytes = [ord(c) for c in hasher.digest()[:20]] + # Ensure that the most significant bit isn't set (which would + # indicate a negative number, which isn't valid for serial + # numbers). + serialBytes[0] &= 0x7f + # Also ensure that the least significant bit on the most + # significant byte is set (to prevent a leading zero byte, + # which also wouldn't be valid). + serialBytes[0] |= 0x01 + # Now prepend the ASN.1 INTEGER tag and length bytes. + serialBytes.insert(0, len(serialBytes)) + serialBytes.insert(0, getASN1Tag(univ.Integer)) + return ''.join(chr(b) for b in serialBytes) + + def decodeParams(self, paramStream): + for line in paramStream.readlines(): + self.decodeParam(line.strip()) + + def decodeParam(self, line): + param = line.split(':')[0] + value = ':'.join(line.split(':')[1:]) + if param == 'subject': + self.subject = value + elif param == 'issuer': + self.issuer = value + elif param == 'extension': + self.decodeExtension(value) + else: + raise UnknownParameterTypeError(param) + + def decodeExtension(self, extension): + extensionType = extension.split(':')[0] + value = ':'.join(extension.split(':')[1:]) + if extensionType == 'basicConstraints': + self.addBasicConstraints(value) + elif extensionType == 'keyUsage': + self.addKeyUsage(value) + elif extensionType == 'extKeyUsage': + self.addExtKeyUsage(value) + else: + raise UnknownExtensionTypeError(extensionType) + + def addExtension(self, extensionType, extensionValue): + if not self.extensions: + self.extensions = [] + encapsulated = univ.OctetString(encoder.encode(extensionValue)) + extension = rfc2459.Extension() + extension.setComponentByName('extnID', extensionType) + extension.setComponentByName('extnValue', encapsulated) + self.extensions.append(extension) + + def addBasicConstraints(self, basicConstraints): + cA = basicConstraints.split(',')[0] + pathLenConstraint = basicConstraints.split(',')[1] + basicConstraintsExtension = rfc2459.BasicConstraints() + basicConstraintsExtension.setComponentByName('cA', cA == 'cA') + if pathLenConstraint: + pathLenConstraintValue = \ + univ.Integer(int(pathLenConstraint)).subtype( + subtypeSpec=constraint.ValueRangeConstraint(0, 64)) + basicConstraintsExtension.setComponentByName('pathLenConstraint', + pathLenConstraintValue) + self.addExtension(rfc2459.id_ce_basicConstraints, basicConstraintsExtension) + + def addKeyUsage(self, keyUsage): + keyUsageExtension = rfc2459.KeyUsage(keyUsage) + self.addExtension(rfc2459.id_ce_keyUsage, keyUsageExtension) + + def keyPurposeToOID(self, keyPurpose): + if keyPurpose == 'serverAuth': + # the OID for id_kp_serverAuth is incorrect in the + # pyasn1-modules implementation + return univ.ObjectIdentifier('1.3.6.1.5.5.7.3.1') + if keyPurpose == 'clientAuth': + return rfc2459.id_kp_clientAuth + raise UnknownKeyPurposeTypeError(keyPurpose) + + def addExtKeyUsage(self, extKeyUsage): + extKeyUsageExtension = rfc2459.ExtKeyUsageSyntax() + count = 0 + for keyPurpose in extKeyUsage.split(','): + extKeyUsageExtension.setComponentByPosition(count, self.keyPurposeToOID(keyPurpose)) + count += 1 + self.addExtension(rfc2459.id_ce_extKeyUsage, extKeyUsageExtension) + + def getVersion(self): + return rfc2459.Version(self.version).subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)) + + def getSerialNumber(self): + return decoder.decode(self.serialNumber)[0] + + def getSignature(self): + return stringToAlgorithmIdentifier(self.signature) + + def getIssuer(self): + return stringToCommonName(self.issuer) + + def getValidity(self): + validity = rfc2459.Validity() + validity.setComponentByName('notBefore', self.getNotBefore()) + validity.setComponentByName('notAfter', self.getNotAfter()) + return validity + + def getNotBefore(self): + return datetimeToTime(self.notBefore) + + def getNotAfter(self): + return datetimeToTime(self.notAfter) + + def getSubject(self): + return stringToCommonName(self.subject) + + def getSignatureAlgorithm(self): + return stringToAlgorithmIdentifier(self.signature) + + def getSubjectPublicKey(self): + rsaKey = RSAPublicKey() + rsaKey.setComponentByName('N', univ.Integer(self.sharedRSA_N)) + rsaKey.setComponentByName('E', univ.Integer(self.sharedRSA_E)) + return univ.BitString(byteStringToHexifiedBitString(encoder.encode(rsaKey))) + + def getSubjectPublicKeyInfo(self): + algorithmIdentifier = rfc2459.AlgorithmIdentifier() + algorithmIdentifier.setComponentByName('algorithm', rfc2459.rsaEncryption) + algorithmIdentifier.setComponentByName('parameters', univ.Null()) + spki = rfc2459.SubjectPublicKeyInfo() + spki.setComponentByName('algorithm', algorithmIdentifier) + spki.setComponentByName('subjectPublicKey', self.getSubjectPublicKey()) + return spki + + def toDER(self): + tbsCertificate = rfc2459.TBSCertificate() + tbsCertificate.setComponentByName('version', self.getVersion()) + tbsCertificate.setComponentByName('serialNumber', self.getSerialNumber()) + tbsCertificate.setComponentByName('signature', self.getSignature()) + tbsCertificate.setComponentByName('issuer', self.getIssuer()) + tbsCertificate.setComponentByName('validity', self.getValidity()) + tbsCertificate.setComponentByName('subject', self.getSubject()) + tbsCertificate.setComponentByName('subjectPublicKeyInfo', self.getSubjectPublicKeyInfo()) + if self.extensions: + extensions = rfc2459.Extensions().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)) + count = 0 + for extension in self.extensions: + extensions.setComponentByPosition(count, extension) + count += 1 + tbsCertificate.setComponentByName('extensions', extensions) + tbsDER = encoder.encode(tbsCertificate) + rsaPrivateKey = rsa.PrivateKey(self.sharedRSA_N, self.sharedRSA_E, self.sharedRSA_D, + self.sharedRSA_P, self.sharedRSA_Q) + signature = rsa.sign(tbsDER, rsaPrivateKey, 'SHA-256') + certificate = rfc2459.Certificate() + certificate.setComponentByName('tbsCertificate', tbsCertificate) + certificate.setComponentByName('signatureAlgorithm', self.getSignatureAlgorithm()) + certificate.setComponentByName('signatureValue', byteStringToHexifiedBitString(signature)) + return encoder.encode(certificate) + + def toPEM(self): + output = '-----BEGIN CERTIFICATE-----' + der = self.toDER() + b64 = base64.b64encode(der) + while b64: + output += '\n' + b64[:64] + b64 = b64[64:] + output += '\n-----END CERTIFICATE-----' + return output + + +# The build harness will call this function with an output file-like +# object, a path to a file containing a specification, and the path to +# the directory containing the buildid file. This will read the +# specification and output the certificate as PEM. The purpose of the +# buildid file is to provide a single definition of 'now'. This is +# particularly important when building on OS X, where we generate +# everything twice for unified builds. During the unification step, if +# any pair of input files differ, the build system throws an error. +def main(output, inputPath, buildIDPath): + with open(buildIDPath) as buildidFile: + buildid = buildidFile.read().strip() + now = datetime.datetime.strptime(buildid, '%Y%m%d%H%M%S') + with open(inputPath) as configStream: + output.write(Certificate(configStream, now=now).toPEM()) + +# When run as a standalone program, this will read a specification from +# stdin and output the certificate as PEM to stdout. +if __name__ == '__main__': + print Certificate(sys.stdin).toPEM() diff --git a/security/manager/ssl/tests/unit/test_add_preexisting_cert.js b/security/manager/ssl/tests/unit/test_add_preexisting_cert.js index 4521235caf..1fcf242c38 100644 --- a/security/manager/ssl/tests/unit/test_add_preexisting_cert.js +++ b/security/manager/ssl/tests/unit/test_add_preexisting_cert.js @@ -7,7 +7,7 @@ let certDB = Cc["@mozilla.org/security/x509certdb;1"] .getService(Ci.nsIX509CertDB); function load_cert(cert, trust) { - let file = "test_intermediate_basic_usage_constraints/" + cert + ".der"; + let file = "test_intermediate_basic_usage_constraints/" + cert + ".pem"; addCertFromFile(certDB, file, trust); } @@ -28,10 +28,8 @@ function run_test() { let file = "test_intermediate_basic_usage_constraints/ee-int-limited-depth.der"; let cert_der = readFile(do_get_file(file)); let ee = certDB.constructX509(cert_der, cert_der.length); - let hasEVPolicy = {}; - let verifiedChain = {}; - equal(Cr.NS_OK, certDB.verifyCertNow(ee, certificateUsageSSLServer, - NO_FLAGS, verifiedChain, hasEVPolicy)); + checkCertErrorGeneric(certDB, ee, PRErrorCodeSuccess, + certificateUsageSSLServer); // Change the already existing intermediate certificate's trust using // addCertFromBase64(). We use findCertByNickname first to ensure that the // certificate already exists. @@ -39,8 +37,6 @@ function run_test() { ok(int_cert); let base64_cert = btoa(getDERString(int_cert)); certDB.addCertFromBase64(base64_cert, "p,p,p", "ignored_argument"); - equal(SEC_ERROR_UNTRUSTED_ISSUER, certDB.verifyCertNow(ee, - certificateUsageSSLServer, - NO_FLAGS, verifiedChain, - hasEVPolicy)); -} \ No newline at end of file + checkCertErrorGeneric(certDB, ee, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageSSLServer); +} diff --git a/security/manager/ssl/tests/unit/test_cert_blocklist.js b/security/manager/ssl/tests/unit/test_cert_blocklist.js index a393a18d70..a94a4698d2 100644 --- a/security/manager/ssl/tests/unit/test_cert_blocklist.js +++ b/security/manager/ssl/tests/unit/test_cert_blocklist.js @@ -153,8 +153,7 @@ converter.charset = "UTF-8"; function verify_cert(file, expectedError) { let cert_der = readFile(do_get_file(file)); let ee = certDB.constructX509(cert_der, cert_der.length); - equal(expectedError, certDB.verifyCertNow(ee, certificateUsageSSLServer, - NO_FLAGS, {}, {})); + checkCertErrorGeneric(certDB, ee, expectedError, certificateUsageSSLServer); } function load_cert(cert, trust) { @@ -221,12 +220,12 @@ function run_test() { // test-int-ee.der. // Check the cert validates before we load the blocklist let file = "tlsserver/test-int-ee.der"; - verify_cert(file, Cr.NS_OK); + verify_cert(file, PRErrorCodeSuccess); // The blocklist also revokes other-test-ca.der, which issued other-ca-ee.der. // Check the cert validates before we load the blocklist file = "tlsserver/default-ee.der"; - verify_cert(file, Cr.NS_OK); + verify_cert(file, PRErrorCodeSuccess); // blocklist load is async so we must use add_test from here add_test(function() { @@ -296,7 +295,7 @@ function run_test() { // Check a non-blocklisted chain still validates OK file = "tlsserver/default-ee.der"; - verify_cert(file, Cr.NS_OK); + verify_cert(file, PRErrorCodeSuccess); // Check a bad cert is still bad (unknown issuer) file = "tlsserver/unknown-issuer.der"; diff --git a/security/manager/ssl/tests/unit/test_cert_chains.js b/security/manager/ssl/tests/unit/test_cert_chains.js index 970cfaf7f3..265fde0eda 100644 --- a/security/manager/ssl/tests/unit/test_cert_chains.js +++ b/security/manager/ssl/tests/unit/test_cert_chains.js @@ -101,7 +101,7 @@ function run_test() { // Test successful connection (failedCertChain should be null) add_connection_test( // re-use pinning certs (keeler) - "good.include-subdomains.pinning.example.com", Cr.NS_OK, null, + "good.include-subdomains.pinning.example.com", PRErrorCodeSuccess, null, function withSecurityInfo(aTransportSecurityInfo) { aTransportSecurityInfo.QueryInterface(Ci.nsITransportSecurityInfo); test_security_info_serialization(aTransportSecurityInfo, 0); @@ -112,7 +112,7 @@ function run_test() { // Test overrideable connection failure (failedCertChain should be non-null) add_connection_test( "expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_EXPIRED_CERTIFICATE), + SEC_ERROR_EXPIRED_CERTIFICATE, null, function withSecurityInfo(securityInfo) { securityInfo.QueryInterface(Ci.nsITransportSecurityInfo); @@ -126,7 +126,7 @@ function run_test() { // Test non-overrideable error (failedCertChain should be non-null) add_connection_test( "inadequatekeyusage.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_INADEQUATE_KEY_USAGE), + SEC_ERROR_INADEQUATE_KEY_USAGE, null, function withSecurityInfo(securityInfo) { securityInfo.QueryInterface(Ci.nsITransportSecurityInfo); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA.js b/security/manager/ssl/tests/unit/test_cert_eku-CA.js index 18eb3c0c11..cad9e66513 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA.js @@ -25,13 +25,13 @@ function run_test() { load_cert("ca", "CT,CT,CT"); checkCertErrorGeneric(certdb, load_cert('int-EKU-CA', ',,'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -43,7 +43,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -55,13 +55,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -97,7 +97,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA_EP.js b/security/manager/ssl/tests/unit/test_cert_eku-CA_EP.js index 61834d5252..11a6b03864 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA_EP.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA_EP.js @@ -25,17 +25,17 @@ function run_test() { load_cert("ca", "CT,CT,CT"); checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_EP', ',,'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -43,7 +43,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -55,13 +55,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -70,14 +70,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -88,20 +88,20 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-CA_EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA_EP_NS_OS_SA_TS.js b/security/manager/ssl/tests/unit/test_cert_eku-CA_EP_NS_OS_SA_TS.js index d4fcd72d6b..71217a7db9 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA_EP_NS_OS_SA_TS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA_EP_NS_OS_SA_TS.js @@ -24,26 +24,26 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_EP_NS_OS_SA_TS', ',,'), 0, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_EP_NS_OS_SA_TS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -54,14 +54,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -70,38 +70,38 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -114,9 +114,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -132,27 +132,27 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA_NS.js b/security/manager/ssl/tests/unit/test_cert_eku-CA_NS.js index ace53acc6c..dfad636abb 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA_NS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA_NS.js @@ -24,14 +24,14 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_NS', ',,'), 0, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_NS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_NS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -43,7 +43,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_NS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -55,13 +55,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_NS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -97,8 +97,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA_OS.js b/security/manager/ssl/tests/unit/test_cert_eku-CA_OS.js index 6a3d346ba1..35a45e9992 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA_OS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA_OS.js @@ -25,13 +25,13 @@ function run_test() { load_cert("ca", "CT,CT,CT"); checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_OS', ',,'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_OS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -42,8 +42,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_OS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -54,14 +54,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_OS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -84,7 +84,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -97,7 +97,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_OS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -114,7 +114,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -132,19 +132,19 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA_SA.js b/security/manager/ssl/tests/unit/test_cert_eku-CA_SA.js index 7cf991c1aa..e6e7767499 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA_SA.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA_SA.js @@ -24,14 +24,14 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_SA', ',,'), 0, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_SA', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_SA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -43,7 +43,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_SA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -55,13 +55,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_SA.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -97,8 +97,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-CA_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-CA_TS.js b/security/manager/ssl/tests/unit/test_cert_eku-CA_TS.js index 98177ee174..b2c14cabc2 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-CA_TS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-CA_TS.js @@ -25,13 +25,13 @@ function run_test() { load_cert("ca", "CT,CT,CT"); checkCertErrorGeneric(certdb, load_cert('int-EKU-CA_TS', ',,'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -43,7 +43,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -55,13 +55,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -97,7 +97,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_TS.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-CA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-EP.js b/security/manager/ssl/tests/unit/test_cert_eku-EP.js index 5d7aaad2ed..48cb808250 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-EP.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-EP.js @@ -34,8 +34,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -70,14 +70,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -88,20 +88,20 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-EP_NS.js b/security/manager/ssl/tests/unit/test_cert_eku-EP_NS.js index 57fd1c0165..e80efb9e45 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-EP_NS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-EP_NS.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-EP_NS', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-EP_NS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -34,8 +34,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -70,14 +70,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -86,22 +86,22 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-EP_OS.js b/security/manager/ssl/tests/unit/test_cert_eku-EP_OS.js index 8c8df0ff14..525a824c7d 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-EP_OS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-EP_OS.js @@ -34,15 +34,15 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -54,7 +54,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -70,38 +70,38 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -114,7 +114,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -132,19 +132,19 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-EP_SA.js b/security/manager/ssl/tests/unit/test_cert_eku-EP_SA.js index 15288f76b3..55ebb98e98 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-EP_SA.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-EP_SA.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-EP_SA', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-EP_SA', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -34,8 +34,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -70,14 +70,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -86,22 +86,22 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-EP_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-EP_TS.js b/security/manager/ssl/tests/unit/test_cert_eku-EP_TS.js index 2184268ad4..f50e09c3b8 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-EP_TS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-EP_TS.js @@ -34,8 +34,8 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -70,14 +70,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -88,20 +88,20 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-EP_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-NONE.js b/security/manager/ssl/tests/unit/test_cert_eku-NONE.js index 90b6826694..0b7ca0b1f3 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-NONE.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-NONE.js @@ -24,26 +24,26 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-NONE', ',,'), 0, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, load_cert('int-EKU-NONE', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NONE.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -54,14 +54,14 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-NONE.der'), 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); @@ -70,38 +70,38 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), 0, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), 0, certificateUsageEmailSigner); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), 0, certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); @@ -114,9 +114,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NONE.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -132,27 +132,27 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NONE.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NONE.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NONE.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-NS.js b/security/manager/ssl/tests/unit/test_cert_eku-NS.js index e4c552e4b3..c384b39e1c 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-NS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-NS.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-NS', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-NS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-NS_OS.js b/security/manager/ssl/tests/unit/test_cert_eku-NS_OS.js index ef3364f1cd..c63afd9fa1 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-NS_OS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-NS_OS.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-NS_OS', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-NS_OS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -42,7 +42,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -54,9 +54,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_OS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -84,9 +84,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_OS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_OS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -114,9 +114,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_OS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -132,27 +132,27 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_OS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_OS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-NS_SA.js b/security/manager/ssl/tests/unit/test_cert_eku-NS_SA.js index 18438f3c97..f0281517cc 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-NS_SA.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-NS_SA.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-NS_SA', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-NS_SA', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-NS_TS.js b/security/manager/ssl/tests/unit/test_cert_eku-NS_TS.js index 2446341d7b..ad03ce1962 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-NS_TS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-NS_TS.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-NS_TS', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-NS_TS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-NS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-OS.js b/security/manager/ssl/tests/unit/test_cert_eku-OS.js index 412d5f1ac6..c551136b80 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-OS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-OS.js @@ -42,7 +42,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -54,7 +54,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -84,7 +84,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -114,7 +114,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -132,19 +132,19 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-OS_SA.js b/security/manager/ssl/tests/unit/test_cert_eku-OS_SA.js index 30689bcc4e..b7b0512c9c 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-OS_SA.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-OS_SA.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-OS_SA', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-OS_SA', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -42,7 +42,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -54,9 +54,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -84,9 +84,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-OS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -114,9 +114,9 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -132,27 +132,27 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-OS_SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-OS_SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-OS_SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-OS_TS.js b/security/manager/ssl/tests/unit/test_cert_eku-OS_TS.js index 4b82009eea..4cd9f09a16 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-OS_TS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-OS_TS.js @@ -42,7 +42,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_NS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -54,7 +54,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -84,7 +84,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -114,7 +114,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -132,19 +132,19 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_SA-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), 0, certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-OS_TS.der'), PRErrorCodeSuccess, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-OS_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-SA.js b/security/manager/ssl/tests/unit/test_cert_eku-SA.js index db3cb05417..aff598b5bd 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-SA.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-SA.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-SA', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-SA', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku-SA_TS.js b/security/manager/ssl/tests/unit/test_cert_eku-SA_TS.js index 3377f0a6f0..599301d686 100644 --- a/security/manager/ssl/tests/unit/test_cert_eku-SA_TS.js +++ b/security/manager/ssl/tests/unit/test_cert_eku-SA_TS.js @@ -24,7 +24,7 @@ function load_cert(cert_name, trust_string) { function run_test() { load_cert("ca", "CT,CT,CT"); - checkCertErrorGeneric(certdb, load_cert('int-EKU-SA_TS', ',,'), 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, load_cert('int-EKU-SA_TS', ',,'), PRErrorCodeSuccess, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); @@ -56,7 +56,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_OS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-CA_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -86,7 +86,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_OS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -98,7 +98,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-EP_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NONE-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -116,7 +116,7 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_OS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-NS_SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); @@ -146,13 +146,13 @@ function run_test() { checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-OS_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageStatusResponder); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageSSLClient); - checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA_TS.der'), 0, certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA_TS.der'), PRErrorCodeSuccess, certificateUsageSSLServer); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_KEY_USAGE, certificateUsageSSLCA); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailSigner); checkCertErrorGeneric(certdb, cert_from_file('ee-EKU-SA_TS-int-EKU-SA_TS.der'), SEC_ERROR_INADEQUATE_CERT_TYPE, certificateUsageEmailRecipient); diff --git a/security/manager/ssl/tests/unit/test_cert_eku/generate.py b/security/manager/ssl/tests/unit/test_cert_eku/generate.py index febc7e4512..2ad815ce69 100755 --- a/security/manager/ssl/tests/unit/test_cert_eku/generate.py +++ b/security/manager/ssl/tests/unit/test_cert_eku/generate.py @@ -81,7 +81,7 @@ def gen_int_js_output(int_string): # usage (the second of which is deprecated but currently supported for # compatibility purposes). if ("NONE" in int_string or "SA" in int_string or "NS" in int_string): - expectedResult = "0" + expectedResult = "PRErrorCodeSuccess" return (" checkCertErrorGeneric(certdb, load_cert('" + int_string + "', ',,'), " + expectedResult + ", certificateUsageSSLCA);\n") @@ -123,7 +123,7 @@ def gen_ee_js_output(int_string, ee_string, cert_usage, ee_name): if not has_compatible_eku(int_string, usage_abbreviation): return single_test_output(ee_name, cert_usage, "SEC_ERROR_INADEQUATE_CERT_TYPE") - return single_test_output(ee_name, cert_usage, "0") + return single_test_output(ee_name, cert_usage, "PRErrorCodeSuccess") # If the usage isn't Status Responder, if the end-entity certificate has # the OCSP Signing usage in its EKU, it is not valid for any other usage. @@ -142,7 +142,7 @@ def gen_ee_js_output(int_string, ee_string, cert_usage, ee_name): "NS" not in int_string): return single_test_output(ee_name, cert_usage, "SEC_ERROR_INADEQUATE_CERT_TYPE") - return single_test_output(ee_name, cert_usage, "0") + return single_test_output(ee_name, cert_usage, "PRErrorCodeSuccess") if not has_compatible_eku(ee_string, usage_abbreviation): return single_test_output(ee_name, cert_usage, @@ -151,7 +151,7 @@ def gen_ee_js_output(int_string, ee_string, cert_usage, ee_name): return single_test_output(ee_name, cert_usage, "SEC_ERROR_INADEQUATE_CERT_TYPE") - return single_test_output(ee_name, cert_usage, "0") + return single_test_output(ee_name, cert_usage, "PRErrorCodeSuccess") def generate_test_eku(): outmap = { "NONE" : ""} diff --git a/security/manager/ssl/tests/unit/test_cert_overrides.js b/security/manager/ssl/tests/unit/test_cert_overrides.js index a04d01b58c..3ae6219f11 100644 --- a/security/manager/ssl/tests/unit/test_cert_overrides.js +++ b/security/manager/ssl/tests/unit/test_cert_overrides.js @@ -15,7 +15,7 @@ do_get_profile(); function add_non_overridable_test(aHost, aExpectedError) { add_connection_test( - aHost, getXPCOMStatusFromNSS(aExpectedError), null, + aHost, aExpectedError, null, function (securityInfo) { // bug 754369 - no SSLStatus probably means this is a non-overridable // error, which is what we're testing (although it would be best to test @@ -44,44 +44,41 @@ function run_test() { function add_simple_tests() { add_cert_override_test("expired.example.com", Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SEC_ERROR_EXPIRED_CERTIFICATE)); + SEC_ERROR_EXPIRED_CERTIFICATE); add_cert_override_test("notyetvalid.example.com", Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS( - MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE)); + MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE); add_cert_override_test("before-epoch.example.com", Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SEC_ERROR_INVALID_TIME)); + SEC_ERROR_INVALID_TIME); add_cert_override_test("selfsigned.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_cert_override_test("unknownissuer.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_cert_override_test("expiredissuer.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE)); + SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE); add_cert_override_test("notyetvalidissuer.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS( - MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE)); + MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE); add_cert_override_test("before-epoch-issuer.example.com", Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SEC_ERROR_INVALID_TIME)); + SEC_ERROR_INVALID_TIME); add_cert_override_test("md5signature.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS( - SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED)); + SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED); add_cert_override_test("mismatch.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH, - getXPCOMStatusFromNSS(SSL_ERROR_BAD_CERT_DOMAIN)); + SSL_ERROR_BAD_CERT_DOMAIN); // A Microsoft IIS utility generates self-signed certificates with // properties similar to the one this "host" will present (see // tlsserver/generate_certs.sh). add_cert_override_test("selfsigned-inadequateEKU.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_non_overridable_test("inadequatekeyusage.example.com", SEC_ERROR_INADEQUATE_KEY_USAGE); @@ -107,17 +104,17 @@ function add_simple_tests() { // is a scenario in which an override is allowed. add_cert_override_test("self-signed-end-entity-with-cA-true.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_cert_override_test("ca-used-as-end-entity.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY)); + MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY); // If an X.509 version 1 certificate is not a trust anchor, we will // encounter an overridable error. add_cert_override_test("end-entity-issued-by-v1-cert.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA)); + MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA); // If we make that certificate a trust anchor, the connection will succeed. add_test(function() { let certOverrideService = Cc["@mozilla.org/security/certoverride;1"] @@ -128,7 +125,8 @@ function add_simple_tests() { clearSessionCache(); run_next_test(); }); - add_connection_test("end-entity-issued-by-v1-cert.example.com", Cr.NS_OK); + add_connection_test("end-entity-issued-by-v1-cert.example.com", + PRErrorCodeSuccess); // Reset the trust for that certificate. add_test(function() { let v1Cert = constructCertFromFile("tlsserver/v1Cert.der"); @@ -141,7 +139,7 @@ function add_simple_tests() { // certificates that are not valid CAs. add_cert_override_test("end-entity-issued-by-non-CA.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_CA_CERT_INVALID)); + SEC_ERROR_CA_CERT_INVALID); // This host presents a 1008-bit RSA key. NSS determines this key is too // small and terminates the connection. The error is not overridable. @@ -153,40 +151,38 @@ function add_combo_tests() { add_cert_override_test("mismatch-expired.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH | Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SSL_ERROR_BAD_CERT_DOMAIN)); add_cert_override_test("mismatch-notYetValid.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH | Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SSL_ERROR_BAD_CERT_DOMAIN)); + SSL_ERROR_BAD_CERT_DOMAIN); add_cert_override_test("mismatch-untrusted.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH | Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_cert_override_test("untrusted-expired.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED | Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_cert_override_test("mismatch-untrusted-expired.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH | Ci.nsICertOverrideService.ERROR_UNTRUSTED | Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_cert_override_test("md5signature-expired.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED | Ci.nsICertOverrideService.ERROR_TIME, - getXPCOMStatusFromNSS( - SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED)); + SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED); add_cert_override_test("ca-used-as-end-entity-name-mismatch.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH | Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY)); + MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY); } function add_distrust_tests() { // Before we specifically distrust this certificate, it should be trusted. - add_connection_test("untrusted.example.com", Cr.NS_OK); + add_connection_test("untrusted.example.com", PRErrorCodeSuccess); add_distrust_test("tlsserver/default-ee.der", "untrusted.example.com", SEC_ERROR_UNTRUSTED_CERT); diff --git a/security/manager/ssl/tests/unit/test_cert_trust.js b/security/manager/ssl/tests/unit/test_cert_trust.js index 25539e3164..6bd2137698 100644 --- a/security/manager/ssl/tests/unit/test_cert_trust.js +++ b/security/manager/ssl/tests/unit/test_cert_trust.js @@ -13,7 +13,7 @@ let certList = [ 'ee', 'int', 'ca', -] +]; function load_cert(cert_name, trust_string) { let cert_filename = cert_name + ".der"; @@ -29,153 +29,162 @@ function setup_basic_trusts(ca_cert, int_cert) { certdb.setCertTrust(int_cert, Ci.nsIX509Cert.CA_CERT, 0); } -function check_cert_err_generic(cert, expected_error, usage) { - do_print("cert cn=" + cert.commonName); - do_print("cert issuer cn=" + cert.issuerCommonName); - let hasEVPolicy = {}; - let verifiedChain = {}; - let error = certdb.verifyCertNow(cert, usage, - NO_FLAGS, verifiedChain, hasEVPolicy); - do_check_eq(error, expected_error); -}; - function test_ca_distrust(ee_cert, cert_to_modify_trust, isRootCA) { // On reset most usages are successful - check_cert_err_generic(ee_cert, 0, certificateUsageSSLServer); - check_cert_err_generic(ee_cert, 0, certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); // expected no bc - check_cert_err_generic(ee_cert, 0, certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, 0, certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, 0, - certificateUsageObjectSigner); // expected - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - // mozilla::pkix enforces that certificase must have a basic constraints - // extension with cA:true to be a CA certificate, whereas classic does not - check_cert_err_generic(ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, - certificateUsageStatusResponder); //expected + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, + certificateUsageStatusResponder); // Test of active distrust. No usage should pass. setCertTrust(cert_to_modify_trust, 'p,p,p'); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageSSLServer); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageObjectSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - // In mozilla::pkix (but not classic verification), certificate chain - // properties are checked before the end-entity. Thus, if we're using - // mozilla::pkix and the root certificate has been distrusted, the error - // will be "untrusted issuer" and not "inadequate cert type". - check_cert_err_generic(ee_cert, - !isRootCA ? SEC_ERROR_UNTRUSTED_ISSUER - : SEC_ERROR_INADEQUATE_CERT_TYPE, - certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, + !isRootCA ? SEC_ERROR_UNTRUSTED_ISSUER + : SEC_ERROR_INADEQUATE_CERT_TYPE, + certificateUsageStatusResponder); // Trust set to T - trusted CA to issue client certs, where client cert is // usageSSLClient. setCertTrust(cert_to_modify_trust, 'T,T,T'); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageSSLServer); // XXX(Bug 982340) - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageObjectSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - check_cert_err_generic(ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, - certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, + certificateUsageStatusResponder); // Now tests on the SSL trust bit setCertTrust(cert_to_modify_trust, 'p,C,C'); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageSSLServer); //XXX(Bug 982340) - check_cert_err_generic(ee_cert, 0, certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); - check_cert_err_generic(ee_cert, 0, certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, 0, certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, 0, certificateUsageObjectSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - check_cert_err_generic(ee_cert, - isRootCA ? SEC_ERROR_INADEQUATE_CERT_TYPE - : SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, + isRootCA ? SEC_ERROR_INADEQUATE_CERT_TYPE + : SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageStatusResponder); // Inherited trust SSL setCertTrust(cert_to_modify_trust, ',C,C'); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageSSLServer); // XXX(Bug 982340) - check_cert_err_generic(ee_cert, 0, certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); - check_cert_err_generic(ee_cert, 0, certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, 0, certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, 0, certificateUsageObjectSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - check_cert_err_generic(ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, - certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, + certificateUsageStatusResponder); // Now tests on the EMAIL trust bit setCertTrust(cert_to_modify_trust, 'C,p,C'); - check_cert_err_generic(ee_cert, 0, certificateUsageSSLServer); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, - certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, 0, certificateUsageObjectSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - check_cert_err_generic(ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, - certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_UNTRUSTED_ISSUER, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, + certificateUsageStatusResponder); //inherited EMAIL Trust setCertTrust(cert_to_modify_trust, 'C,,C'); - check_cert_err_generic(ee_cert, 0, certificateUsageSSLServer); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageSSLClient); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageSSLCA); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageEmailSigner); - check_cert_err_generic(ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER : 0, - certificateUsageEmailRecipient); - check_cert_err_generic(ee_cert, 0, certificateUsageObjectSigner); - check_cert_err_generic(ee_cert, SEC_ERROR_CA_CERT_INVALID, - certificateUsageVerifyCA); - check_cert_err_generic(ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, - certificateUsageStatusResponder); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageSSLServer); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageSSLClient); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageSSLCA); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageEmailSigner); + checkCertErrorGeneric(certdb, ee_cert, isRootCA ? SEC_ERROR_UNKNOWN_ISSUER + : PRErrorCodeSuccess, + certificateUsageEmailRecipient); + checkCertErrorGeneric(certdb, ee_cert, PRErrorCodeSuccess, + certificateUsageObjectSigner); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_CA_CERT_INVALID, + certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, ee_cert, SEC_ERROR_INADEQUATE_CERT_TYPE, + certificateUsageStatusResponder); } diff --git a/security/manager/ssl/tests/unit/test_cert_version.js b/security/manager/ssl/tests/unit/test_cert_version.js index 1527f60d6a..49d2770def 100644 --- a/security/manager/ssl/tests/unit/test_cert_version.js +++ b/security/manager/ssl/tests/unit/test_cert_version.js @@ -18,30 +18,20 @@ function load_cert(cert_name, trust_string) { addCertFromFile(certdb, "test_cert_version/" + cert_filename, trust_string); } -function check_cert_err_generic(cert, expected_error, usage) { - do_print("cert cn=" + cert.commonName); - do_print("cert issuer cn=" + cert.issuerCommonName); - let hasEVPolicy = {}; - let verifiedChain = {}; - let error = certdb.verifyCertNow(cert, usage, - NO_FLAGS, verifiedChain, hasEVPolicy); - do_check_eq(error, expected_error); -} - function check_cert_err(cert, expected_error) { - check_cert_err_generic(cert, expected_error, certificateUsageSSLServer) + checkCertErrorGeneric(certdb, cert, expected_error, certificateUsageSSLServer); } function check_ca_err(cert, expected_error) { - check_cert_err_generic(cert, expected_error, certificateUsageSSLCA) + checkCertErrorGeneric(certdb, cert, expected_error, certificateUsageSSLCA); } function check_ok(x) { - return check_cert_err(x, 0); + return check_cert_err(x, PRErrorCodeSuccess); } function check_ok_ca(x) { - return check_cert_err_generic(x, 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, x, PRErrorCodeSuccess, certificateUsageSSLCA); } function run_test() { diff --git a/security/manager/ssl/tests/unit/test_certificate_usages.js b/security/manager/ssl/tests/unit/test_certificate_usages.js index 63f92856d3..5a235f990c 100644 --- a/security/manager/ssl/tests/unit/test_certificate_usages.js +++ b/security/manager/ssl/tests/unit/test_certificate_usages.js @@ -105,7 +105,8 @@ function run_test() { cert.getUsagesString(true, verified, usages); do_check_eq(ca_usages[i], usages.value); if (ca_usages[i].indexOf('SSL CA') != -1) { - checkCertErrorGeneric(certdb, cert, 0, certificateUsageVerifyCA); + checkCertErrorGeneric(certdb, cert, PRErrorCodeSuccess, + certificateUsageVerifyCA); } //now the ee, names also one based for (var j = 0; j < ee_usages[i].length; j++) { diff --git a/security/manager/ssl/tests/unit/test_client_cert.js b/security/manager/ssl/tests/unit/test_client_cert.js index e7d51fe7c8..6a8d3d006f 100644 --- a/security/manager/ssl/tests/unit/test_client_cert.js +++ b/security/manager/ssl/tests/unit/test_client_cert.js @@ -43,10 +43,10 @@ function run_test() { add_tls_server_setup("ClientAuthServer"); - add_connection_test("noclientauth.example.com", Cr.NS_OK); + add_connection_test("noclientauth.example.com", PRErrorCodeSuccess); - add_connection_test("requestclientauth.example.com", Cr.NS_OK); - add_connection_test("requestclientauth.example.com", Cr.NS_OK, + add_connection_test("requestclientauth.example.com", PRErrorCodeSuccess); + add_connection_test("requestclientauth.example.com", PRErrorCodeSuccess, null, null, transport => { do_print("Setting client cert on transport"); let sslSocketControl = transport.securityInfo @@ -55,8 +55,8 @@ function run_test() { }); add_connection_test("requireclientauth.example.com", - getXPCOMStatusFromNSS(SSL_ERROR_BAD_CERT_ALERT)); - add_connection_test("requireclientauth.example.com", Cr.NS_OK, + SSL_ERROR_BAD_CERT_ALERT); + add_connection_test("requireclientauth.example.com", PRErrorCodeSuccess, null, null, transport => { do_print("Setting client cert on transport"); let sslSocketControl = diff --git a/security/manager/ssl/tests/unit/test_ev_certs.js b/security/manager/ssl/tests/unit/test_ev_certs.js index b0ad36e220..9614d5a297 100644 --- a/security/manager/ssl/tests/unit/test_ev_certs.js +++ b/security/manager/ssl/tests/unit/test_ev_certs.js @@ -48,22 +48,13 @@ function start_ocsp_responder(expectedCertNames) { function check_cert_err(cert_name, expected_error) { let cert = certdb.findCertByNickname(null, cert_name); - let hasEVPolicy = {}; - let verifiedChain = {}; - let error = certdb.verifyCertNow(cert, certificateUsageSSLServer, - NO_FLAGS, verifiedChain, hasEVPolicy); - do_check_eq(error, expected_error); + checkCertErrorGeneric(certdb, cert, expected_error, certificateUsageSSLServer); } function check_ee_for_ev(cert_name, expected_ev) { - let cert = certdb.findCertByNickname(null, cert_name); - let hasEVPolicy = {}; - let verifiedChain = {}; - let error = certdb.verifyCertNow(cert, certificateUsageSSLServer, - NO_FLAGS, verifiedChain, hasEVPolicy); - do_check_eq(hasEVPolicy.value, expected_ev); - do_check_eq(0, error); + let cert = certdb.findCertByNickname(null, cert_name); + checkEVStatus(certdb, cert, certificateUsageSSLServer, expected_ev); } function run_test() { @@ -212,11 +203,12 @@ function run_test() { let flags = Ci.nsIX509CertDB.FLAG_LOCAL_ONLY | Ci.nsIX509CertDB.FLAG_MUST_BE_EV; - let error = certdb.verifyCertNow(cert, certificateUsageSSLServer, - flags, verifiedChain, hasEVPolicy); + let error = certdb.verifyCertNow(cert, certificateUsageSSLServer, flags, + null, verifiedChain, hasEVPolicy); do_check_eq(hasEVPolicy.value, gEVExpected); do_check_eq(error, - gEVExpected ? 0 : SEC_ERROR_POLICY_VALIDATION_FAILED); + gEVExpected ? PRErrorCodeSuccess + : SEC_ERROR_POLICY_VALIDATION_FAILED); failingOcspResponder.stop(run_next_test); }); }); @@ -292,7 +284,7 @@ function check_no_ocsp_requests(cert_name, expected_error) { let flags = Ci.nsIX509CertDB.FLAG_LOCAL_ONLY | Ci.nsIX509CertDB.FLAG_MUST_BE_EV; let error = certdb.verifyCertNow(cert, certificateUsageSSLServer, flags, - verifiedChain, hasEVPolicy); + null, verifiedChain, hasEVPolicy); // Since we're not doing OCSP requests, no certificate will be EV. do_check_eq(hasEVPolicy.value, false); do_check_eq(expected_error, error); diff --git a/security/manager/ssl/tests/unit/test_ev_certs/generate.py b/security/manager/ssl/tests/unit/test_ev_certs/generate.py index 0bb6205686..0f7424ef29 100755 --- a/security/manager/ssl/tests/unit/test_ev_certs/generate.py +++ b/security/manager/ssl/tests/unit/test_ev_certs/generate.py @@ -15,19 +15,11 @@ db = tempfile.mkdtemp() CA_extensions = ("basicConstraints = critical, CA:TRUE\n" "keyUsage = keyCertSign, cRLSign\n") -aia_prefix = "authorityInfoAccess = OCSP;URI:http://www.example.com:8888/" -aia_suffix ="/\n" intermediate_crl = ("crlDistributionPoints = " + "URI:http://crl.example.com:8888/root-ev.crl\n") endentity_crl = ("crlDistributionPoints = " + "URI:http://crl.example.com:8888/ee-crl.crl\n") -mozilla_testing_ev_policy = ("certificatePolicies = @v3_ca_ev_cp\n\n" + - "[ v3_ca_ev_cp ]\n" + - "policyIdentifier = " + - "1.3.6.1.4.1.13769.666.666.666.1.500.9.1\n\n" + - "CPS.1 = \"http://mytestdomain.local/cps\"") - anypolicy_policy = ("certificatePolicies = @v3_ca_ev_cp\n\n" + "[ v3_ca_ev_cp ]\n" + "policyIdentifier = " + @@ -44,10 +36,11 @@ def generate_certs(): ca_key = 'evroot.key' prefix = "ev-valid" key_type = 'rsa' - ee_ext_text = (aia_prefix + prefix + aia_suffix + - endentity_crl + mozilla_testing_ev_policy) - int_ext_text = (CA_extensions + aia_prefix + "int-" + prefix + aia_suffix + - intermediate_crl + mozilla_testing_ev_policy) + ee_ext_text = (CertUtils.aia_prefix + prefix + CertUtils.aia_suffix + + endentity_crl + CertUtils.mozilla_testing_ev_policy) + int_ext_text = (CA_extensions + CertUtils.aia_prefix + "int-" + prefix + + CertUtils.aia_suffix + intermediate_crl + + CertUtils.mozilla_testing_ev_policy) CertUtils.init_nss_db(srcdir) CertUtils.import_cert_and_pkcs12(srcdir, ca_cert, 'evroot.p12', 'evroot', @@ -76,16 +69,16 @@ def generate_certs(): key_type, 'no-ocsp-url-cert', no_ocsp_url_ext_aia + endentity_crl + - mozilla_testing_ev_policy, + CertUtils.mozilla_testing_ev_policy, int_key, int_cert); import_untrusted_cert(no_ocsp_cert, 'no-ocsp-url-cert'); # add an ev cert whose intermediate has a anypolicy oid prefix = "ev-valid-anypolicy-int" - ee_ext_text = (aia_prefix + prefix + aia_suffix + - endentity_crl + mozilla_testing_ev_policy) - int_ext_text = (CA_extensions + aia_prefix + "int-" + prefix + aia_suffix + - intermediate_crl + anypolicy_policy) + ee_ext_text = (CertUtils.aia_prefix + prefix + CertUtils.aia_suffix + + endentity_crl + CertUtils.mozilla_testing_ev_policy) + int_ext_text = (CA_extensions + CertUtils.aia_prefix + "int-" + prefix + + CertUtils.aia_suffix + intermediate_crl + anypolicy_policy) [int_key, int_cert, ee_key, ee_cert] = CertUtils.generate_int_and_ee(db, srcdir, @@ -113,10 +106,11 @@ def generate_certs(): CertUtils.import_cert_and_pkcs12(srcdir, bad_ca_cert, pk12file, 'non-evroot-ca', 'C,C,C') prefix = "non-ev-root" - ee_ext_text = (aia_prefix + prefix + aia_suffix + - endentity_crl + mozilla_testing_ev_policy) - int_ext_text = (CA_extensions + aia_prefix + "int-" + prefix + aia_suffix + - intermediate_crl + mozilla_testing_ev_policy) + ee_ext_text = (CertUtils.aia_prefix + prefix + CertUtils.aia_suffix + + endentity_crl + CertUtils.mozilla_testing_ev_policy) + int_ext_text = (CA_extensions + CertUtils.aia_prefix + "int-" + prefix + + CertUtils.aia_suffix + intermediate_crl + + CertUtils.mozilla_testing_ev_policy) [int_key, int_cert, ee_key, ee_cert] = CertUtils.generate_int_and_ee(db, srcdir, bad_ca_key, diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints.js b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints.js index 475cfdce2f..56578b75ae 100644 --- a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints.js +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints.js @@ -1,22 +1,11 @@ "use strict"; -/* To regenerate the certificates for this test: - * - * cd security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints - * ./generate.py - * cd ../../../../../.. - * make -C $OBJDIR/security/manager/ssl/tests - * - * Check in the generated files. These steps are not done as part of the build - * because we do not want to add a build-time dependency on the OpenSSL or NSS - * tools or libraries built for the host platform. - */ do_get_profile(); // must be called before getting nsIX509CertDB const certdb = Cc["@mozilla.org/security/x509certdb;1"] .getService(Ci.nsIX509CertDB); function load_cert(name, trust) { - let filename = "test_intermediate_basic_usage_constraints/" + name + ".der"; + let filename = "test_intermediate_basic_usage_constraints/" + name + ".pem"; addCertFromFile(certdb, filename, trust); } @@ -24,10 +13,10 @@ function test_cert_for_usages(certChainNicks, expected_usages_string) { let certs = []; for (let i in certChainNicks) { let certNick = certChainNicks[i]; - let certDER = readFile(do_get_file( - "test_intermediate_basic_usage_constraints/" - + certNick + ".der"), false); - certs.push(certdb.constructX509(certDER, certDER.length)); + let certPEM = readFile( + do_get_file("test_intermediate_basic_usage_constraints/" + + certNick + ".pem"), false); + certs.push(certdb.constructX509FromBase64(pemToBase64(certPEM))); } let cert = certs[0]; @@ -39,12 +28,7 @@ function test_cert_for_usages(certChainNicks, expected_usages_string) { } function run_test() { - // mozilla::pkix doesn't support the obsolete Netscape object signing - // extension, but NSS does. let ee_usage1 = 'Client,Server,Sign,Encrypt,Object Signer'; - - // mozilla::pkix doesn't validate CA certificates for non-CA uses, but - // NSS does. let ca_usage1 = "SSL CA"; // Load the ca into mem @@ -85,9 +69,6 @@ function run_test() { // int-limited-depth (cA==true, pathLenConstraint==0) // int-limited-depth-invalid (cA==true) // - // XXX: It seems the NSS code does not consider the path length of the - // certificate we're validating, but mozilla::pkix does. mozilla::pkix's - // behavior is correct. test_cert_for_usages(["int-limited-depth-invalid", "int-limited-depth"], ""); test_cert_for_usages(["ee-int-limited-depth-invalid", "int-limited-depth-invalid", @@ -102,7 +83,7 @@ function run_test() { // int-bad-ku-no-eku has basicConstraints.cA==true and has a KU extension // but the KU extension is missing keyCertSign. Note that mozilla::pkix // doesn't validate certificates with basicConstraints.Ca==true for non-CA - // uses, but NSS does. + // uses. test_cert_for_usages(["int-bad-ku-no-eku"], ""); test_cert_for_usages(["ee-int-bad-ku-no-eku", "int-bad-ku-no-eku"], ""); diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem.certspec new file mode 100644 index 0000000000..eb7c4b4bee --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem.certspec @@ -0,0 +1,3 @@ +issuer:ca +subject:ca +extension:basicConstraints:cA, diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem.certspec new file mode 100644 index 0000000000..390adf2344 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-bad-ku-no-eku +subject:ee-int-bad-ku-no-eku +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem.certspec new file mode 100644 index 0000000000..32bb6c2485 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-bad-ku-server-eku +subject:ee-int-bad-ku-server-eku +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem.certspec new file mode 100644 index 0000000000..9e0fb65fd6 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-cA-FALSE-asserts-keyCertSign +subject:ee-int-cA-FALSE-asserts-keyCertSign +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem.certspec new file mode 100644 index 0000000000..f00b4d1591 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-limited-depth-invalid +subject:ee-int-limited-depth-invalid +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem.certspec new file mode 100644 index 0000000000..df85342d98 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-limited-depth +subject:ee-int-limited-depth +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem.certspec new file mode 100644 index 0000000000..c5279046d8 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-no-extensions +subject:ee-int-no-extensions +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem.certspec new file mode 100644 index 0000000000..92ee3cc6d6 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-no-ku-no-eku +subject:ee-int-no-ku-no-eku +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem.certspec new file mode 100644 index 0000000000..c148896710 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-no-ku-server-eku +subject:ee-int-no-ku-server-eku +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem.certspec new file mode 100644 index 0000000000..a95b0dc260 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-not-a-ca +subject:ee-int-not-a-ca +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem.certspec new file mode 100644 index 0000000000..89a66b9f97 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-valid-ku-no-eku +subject:ee-int-valid-ku-no-eku +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem.certspec new file mode 100644 index 0000000000..43e83a336e --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:int-valid-ku-server-eku +subject:ee-int-valid-ku-server-eku +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/generate.py b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/generate.py deleted file mode 100644 index 1440fbb908..0000000000 --- a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/generate.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/python - -# 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/. - -# requires openssl >= 1.0.0 - -import tempfile, os, sys, random -libpath = os.path.abspath('../psm_common_py') - -sys.path.append(libpath) - -import CertUtils - - -srcdir = os.getcwd() -db = tempfile.mkdtemp() - -CA_basic_constraints = "basicConstraints = critical, CA:TRUE\n" -CA_limited_basic_constraints = "basicConstraints = critical,CA:TRUE, pathlen:0\n" -EE_basic_constraints = "basicConstraints = CA:FALSE\n" - -CA_min_ku = "keyUsage = critical, keyCertSign\n" -CA_bad_ku = "keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, cRLSign\n" -all_ku = "keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign\n" -EE_full_ku ="keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement\n" - -Server_eku = "extendedKeyUsage = critical, serverAuth, clientAuth\n " - -key_type = 'rsa' - -def generate_int_and_ee2(ca_key, ca_cert, suffix, int_ext_text, ee_ext_text): - int_name = "int-" + suffix; - ee_name = "ee-int-" + suffix; - int_serial = random.randint(100, 40000000); - ee_serial = random.randint(100, 40000000); - [int_key, int_cert] = CertUtils.generate_cert_generic(db, - srcdir, - int_serial, - key_type, - int_name, - int_ext_text, - ca_key, - ca_cert); - [ee_key, ee_cert] = CertUtils.generate_cert_generic(db, - srcdir, - ee_serial, - key_type, - ee_name, - ee_ext_text, - int_key, - int_cert); - return [int_key, int_cert, ee_key, ee_cert] - -def generate_certs(): - ca_name = "ca" - [ca_key, ca_cert ] = CertUtils.generate_cert_generic(db, - srcdir, - 1, - key_type, - ca_name, - CA_basic_constraints) - ee_ext_text = EE_basic_constraints + EE_full_ku - - #now the intermediates - generate_int_and_ee2(ca_key, ca_cert, "no-extensions", "", ee_ext_text) - generate_int_and_ee2(ca_key, ca_cert, "not-a-ca", EE_basic_constraints, - ee_ext_text) - generate_int_and_ee2(ca_key, ca_cert, "cA-FALSE-asserts-keyCertSign", - EE_basic_constraints + all_ku, ee_ext_text) - - [int_key, int_cert, a, b] = generate_int_and_ee2(ca_key, ca_cert, - "limited-depth", - CA_limited_basic_constraints, - ee_ext_text); - #and a child using this one - generate_int_and_ee2(int_key, int_cert, "limited-depth-invalid", - CA_basic_constraints, ee_ext_text); - - # now we do it again for valid basic constraints but strange eku/ku at the - # intermediate layer - generate_int_and_ee2(ca_key, ca_cert, "valid-ku-no-eku", - CA_basic_constraints + CA_min_ku, ee_ext_text); - generate_int_and_ee2(ca_key, ca_cert, "bad-ku-no-eku", - CA_basic_constraints + CA_bad_ku, ee_ext_text); - generate_int_and_ee2(ca_key, ca_cert, "no-ku-no-eku", - CA_basic_constraints, ee_ext_text); - - generate_int_and_ee2(ca_key, ca_cert, "valid-ku-server-eku", - CA_basic_constraints + CA_min_ku + Server_eku, - ee_ext_text); - generate_int_and_ee2(ca_key, ca_cert, "bad-ku-server-eku", - CA_basic_constraints + CA_bad_ku + Server_eku, - ee_ext_text); - generate_int_and_ee2(ca_key, ca_cert, "no-ku-server-eku", - CA_basic_constraints + Server_eku, ee_ext_text); - - -generate_certs() - - diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem.certspec new file mode 100644 index 0000000000..f6525449b4 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:ca +subject:int-bad-ku-no-eku +extension:basicConstraints:cA, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement,cRLSign diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem.certspec new file mode 100644 index 0000000000..2d324508d4 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem.certspec @@ -0,0 +1,5 @@ +issuer:ca +subject:int-bad-ku-server-eku +extension:basicConstraints:cA, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement,cRLSign +extension:extKeyUsage:serverAuth,clientAuth diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem.certspec new file mode 100644 index 0000000000..39785d8a48 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem.certspec @@ -0,0 +1,4 @@ +issuer:ca +subject:int-cA-FALSE-asserts-keyCertSign +extension:basicConstraints:, +extension:keyUsage:digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement,keyCertSign,cRLSign diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem.certspec new file mode 100644 index 0000000000..9fdb2a248a --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem.certspec @@ -0,0 +1,3 @@ +issuer:int-limited-depth +subject:int-limited-depth-invalid +extension:basicConstraints:cA, diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem.certspec new file mode 100644 index 0000000000..64f54b0441 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem.certspec @@ -0,0 +1,3 @@ +issuer:ca +subject:int-limited-depth +extension:basicConstraints:cA,0 diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem.certspec new file mode 100644 index 0000000000..c99626bd5a --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem.certspec @@ -0,0 +1,2 @@ +issuer:ca +subject:int-no-extensions diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem.certspec new file mode 100644 index 0000000000..306a218db9 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem.certspec @@ -0,0 +1,3 @@ +issuer:ca +subject:int-no-ku-no-eku +extension:basicConstraints:cA, diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem.certspec new file mode 100644 index 0000000000..1482b627c7 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:ca +subject:int-no-ku-server-eku +extension:basicConstraints:cA, +extension:extKeyUsage:serverAuth,clientAuth diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem.certspec new file mode 100644 index 0000000000..3161680b1c --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem.certspec @@ -0,0 +1,3 @@ +issuer:ca +subject:int-not-a-ca +extension:basicConstraints:, diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem.certspec new file mode 100644 index 0000000000..d7f9b0387a --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem.certspec @@ -0,0 +1,4 @@ +issuer:ca +subject:int-valid-ku-no-eku +extension:basicConstraints:cA, +extension:keyUsage:keyCertSign diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem.certspec b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem.certspec new file mode 100644 index 0000000000..84314bfa40 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem.certspec @@ -0,0 +1,5 @@ +issuer:ca +subject:int-valid-ku-server-eku +extension:basicConstraints:cA, +extension:keyUsage:keyCertSign +extension:extKeyUsage:serverAuth,clientAuth diff --git a/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/moz.build b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/moz.build new file mode 100644 index 0000000000..e7d1eaec22 --- /dev/null +++ b/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/moz.build @@ -0,0 +1,39 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +test_certificates = ( + 'ca.pem', + 'ee-int-bad-ku-no-eku.pem', + 'ee-int-bad-ku-server-eku.pem', + 'ee-int-cA-FALSE-asserts-keyCertSign.pem', + 'ee-int-limited-depth.pem', + 'ee-int-limited-depth-invalid.pem', + 'ee-int-no-extensions.pem', + 'ee-int-no-ku-no-eku.pem', + 'ee-int-no-ku-server-eku.pem', + 'ee-int-not-a-ca.pem', + 'ee-int-valid-ku-no-eku.pem', + 'ee-int-valid-ku-server-eku.pem', + 'int-bad-ku-no-eku.pem', + 'int-bad-ku-server-eku.pem', + 'int-cA-FALSE-asserts-keyCertSign.pem', + 'int-limited-depth.pem', + 'int-limited-depth-invalid.pem', + 'int-no-extensions.pem', + 'int-no-ku-no-eku.pem', + 'int-no-ku-server-eku.pem', + 'int-not-a-ca.pem', + 'int-valid-ku-no-eku.pem', + 'int-valid-ku-server-eku.pem', +) + +for test_certificate in test_certificates: + input_file = test_certificate + '.certspec' + GENERATED_FILES += [test_certificate] + props = GENERATED_FILES[test_certificate] + props.script = '../pycert.py' + props.inputs = [input_file, TOPOBJDIR + '/config/buildid'] + TEST_HARNESS_FILES.xpcshell.security.manager.ssl.tests.unit.test_intermediate_basic_usage_constraints += ['!%s' % test_certificate] diff --git a/security/manager/ssl/tests/unit/test_keysize.js b/security/manager/ssl/tests/unit/test_keysize.js index f06625c63f..820cbf323e 100644 --- a/security/manager/ssl/tests/unit/test_keysize.js +++ b/security/manager/ssl/tests/unit/test_keysize.js @@ -34,7 +34,7 @@ function loadCert(certName, trustString) { * @param {Number} intKeySize * @param {String} eeKeyType * @param {Number} eeKeySize - * @param {Number} eeExpectedError + * @param {PRErrorCode} eeExpectedError */ function checkChain(rootKeyType, rootKeySize, intKeyType, intKeySize, eeKeyType, eeKeySize, eeExpectedError) { @@ -49,9 +49,7 @@ function checkChain(rootKeyType, rootKeySize, intKeyType, intKeySize, loadCert(intFullName, ",,"); let eeCert = certFromFile(eeFullName + ".der"); - do_print("cert cn=" + eeCert.commonName); do_print("cert o=" + eeCert.organization); - do_print("cert issuer cn=" + eeCert.issuerCommonName); do_print("cert issuer o=" + eeCert.issuerOrganization); checkCertErrorGeneric(certdb, eeCert, eeExpectedError, certificateUsageSSLServer); @@ -68,7 +66,7 @@ function checkRSAChains(inadequateKeySize, adequateKeySize) { checkChain("rsa", adequateKeySize, "rsa", adequateKeySize, "rsa", adequateKeySize, - 0); + PRErrorCodeSuccess); // Chain with a root cert that has an inadequate size for DV checkChain("rsa", inadequateKeySize, @@ -93,7 +91,7 @@ function checkECCChains() { checkChain("prime256v1", 256, "secp384r1", 384, "secp521r1", 521, - 0); + PRErrorCodeSuccess); checkChain("prime256v1", 256, "secp224r1", 224, "prime256v1", 256, @@ -120,7 +118,7 @@ function checkCombinationChains() { checkChain("rsa", 2048, "prime256v1", 256, "secp384r1", 384, - 0); + PRErrorCodeSuccess); checkChain("rsa", 2048, "prime256v1", 256, "secp224r1", 224, diff --git a/security/manager/ssl/tests/unit/test_keysize/generate.py b/security/manager/ssl/tests/unit/test_keysize/generate.py index 1f039fb617..9d26c0b563 100644 --- a/security/manager/ssl/tests/unit/test_keysize/generate.py +++ b/security/manager/ssl/tests/unit/test_keysize/generate.py @@ -20,15 +20,6 @@ ca_ext_text = ('basicConstraints = critical, CA:TRUE\n' + 'keyUsage = keyCertSign, cRLSign\n') ee_ext_text = '' -aia_prefix = 'authorityInfoAccess = OCSP;URI:http://www.example.com:8888/' -aia_suffix = '/\n' - -mozilla_testing_ev_policy = ('certificatePolicies = @v3_ca_ev_cp\n\n' + - '[ v3_ca_ev_cp ]\n' + - 'policyIdentifier = ' + - '1.3.6.1.4.1.13769.666.666.666.1.500.9.1\n\n' + - 'CPS.1 = "http://mytestdomain.local/cps"') - generated_ev_root_filenames = [] generated_certs = [] @@ -73,8 +64,8 @@ def generate_and_maybe_import_cert(key_type, cert_name_prefix, cert_name_suffix, (key_type, key_size)) if generate_ev: cert_name = 'ev_' + cert_name - ev_ext_text = (aia_prefix + cert_name + aia_suffix + - mozilla_testing_ev_policy) + ev_ext_text = (CertUtils.aia_prefix + cert_name + CertUtils.aia_suffix + + CertUtils.mozilla_testing_ev_policy) subject_string += ' (EV)' # Use the organization field to store the cert nickname for easier debugging diff --git a/security/manager/ssl/tests/unit/test_keysize_ev.js b/security/manager/ssl/tests/unit/test_keysize_ev.js index c7039a1264..cf157ff07c 100644 --- a/security/manager/ssl/tests/unit/test_keysize_ev.js +++ b/security/manager/ssl/tests/unit/test_keysize_ev.js @@ -29,19 +29,6 @@ function loadCert(certName, trustString) { return certFromFile(certFilename); } -function checkEVStatus(cert, usage, isEVExpected) { - do_print("cert cn=" + cert.commonName); - do_print("cert o=" + cert.organization); - do_print("cert issuer cn=" + cert.issuerCommonName); - do_print("cert issuer o=" + cert.issuerOrganization); - let hasEVPolicy = {}; - let verifiedChain = {}; - let error = certDB.verifyCertNow(cert, usage, NO_FLAGS, verifiedChain, - hasEVPolicy); - equal(hasEVPolicy.value, isEVExpected); - equal(0, error); -} - /** * Adds a single EV key size test. * @@ -69,7 +56,7 @@ function addKeySizeTestForEV(expectedNamesForOCSP, for (let intCertFileName of intCertFileNames) { loadCert(intCertFileName, ",,"); } - checkEVStatus(certFromFile(endEntityCertFileName + ".der"), + checkEVStatus(certDB, certFromFile(endEntityCertFileName + ".der"), certificateUsageSSLServer, expectedResult); ocspResponder.stop(run_next_test); diff --git a/security/manager/ssl/tests/unit/test_name_constraints.js b/security/manager/ssl/tests/unit/test_name_constraints.js index 31297203e7..28395dd0e3 100644 --- a/security/manager/ssl/tests/unit/test_name_constraints.js +++ b/security/manager/ssl/tests/unit/test_name_constraints.js @@ -20,26 +20,16 @@ function load_cert(cert_name, trust_string) { return certFromFile(cert_filename); } -function check_cert_err_generic(cert, expected_error, usage) { - do_print("cert cn=" + cert.commonName); - do_print("cert issuer cn=" + cert.issuerCommonName); - let hasEVPolicy = {}; - let verifiedChain = {}; - let error = certdb.verifyCertNow(cert, usage, - NO_FLAGS, verifiedChain, hasEVPolicy); - do_check_eq(error, expected_error); -} - function check_cert_err(cert, expected_error) { - check_cert_err_generic(cert, expected_error, certificateUsageSSLServer) + checkCertErrorGeneric(certdb, cert, expected_error, certificateUsageSSLServer); } function check_ok(x) { - return check_cert_err(x, 0); + return check_cert_err(x, PRErrorCodeSuccess); } function check_ok_ca (x) { - return check_cert_err_generic(x, 0, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, x, PRErrorCodeSuccess, certificateUsageSSLCA); } function check_fail(x) { @@ -47,7 +37,8 @@ function check_fail(x) { } function check_fail_ca(x) { - return check_cert_err_generic(x, SEC_ERROR_CERT_NOT_IN_NAME_SPACE, certificateUsageSSLCA); + checkCertErrorGeneric(certdb, x, SEC_ERROR_CERT_NOT_IN_NAME_SPACE, + certificateUsageSSLCA); } function run_test() { @@ -266,8 +257,10 @@ function run_test() { // NSS get it right. { let cert = certFromFile('cn-www.foo.org-int-nc-perm-foo.com-ca-nc.der'); - check_cert_err_generic(cert, SEC_ERROR_CERT_NOT_IN_NAME_SPACE, certificateUsageSSLServer); - check_cert_err_generic(cert, 0, certificateUsageSSLClient); + checkCertErrorGeneric(certdb, cert, SEC_ERROR_CERT_NOT_IN_NAME_SPACE, + certificateUsageSSLServer); + checkCertErrorGeneric(certdb, cert, PRErrorCodeSuccess, + certificateUsageSSLClient); } // DCISS tests diff --git a/security/manager/ssl/tests/unit/test_nsCertType.js b/security/manager/ssl/tests/unit/test_nsCertType.js index 5e9e09ef58..3e1a07c223 100644 --- a/security/manager/ssl/tests/unit/test_nsCertType.js +++ b/security/manager/ssl/tests/unit/test_nsCertType.js @@ -19,9 +19,10 @@ function run_test() { do_get_profile(); add_tls_server_setup("BadCertServer"); - add_connection_test("nsCertTypeNotCritical.example.com", Cr.NS_OK); - add_connection_test("nsCertTypeCriticalWithExtKeyUsage.example.com", Cr.NS_OK); + add_connection_test("nsCertTypeNotCritical.example.com", PRErrorCodeSuccess); + add_connection_test("nsCertTypeCriticalWithExtKeyUsage.example.com", + PRErrorCodeSuccess); add_connection_test("nsCertTypeCritical.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION)); + SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION); run_next_test(); } diff --git a/security/manager/ssl/tests/unit/test_ocsp_caching.js b/security/manager/ssl/tests/unit/test_ocsp_caching.js index 4a9a03cdfa..ec46594c21 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_caching.js +++ b/security/manager/ssl/tests/unit/test_ocsp_caching.js @@ -53,14 +53,14 @@ function add_tests() { // Get an Unknown response for the *.exmaple.com cert and put it in the // OCSP cache. add_connection_test("ocsp-stapling-unknown.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 0); run_next_test(); }); // A failure to retrieve an OCSP response must result in the cached Unkown // response being recognized and honored. add_connection_test("ocsp-stapling-none.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 1); run_next_test(); }); @@ -81,14 +81,14 @@ function add_tests() { gGoodOCSPResponse = generateGoodOCSPResponse(); run_next_test(); }); - add_connection_test("ocsp-stapling-none.example.com", Cr.NS_OK, + add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 2); run_next_test(); }); // The Good response retrieved from the previous fetch must have replaced // the Unknown response in the cache, resulting in the catched Good response // being returned and no fetch. - add_connection_test("ocsp-stapling-none.example.com", Cr.NS_OK, + add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 2); run_next_test(); }); @@ -100,19 +100,19 @@ function add_tests() { // A failure to retrieve an OCSP response will result in an error entry being // added to the cache. - add_connection_test("ocsp-stapling-none.example.com", Cr.NS_OK, + add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 1); run_next_test(); }); // The error entry will prevent a fetch from happening for a while. - add_connection_test("ocsp-stapling-none.example.com", Cr.NS_OK, + add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 1); run_next_test(); }); // The error entry must not prevent a stapled OCSP response from being // honored. add_connection_test("ocsp-stapling-revoked.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), + SEC_ERROR_REVOKED_CERTIFICATE, clearSessionCache); add_test(function() { do_check_eq(gFetchCount, 1); run_next_test(); }); diff --git a/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js b/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js index c1eb4d7345..18cd3a00fb 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js +++ b/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js @@ -42,7 +42,7 @@ function run_test() { clearOCSPCache(); Services.prefs.setBoolPref("security.OCSP.GET.enabled", false); let ocspResponder = start_ocsp_responder(["a"], [], ["POST"]); - check_cert_err("a", 0); + check_cert_err("a", PRErrorCodeSuccess); ocspResponder.stop(run_next_test); }); @@ -50,7 +50,7 @@ function run_test() { clearOCSPCache(); Services.prefs.setBoolPref("security.OCSP.GET.enabled", true); let ocspResponder = start_ocsp_responder(["a"], [], ["GET"]); - check_cert_err("a", 0); + check_cert_err("a", PRErrorCodeSuccess); ocspResponder.stop(run_next_test); }); @@ -60,7 +60,7 @@ function run_test() { Services.prefs.setBoolPref("security.OCSP.GET.enabled", true); // Bug 1016681 mozilla::pkix does not support fallback yet. // let ocspResponder = start_ocsp_responder(["b", "a"], [], ["GET", "POST"]); - // check_cert_err("a", 0); + // check_cert_err("a", PRErrorCodeSuccess); // ocspResponder.stop(run_next_test); run_next_test(); }); diff --git a/security/manager/ssl/tests/unit/test_ocsp_no_hsts_upgrade.js b/security/manager/ssl/tests/unit/test_ocsp_no_hsts_upgrade.js index a1b571f338..8560d3c267 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_no_hsts_upgrade.js +++ b/security/manager/ssl/tests/unit/test_ocsp_no_hsts_upgrade.js @@ -34,7 +34,7 @@ function run_test() { // (as added in the setup of this test, below), a buggy implementation would // upgrade the OCSP request to HTTPS. We specifically prevent this. This // test demonstrates that our implementation is correct in this regard. - add_connection_test("ocsp-stapling-none.example.com", Cr.NS_OK); + add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess); add_test(function () { run_next_test(); }); add_test(function () { ocspResponder.stop(run_next_test); }); diff --git a/security/manager/ssl/tests/unit/test_ocsp_required.js b/security/manager/ssl/tests/unit/test_ocsp_required.js index e0b7fbf6d1..6d0d852776 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_required.js +++ b/security/manager/ssl/tests/unit/test_ocsp_required.js @@ -42,9 +42,9 @@ function run_test() { function add_tests() { add_connection_test("ocsp-stapling-none.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_BAD_SIGNATURE)); + SEC_ERROR_OCSP_BAD_SIGNATURE); add_connection_test("ocsp-stapling-none.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_BAD_SIGNATURE)); + SEC_ERROR_OCSP_BAD_SIGNATURE); add_test(function () { do_check_eq(gOCSPRequestCount, 1); gOCSPRequestCount = 0; diff --git a/security/manager/ssl/tests/unit/test_ocsp_stapling.js b/security/manager/ssl/tests/unit/test_ocsp_stapling.js index 75cdd10247..6b9640b99d 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_stapling.js +++ b/security/manager/ssl/tests/unit/test_ocsp_stapling.js @@ -23,31 +23,48 @@ function add_ocsp_test(aHost, aExpectedResult, aStaplingEnabled) { function add_tests(certDB, otherTestCA) { // In the absence of OCSP stapling, these should actually all work. - add_ocsp_test("ocsp-stapling-good.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-revoked.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-good-other-ca.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-malformed.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-srverr.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-trylater.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-needssig.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-unauthorized.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-unknown.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-good-other.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-none.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-expired.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-skip-responseBytes.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-critical-extension.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-noncritical-extension.example.com", Cr.NS_OK, false); - add_ocsp_test("ocsp-stapling-empty-extensions.example.com", Cr.NS_OK, false); + add_ocsp_test("ocsp-stapling-good.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-revoked.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-good-other-ca.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-malformed.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-srverr.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-trylater.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-needssig.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-unauthorized.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-unknown.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-good-other.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-none.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-expired.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-skip-responseBytes.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-critical-extension.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-noncritical-extension.example.com", + PRErrorCodeSuccess, false); + add_ocsp_test("ocsp-stapling-empty-extensions.example.com", + PRErrorCodeSuccess, false); // Now test OCSP stapling // The following error codes are defined in security/nss/lib/util/SECerrs.h - add_ocsp_test("ocsp-stapling-good.example.com", Cr.NS_OK, true); + add_ocsp_test("ocsp-stapling-good.example.com", PRErrorCodeSuccess, true); add_ocsp_test("ocsp-stapling-revoked.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), true); + SEC_ERROR_REVOKED_CERTIFICATE, true); // SEC_ERROR_OCSP_INVALID_SIGNING_CERT vs SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE // depends on whether the CA that signed the response is a trusted CA @@ -62,7 +79,7 @@ function add_tests(certDB, otherTestCA) { run_next_test(); }); add_ocsp_test("ocsp-stapling-good-other-ca.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); // The stapled response is from a CA that is trusted but did not issue the // server's certificate. @@ -74,31 +91,29 @@ function add_tests(certDB, otherTestCA) { // TODO(bug 979055): When using ByName instead of ByKey, the error here is // SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE. We should be testing both cases. add_ocsp_test("ocsp-stapling-good-other-ca.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), - true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); // TODO: Test the case where the signing cert can't be found at all, which // will result in SEC_ERROR_BAD_DATABASE in the NSS classic case. add_ocsp_test("ocsp-stapling-malformed.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_MALFORMED_REQUEST), true); + SEC_ERROR_OCSP_MALFORMED_REQUEST, true); add_ocsp_test("ocsp-stapling-srverr.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_SERVER_ERROR), true); + SEC_ERROR_OCSP_SERVER_ERROR, true); add_ocsp_test("ocsp-stapling-trylater.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_TRY_SERVER_LATER), true); + SEC_ERROR_OCSP_TRY_SERVER_LATER, true); add_ocsp_test("ocsp-stapling-needssig.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_REQUEST_NEEDS_SIG), true); + SEC_ERROR_OCSP_REQUEST_NEEDS_SIG, true); add_ocsp_test("ocsp-stapling-unauthorized.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST), - true); + SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST, true); add_ocsp_test("ocsp-stapling-unknown.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), true); + SEC_ERROR_OCSP_UNKNOWN_CERT, true); add_ocsp_test("ocsp-stapling-good-other.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), true); + SEC_ERROR_OCSP_UNKNOWN_CERT, true); // If the server doesn't staple an OCSP response, we continue as normal // (this means that even though stapling is enabled, we expect an OCSP // request). - add_connection_test("ocsp-stapling-none.example.com", Cr.NS_OK, + add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess, function() { gExpectOCSPRequest = true; clearOCSPCache(); @@ -107,32 +122,35 @@ function add_tests(certDB, otherTestCA) { } ); add_ocsp_test("ocsp-stapling-empty.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_MALFORMED_RESPONSE), true); + SEC_ERROR_OCSP_MALFORMED_RESPONSE, true); add_ocsp_test("ocsp-stapling-skip-responseBytes.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_MALFORMED_RESPONSE), true); + SEC_ERROR_OCSP_MALFORMED_RESPONSE, true); add_ocsp_test("ocsp-stapling-critical-extension.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION), - true); - add_ocsp_test("ocsp-stapling-noncritical-extension.example.com", Cr.NS_OK, true); + SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION, true); + add_ocsp_test("ocsp-stapling-noncritical-extension.example.com", + PRErrorCodeSuccess, true); // TODO(bug 997994): Disallow empty Extensions in responses - add_ocsp_test("ocsp-stapling-empty-extensions.example.com", Cr.NS_OK, true); + add_ocsp_test("ocsp-stapling-empty-extensions.example.com", + PRErrorCodeSuccess, true); - add_ocsp_test("ocsp-stapling-delegated-included.example.com", Cr.NS_OK, true); - add_ocsp_test("ocsp-stapling-delegated-included-last.example.com", Cr.NS_OK, true); + add_ocsp_test("ocsp-stapling-delegated-included.example.com", + PRErrorCodeSuccess, true); + add_ocsp_test("ocsp-stapling-delegated-included-last.example.com", + PRErrorCodeSuccess, true); add_ocsp_test("ocsp-stapling-delegated-missing.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); add_ocsp_test("ocsp-stapling-delegated-missing-multiple.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); add_ocsp_test("ocsp-stapling-delegated-no-extKeyUsage.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); add_ocsp_test("ocsp-stapling-delegated-from-intermediate.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); add_ocsp_test("ocsp-stapling-delegated-keyUsage-crlSigning.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); add_ocsp_test("ocsp-stapling-delegated-wrong-extKeyUsage.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); // ocsp-stapling-expired.example.com and // ocsp-stapling-expired-fresh-ca.example.com are handled in @@ -141,11 +159,10 @@ function add_tests(certDB, otherTestCA) { // Check that OCSP responder certificates with key sizes below 1024 bits are // rejected, even when the main certificate chain keys are at least 1024 bits. add_ocsp_test("keysize-ocsp-delegated.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_INVALID_SIGNING_CERT), - true); + SEC_ERROR_OCSP_INVALID_SIGNING_CERT, true); add_ocsp_test("revoked-ca-cert-used-as-end-entity.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), true); + SEC_ERROR_REVOKED_CERTIFICATE, true); } function run_test() { diff --git a/security/manager/ssl/tests/unit/test_ocsp_stapling_expired.js b/security/manager/ssl/tests/unit/test_ocsp_stapling_expired.js index e4ba6f1dc8..aac2f41591 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_stapling_expired.js +++ b/security/manager/ssl/tests/unit/test_ocsp_stapling_expired.js @@ -70,81 +70,81 @@ function run_test() { // For ocsp-stapling-expired-fresh-ca.example.com, the OCSP stapling // server staples an OCSP response with a recent signature but with an // out-of-date validity period. The certificate has not expired. - add_ocsp_test("ocsp-stapling-expired.example.com", Cr.NS_OK, + add_ocsp_test("ocsp-stapling-expired.example.com", PRErrorCodeSuccess, ocspResponseGood); - add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", Cr.NS_OK, + add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", PRErrorCodeSuccess, ocspResponseGood); // if we can't fetch a more recent response when // given an expired stapled response, we terminate the connection. add_ocsp_test("ocsp-stapling-expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_OLD_RESPONSE), + SEC_ERROR_OCSP_OLD_RESPONSE, expiredOCSPResponseGood); add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_OLD_RESPONSE), + SEC_ERROR_OCSP_OLD_RESPONSE, expiredOCSPResponseGood); add_ocsp_test("ocsp-stapling-expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_OLD_RESPONSE), + SEC_ERROR_OCSP_OLD_RESPONSE, oldValidityPeriodOCSPResponseGood); add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_OLD_RESPONSE), + SEC_ERROR_OCSP_OLD_RESPONSE, oldValidityPeriodOCSPResponseGood); add_ocsp_test("ocsp-stapling-expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_OLD_RESPONSE), + SEC_ERROR_OCSP_OLD_RESPONSE, null); add_ocsp_test("ocsp-stapling-expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_OLD_RESPONSE), + SEC_ERROR_OCSP_OLD_RESPONSE, null); // Of course, if the newer response indicates Revoked or Unknown, // that status must be returned. add_ocsp_test("ocsp-stapling-expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), + SEC_ERROR_REVOKED_CERTIFICATE, ocspResponseRevoked); add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), + SEC_ERROR_REVOKED_CERTIFICATE, ocspResponseRevoked); add_ocsp_test("ocsp-stapling-expired.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, ocspResponseUnknown); add_ocsp_test("ocsp-stapling-expired-fresh-ca.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, ocspResponseUnknown); // If the response is expired but indicates Revoked or Unknown and a // newer status can't be fetched, the Revoked or Unknown status will // be returned. add_ocsp_test("ocsp-stapling-revoked-old.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), + SEC_ERROR_REVOKED_CERTIFICATE, null); add_ocsp_test("ocsp-stapling-unknown-old.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, null); // If the response is expired but indicates Revoked or Unknown and // a newer status can be fetched and successfully verified, this // should result in a successful certificate verification. - add_ocsp_test("ocsp-stapling-revoked-old.example.com", Cr.NS_OK, + add_ocsp_test("ocsp-stapling-revoked-old.example.com", PRErrorCodeSuccess, ocspResponseGood); - add_ocsp_test("ocsp-stapling-unknown-old.example.com", Cr.NS_OK, + add_ocsp_test("ocsp-stapling-unknown-old.example.com", PRErrorCodeSuccess, ocspResponseGood); // If a newer status can be fetched but it fails to verify, the // Revoked or Unknown status of the expired stapled response // should be returned. add_ocsp_test("ocsp-stapling-revoked-old.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), + SEC_ERROR_REVOKED_CERTIFICATE, expiredOCSPResponseGood); add_ocsp_test("ocsp-stapling-unknown-old.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, expiredOCSPResponseGood); // These tests are verifying that an valid but very old response // is rejected as a valid stapled response, requiring a fetch // from the ocsp responder. - add_ocsp_test("ocsp-stapling-ancient-valid.example.com", Cr.NS_OK, + add_ocsp_test("ocsp-stapling-ancient-valid.example.com", PRErrorCodeSuccess, ocspResponseGood); add_ocsp_test("ocsp-stapling-ancient-valid.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_REVOKED_CERTIFICATE), + SEC_ERROR_REVOKED_CERTIFICATE, ocspResponseRevoked); add_ocsp_test("ocsp-stapling-ancient-valid.example.com", - getXPCOMStatusFromNSS(SEC_ERROR_OCSP_UNKNOWN_CERT), + SEC_ERROR_OCSP_UNKNOWN_CERT, ocspResponseUnknown); add_test(function () { ocspResponder.stop(run_next_test); }); diff --git a/security/manager/ssl/tests/unit/test_ocsp_stapling_with_intermediate.js b/security/manager/ssl/tests/unit/test_ocsp_stapling_with_intermediate.js index beed9c2285..82cc08cc51 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_stapling_with_intermediate.js +++ b/security/manager/ssl/tests/unit/test_ocsp_stapling_with_intermediate.js @@ -33,7 +33,8 @@ function run_test() { add_tls_server_setup("OCSPStaplingServer"); - add_ocsp_test("ocsp-stapling-with-intermediate.example.com", Cr.NS_OK); + add_ocsp_test("ocsp-stapling-with-intermediate.example.com", + PRErrorCodeSuccess); add_test(function () { ocspResponder.stop(run_next_test); }); add_test(function() { diff --git a/security/manager/ssl/tests/unit/test_ocsp_timeout.js b/security/manager/ssl/tests/unit/test_ocsp_timeout.js index 80e4fa1a77..9ed1de8547 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_timeout.js +++ b/security/manager/ssl/tests/unit/test_ocsp_timeout.js @@ -50,8 +50,8 @@ function add_tests_in_mode(useHardFail) { }); add_connection_test("ocsp-stapling-none.example.com", useHardFail - ? getXPCOMStatusFromNSS(SEC_ERROR_OCSP_SERVER_ERROR) - : Cr.NS_OK, clearSessionCache); + ? SEC_ERROR_OCSP_SERVER_ERROR + : PRErrorCodeSuccess, clearSessionCache); // Reset state add_test(function() { diff --git a/security/manager/ssl/tests/unit/test_ocsp_url.js b/security/manager/ssl/tests/unit/test_ocsp_url.js index f84357f7ab..e4cfd98e0c 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_url.js +++ b/security/manager/ssl/tests/unit/test_ocsp_url.js @@ -64,7 +64,7 @@ function run_test() { add_test(function() { clearOCSPCache(); let ocspResponder = start_ocsp_responder(["hTTp-url"], ["hTTp-url"]); - check_cert_err("hTTp-url", 0); + check_cert_err("hTTp-url", PRErrorCodeSuccess); ocspResponder.stop(run_next_test); }); @@ -86,7 +86,7 @@ function run_test() { add_test(function() { clearOCSPCache(); let ocspResponder = start_ocsp_responder(["no-path-url"], ['']); - check_cert_err("no-path-url", 0); + check_cert_err("no-path-url", PRErrorCodeSuccess); ocspResponder.stop(run_next_test); }); diff --git a/security/manager/ssl/tests/unit/test_pinning.js b/security/manager/ssl/tests/unit/test_pinning.js index 274020058e..cbdf408fe9 100644 --- a/security/manager/ssl/tests/unit/test_pinning.js +++ b/security/manager/ssl/tests/unit/test_pinning.js @@ -18,8 +18,8 @@ // // Pinned domain exclude-subdomains.pinning.example.com excludes subdomains // - PASS: exclude-subdomains.pinning.example.com serves a correct cert -// - FAIL: exclude-subdomains.pinning.example.com services an incorrect cert -// (TODO: test using verifyCertnow) +// - FAIL: exclude-subdomains.pinning.example.com serves an incorrect cert +// (TODO: test using verifyCertNow) // - PASS: sub.exclude-subdomains.pinning.example.com serves an incorrect cert "use strict"; @@ -56,23 +56,27 @@ function test_strict() { // Issued by otherCA, which is not in the pinset for pinning.example.com. add_connection_test("bad.include-subdomains.pinning.example.com", - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); // Check that using a FQDN doesn't bypass pinning. add_connection_test("bad.include-subdomains.pinning.example.com.", - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); // For some reason this is also navigable (see bug 1118522). add_connection_test("bad.include-subdomains.pinning.example.com..", - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); // These domains serve certs that match the pinset. - add_connection_test("include-subdomains.pinning.example.com", Cr.NS_OK); - add_connection_test("good.include-subdomains.pinning.example.com", Cr.NS_OK); - add_connection_test("exclude-subdomains.pinning.example.com", Cr.NS_OK); + add_connection_test("include-subdomains.pinning.example.com", + PRErrorCodeSuccess); + add_connection_test("good.include-subdomains.pinning.example.com", + PRErrorCodeSuccess); + add_connection_test("exclude-subdomains.pinning.example.com", + PRErrorCodeSuccess); // This domain serves a cert that doesn't match the pinset, but subdomains // are excluded. - add_connection_test("sub.exclude-subdomains.pinning.example.com", Cr.NS_OK); + add_connection_test("test-mode.pinning.example.com", + PRErrorCodeSuccess); // This domain's pinset is exactly the same as // include-subdomains.pinning.example.com, serves the same cert as @@ -94,8 +98,10 @@ function test_mitm() { run_next_test(); }); - add_connection_test("include-subdomains.pinning.example.com", Cr.NS_OK); - add_connection_test("good.include-subdomains.pinning.example.com", Cr.NS_OK); + add_connection_test("include-subdomains.pinning.example.com", + PRErrorCodeSuccess); + add_connection_test("good.include-subdomains.pinning.example.com", + PRErrorCodeSuccess); // Normally this is overridable. But, since we have pinning information for // this host, we don't allow overrides (since building a trusted chain fails, @@ -104,7 +110,7 @@ function test_mitm() { add_prevented_cert_override_test( "unknownissuer.include-subdomains.pinning.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + SEC_ERROR_UNKNOWN_ISSUER); add_clear_override("unknownissuer.include-subdomains.pinning.example.com"); // In this case, even though otherCA is not in the pinset, it is a @@ -116,7 +122,7 @@ function test_mitm() { add_connection_test("test-mode.pinning.example.com", Cr.NS_OK); add_cert_override_test("unknownissuer.test-mode.pinning.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); add_clear_override("unknownissuer.test-mode.pinning.example.com"); }; @@ -156,28 +162,32 @@ function test_enforce_test_mode() { add_prevented_cert_override_test( "unknownissuer.include-subdomains.pinning.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED, - getXPCOMStatusFromNSS(SEC_ERROR_UNKNOWN_ISSUER)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); add_clear_override("unknownissuer.include-subdomains.pinning.example.com"); // Issued by otherCA, which is not in the pinset for pinning.example.com. add_connection_test("bad.include-subdomains.pinning.example.com", - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); // These domains serve certs that match the pinset. - add_connection_test("include-subdomains.pinning.example.com", Cr.NS_OK); - add_connection_test("good.include-subdomains.pinning.example.com", Cr.NS_OK); - add_connection_test("exclude-subdomains.pinning.example.com", Cr.NS_OK); + add_connection_test("include-subdomains.pinning.example.com", + PRErrorCodeSuccess); + add_connection_test("good.include-subdomains.pinning.example.com", + PRErrorCodeSuccess); + add_connection_test("exclude-subdomains.pinning.example.com", + PRErrorCodeSuccess); // This domain serves a cert that doesn't match the pinset, but subdomains // are excluded. - add_connection_test("sub.exclude-subdomains.pinning.example.com", Cr.NS_OK); + add_connection_test("sub.exclude-subdomains.pinning.example.com", + PRErrorCodeSuccess); // This domain's pinset is exactly the same as // include-subdomains.pinning.example.com, serves the same cert as // bad.include-subdomains.pinning.example.com, is in test-mode, but we are // enforcing test mode pins. add_connection_test("test-mode.pinning.example.com", - getXPCOMStatusFromNSS(MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE)); + MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE); // Normally this is overridable. But, since we have pinning information for // this host (and since we're enforcing test mode), we don't allow overrides. add_prevented_cert_override_test( diff --git a/security/manager/ssl/tests/unit/test_pinning_dynamic.js b/security/manager/ssl/tests/unit/test_pinning_dynamic.js index 305b5817e2..bc82fa0b7c 100644 --- a/security/manager/ssl/tests/unit/test_pinning_dynamic.js +++ b/security/manager/ssl/tests/unit/test_pinning_dynamic.js @@ -25,16 +25,17 @@ function loadCert(cert_name, trust_string) { return certFromFile(cert_filename); } -function checkOK(cert) { - return checkCertErrorGeneric(certdb, cert, 0, certificateUsageSSLServer); +function checkOK(cert, hostname) { + return checkCertErrorGeneric(certdb, cert, PRErrorCodeSuccess, + certificateUsageSSLServer, {}, hostname); } -function checkFail(cert) { +function checkFail(cert, hostname) { return checkCertErrorGeneric(certdb, cert, MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE, - certificateUsageSSLServer); + certificateUsageSSLServer, {}, hostname); } -const NON_ISSUED_KEY_HASH = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; +const NON_ISSUED_KEY_HASH = "KHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN="; const PINNING_ROOT_KEY_HASH ="kXoHD1ZGyMuowchJwy+xgHlzh0kJFoI9KX0o0IrzTps="; function run_test() { @@ -74,17 +75,17 @@ function checkStateRead(aSubject, aTopic, aData) { // the written entry is for a.pinning2.example.com without subdomains // and b.pinning2.example.com with subdomains - checkFail(certFromFile('cn-a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der')); - checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der')); + checkFail(certFromFile('cn-a.pinning2.example.com-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der'), "x.a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der'), "x.a.pinning2.example.com"); + checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der'), "a.pinning2.example.com"); - checkFail(certFromFile('cn-b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der')); + checkFail(certFromFile('cn-b.pinning2.example.com-badca.der'), "b.pinning2.example.com"); + checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der'), "b.pinning2.example.com"); + checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der'), "x.b.pinning2.example.com"); + checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der'), "x.b.pinning2.example.com"); do_check_true(gSSService.isSecureHost(Ci.nsISiteSecurityService.HEADER_HPKP, "a.pinning2.example.com", 0)); @@ -99,16 +100,16 @@ function checkStateRead(aSubject, aTopic, aData) { // add withSubdomains to a.pinning2.example.com gSSService.setKeyPins("a.pinning2.example.com", true, 1000, 2, [NON_ISSUED_KEY_HASH, PINNING_ROOT_KEY_HASH]); - checkFail(certFromFile('cn-a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-x.a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der')); - checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der')); - checkFail(certFromFile('cn-b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der')); + checkFail(certFromFile('cn-a.pinning2.example.com-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der'), "a.pinning2.example.com"); + checkFail(certFromFile('cn-x.a.pinning2.example.com-badca.der'), "x.a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der'), "x.a.pinning2.example.com"); + checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der'), "a.pinning2.example.com"); + checkFail(certFromFile('cn-b.pinning2.example.com-badca.der'), "b.pinning2.example.com"); + checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der'), "b.pinning2.example.com"); + checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der'), "x.b.pinning2.example.com"); + checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der'), "x.b.pinning2.example.com"); do_check_true(gSSService.isSecureHost(Ci.nsISiteSecurityService.HEADER_HPKP, "a.pinning2.example.com", 0)); @@ -118,17 +119,17 @@ function checkStateRead(aSubject, aTopic, aData) { // Now setpins without subdomains gSSService.setKeyPins("a.pinning2.example.com", false, 1000, 2, [NON_ISSUED_KEY_HASH, PINNING_ROOT_KEY_HASH]); - checkFail(certFromFile('cn-a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der')); - checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der')); + checkFail(certFromFile('cn-a.pinning2.example.com-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der'), "x.a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der'), "x.a.pinning2.example.com"); + checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der'), "a.pinning2.example.com"); - checkFail(certFromFile('cn-b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der')); + checkFail(certFromFile('cn-b.pinning2.example.com-badca.der'), "b.pinning2.example.com"); + checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der'), "b.pinning2.example.com"); + checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der'), "x.b.pinning2.example.com"); + checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der'), "x.b.pinning2.example.com"); do_check_true(gSSService.isSecureHost(Ci.nsISiteSecurityService.HEADER_HPKP, "a.pinning2.example.com", 0)); @@ -146,17 +147,17 @@ function checkStateRead(aSubject, aTopic, aData) { do_check_true(false); // this shouldn't run } catch(e) { } - checkFail(certFromFile('cn-a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der')); - checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der')); + checkFail(certFromFile('cn-a.pinning2.example.com-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der'), "x.a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der'), "x.a.pinning2.example.com"); + checkFail(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der'), "a.pinning2.example.com"); - checkFail(certFromFile('cn-b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der')); + checkFail(certFromFile('cn-b.pinning2.example.com-badca.der'), "b.pinning2.example.com"); + checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der'), "b.pinning2.example.com"); + checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der'), "x.b.pinning2.example.com"); + checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der'), "x.b.pinning2.example.com"); do_check_true(gSSService.isSecureHost(Ci.nsISiteSecurityService.HEADER_HPKP, "a.pinning2.example.com", 0)); @@ -188,17 +189,17 @@ function checkStateRead(aSubject, aTopic, aData) { } function checkExpiredState() { - checkOK(certFromFile('cn-a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der')); - checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der')); - checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der')); + checkOK(certFromFile('cn-a.pinning2.example.com-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-a.pinning2.example.com-pinningroot.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-badca.der'), "x.a.pinning2.example.com"); + checkOK(certFromFile('cn-x.a.pinning2.example.com-pinningroot.der'), "x.a.pinning2.example.com"); + checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-badca.der'), "a.pinning2.example.com"); + checkOK(certFromFile('cn-www.example.com-alt-a.pinning2.example-pinningroot.der'), "a.pinning2.example.com"); - checkFail(certFromFile('cn-b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der')); - checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der')); - checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der')); + checkFail(certFromFile('cn-b.pinning2.example.com-badca.der'), "b.pinning2.example.com"); + checkOK(certFromFile('cn-b.pinning2.example.com-pinningroot.der'), "b.pinning2.example.com"); + checkFail(certFromFile('cn-x.b.pinning2.example.com-badca.der'), "x.b.pinning2.example.com"); + checkOK(certFromFile('cn-x.b.pinning2.example.com-pinningroot.der'), "x.b.pinning2.example.com"); do_test_finished(); } diff --git a/security/manager/tools/makeCNNICHashes.js b/security/manager/tools/makeCNNICHashes.js new file mode 100644 index 0000000000..1420a756fb --- /dev/null +++ b/security/manager/tools/makeCNNICHashes.js @@ -0,0 +1,261 @@ +/* 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/. */ + +// How to run this file: +// 1. [obtain CNNIC-issued certificates to be whitelisted] +// 2. [obtain firefox source code] +// 3. [build/obtain firefox binaries] +// 4. run `[path to]/run-mozilla.sh [path to]/xpcshell makeCNNICHashes.js \ +// [path to]/certlist' +// where certlist is a file containing a list of paths to certificates to +// be included in the whitelist + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cu = Components.utils; + +let gCertDB = Cc["@mozilla.org/security/x509certdb;1"] + .getService(Ci.nsIX509CertDB); + +let { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm", {}); +let { Services } = Cu.import("resource://gre/modules/Services.jsm", {}); + +const HEADER = "// This Source Code Form is subject to the terms of the Mozilla Public\n" + +"// License, v. 2.0. If a copy of the MPL was not distributed with this\n" + +"// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n" + +"//\n" + +"//***************************************************************************\n" + +"// This file was automatically generated by makeCNNICHashes.js. It shouldn't\n" + +"// need to be manually edited.\n" + +"//***************************************************************************\n" + +"\n"; + +const PREAMBLE = "#define CNNIC_WHITELIST_HASH_LEN 32\n\n" + +"struct WhitelistedCNNICHash {\n" + +" const uint8_t hash[CNNIC_WHITELIST_HASH_LEN];\n" + +"};\n\n" + +"static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = {\n"; + +const POSTAMBLE = "};\n"; + +function writeString(fos, string) { + fos.write(string, string.length); +} + +// fingerprint is in the form "00:11:22:..." +function hexSlice(fingerprint, start, end) { + let hexBytes = fingerprint.split(":"); + let ret = ""; + for (let i = start; i < end; i++) { + let hex = hexBytes[i]; + ret += "0x" + hex; + if (i < end - 1) { + ret += ", "; + } + } + return ret; +} + +// Write the C++ header file +function writeHashes(certs, lastValidTime, fos) { + writeString(fos, HEADER); + writeString(fos, `// This file may be removed after ${new Date(lastValidTime)}\n\n`); + writeString(fos, PREAMBLE); + + certs.forEach(function(cert) { + writeString(fos, " {\n"); + writeString(fos, " { " + hexSlice(cert.sha256Fingerprint, 0, 16) + ",\n"); + writeString(fos, " " + hexSlice(cert.sha256Fingerprint, 16, 32) + " },\n"); + + writeString(fos, " },\n"); + }); + writeString(fos, POSTAMBLE); +} + +function readFileContents(file) { + let fstream = Cc["@mozilla.org/network/file-input-stream;1"] + .createInstance(Ci.nsIFileInputStream); + fstream.init(file, -1, 0, 0); + let data = NetUtil.readInputStreamToString(fstream, fstream.available()); + fstream.close(); + return data; +} + +function relativePathToFile(path) { + let currentDirectory = Cc["@mozilla.org/file/directory_service;1"] + .getService(Ci.nsIProperties) + .get("CurWorkD", Ci.nsILocalFile); + let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); + file.initWithPath(currentDirectory.path + "/" + path); + return file; +} + +function pathToFile(path) { + let file = relativePathToFile(path); + if (!file.exists()) { + // Fall back to trying absolute path + file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); + file.initWithPath(path); + } + return file; +} + +// punt on dealing with leap-years +const sixYearsInMilliseconds = 6 * 366 * 24 * 60 * 60 * 1000; + +function loadCertificates(certFile) { + let nowInMilliseconds = (new Date()).getTime(); + // months are 0-indexed, so April is month 3 :( + let april1InMilliseconds = (new Date(2015, 3, 1)).getTime(); + let latestNotAfter = nowInMilliseconds; + let certs = []; + let certMap = {}; + let invalidCerts = []; + let paths = readFileContents(certFile).split("\n"); + for (let path of paths) { + if (!path) { + continue; + } + let certData = readFileContents(pathToFile(path)); + let cert = null; + try { + cert = gCertDB.constructX509FromBase64(certData); + } catch (e) {} + if (!cert) { + cert = gCertDB.constructX509(certData, certData.length); + } + // Don't add multiple copies of any particular certificate. + if (cert.sha256Fingerprint in certMap) { + continue; + } + certMap[cert.sha256Fingerprint] = true; + // If we can't verify the certificate, don't include it. Unfortunately, if + // a CNNIC-issued certificate wasn't previously on the whitelist but it + // otherwise verifies successfully, verifyCertNow will return + // SEC_ERROR_REVOKED_CERTIFICATE, so we count that as verifying + // successfully. If the certificate is later revoked by CNNIC, the user + // will see that when they attempt to connect to a site using it and we do + // normal revocation checking. + let errorCode = gCertDB.verifyCertNow(cert, 2 /* SSL Server */, + Ci.nsIX509CertDB.LOCAL_ONLY, null, + {}, {}); + if (errorCode != 0 && + errorCode != -8180 /* SEC_ERROR_REVOKED_CERTIFICATE */) { + continue; + } + let durationMilliseconds = (cert.validity.notAfter - cert.validity.notBefore) / 1000; + let notBeforeMilliseconds = cert.validity.notBefore / 1000; + let notAfterMilliseconds = cert.validity.notAfter / 1000; + // Only consider certificates that were issued before 1 April 2015, haven't + // expired, and have a validity period shorter than 6 years (there is a + // delegated OCSP responder certificate with a validity period of 6 years + // that should be on the whitelist). + if (notBeforeMilliseconds < april1InMilliseconds && + notAfterMilliseconds > nowInMilliseconds && + durationMilliseconds < sixYearsInMilliseconds) { + certs.push(cert); + if (notAfterMilliseconds > latestNotAfter) { + latestNotAfter = notAfterMilliseconds; + } + } + if (durationMilliseconds >= sixYearsInMilliseconds) { + invalidCerts.push(cert); + } + } + return { certs: certs, + lastValidTime: latestNotAfter, + invalidCerts: invalidCerts }; +} + +// Expects something like "00:11:22:...", returns a string of bytes. +function hexToBinaryString(hexString) { + let hexBytes = hexString.split(":"); + let result = ""; + for (let hexByte of hexBytes) { + result += String.fromCharCode(parseInt(hexByte, 16)); + } + return result; +} + +function compareCertificatesByHash(certA, certB) { + let aBin = hexToBinaryString(certA.sha256Fingerprint); + let bBin = hexToBinaryString(certB.sha256Fingerprint); + + if (aBin < bBin) { + return -1; + } + if (aBin > bBin) { + return 1; + } + return 0; +} + +function certToPEM(cert) { + let der = cert.getRawDER({}); + let derString = ''; + for (let i = 0; i < der.length; i++) { + derString += String.fromCharCode(der[i]); + } + let base64Lines = btoa(derString).replace(/(.{64})/g, "$1\n"); + let output = "-----BEGIN CERTIFICATE-----\n"; + for (let line of base64Lines.split("\n")) { + if (line.length > 0) { + output += line + "\n"; + } + } + output += "-----END CERTIFICATE-----"; + return output; +} + +function loadIntermediates(intermediatesFile) { + let pem = readFileContents(intermediatesFile); + let intermediates = []; + let currentPEM = ""; + for (let line of pem.split("\r\n")) { + if (line == "-----END CERTIFICATE-----") { + if (currentPEM) { + intermediates.push(gCertDB.constructX509FromBase64(currentPEM)); + } + currentPEM = ""; + continue; + } + if (line != "-----BEGIN CERTIFICATE-----") { + currentPEM += line; + } + } + return intermediates; +} + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +if (arguments.length != 2) { + throw "Usage: makeCNNICHashes.js "; +} + +Services.prefs.setIntPref("security.OCSP.enabled", 0); +let intermediatesFile = pathToFile(arguments[0]); +let intermediates = loadIntermediates(intermediatesFile); +let certFile = pathToFile(arguments[1]); +let { certs, lastValidTime, invalidCerts } = loadCertificates(certFile); + +dump("The following certificates were not included due to overlong validity periods:\n"); +for (let cert of invalidCerts) { + dump(certToPEM(cert) + "\n"); +} + +// Sort the key hashes to allow for binary search. +certs.sort(compareCertificatesByHash); + +// Write the output file. +let outFile = relativePathToFile("CNNICHashWhitelist.inc"); +if (!outFile.exists()) { + outFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0644); +} +let outStream = Cc["@mozilla.org/network/file-output-stream;1"] + .createInstance(Ci.nsIFileOutputStream); +outStream.init(outFile, -1, 0, 0); +writeHashes(certs, lastValidTime, outStream); +outStream.close();