RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [email protected] Module: rpm Date: 26-Jun-2010 07:16:55 Branch: HEAD Handle: 2010062605165401 Modified files: rpm CHANGES rpm/rpmio rpmcdsa.c rpmcdsa.h Log: - cdsa: wire up RSA/DSA generate/sign/verify methods. Summary: Revision Changes Path 1.3401 +1 -0 rpm/CHANGES 1.3 +236 -250 rpm/rpmio/rpmcdsa.c 1.3 +31 -2 rpm/rpmio/rpmcdsa.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3400 -r1.3401 CHANGES --- rpm/CHANGES 25 Jun 2010 18:39:43 -0000 1.3400 +++ rpm/CHANGES 26 Jun 2010 05:16:54 -0000 1.3401 @@ -1,4 +1,5 @@ 5.3.2 -> 5.4a1: + - jbj: cdsa: wire up RSA/DSA generate/sign/verify methods. 5.3.1 -> 5.3.2: - jbj: pgp: fix: algo parameters to signature/pubkey with msbits(). @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmcdsa.c ============================================================================ $ cvs diff -u -r1.2 -r1.3 rpmcdsa.c --- rpm/rpmio/rpmcdsa.c 13 Jun 2010 14:06:56 -0000 1.2 +++ rpm/rpmio/rpmcdsa.c 26 Jun 2010 05:16:55 -0000 1.3 @@ -52,10 +52,8 @@ /*...@*/ { /* XXX FIXME: Don't spew on expected failures ... */ - if (rc != CSSM_OK) { - fprintf (stderr, "rpmcdsa: %s rc(%d) %s\n", - msg, rc, "FIXME"); - } + if (rc != CSSM_OK) + cssmPerror(msg, rc); return rc; } @@ -85,71 +83,6 @@ } static -int rpmcdsaVerifyRSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ -cdsa = cdsa; - -SPEW(!rc, rc, dig); - return rc; -} - -static -int rpmcdsaSignRSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ -cdsa = cdsa; - -SPEW(!rc, rc, dig); - - return rc; -} - -static -int rpmcdsaGenerateRSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ - -SecKeychainRef kcRef = NULL; -CSSM_ALGORITHMS algid = CSSM_ALGID_RSA; -CSSM_CC_HANDLE ccHandle = CSSM_INVALID_HANDLE; -OSStatus ortn; -CSSM_KEYUSE pubKeyUse = - CSSM_KEYUSE_VERIFY | CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_WRAP; -CSSM_KEYUSE secKeyUse = - CSSM_KEYUSE_SIGN | CSSM_KEYUSE_DECRYPT | CSSM_KEYUSE_UNWRAP; -CSSM_KEYATTR_FLAGS pubKeyAttr = - CSSM_KEYATTR_RETURN_REF | - CSSM_KEYATTR_PERMANENT | CSSM_KEYATTR_EXTRACTABLE; -CSSM_KEYATTR_FLAGS secKeyAttr = - CSSM_KEYATTR_SENSITIVE | CSSM_KEYATTR_RETURN_REF | - CSSM_KEYATTR_PERMANENT | CSSM_KEYATTR_EXTRACTABLE; -SecAccessRef initialAccess = NULL; - -if (cdsa->nbits == 0) cdsa->nbits = 1024; /* XXX FIXME */ - -ortn = rpmcdsaErr(cdsa, "SecKeyCreatePair", - SecKeyCreatePair(kcRef, - algid, cdsa->nbits, - ccHandle, - pubKeyUse, pubKeyAttr, - secKeyUse, secKeyAttr, - initialAccess, - &cdsa->pub_key, - &cdsa->sec_key)); - -SPEW(!rc, rc, dig); - - return rc; -} - -static int rpmcdsaSetDSA(/*...@only@*/ DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp) /*...@modifies dig @*/ { @@ -175,106 +108,6 @@ } static -int rpmcdsaVerifyDSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure */ - -CSSM_CSP_HANDLE cspHandle = CSSM_INVALID_HANDLE; -CSSM_ACCESS_CREDENTIALS * creds = NULL; -CSSM_CC_HANDLE ccHandle = CSSM_INVALID_HANDLE; -CSSM_KEY sec_key; -CSSM_DATA hashData = { .Length = cdsa->digestlen, .Data = cdsa->digest }; -uint32_t hashDataCount = 1; -CSSM_DATA signature = { 0, NULL }; -CSSM_RETURN crReturn; - -crReturn = rpmcdsaErr(cdsa, "CSSM_CSP_CreateSignatureContext", - CSSM_CSP_CreateSignatureContext(cspHandle, CSSM_ALGID_DSA, - creds, &sec_key, &ccHandle)); - -crReturn = rpmcdsaErr(cdsa, "CSSM_VerifyData", - CSSM_VerifyData(ccHandle, &hashData, hashDataCount, - CSSM_ALGID_SHA1, &signature)); - -CSSM_DeleteContext(ccHandle); - -SPEW(!rc, rc, dig); - return rc; -} - -static -int rpmcdsaSignDSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure */ - -CSSM_CSP_HANDLE cspHandle = CSSM_INVALID_HANDLE; -CSSM_ACCESS_CREDENTIALS * creds = NULL; -CSSM_CC_HANDLE ccHandle = CSSM_INVALID_HANDLE; -CSSM_KEY sec_key; -CSSM_DATA hashData = { .Length = cdsa->digestlen, .Data = cdsa->digest }; -uint32_t hashDataCount = 1; -CSSM_DATA signature = { 0, NULL }; -CSSM_RETURN crReturn; - -crReturn = rpmcdsaErr(cdsa, "CSSM_CSP_CreateSignatureContext", - CSSM_CSP_CreateSignatureContext(cspHandle, CSSM_ALGID_DSA, - creds, &sec_key, &ccHandle)); - -crReturn = rpmcdsaErr(cdsa, "CSSM_SignData", - CSSM_SignData(ccHandle, &hashData, hashDataCount, - CSSM_ALGID_SHA1, &signature)); - -CSSM_DeleteContext(ccHandle); - -SPEW(!rc, rc, dig); - - return rc; -} - -static -int rpmcdsaGenerateDSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ - -SecKeychainRef kcRef = NULL; -CSSM_CC_HANDLE ccHandle = CSSM_INVALID_HANDLE; -OSStatus ortn; -CSSM_KEYUSE pubKeyUse = - CSSM_KEYUSE_VERIFY | CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_WRAP; -CSSM_KEYUSE secKeyUse = - CSSM_KEYUSE_SIGN | CSSM_KEYUSE_DECRYPT | CSSM_KEYUSE_UNWRAP; -CSSM_KEYATTR_FLAGS pubKeyAttr = - CSSM_KEYATTR_RETURN_REF | - CSSM_KEYATTR_PERMANENT | CSSM_KEYATTR_EXTRACTABLE; -CSSM_KEYATTR_FLAGS secKeyAttr = - CSSM_KEYATTR_SENSITIVE | CSSM_KEYATTR_RETURN_REF | - CSSM_KEYATTR_PERMANENT | CSSM_KEYATTR_EXTRACTABLE; -SecAccessRef initialAccess = NULL; - -if (cdsa->nbits == 0) cdsa->nbits = 1024; /* XXX FIXME */ - -ortn = rpmcdsaErr(cdsa, "SecKeyCreatePair", - SecKeyCreatePair(kcRef, - CSSM_ALGID_DSA, cdsa->nbits, - ccHandle, - pubKeyUse, pubKeyAttr, - secKeyUse, secKeyAttr, - initialAccess, - &cdsa->pub_key, - &cdsa->sec_key)); - -SPEW(!rc, rc, dig); - - return rc; -} - -static int rpmcdsaSetELG(/*...@only@*/ DIGEST_CTX ctx, /*...@unused@*/pgpDig dig, pgpDigParams sigp) /*...@*/ { @@ -318,69 +151,6 @@ return rc; } -static -int rpmcdsaVerifyECDSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ -cdsa = cdsa; - -SPEW(!rc, rc, dig); - return rc; -} - -static -int rpmcdsaSignECDSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ -cdsa = cdsa; - -SPEW(!rc, rc, dig); - return rc; -} - -static -int rpmcdsaGenerateECDSA(pgpDig dig) - /*...@*/ -{ - rpmcdsa cdsa = dig->impl; - int rc = 0; /* assume failure. */ - -SecKeychainRef kcRef = NULL; -CSSM_ALGORITHMS algid = CSSM_ALGID_ECDSA; -CSSM_CC_HANDLE ccHandle = CSSM_INVALID_HANDLE; -OSStatus ortn; -CSSM_KEYUSE pubKeyUse = - CSSM_KEYUSE_VERIFY | CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_WRAP; -CSSM_KEYUSE secKeyUse = - CSSM_KEYUSE_SIGN | CSSM_KEYUSE_DECRYPT | CSSM_KEYUSE_UNWRAP; -CSSM_KEYATTR_FLAGS pubKeyAttr = - CSSM_KEYATTR_RETURN_REF | - CSSM_KEYATTR_PERMANENT | CSSM_KEYATTR_EXTRACTABLE; -CSSM_KEYATTR_FLAGS secKeyAttr = - CSSM_KEYATTR_SENSITIVE | CSSM_KEYATTR_RETURN_REF | - CSSM_KEYATTR_PERMANENT | CSSM_KEYATTR_EXTRACTABLE; -SecAccessRef initialAccess = NULL; - -if (cdsa->nbits == 0) cdsa->nbits = 1024; /* XXX FIXME */ - -ortn = rpmcdsaErr(cdsa, "SecKeyCreatePair", - SecKeyCreatePair(kcRef, - algid, cdsa->nbits, - ccHandle, - pubKeyUse, pubKeyAttr, - secKeyUse, secKeyAttr, - initialAccess, - &cdsa->pub_key, - &cdsa->sec_key)); - -SPEW(!rc, rc, dig); - return rc; -} - static int rpmcdsaErrChk(pgpDig dig, const char * msg, int rc, unsigned expected) { #ifdef REFERENCE @@ -427,7 +197,9 @@ static int rpmcdsaVerify(pgpDig dig) { + rpmcdsa cdsa = dig->impl; int rc = 0; /* assume failure */ +int xx; pgpDigParams pubp = pgpGetPubkey(dig); pgpDigParams sigp = pgpGetSignature(dig); dig->pubkey_algoN = rpmcdsaPubkeyAlgo2Name(pubp->pubkey_algo); @@ -435,78 +207,192 @@ switch (pubp->pubkey_algo) { default: + goto exit; break; case PGPPUBKEYALGO_RSA: - rc = rpmcdsaVerifyRSA(dig); + cdsa->algid = CSSM_ALGID_RSA; break; case PGPPUBKEYALGO_DSA: - rc = rpmcdsaVerifyDSA(dig); + cdsa->algid = CSSM_ALGID_DSA; break; case PGPPUBKEYALGO_ELGAMAL: -#ifdef NOTYET - rc = rpmcdsaVerifyELG(dig); -#endif + goto exit; break; case PGPPUBKEYALGO_ECDSA: - rc = rpmcdsaVerifyECDSA(dig); + cdsa->algid = CSSM_ALGID_ECDSA; break; } + + cdsa->ccHandle = CSSM_INVALID_HANDLE; + xx = rpmcdsaErr(cdsa, "CSSM_CSP_CreateSignatureContext", + CSSM_CSP_CreateSignatureContext(cdsa->cspHandle, + cdsa->algid, + cdsa->AccessCred, + &cdsa->pub_key, + &cdsa->ccHandle)); + +CSSM_DATA hashData = { .Length = cdsa->digestlen, .Data = cdsa->digest }; +uint32_t hashDataCount = 1; +CSSM_ALGORITHMS DigestAlgorithm = CSSM_ALGID_SHA1; + + xx = rpmcdsaErr(cdsa, "CSSM_VerifyData", + CSSM_VerifyData(cdsa->ccHandle, + &hashData, + hashDataCount, + DigestAlgorithm, + &cdsa->signature)); + + rc = (xx == CSSM_OK); + + xx = rpmcdsaErr(cdsa, "CSSM_DeleteContext", + CSSM_DeleteContext(cdsa->ccHandle)); + cdsa->ccHandle = CSSM_INVALID_HANDLE; + +exit: SPEW(!rc, rc, dig); return rc; } static int rpmcdsaSign(pgpDig dig) { + rpmcdsa cdsa = dig->impl; int rc = 0; /* assume failure */ +int xx; pgpDigParams pubp = pgpGetPubkey(dig); dig->pubkey_algoN = rpmcdsaPubkeyAlgo2Name(pubp->pubkey_algo); switch (pubp->pubkey_algo) { default: + goto exit; break; case PGPPUBKEYALGO_RSA: - rc = rpmcdsaSignRSA(dig); + cdsa->algid = CSSM_ALGID_RSA; break; case PGPPUBKEYALGO_DSA: - rc = rpmcdsaSignDSA(dig); + cdsa->algid = CSSM_ALGID_DSA; break; case PGPPUBKEYALGO_ELGAMAL: -#ifdef NOTYET - rc = rpmcdsaSignELG(dig); -#endif + goto exit; break; case PGPPUBKEYALGO_ECDSA: - rc = rpmcdsaSignECDSA(dig); + cdsa->algid = CSSM_ALGID_ECDSA; break; } + + cdsa->ccHandle = CSSM_INVALID_HANDLE; + xx = rpmcdsaErr(cdsa, "CSSM_CSP_CreateSignatureContext", + CSSM_CSP_CreateSignatureContext(cdsa->cspHandle, + cdsa->algid, + cdsa->AccessCred, + &cdsa->sec_key, + &cdsa->ccHandle)); + +CSSM_DATA hashData = { .Length = cdsa->digestlen, .Data = cdsa->digest }; +uint32_t hashDataCount = 1; +CSSM_ALGORITHMS DigestAlgorithm = CSSM_ALGID_SHA1; + + xx = rpmcdsaErr(cdsa, "CSSM_SignData", + CSSM_SignData(cdsa->ccHandle, + &hashData, + hashDataCount, + DigestAlgorithm, + &cdsa->signature)); + + rc = (xx == CSSM_OK); + +fprintf(stderr, "\tsignature %p[%u]\n", cdsa->signature.Data, (unsigned)cdsa->signature.Length); + + xx = rpmcdsaErr(cdsa, "CSSM_DeleteContext", + CSSM_DeleteContext(cdsa->ccHandle)); + cdsa->ccHandle = CSSM_INVALID_HANDLE; + +exit: SPEW(!rc, rc, dig); return rc; } static int rpmcdsaGenerate(pgpDig dig) { + rpmcdsa cdsa = dig->impl; int rc = 0; /* assume failure */ +int xx; pgpDigParams pubp = pgpGetPubkey(dig); dig->pubkey_algoN = rpmcdsaPubkeyAlgo2Name(pubp->pubkey_algo); + memset(&cdsa->sec_key, 0, sizeof(cdsa->sec_key)); + memset(&cdsa->pub_key, 0, sizeof(cdsa->pub_key)); + switch (pubp->pubkey_algo) { default: + goto exit; break; case PGPPUBKEYALGO_RSA: - rc = rpmcdsaGenerateRSA(dig); +if (cdsa->nbits == 0) cdsa->nbits = 1024; /* XXX FIXME */ + cdsa->algid = CSSM_ALGID_RSA; break; case PGPPUBKEYALGO_DSA: - rc = rpmcdsaGenerateDSA(dig); +if (cdsa->nbits == 0) cdsa->nbits = 1024; /* XXX FIXME */ + cdsa->algid = CSSM_ALGID_DSA; break; case PGPPUBKEYALGO_ELGAMAL: -#ifdef NOTYET - rc = rpmcdsaGenerateELG(dig); -#endif + goto exit; break; case PGPPUBKEYALGO_ECDSA: - rc = rpmcdsaGenerateECDSA(dig); +if (cdsa->nbits == 0) cdsa->nbits = 256; /* XXX FIXME */ + cdsa->algid = CSSM_ALGID_ECDSA; + break; + } + + cdsa->ccHandle = CSSM_INVALID_HANDLE; + xx = rpmcdsaErr(cdsa, "CSSM_CSP_CreateKeyGenContext", + CSSM_CSP_CreateKeyGenContext(cdsa->cspHandle, + cdsa->algid, + cdsa->nbits, + cdsa->Seed, + cdsa->Salt, + cdsa->StartDate, + cdsa->EndDate, + cdsa->Params, + &cdsa->ccHandle)); + + switch (pubp->pubkey_algo) { + case PGPPUBKEYALGO_RSA: + default: + break; + case PGPPUBKEYALGO_DSA: + case PGPPUBKEYALGO_ECDSA: /* XXX FIXME */ + case PGPPUBKEYALGO_ELGAMAL: + { CSSM_DATA dummy = { 0, NULL }; + xx = rpmcdsaErr(cdsa, "CSSM_GenerateAlgorithmParams", + CSSM_GenerateAlgorithmParams(cdsa->ccHandle, + cdsa->nbits, + &dummy)); + } break; } + + xx = rpmcdsaErr(cdsa, "CSSM_GenerateKeyPair", + CSSM_GenerateKeyPair(cdsa->ccHandle, + cdsa->PublicKeyUsage, + cdsa->PublicKeyAttr, + &cdsa->PublicKeyLabel, + &cdsa->pub_key, + cdsa->PrivateKeyUsage, + cdsa->PrivateKeyAttr, + &cdsa->PrivateKeyLabel, + cdsa->CredAndAclEntry, + &cdsa->sec_key)); + + rc = (xx == CSSM_OK); + +fprintf(stderr, "\tsec_key %p[%u]\n", cdsa->sec_key.KeyData.Data, (unsigned)cdsa->sec_key.KeyData.Length); +fprintf(stderr, "\tpub_key %p[%u]\n", cdsa->pub_key.KeyData.Data, (unsigned)cdsa->pub_key.KeyData.Length); + + xx = rpmcdsaErr(cdsa, "CSSM_DeleteContext", + CSSM_DeleteContext(cdsa->ccHandle)); + cdsa->ccHandle = CSSM_INVALID_HANDLE; + +exit: SPEW(!rc, rc, dig); return rc; } @@ -570,16 +456,116 @@ void * rpmcdsaFree(/*...@only@*/ void * impl) /*...@modifies impl @*/ { + rpmcdsa cdsa = impl; +int xx; + rpmcdsaClean(impl); + + xx = rpmcdsaErr(cdsa, "CSSM_ModuleDetach", + CSSM_ModuleDetach(cdsa->cspHandle)); + cdsa->cspHandle = 0; + + xx = rpmcdsaErr(cdsa, "CSSM_ModuleUnload", + CSSM_ModuleUnload(cdsa->ModuleGuid, + cdsa->AppNotifyCallback, + cdsa->AppNotifyCallbackCtx)); + cdsa->ModuleGuid = NULL; + + /* XXX FIXME: paired or oneshot */ + xx = rpmcdsaErr(cdsa, "CSSM_Terminate", + CSSM_Terminate()); + impl = _free(impl); + return NULL; } +/* + * Standard app-level memory functions required by CDSA. + */ +static void * appMalloc (uint32 size, void *allocRef) +{ + return( malloc(size) ); +} +static void appFree (void *mem_ptr, void *allocRef) +{ + free(mem_ptr); + return; +} +static void * appRealloc (void *ptr, uint32 size, void *allocRef) +{ + return( realloc( ptr, size ) ); +} +static void * appCalloc (uint32 num, uint32 size, void *allocRef) +{ + return( calloc( num, size ) ); +} + +static CSSM_API_MEMORY_FUNCS memFuncs = { + (CSSM_MALLOC) appMalloc, + (CSSM_FREE) appFree, + (CSSM_REALLOC) appRealloc, + (CSSM_CALLOC) appCalloc, + NULL + }; + +static const CSSM_VERSION Version = { 2, 0 }; +static const CSSM_GUID CallerGuid = { 0xFADE, 0, 0, { 1,2,3,4,5,6,7,0 } }; + static void * rpmcdsaInit(void) /*...@*/ { rpmcdsa cdsa = xcalloc(1, sizeof(*cdsa)); +int xx; + +CSSM_PRIVILEGE_SCOPE Scope = CSSM_PRIVILEGE_SCOPE_NONE; +CSSM_KEY_HIERARCHY KeyHierarchy = CSSM_KEY_HIERARCHY_NONE; +CSSM_PVC_MODE PvcPolicy = CSSM_PVC_NONE; + + /* XXX FIXME: paired or oneshot */ +xx = rpmcdsaErr(cdsa, "CSSM_Init", + CSSM_Init(&Version, + Scope, + &CallerGuid, + KeyHierarchy, + &PvcPolicy, + cdsa->Reserved)); + +cdsa->ModuleGuid = &gGuidAppleCSP; +xx = rpmcdsaErr(cdsa, "CSSM_ModuleLoad", + CSSM_ModuleLoad(cdsa->ModuleGuid, + KeyHierarchy, + cdsa->AppNotifyCallback, + cdsa->AppNotifyCallbackCtx)); + +uint32 SubserviceID = 0; +CSSM_SERVICE_TYPE SubServiceType= CSSM_SERVICE_CSP; +CSSM_ATTACH_FLAGS AttachFlags = 0; + +xx = rpmcdsaErr(cdsa, "CSSM_ModuleAttach", + CSSM_ModuleAttach(cdsa->ModuleGuid, + &Version, + &memFuncs, + SubserviceID, + SubServiceType, + AttachFlags, + KeyHierarchy, + cdsa->FunctionTable, + cdsa->NumFunctionTable, + cdsa->Reserved, + &cdsa->cspHandle)); + +cdsa->PublicKeyUsage = CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_VERIFY; +cdsa->PublicKeyAttr = CSSM_KEYATTR_RETURN_DATA | CSSM_KEYATTR_EXTRACTABLE; +cdsa->PublicKeyLabel.Length = 8; +cdsa->PublicKeyLabel.Data = (uint8 *) "tempKey"; +cdsa->PrivateKeyUsage = CSSM_KEYUSE_DECRYPT | CSSM_KEYUSE_SIGN; +cdsa->PrivateKeyAttr = CSSM_KEYATTR_RETURN_DATA | CSSM_KEYATTR_EXTRACTABLE; +cdsa->PrivateKeyLabel.Length = 8; +cdsa->PrivateKeyLabel.Data = (uint8 *) "tempKey"; +cdsa->CredAndAclEntry = NULL; + return (void *) cdsa; } @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmcdsa.h ============================================================================ $ cvs diff -u -r1.2 -r1.3 rpmcdsa.h --- rpm/rpmio/rpmcdsa.h 13 Jun 2010 14:06:56 -0000 1.2 +++ rpm/rpmio/rpmcdsa.h 26 Jun 2010 05:16:55 -0000 1.3 @@ -32,8 +32,37 @@ void * digest; size_t digestlen; - SecKeyRef sec_key; - SecKeyRef pub_key; +const CSSM_GUID * ModuleGuid; +CSSM_API_ModuleEventHandler AppNotifyCallback; /* XXX NULL */ +void * AppNotifyCallbackCtx; /* XXX NULL */ +CSSM_FUNC_NAME_ADDR * FunctionTable; /* XXX NULL */ +uint32 NumFunctionTable; /* XXX 0 */ +const void * Reserved; /* XXX NULL */ + +CSSM_CSP_HANDLE cspHandle; +CSSM_CC_HANDLE ccHandle; + +CSSM_ALGORITHMS algid; +const CSSM_CRYPTO_DATA *Seed; /* XXX NULL */ +const CSSM_DATA *Salt; /* XXX NULL */ +const CSSM_DATE *StartDate; /* XXX NULL */ +const CSSM_DATE *EndDate; /* XXX NULL */ +const CSSM_DATA *Params; + +uint32 PublicKeyUsage; +uint32 PublicKeyAttr; +CSSM_DATA PublicKeyLabel; +uint32 PrivateKeyUsage; +uint32 PrivateKeyAttr; +CSSM_DATA PrivateKeyLabel; + +CSSM_RESOURCE_CONTROL_CONTEXT * CredAndAclEntry;/* XXX NULL */ +CSSM_ACCESS_CREDENTIALS * AccessCred; /* XXX NULL */ + +CSSM_KEY sec_key; +CSSM_KEY pub_key; + +CSSM_DATA signature; /* DSA parameters. */ @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
