Lines Matching refs:key

25   IAvbKey* key = NULL;  in iavb_parse_key_data()  local
55 key = (IAvbKey*)(avb_malloc(sizeof(IAvbKey) + 2 * h.key_num_bits / 8)); in iavb_parse_key_data()
56 if (key == NULL) { in iavb_parse_key_data()
60 key->len = h.key_num_bits / 32; in iavb_parse_key_data()
61 key->n0inv = h.n0inv; in iavb_parse_key_data()
62 key->n = (uint32_t*)(key + 1); /* Skip ahead sizeof(IAvbKey) bytes. */ in iavb_parse_key_data()
63 key->rr = key->n + key->len; in iavb_parse_key_data()
69 for (i = 0; i < key->len; i++) { in iavb_parse_key_data()
70 key->n[i] = avb_be32toh(((uint32_t*)n)[key->len - i - 1]); in iavb_parse_key_data()
71 key->rr[i] = avb_be32toh(((uint32_t*)rr)[key->len - i - 1]); in iavb_parse_key_data()
73 return key; in iavb_parse_key_data()
76 if (key != NULL) { in iavb_parse_key_data()
77 avb_free(key); in iavb_parse_key_data()
82 static void iavb_free_parsed_key(IAvbKey* key) { in iavb_free_parsed_key() argument
83 avb_free(key); in iavb_free_parsed_key()
87 static void subM(const IAvbKey* key, uint32_t* a) { in subM() argument
90 for (i = 0; i < key->len; ++i) { in subM()
91 A += (uint64_t)a[i] - key->n[i]; in subM()
98 static int geM(const IAvbKey* key, uint32_t* a) { in geM() argument
100 for (i = key->len; i;) { in geM()
102 if (a[i] < key->n[i]) { in geM()
105 if (a[i] > key->n[i]) { in geM()
113 static void montMulAdd(const IAvbKey* key, in montMulAdd() argument
118 uint32_t d0 = (uint32_t)A * key->n0inv; in montMulAdd()
119 uint64_t B = (uint64_t)d0 * key->n[0] + (uint32_t)A; in montMulAdd()
122 for (i = 1; i < key->len; ++i) { in montMulAdd()
124 B = (B >> 32) + (uint64_t)d0 * key->n[i] + (uint32_t)A; in montMulAdd()
133 subM(key, c); in montMulAdd()
138 static void montMul(const IAvbKey* key, uint32_t* c, uint32_t* a, uint32_t* b) { in montMul() argument
140 for (i = 0; i < key->len; ++i) { in montMul()
143 for (i = 0; i < key->len; ++i) { in montMul()
144 montMulAdd(key, c, a[i], b); in montMul()
151 static void modpowF4(const IAvbKey* key, uint8_t* inout) { in modpowF4() argument
152 uint32_t* a = (uint32_t*)avb_malloc(key->len * sizeof(uint32_t)); in modpowF4()
153 uint32_t* aR = (uint32_t*)avb_malloc(key->len * sizeof(uint32_t)); in modpowF4()
154 uint32_t* aaR = (uint32_t*)avb_malloc(key->len * sizeof(uint32_t)); in modpowF4()
163 for (i = 0; i < (int)key->len; ++i) { in modpowF4()
164 uint32_t tmp = (inout[((key->len - 1 - i) * 4) + 0] << 24) | in modpowF4()
165 (inout[((key->len - 1 - i) * 4) + 1] << 16) | in modpowF4()
166 (inout[((key->len - 1 - i) * 4) + 2] << 8) | in modpowF4()
167 (inout[((key->len - 1 - i) * 4) + 3] << 0); in modpowF4()
171 montMul(key, aR, a, key->rr); /* aR = a * RR / R mod M */ in modpowF4()
173 montMul(key, aaR, aR, aR); /* aaR = aR * aR / R mod M */ in modpowF4()
174 montMul(key, aR, aaR, aaR); /* aR = aaR * aaR / R mod M */ in modpowF4()
176 montMul(key, aaa, aR, a); /* aaa = aR * a / R mod M */ in modpowF4()
179 if (geM(key, aaa)) { in modpowF4()
180 subM(key, aaa); in modpowF4()
184 for (i = (int)key->len - 1; i >= 0; --i) { in modpowF4()
207 bool avb_rsa_verify(const uint8_t* key, in avb_rsa_verify() argument
219 if (key == NULL || sig == NULL || hash == NULL || padding == NULL) { in avb_rsa_verify()
224 parsed_key = iavb_parse_key_data(key, key_num_bytes); in avb_rsa_verify()