r3177 - in trunk/libmcrypto: include/libmcrypto source

erik at minisip.org erik at minisip.org
Thu Feb 1 15:23:29 CET 2007


Author: erik
Date: 2007-02-01 15:23:28 +0100 (Thu, 01 Feb 2007)
New Revision: 3177

Modified:
   trunk/libmcrypto/include/libmcrypto/SipSim.h
   trunk/libmcrypto/include/libmcrypto/SipSimSmartCardGD.h
   trunk/libmcrypto/include/libmcrypto/SipSimSoft.h
   trunk/libmcrypto/source/SipSimSmartCardGD.cxx
Log:

 * Fixes to the way we handle MIKEY-on-card. Not quite there, but close.



Modified: trunk/libmcrypto/include/libmcrypto/SipSim.h
===================================================================
--- trunk/libmcrypto/include/libmcrypto/SipSim.h	2007-02-01 14:08:33 UTC (rev 3176)
+++ trunk/libmcrypto/include/libmcrypto/SipSim.h	2007-02-01 14:23:28 UTC (rev 3177)
@@ -52,6 +52,8 @@
 	
 	virtual bool getRandomValue(unsigned char * randomPtr, unsigned long randomLength) = 0;
 
+	//virtual bool getDHPublicValue(unsigned long & dhPublicValueLength, unsigned char * dhPublickValuePtra)=0;
+
 	virtual void setCertificateChain(MRef<certificate_chain *> c){certChain = c;}
 	virtual MRef<certificate_chain *> getCertificateChain(){return certChain;}
 

Modified: trunk/libmcrypto/include/libmcrypto/SipSimSmartCardGD.h
===================================================================
--- trunk/libmcrypto/include/libmcrypto/SipSimSmartCardGD.h	2007-02-01 14:08:33 UTC (rev 3176)
+++ trunk/libmcrypto/include/libmcrypto/SipSimSmartCardGD.h	2007-02-01 14:23:28 UTC (rev 3177)
@@ -64,11 +64,10 @@
 
 	bool getSignature(unsigned char * dataPtr, int dataLength, unsigned char *signaturePtr, int& signatureLength, 
 			bool doHash, int hash_alg=HASH_SHA1);
-
 /* this method returns the tek which is calculated in the pseudo random function implemented on smart card*/
-	bool getTek(unsigned char csId, unsigned long csbIdValue,
+	bool getKey(unsigned char csId, unsigned long csbIdValue,
 		    unsigned char * randPtr, unsigned long randLength,
-		    unsigned char * tekPtr, unsigned long tekLength);
+		    unsigned char * tekPtr, unsigned long tekLength, int keyType);
 
 	bool genTgk( unsigned char * dhpubPtr, unsigned long dhpubLength ); 
 

Modified: trunk/libmcrypto/include/libmcrypto/SipSimSoft.h
===================================================================
--- trunk/libmcrypto/include/libmcrypto/SipSimSoft.h	2007-02-01 14:08:33 UTC (rev 3176)
+++ trunk/libmcrypto/include/libmcrypto/SipSimSoft.h	2007-02-01 14:23:28 UTC (rev 3177)
@@ -21,11 +21,16 @@
 				int & signatureLength,
 				bool doHash,
 				int hash_alg=HASH_SHA1);
+
+
+		//virtual bool getDHPublicValue(unsigned long & dhPublicValueLength, unsigned char * dhPublickValuePtr);
 		
 		virtual bool getRandomValue(unsigned char * randomPtr, unsigned long randomLength);
 
 	private:
 
+		//OakleyDH * dh;
+
 };
 
 

Modified: trunk/libmcrypto/source/SipSimSmartCardGD.cxx
===================================================================
--- trunk/libmcrypto/source/SipSimSmartCardGD.cxx	2007-02-01 14:08:33 UTC (rev 3176)
+++ trunk/libmcrypto/source/SipSimSmartCardGD.cxx	2007-02-01 14:23:28 UTC (rev 3177)
@@ -383,8 +383,8 @@
 		sendBuffer[1] = 0x45;
 		sendBuffer[2] = 0x00;
 		sendBuffer[3] = 0x00;
-		sendBuffer[5] = dhpubLength;
-		memcpy(&sendBuffer[6], dhpubPtr, dhpubLength);
+		sendBuffer[4] = dhpubLength;
+		memcpy(&sendBuffer[5], dhpubPtr, dhpubLength);
 	
 		transmitApdu(sendBufferLength, sendBuffer, recvBufferLength, recvBuffer);
 		sw_1_2 = recvBuffer[recvBufferLength - 2] << 8 | recvBuffer[recvBufferLength - 1];
@@ -406,10 +406,9 @@
 }
 
 
-
-bool SipSimSmartCardGD::getTek(unsigned char csId, unsigned long csbIdValue,
+bool SipSimSmartCardGD::getKey(unsigned char csId, unsigned long csbIdValue,
 			       unsigned char * randPtr, unsigned long randLength,
-			       unsigned char * tekPtr, unsigned long tekLength){
+			       unsigned char * key, unsigned long keyLength, int keyType){
 
 	if(establishedConnection == true && verifiedCard == 1 && blockedCard == 0){
 		sendBufferLength = 4+randLength+7; 
@@ -424,7 +423,7 @@
 		sendBuffer[0] = 0xB0;
 		sendBuffer[1] = 0x44;
 		sendBuffer[2] = 0x00;
-		sendBuffer[3] = 0x00;
+		sendBuffer[3] = keyType;
 		int i=5;
 		sendBuffer[i]= randLength;
 		i++;
@@ -449,7 +448,7 @@
 				throw SmartCardException("Unknown state value was returned when getting the Diffie-Hellman public key from the smart card");
 		}
 	//	tekLength = recvBufferLength - 2;
-		memcpy(tekPtr, recvBuffer, tekLength);
+		memcpy(key, recvBuffer, keyLength);
 		clearBuffer();
 		return true;
 	}



More information about the Minisip-devel mailing list