crypto: add custom errors to crypto lib (#9522)
parent
ab6e0ed0b3
commit
70b189d751
|
@ -4,6 +4,7 @@
|
|||
|
||||
module rand
|
||||
|
||||
const (
|
||||
read_error = error('crypto.rand.read() error reading random bytes')
|
||||
)
|
||||
struct ReadError {
|
||||
msg string = 'crypto.rand.read() error reading random bytes'
|
||||
code int
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ pub fn read(bytes_needed int) ?[]byte {
|
|||
mut buffer := []byte{len: bytes_needed}
|
||||
status := C.SecRandomCopyBytes(C.SecRandomRef(0), bytes_needed, buffer.data)
|
||||
if status != 0 {
|
||||
return read_error
|
||||
return IError(&ReadError{})
|
||||
}
|
||||
return buffer
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ pub fn read(bytes_needed int) ?[]byte {
|
|||
rbytes := unsafe { getrandom(batch_size, buffer + bytes_read) }
|
||||
if rbytes == -1 {
|
||||
unsafe { free(buffer) }
|
||||
return read_error
|
||||
return IError(&ReadError{})
|
||||
}
|
||||
bytes_read += rbytes
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ pub fn read(bytes_needed int) ?[]byte {
|
|||
rbytes := unsafe { getrandom(batch_size, buffer + bytes_read) }
|
||||
if rbytes == -1 {
|
||||
unsafe { free(buffer) }
|
||||
return read_error
|
||||
return IError(&ReadError{})
|
||||
}
|
||||
bytes_read += rbytes
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ pub fn read(bytes_needed int) ?[]byte {
|
|||
// use bcrypt_use_system_preferred_rng because we passed null as algo
|
||||
status := C.BCryptGenRandom(0, buffer.data, bytes_needed, bcrypt_use_system_preferred_rng)
|
||||
if status != status_success {
|
||||
return read_error
|
||||
return IError(&ReadError{})
|
||||
}
|
||||
return buffer
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue