[Nokia Lumia 800] biktor_gj:
For what you guys are saying, I think newer hw versions have a different OSBL.

While in my phone the second partition contains a generic bootloader from qualcomm, nokia seem to have implemented a different version, based on qualcomm sources. In case anyone wants to look at the differences with a hex editor, here they are:

'unlocked' sbl: http://www.mediafire.com/?0l2822oawrqd9t0

'locked' sbl: http://www.mediafire.com/?yd8cyjuxaudb4f0

They are based on the same source, if someone can find a flaw on signature checks or if we can load unlocked sbl to ram and run it from there it could be reflashed with unlocked bootloader

From Nokia's locked sbl:

D:\modem\build\AMSS\products\7x30\core\boot\dload\target\msm7x30
\src\secdload\writer.c..NOKIAKEYCciSha1 -buffer size reserved for pbyHash
must be atleast 20 bytes..CciSha1 -function failed to calculate digest ->
create_gen_digest function failed...CciAesCbcEncrypt - Init Vector size or Key
size is invalid. Must be 16 bytes long. .CciAesCbcDecrypt - Init Vector size or
Key size is invalid. Must be 16 bytes long. .CciInitPseudoRandom: Seed size
(%ld) is invalid. It should be 36....CciSha1MultiParts -failed to allocate memory
for data to be hashed..CciSha256 -function failed to calculate digest ->
create_gen_digest function failed.....CciEccP256SignSha256 - function got
invalid pointer as parameter....CciEccP256SignSha256 - Buffer size for signature
is too small. The size must be 64 bytes or more....CciEccP256SignSha256 -
DRM_ECDSA_Sign_P256 signature calculation failed. ...CciEccP256Verify -
pbySinature size is invalid. Size must be %d bytes...CciEccP256VerifySha256 -
function got invalid pointer as parameter..CciEccP256VerifySha256
pbySinature size is invalid. Size must be %d
bytes.....CciEccP256GenerateKeypair - function got invalid curve size as
parameter....CciEccP256GenerateKeypair - function got invalid pointer
parameter...CciEccP256GenerateKeypair - Buffer size for pbyPrivateKey is too
small. Buffer size must be atleast %d bytes....CciEccP256GenerateKeypair -
Buffer size for pbyPublicKey is too small. Buffer size must be atleast %d
bytes.....CciCreateEcc256Curve - Some of the CurveParameter size is invalid.
Curve Parameter size must be 32 bytes. ..CciCreateEcc256Curve - function got
invalid pointer as parameter....CciCreateEcc256Curve - The buffer size for
parameter pbyCurve is too small. Buffersize must be atleast %ld bytes.
..CreateNistEccP256Curve - function got invalid pointer as
parameter..CreateNistEccP256Curve - The buffer size for parameter pbyCurve is
too small. Buffer size must be atleast %ld bytes. ...CciValidateEccP256KeyPair
- function got invalid pointer as parameter...CciValidateEccP256KeyPair - public
key size is invalid. Size must be %d bytes. .CciValidateEccP256KeyPair - private
key size is invalid. Size must be %d bytes. ....CciValidateEccP256KeyPair -
failed to generate random test data. ...CreateWmdrmPdEccCurve - function got
invalid pointer as parameter...CreateWmdrmPdEccCurve - The buffer size for
parameter pbyCurve is too small. Buffersize must be atleast %ld bytes.
.CciCreateEcc160Curve - function got invalid pointer as
parameter....CciCreateEcc160Curve - Some of the CurveParameter size is
invalid. Curve Parameter size must be 20 bytes. ..CciCreateEcc160Curve - The
buffer size for parameter pbyCurve is too small. Buffersize must be atleast %ld
bytes. ..CciEcc160GenerateKeypair - function got invalid pointer as
parameter....CciEcc160GenerateKeypair - function got invalid curve size as
parameter.....CciEcc160GenerateKeypair - Buffer size for pbyPrivateKey is too
small. Buffer size must be atleast %d bytes.....CciEcc160GenerateKeypair -
Buffer size for pbyPublicKey is too small. Buffer size must be atleast %d
bytes..CciEcc160GenerateKeypair - gfp_ecc_generate_key_pair2 function
failed...CciEcc160Sign - Buffer size for pbySignature is too small. Buffer size
must be atleast %d bytes.....CciEcc160Verify - signature size is invalid. Size
must be %d bytes..CciRsaEsPkcs1_v1_5_Sign - function got invalid pointer as
parameter.....CciRsaEsPkcs1_v1_5_Sign - Buffer size for pbySignature is too
small. Buffer size must be atleast %d bytes...CciRsaEsPkcs1_v1_5_Sign -
RSAES_PKCS1_v1_5_sign returned an error. .CciRsaEsPkcs1_v1_5_Verify -
function got invalid pointer as
parameter...CciRsaEsPkcs1_v1_5_Verify_WithoutDigestInfo - invalid public key
modulus size %ld...CciRsaEsPkcs1_v1_5_Verify_WithoutDigestInfo - invalid hash
algorithm....CciRsaEsPkcs1_v1_5_Verify_WithoutDigestInfo - function got invalid
pointer as parameter.....CciRsaEsPkcs1_v1_5_Verify_WithoutDigestInfo - invalid
key modulus size %ld..CciRsaEsPkcs1_v1_5_Verify_WithoutDigestInfo - function
EMSA_Pkcs1_v1_5_Pad_WithoutDigestInfo
failed.....CciRsaEsPkcs1_v1_5_Verify_WithoutDigestInfo - function
RSA_NO_PAD_PUB failed....CciRsaEsPkcs1_v1_5_Encrypt - invalid data size,
must be less than %ld bytes.....CciRsaEsPkcs1_v1_5_Encrypt - buffer size for
Cipher is too small, must atleast %ld bytes....CciRsaEsPkcs1_v1_5_Encrypt -
function got invalid pointer as parameter..CciRsaEsPkcs1_v1_5_Encrypt -
RSAES_PKCS1_v1_5_ENCRYPT -function failed..CciRsaEsPkcs1_v1_5_Decrypt -
RSAES_PKCS1_v1_5_DECRYPT calculation failed....CciRsaEsPkcs1_v1_5_Decrypt
- function got invalid pointer as parameter..CciRsaEsPkcs1_v1_5_Decrypt -
buffer size for plain data is too small. Required size is more than %ld
bytes..CciRsaSsaPssSign - invalid parameter value specified for
dwHashFunction. ...CciRsaSsaPssVerify: Invalid parameter value specified for
dwHashFunction....CciRsaEsOaepEncrypt: Invalid data size, must be less than
%ld bytes.....CciRsaEsOaepEncrypt: Buffer size for Cipher is too small, must at
least %ld bytes...CciRsaEsOaepDecrypt: Buffer size for plain data is too small.
Required size is more than %ld bytes..CciBase64Encode - Input data is too
large. Maximum size of data to be encoded can be %d bytes...CciBase64Encode
- Buffer size for encoded data is too small. Size must be at least %d
bytes.....CciBase64Decode - Base64 encoded data is too large. Maximum size of
input base64 encoded data can be %d bytes...CciBase64Decode - Buffer size
for decoded data is too small. Size must be at least %d
bytes.....CciConvertRsaPublic_To_WP7KeyStorage - function got invalid pointer
as parameter....CciConvertRsaPublic_To_WP7KeyStorage - buffer size = %ld for
the WP7 Keystorage publickey is too small, space needed = %ld.
....CciConvertRsaPublic_WP7KeyStorage_To_RsaPublic - function got invalid
pointer as parameter..CciConvertRsaPublic_WP7KeyStorage_To_RsaPublic -
buffer size = %ld for the NRC public key is too small. Required size is %ld bytes.
....CciConvertRsaPublic_WP7KeyStorage_To_RsaPublic - the WP7 Keystorage
publickey size = %ld is invalid. Calculated size is %ld.
..CciConvertRsaPublic_DER_To_RsaPublic - buffer size = %ld for the NRC public key is too small. Required size is %ld bytes.
..CciConvertRsaPublic_DER_To_RsaPublic - function got invalid pointer as
parameter....CciConvertRsaPublic_DER_To_RsaPublic - invalid size of DER public
key...CciConvertRsaPrivate_DER_To_RsaPrivate - input size invalid or DER key
not in correct format....CciConvertRsaPrivate_DER_To_RsaPrivate - function got
invalid pointer as parameter..CciConvertRsaPrivate_DER_To_RsaPrivate - buffer
size = %ld for the NRC private key is too small. Required size is %ld bytes.
...CciConvertRsaPublic_Nrc_To_InfineonGpuk - modulus size = %ld of the NRC
public key is invalid. Correct modulus size 1k = 128 and 2k = 256.
.CciConvertRsaPublic_Nrc_To_InfineonGpuk - function got invalid pointer as
parameter.....CciConvertRsaPublic_Nrc_To_InfineonGpuk - buffer size = %ld for
the GPUK is too small, space needed = %ld.
.CciConvertRsaPublic_InfineonGpuk_To_Nrc - buffer size = %ld for the NRC
public key is too small. Required size is %ld bytes.
...CciConvertRsaPublic_InfineonGpuk_To_Nrc - function got invalid pointer as parameter.....CciConvertRsaPublic_InfineonGpuk_To_Nrc - the GPUK size = %ld is invalid. Correct size is (8 + 128) or (8 + 256) bytes. ...CciNrcRsaPublicKey_CalculateMontgomeryFactor - NRC public key size is invalid, dwNrcPublicKeySize != sizeof (RSAPublicKey). ....CciNrcRsaPublicKey_CalculateMontgomeryFactor - function got invalid pointer as parameter....CciNrcRsaPublicKey_CalculateMontgomeryFactor - buffer size = %ld reserved for the Montgomery factor is too small. Required size is %ld bytes. ..CciConvertRsaKeyPair_Infineon_To_Nrc - buffer size = %ld for the NRC private key is too small. Required size is %ld bytes. .CciConvertRsaKeyPair_Infineon_To_Nrc - the GPUK size = %ld is invalid. Correct size is (8 + 128) or (8 + 256) bytes. ..CciConvertRsaKeyPair_Infineon_To_Nrc - function got invalid pointer as parameter....CciConvertRsaKeyPair_Infineon_To_Nrc - the key size = %ld in the GPUK file is same as the size =%ld in the Infineon private key file. ..CciConvertRsaKeyPair_Infineon_To_Nrc - Infineon public key and private key is not a pair. ..CciConvertRsaKeyPair_Infineon_To_Nrc - Failed to convert Infineon keypair to NRC private key format, rsa_noncrt2crt function failed. ...CciWriteNrcRsaKeypairIntoFile - dwNrcRSAPublicKeySize size = %ld for the
NRC public key is invalid . Correct size is %ld bytes.
....CciWriteNrcRsaKeypairIntoFile - pdwNrcPrivateKeySize size = %ld for the NRC
private key is invalid . Correct size is %ld bytes.
....CciWriteNrcRsaKeypairIntoFile - function got invalid pointer as
parameter...CciEMSA_Pkcs1_v1_5_Encode -function got invalid pointer as
parameter....CciRsaEsPkcs1_v1_5_Sha256_Sign - function got invalid pointer as
parameter..CciRsaEsPkcs1_v1_5_Sha256_Verify - function got invalid pointer as
parameter....CciGenerateECCP256Wp7KeyPair: Function got invalid pointer as
parameter.....CciGenerateECCP256Wp7KeyPair: Buffer size (%ld) for private key
is too small (<32)..CciGenerateECCP256Wp7KeyPair: Buffer size (%ld) for public
key is too small (<64)...CciGenerateECCP256Wp7KeyPair: Mother key length is
invalid (%ld), it should be 32 bytes.CciEMSA_Pkcs1_v1_5_WithoutDigestInfo
-function got invalid pointer as
parameter.....CciEMSA_Pkcs1_v1_5_WithoutDigestInfo - invalid key modulus size
%ld.....CciEMSA_Pkcs1_v1_5_WithoutDigestInfo:
EMSA_Pkcs1_v1_5_Pad_WithoutDigestInfo -function returned error

Not good, but at least there is full access to some devices, and the OSBL needs to take the certificate from somewhere, so, in theory, it could be traced some way... (not saying I can ;))