diff nss/lib/ckfw/builtins/bobject.c @ 0:1e5118fa0cb1

This is NSS with a Cmake Buildsyste To compile a static NSS library for Windows we've used the Chromium-NSS fork and added a Cmake buildsystem to compile it statically for Windows. See README.chromium for chromium changes and README.trustbridge for our modifications.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 28 Jul 2014 10:47:06 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nss/lib/ckfw/builtins/bobject.c	Mon Jul 28 10:47:06 2014 +0200
@@ -0,0 +1,222 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "builtins.h"
+
+/*
+ * builtins/object.c
+ *
+ * This file implements the NSSCKMDObject object for the
+ * "builtin objects" cryptoki module.
+ */
+
+/*
+ * Finalize - unneeded
+ * Destroy - CKR_SESSION_READ_ONLY
+ * IsTokenObject - CK_TRUE
+ * GetAttributeCount
+ * GetAttributeTypes
+ * GetAttributeSize
+ * GetAttribute
+ * SetAttribute - unneeded
+ * GetObjectSize
+ */
+
+static CK_RV
+builtins_mdObject_Destroy
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance
+)
+{
+  return CKR_SESSION_READ_ONLY;
+}
+
+static CK_BBOOL
+builtins_mdObject_IsTokenObject
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance
+)
+{
+  return CK_TRUE;
+}
+
+static CK_ULONG
+builtins_mdObject_GetAttributeCount
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance,
+  CK_RV *pError
+)
+{
+  builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
+  return io->n;
+}
+
+static CK_RV
+builtins_mdObject_GetAttributeTypes
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance,
+  CK_ATTRIBUTE_TYPE_PTR typeArray,
+  CK_ULONG ulCount
+)
+{
+  builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
+  CK_ULONG i;
+
+  if( io->n != ulCount ) {
+    return CKR_BUFFER_TOO_SMALL;
+  }
+
+  for( i = 0; i < io->n; i++ ) {
+    typeArray[i] = io->types[i];
+  }
+
+  return CKR_OK;
+}
+
+static CK_ULONG
+builtins_mdObject_GetAttributeSize
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance,
+  CK_ATTRIBUTE_TYPE attribute,
+  CK_RV *pError
+)
+{
+  builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
+  CK_ULONG i;
+
+  for( i = 0; i < io->n; i++ ) {
+    if( attribute == io->types[i] ) {
+      return (CK_ULONG)(io->items[i].size);
+    }
+  }
+
+  *pError = CKR_ATTRIBUTE_TYPE_INVALID;
+  return 0;
+}
+
+static NSSCKFWItem
+builtins_mdObject_GetAttribute
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance,
+  CK_ATTRIBUTE_TYPE attribute,
+  CK_RV *pError
+)
+{
+  NSSCKFWItem mdItem;
+  builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
+  CK_ULONG i;
+
+  mdItem.needsFreeing = PR_FALSE;
+  mdItem.item = (NSSItem*) NULL;
+
+  for( i = 0; i < io->n; i++ ) {
+    if( attribute == io->types[i] ) {
+      mdItem.item = (NSSItem*) &io->items[i];
+      return mdItem;
+    }
+  }
+
+  *pError = CKR_ATTRIBUTE_TYPE_INVALID;
+  return mdItem;
+}
+
+static CK_ULONG
+builtins_mdObject_GetObjectSize
+(
+  NSSCKMDObject *mdObject,
+  NSSCKFWObject *fwObject,
+  NSSCKMDSession *mdSession,
+  NSSCKFWSession *fwSession,
+  NSSCKMDToken *mdToken,
+  NSSCKFWToken *fwToken,
+  NSSCKMDInstance *mdInstance,
+  NSSCKFWInstance *fwInstance,
+  CK_RV *pError
+)
+{
+  builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
+  CK_ULONG i;
+  CK_ULONG rv = sizeof(CK_ULONG);
+
+  for( i = 0; i < io->n; i++ ) {
+    rv += sizeof(CK_ATTRIBUTE_TYPE) + sizeof(NSSItem) + io->items[i].size;
+  }
+
+  return rv;
+}
+
+static const NSSCKMDObject
+builtins_prototype_mdObject = {
+  (void *)NULL, /* etc */
+  NULL, /* Finalize */
+  builtins_mdObject_Destroy,
+  builtins_mdObject_IsTokenObject,
+  builtins_mdObject_GetAttributeCount,
+  builtins_mdObject_GetAttributeTypes,
+  builtins_mdObject_GetAttributeSize,
+  builtins_mdObject_GetAttribute,
+  NULL, /* FreeAttribute */
+  NULL, /* SetAttribute */
+  builtins_mdObject_GetObjectSize,
+  (void *)NULL /* null terminator */
+};
+
+NSS_IMPLEMENT NSSCKMDObject *
+nss_builtins_CreateMDObject
+(
+  NSSArena *arena,
+  builtinsInternalObject *io,
+  CK_RV *pError
+)
+{
+  if ( (void*)NULL == io->mdObject.etc) {
+    (void) nsslibc_memcpy(&io->mdObject,&builtins_prototype_mdObject,
+					sizeof(builtins_prototype_mdObject));
+    io->mdObject.etc = (void *)io;
+  }
+
+  return &io->mdObject;
+}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)