]> git.saurik.com Git - apple/security.git/blobdiff - SecurityTests/cspxutils/utilLib/bsafeUtils.h
Security-57031.1.35.tar.gz
[apple/security.git] / SecurityTests / cspxutils / utilLib / bsafeUtils.h
diff --git a/SecurityTests/cspxutils/utilLib/bsafeUtils.h b/SecurityTests/cspxutils/utilLib/bsafeUtils.h
new file mode 100644 (file)
index 0000000..8ed5234
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * bsafeUtils.h - common routines for CDSA/BSAFE compatibility testing
+ */
+
+/*
+ * Clients of this module do not need to know about or see anything from the 
+ * BSAFE headers. 
+ */
+#ifndef        _BSAFE_UTILS_H_
+#define _BSAFE_UTILS_H_
+#include <Security/cssmtype.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Actually the same as a B_KEY_OBJ, but our callers don't need to know that */
+typedef void *BU_KEY;
+
+/*
+ * Create a symmetric key.
+ */
+CSSM_RETURN  buGenSymKey(
+       uint32                  keySizeInBits,
+       const CSSM_DATA *keyData,
+       BU_KEY                  *key);                  // RETURNED
+
+/*
+ * Create asymmetric key pair.
+ * FIXME - additional params (e.g. DSA params, RSA exponent)?
+ */
+CSSM_RETURN buGenKeyPair(
+       uint32                  keySizeInBits,
+       CSSM_ALGORITHMS keyAlg,                 // CSSM_ALGID_{RSA,DSA}
+       BU_KEY                  *pubKey,                // RETURNED
+       BU_KEY                  *privKey);              // RETURNED
+       
+/*
+ * Free a key created in buGenSymKey or buGenKeyPair
+ */
+CSSM_RETURN buFreeKey(
+       BU_KEY                  key);
+
+/*
+ * encrypt/decrypt
+ */
+CSSM_RETURN buEncryptDecrypt(
+       BU_KEY                          key,
+       CSSM_BOOL                       forEncrypt,
+       CSSM_ALGORITHMS         encrAlg,
+       CSSM_ENCRYPT_MODE       mode,                           // CSSM_ALGMODE_CBC, etc.
+       const CSSM_DATA         *iv,                            //ĂŠoptional per mode
+       uint32                          effectiveKeyBits,       // optional per key alg (actually just RC2)
+                                                                                       // for RSA, key size in bits
+       uint32                          rounds,                         // optional, RC5 only
+       const CSSM_DATA         *inData,
+       CSSM_DATA_PTR           outData);                       // mallocd and RETURNED
+
+/*
+ * Sign/verify
+ */
+CSSM_RETURN buSign(
+       BU_KEY                          key,
+       CSSM_ALGORITHMS         sigAlg,
+       const CSSM_DATA         *ptext,
+       uint32                          keySizeInBits,          // to set up sig
+       CSSM_DATA_PTR           sig);                           // mallocd and RETURNED
+
+CSSM_RETURN buVerify(
+       BU_KEY                          key,
+       CSSM_ALGORITHMS         sigAlg,
+       const CSSM_DATA         *ptext,
+       const CSSM_DATA         *sig);                          // mallocd and RETURNED
+
+/* 
+ * generate MAC either one update (updateSizes == NULL) or 
+ * specified set of update sizes.
+ */
+CSSM_RETURN buGenMac(
+       BU_KEY                          key,                            // any key, any size
+       CSSM_ALGORITHMS         macAlg,                         // only CSSM_ALGID_SHA1HMAC for now
+       const CSSM_DATA         *ptext,
+       unsigned                        *updateSizes,           // NULL --> random updates
+                                                                                       // else null-terminated list of sizes
+       CSSM_DATA_PTR           mac);                           // mallocd and RETURNED 
+       
+/* generate digest */
+CSSM_RETURN buGenDigest(
+       CSSM_ALGORITHMS         macAlg,                         // CSSM_ALGID_SHA1, etc. */
+       const CSSM_DATA         *ptext,
+       CSSM_DATA_PTR           digest);                        // mallocd and RETURNED 
+       
+/*
+ * Convert between BSAFE and CDSA private keys
+ */
+CSSM_RETURN buBsafePrivKeyToCdsa(
+       CSSM_ALGORITHMS         keyAlg,
+       uint32                          keySizeInBits,
+       BU_KEY                          bsafePrivKey,
+       CSSM_KEY_PTR            cdsaPrivKey);
+CSSM_RETURN buCdsaPrivKeyToBsafe(
+       CSSM_KEY_PTR            cdsaPrivKey,
+       BU_KEY                          *bsafePrivKey);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BSAFE_UTILS_H_ */