Back to index

lightning-sunbird  0.9+nobinonly
Functions | Variables
secdig.h File Reference
#include "secdigt.h"
#include "seccomon.h"
#include "secasn1t.h"
#include "secdert.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

SGNDigestInfo * SGN_CreateDigestInfo (SECOidTag algorithm, unsigned char *sig, unsigned int sigLen)
void SGN_DestroyDigestInfo (SGNDigestInfo *info)
SECItem * SGN_EncodeDigestInfo (PRArenaPool *poolp, SECItem *dest, SGNDigestInfo *diginfo)
SGNDigestInfo * SGN_DecodeDigestInfo (SECItem *didata)
SECStatus SGN_CopyDigestInfo (PRArenaPool *poolp, SGNDigestInfo *a, SGNDigestInfo *b)
SECComparison SGN_CompareDigestInfo (SGNDigestInfo *a, SGNDigestInfo *b)

Variables

SEC_BEGIN_PROTOS const
SEC_ASN1Template 
sgn_DigestInfoTemplate []
DERTemplate SGNDigestInfoTemplate []

Function Documentation

SECComparison SGN_CompareDigestInfo ( SGNDigestInfo *  a,
SGNDigestInfo *  b 
)

Definition at line 231 of file secdig.c.

{
    SECComparison rv;

    /* Check signature algorithm's */
    rv = SECOID_CompareAlgorithmID(&a->digestAlgorithm, &b->digestAlgorithm);
    if (rv) return rv;

    /* Compare signature block length's */
    rv = SECITEM_CompareItem(&a->digest, &b->digest);
    return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus SGN_CopyDigestInfo ( PRArenaPool poolp,
SGNDigestInfo *  a,
SGNDigestInfo *  b 
)

Definition at line 206 of file secdig.c.

{
    SECStatus rv;
    void *mark;

    if((poolp == NULL) || (a == NULL) || (b == NULL))
       return SECFailure;

    mark = PORT_ArenaMark(poolp);
    a->arena = poolp;
    rv = SECOID_CopyAlgorithmID(poolp, &a->digestAlgorithm, 
       &b->digestAlgorithm);
    if (rv == SECSuccess)
       rv = SECITEM_CopyItem(poolp, &a->digest, &b->digest);

    if (rv != SECSuccess) {
       PORT_ArenaRelease(poolp, mark);
    } else {
       PORT_ArenaUnmark(poolp, mark);
    }

    return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SGNDigestInfo* SGN_CreateDigestInfo ( SECOidTag  algorithm,
unsigned char *  sig,
unsigned int  sigLen 
)
SGNDigestInfo* SGN_DecodeDigestInfo ( SECItem *  didata)

Definition at line 164 of file secdig.c.

{
    PRArenaPool *arena;
    SGNDigestInfo *di;
    SECStatus rv = SECFailure;
    SECItem      diCopy   = {siBuffer, NULL, 0};

    arena = PORT_NewArena(SEC_ASN1_DEFAULT_ARENA_SIZE);
    if(arena == NULL)
       return NULL;

    rv = SECITEM_CopyItem(arena, &diCopy, didata);
    if (rv != SECSuccess) {
       PORT_FreeArena(arena, PR_FALSE);
       return NULL;
    }

    di = (SGNDigestInfo *)PORT_ArenaZAlloc(arena, sizeof(SGNDigestInfo));
    if (di != NULL) {
       di->arena = arena;
       rv = SEC_QuickDERDecodeItem(arena, di, sgn_DigestInfoTemplate, &diCopy);
    }
       
    if ((di == NULL) || (rv != SECSuccess)) {
       PORT_FreeArena(arena, PR_FALSE);
       di = NULL;
    }

    return di;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SGN_DestroyDigestInfo ( SGNDigestInfo *  info)

Definition at line 196 of file secdig.c.

{
    if (di && di->arena) {
       PORT_FreeArena(di->arena, PR_FALSE);
    }

    return;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECItem* SGN_EncodeDigestInfo ( PRArenaPool poolp,
SECItem *  dest,
SGNDigestInfo *  diginfo 
)

Definition at line 89 of file secdig.c.

{
    return SEC_ASN1EncodeItem (poolp, dest, diginfo, sgn_DigestInfoTemplate);
}

Here is the call graph for this function:


Variable Documentation

Definition at line 60 of file secdig.c.

DERTemplate SGNDigestInfoTemplate[]

Definition at line 47 of file secdig.c.