Beispiel #1
0
    public async Task <byte[]> SignAsync(string password, ReadOnlyMemory <byte> srcData, string certName, string flags, string comment, int numRetry = 5, CancellationToken cancel = default)
    {
        QueryStringList qs = new QueryStringList();

        qs.Add("password", password);
        qs.Add("cert", certName);
        qs.Add("flags", flags);
        qs.Add("comment", comment);
        qs.Add("numretry", numRetry.ToString());

        WebRet ret = await this.Web.SimplePostDataAsync(this.Url + "?" + qs, srcData.ToArray(), cancel, Consts.MimeTypes.OctetStream);

        if (ret.Data.Length <= (srcData.Length * 9L / 10L))
        {
            throw new CoresException("ret.Data.Length <= (srcData.Length * 9L / 10L)");
        }

        if (ExeSignChecker.CheckFileDigitalSignature(ret.Data, flags._InStr("driver", true)) == false)
        {
            throw new CoresException("CheckFileDigitalSignature failed.");
        }

        return(ret.Data);
    }