OpenSSL.jl/src/bio.jl

27 lines
950 B
Julia

s_mem() = ccall((:BIO_s_mem, libssl), Ptr{Cvoid}, ())
bio_new(mem::Ptr{Cvoid}) = ccall((:BIO_new, libssl), Ptr{Cvoid}, (Ptr{Cvoid},), mem)
bio_new() = bio_new(s_mem())
function set_bio!(client::SSLClient, rbio, wbio)
client.rbio = rbio
client.wbio = wbio
ccall((:SSL_set_bio, libssl), Ptr{Cvoid}, (Ptr{Cvoid},Ptr{Cvoid},Ptr{Cvoid}),
client.ssl, rbio, wbio)
end
function bio_write!(client::SSLClient, data)
ccall((:BIO_write, libssl), Cint, (Ptr{Cvoid},Ptr{Cvoid},Cint),
client.rbio, data, length(data))
end
function bio_read(client::SSLClient)
buff = Vector{UInt8}(undef, 64)
n = ccall((:BIO_read, libssl), Cint, (Ptr{Cvoid},Ptr{Cvoid},Cint),
client.wbio, buff, length(buff))
n, n > 0 ? buff[1:n] : buff
end
bio_test_flags(bio, flags) =
ccall((:BIO_test_flags, libssl), Cint, (Ptr{Cvoid},Cint), bio, flags) != 0
bio_should_retry(bio) = bio_test_flags(bio, BIO_FLAGS_SHOULD_RETRY)