Skip to content

Instantly share code, notes, and snippets.

View joseangelmt's full-sized avatar
🎯
Developing

José Ángel Martínez Torres joseangelmt

🎯
Developing
View GitHub Profile
@joseangelmt
joseangelmt / FirmaDePaquetesNuGetConAzureTrustedSigning.md
Last active February 5, 2025 19:29
Firma de paquetes NuGet con Azure Trusted Signing para subirlos a NuGet.org

Para poder subir un paquete NuGet a NuGet.org necesitamos firmar el paquete con un certificado de code-signing que sea reconocido por NuGet.org. Si nuestra firma es del tipo Azure Trusted Signing, nos encontramos con el problema de que los certificados rotan diariamente y tienen una valided de 3 días y además no se pueden descargar de ninguna manera. La solución consiste en firmar el paquete NuGet, extraer el certificado .CER del paquete firmado, registrar el certificado en NuGet.org y luego subir el paquete.

La herramienta de firma signtool.exe no soporta hoy en día la firma de paquetes NuGet, de manera que tendremos que firmar con la herramienta de .NET sign.

Paso 1: Instalamos la herramienta sign:

dotnet tool install --tool-path . --prerelease sign
@joseangelmt
joseangelmt / gist:b991abe29756292a9ff40f0dd5930635
Created September 12, 2024 10:57
Eliminar credenciales Azure en signtool.exe
He creado en Azure una cuenta de tipo "Trusted Signing Account". Una vez pasada la Validación de identidad, he podido crear un perfil de certificado y eso me permite firmar.
El problema es que he hecho varias pruebas hasta que por fin he conseguido firmar (hay que firmar con un usuario que pertenezca a la organización y que tenga el rol "Trusted Signing Certificate Profile Signer"), pero hasta hacerlo bien, he hecho pruebas con otro usuario.
El problema es que cuando intenté la primera firma con el usuario incorrecto, ya no conseguí que el programa signtool.exe me vuelva a preguntar por el usuario. Investigando con Process Monitor he descubierto que el programa intenta abrir los archivos:
C:\Users\USUARIO\AppData\Local\.IdentityService\msal.cache
C:\Users\USUARIO\AppData\Local\.IdentityService\msal.cache.nocae
C:\Users\USUARIO\AppData\Local\.IdentityService\msalV2.cache
Los eliminas y a funcionar, la próxima vez que ejecutes signtool.exe, éste te preguntará por las credenciales.
/| ^
/ | |
/ | |screenHeight/2
/ |slope |
/ |x | | ^
/ . | v | r
-------------------- v
\<-a->|
<--------d-------->
\ |
@joseangelmt
joseangelmt / gitrebaseedit.md
Created November 22, 2021 15:08
Modificar un commit anterior y dividirlo en varios commits

En el siguiente ejemplo vamos a crear un repositorio con tres commits. Luego modificaremos el segundo commit para convertirlo en dos commits distintos para al final tener los 4 commits deseados.

mkdir pruebas
cd pruebas
git init
echo hola > saluda.txt
git add .
git commit -m "Añadido saluda"
@joseangelmt
joseangelmt / git-alias.md
Last active November 15, 2021 15:40 — forked from Klerith/git-alias.md
Useful Git Alias

Log

git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"

Status

git config --global alias.s "status --short"

Alternativa útil de status

git config --global alias.s "status -sb"

@joseangelmt
joseangelmt / LoopNumber.h
Created July 28, 2020 08:46
A class template to create number that iterate in a loop with the operator ++. For example 0,1,2,0,1,2,0,1,2,0,1,2 and so on
#pragma once
template<typename T, T max>
class LoopNumber
{
T value{};
public:
LoopNumber() = default;
LoopNumber(T const& value_) noexcept : value{ value_ % max } {}
LoopNumber(LoopNumber const& other) noexcept : value{ other.value } {}
@joseangelmt
joseangelmt / gist:4548c99e54258fb34e7759f128c6f3b4
Created September 10, 2019 08:51
Create a sign certificate (and create public key and public key token) to sign native assemblies (WinSxS) and create a .SNK to sign .NET assemblies
REM Create the certificate
makecert -pe -ss MY -$ commercial -n "CN=Digi21" -len 2048 -r -sv signCertificate.pvk signCertificate.cer
REM Create the .pfx
pvk2pfx -pvk signCertificate.pvk -spc signCertificate.cer -pfx signCertificate.pfx -po YOUR_PASSWORD
REM Extract the public key and public key token
sn -p signCertificate.pfx signCertificate.snk
REM Create the .snk to sign .NET assemblies
sn -tp signCertificate.snk > signCertificate.txt
@joseangelmt
joseangelmt / gist:1da7d9f5af85a7fcbb005023da9b4795
Created April 30, 2019 09:17
Regular expression to convert for(int) in for(auto) in C++ Visual Studio
Search string: (for(?([^\r\n])\s)*\()((?([^\r\n])\s)*int(?([^\r\n])\s)*)(\w+)((?([^\r\n])\s)*=(?([^\r\n])\s)*)(\d+);
Replace string: for (auto $3=$5;