mirror of
https://github.com/go-gitea/gitea.git
synced 2026-09-11 00:10:38 -05:00
fix(auth): fix ssh and gpg key verification on windows (#39283)
Signed-off-by: Francesco Passaquindici <k3n.solver@gmail.com> Signed-off-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@@ -40,29 +40,17 @@ func VerifyGPGKey(ctx context.Context, ownerID int64, keyID, token, signature st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
signer, err := hashAndVerifyWithSubKeys(sig, token, key)
|
var signer *GPGKey
|
||||||
if err != nil {
|
for _, tokenCandidate := range []string{token, token + "\n", token + "\n\n", token + "\r\n", token + "\r\n\r\n"} {
|
||||||
return "", ErrGPGInvalidTokenSignature{
|
signer, err = hashAndVerifyWithSubKeys(sig, tokenCandidate, key)
|
||||||
ID: key.KeyID,
|
|
||||||
Wrapped: err,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if signer == nil {
|
|
||||||
signer, err = hashAndVerifyWithSubKeys(sig, token+"\n", key)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", ErrGPGInvalidTokenSignature{
|
return "", ErrGPGInvalidTokenSignature{
|
||||||
ID: key.KeyID,
|
ID: key.KeyID,
|
||||||
Wrapped: err,
|
Wrapped: err,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if signer != nil {
|
||||||
if signer == nil {
|
break
|
||||||
signer, err = hashAndVerifyWithSubKeys(sig, token+"\n\n", key)
|
|
||||||
if err != nil {
|
|
||||||
return "", ErrGPGInvalidTokenSignature{
|
|
||||||
ID: key.KeyID,
|
|
||||||
Wrapped: err,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,15 @@
|
|||||||
<input readonly="" value="{{.TokenToSign}}">
|
<input readonly="" value="{{.TokenToSign}}">
|
||||||
<div class="help">
|
<div class="help">
|
||||||
{{ctx.Locale.Tr "settings.gpg_token_help"}}
|
{{ctx.Locale.Tr "settings.gpg_token_help"}}
|
||||||
<pre class="command-block">{{printf `echo "%s" | gpg -a --default-key %s --detach-sig` .TokenToSign .PaddedKeyID}}</pre>
|
<pre class="command-block">echo {{.TokenToSign}} | gpg -a --default-key {{.PaddedKeyID}} --detach-sig</pre>
|
||||||
|
<details>
|
||||||
|
<summary>Windows PowerShell</summary>
|
||||||
|
<pre class="command-block">'{{.TokenToSign}}' | gpg -a --default-key {{.PaddedKeyID}} --detach-sig</pre>
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>Windows CMD</summary>
|
||||||
|
<pre class="command-block">echo {{.TokenToSign}}| gpg -a --default-key {{.PaddedKeyID}} --detach-sig</pre>
|
||||||
|
</details>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
@@ -88,7 +96,15 @@
|
|||||||
<input readonly="" value="{{$.TokenToSign}}">
|
<input readonly="" value="{{$.TokenToSign}}">
|
||||||
<div class="help">
|
<div class="help">
|
||||||
{{ctx.Locale.Tr "settings.gpg_token_help"}}
|
{{ctx.Locale.Tr "settings.gpg_token_help"}}
|
||||||
<pre class="command-block">{{printf `echo "%s" | gpg -a --default-key %s --detach-sig` $.TokenToSign .PaddedKeyID}}</pre>
|
<pre class="command-block">echo {{$.TokenToSign}} | gpg -a --default-key {{.PaddedKeyID}} --detach-sig</pre>
|
||||||
|
<details>
|
||||||
|
<summary>Windows PowerShell</summary>
|
||||||
|
<pre class="command-block">'{{$.TokenToSign}}' | gpg -a --default-key {{.PaddedKeyID}} --detach-sig</pre>
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>Windows CMD</summary>
|
||||||
|
<pre class="command-block">echo {{$.TokenToSign}}| gpg -a --default-key {{.PaddedKeyID}} --detach-sig</pre>
|
||||||
|
</details>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
|
|||||||
@@ -79,11 +79,11 @@
|
|||||||
<pre class="command-block">echo -n '{{$.TokenToSign}}' | ssh-keygen -Y sign -n gitea -f /path_to_PrivateKey_or_RelatedPublicKey</pre>
|
<pre class="command-block">echo -n '{{$.TokenToSign}}' | ssh-keygen -Y sign -n gitea -f /path_to_PrivateKey_or_RelatedPublicKey</pre>
|
||||||
<details>
|
<details>
|
||||||
<summary>Windows PowerShell</summary>
|
<summary>Windows PowerShell</summary>
|
||||||
<pre class="command-block">cmd /c "<NUL set /p=`"{{$.TokenToSign}}`"| ssh-keygen -Y sign -n gitea -f /path_to_PrivateKey_or_RelatedPublicKey"</pre>
|
<pre class="command-block">'{{$.TokenToSign}}' | ssh-keygen -Y sign -n gitea -f /path_to_PrivateKey_or_RelatedPublicKey</pre>
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>Windows CMD</summary>
|
<summary>Windows CMD</summary>
|
||||||
<pre class="command-block">set /p={{$.TokenToSign}}| ssh-keygen -Y sign -n gitea -f /path_to_PrivateKey_or_RelatedPublicKey</pre>
|
<pre class="command-block">echo {{$.TokenToSign}}| ssh-keygen -Y sign -n gitea -f /path_to_PrivateKey_or_RelatedPublicKey</pre>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user