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