+++ /dev/null
-#include "csptests.h"
-
-#include <security_cdsa_client/keyclient.h>
-#include <security_cdsa_client/cspclient.h>
-#include <security_cdsa_client/macclient.h>
-#include <security_cdsa_client/genkey.h>
-#include <security_cdsa_client/wrapkey.h>
-
-using namespace CssmClient;
-
-static void testCrypt(const Guid &cspGuid);
-static void testDigests(const Guid &cspGuid);
-static void testRandom(const Guid &cspGuid);
-static void testMac(const Guid &cspGuid);
-static void testWrap(const Guid &cspGuid);
-
-
-void csptests()
-{
- testCrypt(gGuidAppleCSP);
- testCrypt(gGuidAppleCSPDL);
- testDigests(gGuidAppleCSP);
- testRandom(gGuidAppleCSP);
- testRandom(gGuidAppleCSPDL);
- testMac(gGuidAppleCSP);
- testMac(gGuidAppleCSPDL);
-}
-
-void testmac()
-{
- testMac(gGuidAppleCSP);
-}
-
-void testwrap()
-{
- testWrap(gGuidAppleCSP);
-}
-
-static void testCrypt(const Guid &cspGuid)
-{
- printf("\n* performing encrypt/decrypt test...\n");
-
- CSP csp(cspGuid);
-
- printf("Generating key\n");
- GenerateKey genKey(csp, CSSM_ALGID_DES, 64);
- Key key = genKey(KeySpec(CSSM_KEYUSE_ANY, CSSM_KEYATTR_RETURN_DEFAULT));
- printf("done\n");
-
- // Gnerate IV
- printf("Generating iv\n");
- //CssmData iv = Random(csp, CSSM_ALGID_SHARandom)(8);
- CssmPolyData iv("12345678");
-
- CssmPolyData in("Om mani padme hum");
- printf("input=");
- dump(in);
-
- // Encrypt
- printf("Encrypting\n");
-
- Encrypt encrypt(csp, CSSM_ALGID_DES);
- encrypt.mode(CSSM_ALGMODE_CBCPadIV8);
- encrypt.padding(CSSM_PADDING_PKCS1);
- encrypt.initVector(iv);
- encrypt.key(key);
- CssmData cipher;
- CssmData remcipher;
- encrypt.encrypt(&in, 1, &cipher, 1);
- encrypt.final(remcipher);
- printf("ciphertext=");
- dump(cipher);
- printf("remainder=");
- dump(remcipher);
-
- // Decrypt
- printf("Decrypting\n");
-
- Decrypt decrypt(csp, CSSM_ALGID_DES);
- decrypt.key(key);
- decrypt.mode(CSSM_ALGMODE_CBCPadIV8);
- decrypt.padding(CSSM_PADDING_PKCS1);
- decrypt.initVector(iv);
- CssmData plain;
- CssmData remplain;
- CssmData inp[] = { cipher, remcipher };
- decrypt.decrypt(inp, 2, &plain, 1);
- decrypt.final(remplain);
- printf("plaintext=");
- dump(plain);
- printf("remainder=");
- dump(remplain);
-
- printf("end encrypt/decrypt test\n");
-}
-
-static void testDigests(const Guid &cspGuid)
-{
- printf("\n* performing digest test...\n");
- CSP csp(cspGuid);
- Digest md5(csp, CSSM_ALGID_MD5);
- StringData data("Once in a blue moon");
- DataBuffer<20> digest;
- md5.digest(data, digest);
- printf("digest=");
- dump(digest);
-}
-
-
-static void testRandom(const Guid &cspGuid)
-{
- printf("\n* performing random test...\n");
- CSP csp(cspGuid);
- CssmData result = Random(csp, CSSM_ALGID_APPLE_YARROW)(16);
- assert(result.length() == 16);
- printf("result=");
- dump(result);
- free(result.data());
-}
-
-
-void dump(const CssmData &data)
-{
- unsigned char *p = data;
- for (uint32 n = 0; n < data.length(); n++)
- printf("%2.2x", p[n]);
- printf("\n");
-}
-
-static void testMac(const Guid &cspGuid)
-{
- printf("\n* performing mac test...\n");
-
- CssmData keyData;
- keyData.Length = 8;
- keyData.Data = (uint8 *)"1234567";
-
- CSP csp(cspGuid);
-
- Key key(csp, keyData);
-
- printf("Generating key\n");
- GenerateKey genKey(csp, CSSM_ALGID_DES, 64);
- key = genKey(KeySpec(CSSM_KEYUSE_ANY, CSSM_KEYATTR_RETURN_DEFAULT));
- printf("done\n");
-
- GenerateMac mac(csp, CSSM_ALGID_SHA1HMAC);
- mac.key(key);
- StringData data("Om mani padme hum");
- DataBuffer<20> signature;
- mac.sign(data, signature);
- printf("signature=");
- dump(signature);
-
- VerifyMac vmac(csp, CSSM_ALGID_SHA1HMAC);
- vmac.key(key);
- vmac.verify(data, signature);
- printf("testing mac verify\n");
-
- bool failed = false;
- try
- {
- printf("testing mac verify with bad data\n");
- StringData baddata("not even close to the original");
- vmac.verify(baddata, signature);
- }
- catch(const CssmError &e)
- {
- printf("caught verify error\n");
- failed = true;
- if (e.osStatus() != CSSMERR_CSP_VERIFY_FAILED)
- throw;
- }
- if (!failed) throw Error(CSSMERR_CSP_VERIFY_FAILED);
-
- printf("end mac test\n");
-}
-
-static void testWrap(const Guid &cspGuid)
-{
- printf("\n* performing wrap test...\n");
-
- CssmData keyData;
- keyData.Length = 8;
- keyData.Data = (uint8 *)"1234567";
-
- CSP csp(cspGuid);
-
- Key key(csp, keyData);
-
- Key wrappedKey;
- GenerateKey genKey(csp, CSSM_ALGID_RC4, 128);
- key = genKey(KeySpec(CSSM_KEYUSE_ANY, CSSM_KEYATTR_RETURN_DEFAULT));
-
- WrapKey wrapKey(csp, CSSM_ALGID_RC2);
- wrapKey.key(key);
-
- AccessCredentials(cred);
- wrapKey.cred(&cred);
- wrapKey.mode(CSSM_ALGMODE_CBC_IV8);
- CssmData initVec;
- initVec.Length = 8;
- initVec.Data = (uint8 *)"12345678";
- wrapKey.initVector(initVec);
-
- wrappedKey=wrapKey(key);
-
-
- printf("end wrap test\n");
-}