12.07.2015 Views

RTP : protocole de transport - RFC

RTP : protocole de transport - RFC

RTP : protocole de transport - RFC

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>RFC</strong> 3550 page - 50 - Schulzrinne & autres}}/* format <strong>de</strong> paquet invali<strong>de</strong> */A.6 Génération d'un i<strong>de</strong>ntifiant aléatoire à 32 bitsLe sous programme suivant génère un i<strong>de</strong>ntifiant aléatoire <strong>de</strong> 32 bits qui utilise le programme MD5 publié dans la<strong>RFC</strong> 1321 [32]. Le programme système peut n'être pas présent sur tous les systèmes d'exploitation, mais il <strong>de</strong>vrait servird'indication sur les sortes d'informations qui peuvent être utilisées. D'autres systèmes qui peuvent être appropriés sonto getdomainname(),o getwd(), ouo getrusage().Les échantillons audio ou vidéo "en direct" sont aussi une bonne source <strong>de</strong> numéros aléatoires, mais il faut veiller à éviterd'utiliser un microphone éteint ou une caméra aveuglée comme source [17].L'utilisation <strong>de</strong> ce programme ou d'un autre similaire est recommandée pour générer le germe initial du générateur <strong>de</strong>nombre aléatoire qui produit la pério<strong>de</strong> RTCP (comme indiqué à l'Appendice A.7) pour générer les valeurs initiales pour letype <strong>de</strong> charge utile et l'horodatage, et pour générer les valeurs <strong>de</strong> SSRC. Comme ce programme va vraisemblablement êtreun gros consommateur <strong>de</strong> CPU, son utilisation directe pour générer <strong>de</strong>s pério<strong>de</strong>s RTCP est inappropriée parce quel'imprévisibilité n'est pas le problème. Noter que ce programme produit le même résultat sur <strong>de</strong>s invocations répétéesjusqu'à ce que la valeur <strong>de</strong> l'horloge système change, à moins que <strong>de</strong>s valeurs différentes soient fournies pour l'argument <strong>de</strong>type./** Générer une quantité <strong>de</strong> 32 bits aléatoire.*/#inclu<strong>de</strong> /* u_long */#inclu<strong>de</strong> /* gettimeofday() */#inclu<strong>de</strong> /* get..() */#inclu<strong>de</strong> /* printf() */#inclu<strong>de</strong> /* clock() */#inclu<strong>de</strong> /* uname() */#inclu<strong>de</strong> "global.h" /* from <strong>RFC</strong> 1321 */#inclu<strong>de</strong> "md5.h" /* from <strong>RFC</strong> 1321 */#<strong>de</strong>fine MD_CTX MD5_CTX#<strong>de</strong>fine MDInit MD5Init#<strong>de</strong>fine MDUpdate MD5Update#<strong>de</strong>fine MDFinal MD5Finalstatic u_long md_32(char *string, int length){MD_CTX context;union {char c[16];u_long x[4];} digest;u_long r;int i;MDInit (&context);MDUpdate (&context, string, length);MDFinal ((unsigned char *)&digest, &context);r = 0;for (i = 0; i < 3; i++) {r ^= digest.x[i];}return r;} /* md_32 */

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!