module orelang.operator.DigestOperators;
import orelang.operator.IOperator,
       orelang.Engine,
       orelang.Value;
import std.digest.hmac,
       std.digest.sha,
       std..string;

class HMACSHA1Operator : IOperator {
  public Value call(Engine engine, Value[] args) {
    string key  = engine.eval(args[0]).getString,
           base = engine.eval(args[1]).getString;
    ubyte[20] dgst = base.representation.hmac!SHA1(key.representation);
    Value[] ret;

    foreach (e; dgst) {
      ret ~= new Value(e);
    }

    return new Value(ret);
  }
}