Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/security/nss/lib/ckfw/builtins/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 5 kB image not shown  

Quelle  bobject.c   Sprache: C

 
/* 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;
}

Messung V0.5
C=93 H=93 G=92

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.