Lindenii Project Forge
Login

hare-git

Git library for Hare (BROKEN)
Commit info
ID
8e4ebbdfca16dacc2763e852afbdd94708186eb0
Author
Runxi Yu <me@runxiyu.org>
Author date
Fri, 14 Mar 2025 09:34:02 +0800
Committer
Runxi Yu <me@runxiyu.org>
Committer date
Fri, 14 Mar 2025 09:34:02 +0800
Actions
Add oid_from_str
use crypto::sha1;
use crypto::sha256;
use encoding::hex;
use io;

// Invalid hash length
export type hashlen = !void;

export type oid = (oid_sha1 | oid_sha256);
export type oid_sha1 = [sha1::SZ]u8;
export type oid_sha256 = [sha256::SZ]u8;

export fn oid_from_str(s: const str) (oid | io::error | hashlen) = {
	const d = hex::decodestr(s)?;
	defer free(d);

	let o: oid = switch (len(s)) {
	case sha1::SZ =>
		let p: oid_sha1 = [0...];
		p[..] = d[..];
		yield p;
	case sha256::SZ => 
		let p: oid_sha256 = [0...];
		p[..] = d[..];
		yield p;
	case =>
		return hashlen;
	};

	return o;
};