https://github.com/supabase/hibp
Go library for HaveIBeenPwned.org's pwned passwords API.
https://github.com/supabase/hibp
Last synced: 10 months ago
JSON representation
Go library for HaveIBeenPwned.org's pwned passwords API.
- Host: GitHub
- URL: https://github.com/supabase/hibp
- Owner: supabase
- License: mit
- Created: 2023-11-17T21:25:46.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-12T09:11:01.000Z (over 2 years ago)
- Last Synced: 2024-04-13T21:54:14.476Z (over 2 years ago)
- Language: Go
- Size: 13.7 KB
- Stars: 29
- Watchers: 15
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pwned Passwords API in Go
This library implements the [HaveIBeenPwned.org's Pwned Passwords v3
API](https://haveibeenpwned.com/API/v3#PwnedPasswords) in Go.
Features:
- No external dependencies to reduce the likelihood of supply-chain attacks.
- Cache support, as API responses can sometimes be huge.
- Concurrent request optimization. Sharing a single request for password hash
prefix.
- Efficient memory use, no large allocations.
Example:
```go
import (
"github.com/supabase/hibp"
)
func main() {
pwnedClient := hibp.PwnedClient{
// please always set a User-Agent identifying your project
UserAgent: "my-super-cool-project",
}
isPwned, err := pwnedClient.Check(context.Background(), "password1")
if err != nil {
if ur, ok := err.(*hibp.ErrorUnknownResponse); ok {
// any non-200 response available in ur.Response
}
panic(err)
}
fmt.Print("Your password is ")
if isPwned {
fmt.Print("pwned!\n")
} else {
fmt.Print("safe for now!\n")
}
}
```
## License
Maintained by the [Auth](https://supabase.com/docs/guides/auth) team at
[Supabase](https://supabase.com). Licensed under the MIT License.