// GetKeyBlob returns an encrypted blob containing the public and private // halves of the key func (key *Key) GetKeyBlob() ([]byte, error) { var dataLen C.UINT32 var cData *C.BYTE err := tspiError(C.Tspi_GetAttribData((C.TSS_HOBJECT)(key.handle), C.TSS_TSPATTRIB_KEY_BLOB, C.TSS_TSPATTRIB_KEYBLOB_BLOB, &dataLen, &cData)) data := C.GoBytes(unsafe.Pointer(cData), (C.int)(dataLen)) C.Tspi_Context_FreeMemory(key.context, cData) return data, err }
// GetModulus returns the modulus of the public key func (key *Key) GetModulus() (modulus []byte, err error) { var dataLen C.UINT32 var cData *C.BYTE err = tspiError(C.Tspi_GetAttribData((C.TSS_HOBJECT)(key.handle), C.TSS_TSPATTRIB_RSAKEY_INFO, C.TSS_TSPATTRIB_KEYINFO_RSA_MODULUS, &dataLen, &cData)) data := C.GoBytes(unsafe.Pointer(cData), (C.int)(dataLen)) C.Tspi_Context_FreeMemory(key.context, cData) return data, err }