Changeset 1322:3bdf57f6d5cb in roaraudio


Ignore:
Timestamp:
03/21/09 17:05:17 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support to open an OpenSSL BIO as VIO object

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • include/libroar/libroar.h

    r1321 r1322  
    6060#endif 
    6161 
     62#ifdef ROAR_HAVE_LIBSSL 
     63#include <openssl/bio.h> 
     64#include <openssl/evp.h> 
     65#endif 
     66 
    6267#include "error.h" 
    6368#include "stack.h" 
  • include/libroar/vio_bio.h

    r1321 r1322  
    3838#include "libroar.h" 
    3939 
     40#ifndef ROAR_HAVE_LIBSSL 
     41typedef void BIO; 
     42#endif 
     43 
     44int     roar_vio_open_bio      (struct roar_vio_calls * calls, BIO * bio); 
     45BIO *   roar_vio_to_bio        (struct roar_vio_calls * calls); 
     46 
     47#ifdef ROAR_HAVE_LIBSSL 
     48ssize_t roar_vio_bio_read    (struct roar_vio_calls * vio, void *buf, size_t count); 
     49ssize_t roar_vio_bio_write   (struct roar_vio_calls * vio, void *buf, size_t count); 
     50off_t   roar_vio_bio_lseek   (struct roar_vio_calls * vio, off_t offset, int whence); 
     51int     roar_vio_bio_nonblock(struct roar_vio_calls * vio, int state); 
     52int     roar_vio_bio_sync    (struct roar_vio_calls * vio); 
     53int     roar_vio_bio_close   (struct roar_vio_calls * vio); 
     54#endif 
    4055 
    4156#endif 
  • libroar/Makefile

    r1321 r1322  
    88INCLUDE = -I../include -I../include/libroar 
    99CFLAGS += -g -Wall -O2 $(DEFINES) $(INCLUDE) $(INCPATH) $(SHARED_CF) -fPIC 
    10 LDFLAGS = -g $(SHARED) $(LDPATH) $(lib_dnet) $(lib_wsock32) $(lib_ws2_32) 
     10LDFLAGS = -g $(SHARED) $(LDPATH) $(lib_dnet) $(lib_wsock32) $(lib_ws2_32) $(lib_ssl) 
    1111 
    1212all: ${TARGETS} 
  • libroar/vio_bio.c

    r1321 r1322  
    3535#include "libroar.h" 
    3636 
     37int     roar_vio_open_bio      (struct roar_vio_calls * calls, BIO * bio) { 
     38#ifdef ROAR_HAVE_LIBSSL 
     39 if ( calls == NULL || bio == NULL ) 
     40  return -1; 
     41 
     42 memset(calls, 0, sizeof(struct roar_vio_calls)); 
     43 
     44 calls->read     = roar_vio_bio_read; 
     45 calls->write    = roar_vio_bio_write; 
     46 calls->lseek    = roar_vio_bio_lseek; 
     47 calls->nonblock = roar_vio_bio_nonblock; 
     48 calls->sync     = roar_vio_bio_sync; 
     49 calls->close    = roar_vio_bio_close; 
     50 
     51 calls->inst     = (void*) bio; 
     52 
     53 return 0; 
     54#else 
     55 return -1; 
     56#endif 
     57} 
     58 
     59BIO *   roar_vio_to_bio        (struct roar_vio_calls * calls) { 
     60 return NULL; 
     61} 
     62 
     63#ifdef ROAR_HAVE_LIBSSL 
     64ssize_t roar_vio_bio_read    (struct roar_vio_calls * vio, void *buf, size_t count) { 
     65 BIO * bio = (BIO*)(vio->inst); 
     66 int r; 
     67 
     68 if ( (r = BIO_read(bio, buf, count)) == -2 ) 
     69  return -1; 
     70 
     71 return r; 
     72} 
     73ssize_t roar_vio_bio_write   (struct roar_vio_calls * vio, void *buf, size_t count) { 
     74 BIO * bio = (BIO*)(vio->inst); 
     75 int r; 
     76 
     77 if ( (r = BIO_write(bio, buf, count)) == -2 ) 
     78  return -1; 
     79 
     80 return r; 
     81} 
     82 
     83off_t   roar_vio_bio_lseek   (struct roar_vio_calls * vio, off_t offset, int whence) { 
     84 return -1; 
     85} 
     86 
     87int     roar_vio_bio_nonblock(struct roar_vio_calls * vio, int state) { 
     88 return -1; 
     89} 
     90int     roar_vio_bio_sync    (struct roar_vio_calls * vio) { 
     91 return -1; 
     92} 
     93 
     94int     roar_vio_bio_close   (struct roar_vio_calls * vio) { 
     95 BIO * bio = (BIO*)(vio->inst); 
     96 
     97 // TODO: check the return values 
     98 
     99 BIO_flush(bio); 
     100 BIO_free_all(bio); 
     101 
     102 return 0; 
     103} 
     104#endif 
     105 
    37106//ll 
Note: See TracChangeset for help on using the changeset viewer.