Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
len1 = bit_size // 8
len2 = bit_size // 16
prime1_offset = len1
prime2_offset = prime1_offset + len2
exponent1_offset = prime2_offset + len2
exponent2_offset = exponent1_offset + len2
coefficient_offset = exponent2_offset + len2
private_exponent_offset = coefficient_offset + len2
public_exponent = blob_struct.rsapubkey.pubexp
modulus = int_from_bytes(blob[0:prime1_offset][::-1])
prime1 = int_from_bytes(blob[prime1_offset:prime2_offset][::-1])
prime2 = int_from_bytes(blob[prime2_offset:exponent1_offset][::-1])
exponent1 = int_from_bytes(blob[exponent1_offset:exponent2_offset][::-1])
exponent2 = int_from_bytes(blob[exponent2_offset:coefficient_offset][::-1])
coefficient = int_from_bytes(blob[coefficient_offset:private_exponent_offset][::-1])
private_exponent = int_from_bytes(blob[private_exponent_offset:private_exponent_offset + len1][::-1])
public_key_info = PublicKeyInfo({
'algorithm': PublicKeyAlgorithm({
'algorithm': 'rsa',
}),
'public_key': RSAPublicKey({
'modulus': modulus,
'public_exponent': public_exponent,
}),
})
rsa_private_key = RSAPrivateKey({
'version': 'two-prime',
'modulus': modulus,
"""
len1 = bit_size // 8
len2 = bit_size // 16
prime1_offset = len1
prime2_offset = prime1_offset + len2
exponent1_offset = prime2_offset + len2
exponent2_offset = exponent1_offset + len2
coefficient_offset = exponent2_offset + len2
private_exponent_offset = coefficient_offset + len2
public_exponent = blob_struct.rsapubkey.pubexp
modulus = int_from_bytes(blob[0:prime1_offset][::-1])
prime1 = int_from_bytes(blob[prime1_offset:prime2_offset][::-1])
prime2 = int_from_bytes(blob[prime2_offset:exponent1_offset][::-1])
exponent1 = int_from_bytes(blob[exponent1_offset:exponent2_offset][::-1])
exponent2 = int_from_bytes(blob[exponent2_offset:coefficient_offset][::-1])
coefficient = int_from_bytes(blob[coefficient_offset:private_exponent_offset][::-1])
private_exponent = int_from_bytes(blob[private_exponent_offset:private_exponent_offset + len1][::-1])
public_key_info = PublicKeyInfo({
'algorithm': PublicKeyAlgorithm({
'algorithm': 'rsa',
}),
'public_key': RSAPublicKey({
'modulus': modulus,
'public_exponent': public_exponent,
}),
})
rsa_private_key = RSAPrivateKey({
asn1crypto.keys.PrivateKeyInfo)
"""
len1 = bit_size // 8
len2 = bit_size // 16
prime1_offset = len1
prime2_offset = prime1_offset + len2
exponent1_offset = prime2_offset + len2
exponent2_offset = exponent1_offset + len2
coefficient_offset = exponent2_offset + len2
private_exponent_offset = coefficient_offset + len2
public_exponent = blob_struct.rsapubkey.pubexp
modulus = int_from_bytes(blob[0:prime1_offset][::-1])
prime1 = int_from_bytes(blob[prime1_offset:prime2_offset][::-1])
prime2 = int_from_bytes(blob[prime2_offset:exponent1_offset][::-1])
exponent1 = int_from_bytes(blob[exponent1_offset:exponent2_offset][::-1])
exponent2 = int_from_bytes(blob[exponent2_offset:coefficient_offset][::-1])
coefficient = int_from_bytes(blob[coefficient_offset:private_exponent_offset][::-1])
private_exponent = int_from_bytes(blob[private_exponent_offset:private_exponent_offset + len1][::-1])
public_key_info = PublicKeyInfo({
'algorithm': PublicKeyAlgorithm({
'algorithm': 'rsa',
}),
'public_key': RSAPublicKey({
'modulus': modulus,
'public_exponent': public_exponent,
}),
})
A 2-element tuple of (asn1crypto.keys.PublicKeyInfo,
asn1crypto.keys.PrivateKeyInfo)
"""
len1 = bit_size // 8
len2 = bit_size // 16
prime1_offset = len1
prime2_offset = prime1_offset + len2
exponent1_offset = prime2_offset + len2
exponent2_offset = exponent1_offset + len2
coefficient_offset = exponent2_offset + len2
private_exponent_offset = coefficient_offset + len2
public_exponent = blob_struct.rsapubkey.pubexp
modulus = int_from_bytes(blob[0:prime1_offset][::-1])
prime1 = int_from_bytes(blob[prime1_offset:prime2_offset][::-1])
prime2 = int_from_bytes(blob[prime2_offset:exponent1_offset][::-1])
exponent1 = int_from_bytes(blob[exponent1_offset:exponent2_offset][::-1])
exponent2 = int_from_bytes(blob[exponent2_offset:coefficient_offset][::-1])
coefficient = int_from_bytes(blob[coefficient_offset:private_exponent_offset][::-1])
private_exponent = int_from_bytes(blob[private_exponent_offset:private_exponent_offset + len1][::-1])
public_key_info = PublicKeyInfo({
'algorithm': PublicKeyAlgorithm({
'algorithm': 'rsa',
}),
'public_key': RSAPublicKey({
'modulus': modulus,
'public_exponent': public_exponent,
}),
})
Creates a generator returning tuples of information about each message in
a byte string of data from a TLS handshake record
:param data:
A byte string of a TLS handshake record data
:return:
A generator that yields 2-element tuples:
[0] Byte string of message type
[1] Byte string of message data
"""
pointer = 0
data_len = len(data)
while pointer < data_len:
length = int_from_bytes(data[pointer + 1:pointer + 4])
yield (
data[pointer:pointer + 1],
data[pointer + 4:pointer + 4 + length]
)
pointer += 4 + length
elif key_type == 'private':
prime1_byte_length = native(int, blob_struct.cbPrime1)
prime2_byte_length = native(int, blob_struct.cbPrime2)
prime1_offset = modulus_offset + modulus_byte_length
prime2_offset = prime1_offset + prime1_byte_length
exponent1_offset = prime2_offset + prime2_byte_length
exponent2_offset = exponent1_offset + prime2_byte_length
coefficient_offset = exponent2_offset + prime2_byte_length
private_exponent_offset = coefficient_offset + prime1_byte_length
prime1 = int_from_bytes(blob[prime1_offset:prime2_offset])
prime2 = int_from_bytes(blob[prime2_offset:exponent1_offset])
exponent1 = int_from_bytes(blob[exponent1_offset:exponent2_offset])
exponent2 = int_from_bytes(blob[exponent2_offset:coefficient_offset])
coefficient = int_from_bytes(blob[coefficient_offset:private_exponent_offset])
private_exponent = int_from_bytes(blob[private_exponent_offset:private_exponent_offset + modulus_byte_length])
rsa_private_key = RSAPrivateKey({
'version': 'two-prime',
'modulus': modulus,
'public_exponent': public_exponent,
'private_exponent': private_exponent,
'prime1': prime1,
'prime2': prime2,
'exponent1': exponent1,
'exponent2': exponent2,
'coefficient': coefficient,
})
return PrivateKeyInfo({
})
elif key_type == 'private':
prime1_byte_length = native(int, blob_struct.cbPrime1)
prime2_byte_length = native(int, blob_struct.cbPrime2)
prime1_offset = modulus_offset + modulus_byte_length
prime2_offset = prime1_offset + prime1_byte_length
exponent1_offset = prime2_offset + prime2_byte_length
exponent2_offset = exponent1_offset + prime2_byte_length
coefficient_offset = exponent2_offset + prime2_byte_length
private_exponent_offset = coefficient_offset + prime1_byte_length
prime1 = int_from_bytes(blob[prime1_offset:prime2_offset])
prime2 = int_from_bytes(blob[prime2_offset:exponent1_offset])
exponent1 = int_from_bytes(blob[exponent1_offset:exponent2_offset])
exponent2 = int_from_bytes(blob[exponent2_offset:coefficient_offset])
coefficient = int_from_bytes(blob[coefficient_offset:private_exponent_offset])
private_exponent = int_from_bytes(blob[private_exponent_offset:private_exponent_offset + modulus_byte_length])
rsa_private_key = RSAPrivateKey({
'version': 'two-prime',
'modulus': modulus,
'public_exponent': public_exponent,
'private_exponent': private_exponent,
'prime1': prime1,
'prime2': prime2,
'exponent1': exponent1,
'exponent2': exponent2,
'coefficient': coefficient,
})
An instance of BCRYPT_RSAKEY_BLOB
:param blob:
A byte string of the binary data contained after the struct
:return:
An asn1crypto.keys.PrivateKeyInfo or asn1crypto.keys.PublicKeyInfo
object, based on the key_type param
"""
public_exponent_byte_length = native(int, blob_struct.cbPublicExp)
modulus_byte_length = native(int, blob_struct.cbModulus)
modulus_offset = public_exponent_byte_length
public_exponent = int_from_bytes(blob[0:modulus_offset])
modulus = int_from_bytes(blob[modulus_offset:modulus_offset + modulus_byte_length])
if key_type == 'public':
return PublicKeyInfo({
'algorithm': PublicKeyAlgorithm({
'algorithm': 'rsa',
}),
'public_key': RSAPublicKey({
'modulus': modulus,
'public_exponent': public_exponent,
}),
})
elif key_type == 'private':
prime1_byte_length = native(int, blob_struct.cbPrime1)
prime2_byte_length = native(int, blob_struct.cbPrime2)