1/* 2 * Copyright (c) 2003-2006,2008,2010 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 * 23 * nssUtils.cpp 24 */ 25 26#include "nssUtils.h" 27#include <string.h> 28 29/* 30 * Compare two SecAsn1Items (or two SecAsn1Oids), return true if identical. 31 */ 32int nssCompareSecAsn1Items( 33 const SecAsn1Item *data1, 34 const SecAsn1Item *data2) 35{ 36 if((data1 == NULL) || (data1->Data == NULL) || 37 (data2 == NULL) || (data2->Data == NULL) || 38 (data1->Length != data2->Length)) { 39 return 0; 40 } 41 if(data1->Length != data2->Length) { 42 return 0; 43 } 44 return memcmp(data1->Data, data2->Data, data1->Length) == 0; 45} 46 47int nssCompareCssmData( 48 const SecAsn1Item *data1, 49 const SecAsn1Item *data2) 50{ 51 return nssCompareSecAsn1Items(data1,data2); 52} 53 54/* 55 * How many items in a NULL-terminated array of pointers? 56 */ 57unsigned nssArraySize( 58 const void **array) 59{ 60 unsigned count = 0; 61 if (array) { 62 while (*array++) { 63 count++; 64 } 65 } 66 return count; 67} 68 69